@fullcalendar/interaction 4.3.0 → 4.4.0

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.
package/main.esm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Interaction Plugin v4.3.0
2
+ FullCalendar Interaction Plugin v4.4.0
3
3
  Docs & License: https://fullcalendar.io/
4
4
  (c) 2019 Adam Shaw
5
5
  */
@@ -1126,11 +1126,12 @@ var DateClicking = /** @class */ (function (_super) {
1126
1126
  // won't even fire if moving was ignored
1127
1127
  _this.handleDragEnd = function (ev) {
1128
1128
  var component = _this.component;
1129
+ var _a = component.context, calendar = _a.calendar, view = _a.view;
1129
1130
  var pointer = _this.dragging.pointer;
1130
1131
  if (!pointer.wasTouchScroll) {
1131
- var _a = _this.hitDragging, initialHit = _a.initialHit, finalHit = _a.finalHit;
1132
+ var _b = _this.hitDragging, initialHit = _b.initialHit, finalHit = _b.finalHit;
1132
1133
  if (initialHit && finalHit && isHitsEqual(initialHit, finalHit)) {
1133
- component.calendar.triggerDateClick(initialHit.dateSpan, initialHit.dayEl, component.view, ev.origEvent);
1134
+ calendar.triggerDateClick(initialHit.dateSpan, initialHit.dayEl, view, ev.origEvent);
1134
1135
  }
1135
1136
  }
1136
1137
  };
@@ -1160,7 +1161,8 @@ var DateSelecting = /** @class */ (function (_super) {
1160
1161
  _this.dragSelection = null;
1161
1162
  _this.handlePointerDown = function (ev) {
1162
1163
  var _a = _this, component = _a.component, dragging = _a.dragging;
1163
- var canSelect = component.opt('selectable') &&
1164
+ var options = component.context.options;
1165
+ var canSelect = options.selectable &&
1164
1166
  component.isValidDateDownEl(ev.origEvent.target);
1165
1167
  // don't bother to watch expensive moves if component won't do selection
1166
1168
  dragging.setIgnoreMove(!canSelect);
@@ -1168,10 +1170,10 @@ var DateSelecting = /** @class */ (function (_super) {
1168
1170
  dragging.delay = ev.isTouch ? getComponentTouchDelay(component) : null;
1169
1171
  };
1170
1172
  _this.handleDragStart = function (ev) {
1171
- _this.component.calendar.unselect(ev); // unselect previous selections
1173
+ _this.component.context.calendar.unselect(ev); // unselect previous selections
1172
1174
  };
1173
1175
  _this.handleHitUpdate = function (hit, isFinal) {
1174
- var calendar = _this.component.calendar;
1176
+ var calendar = _this.component.context.calendar;
1175
1177
  var dragSelection = null;
1176
1178
  var isInvalid = false;
1177
1179
  if (hit) {
@@ -1200,15 +1202,16 @@ var DateSelecting = /** @class */ (function (_super) {
1200
1202
  _this.handlePointerUp = function (pev) {
1201
1203
  if (_this.dragSelection) {
1202
1204
  // selection is already rendered, so just need to report selection
1203
- _this.component.calendar.triggerDateSelect(_this.dragSelection, pev);
1205
+ _this.component.context.calendar.triggerDateSelect(_this.dragSelection, pev);
1204
1206
  _this.dragSelection = null;
1205
1207
  }
1206
1208
  };
1207
1209
  var component = settings.component;
1210
+ var options = component.context.options;
1208
1211
  var dragging = _this.dragging = new FeaturefulElementDragging(component.el);
1209
1212
  dragging.touchScrollAllowed = false;
1210
- dragging.minDistance = component.opt('selectMinDistance') || 0;
1211
- dragging.autoScroller.isEnabled = component.opt('dragScroll');
1213
+ dragging.minDistance = options.selectMinDistance || 0;
1214
+ dragging.autoScroller.isEnabled = options.dragScroll;
1212
1215
  var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsToStore(settings));
1213
1216
  hitDragging.emitter.on('pointerdown', _this.handlePointerDown);
1214
1217
  hitDragging.emitter.on('dragstart', _this.handleDragStart);
@@ -1222,9 +1225,10 @@ var DateSelecting = /** @class */ (function (_super) {
1222
1225
  return DateSelecting;
1223
1226
  }(Interaction));
1224
1227
  function getComponentTouchDelay(component) {
1225
- var delay = component.opt('selectLongPressDelay');
1228
+ var options = component.context.options;
1229
+ var delay = options.selectLongPressDelay;
1226
1230
  if (delay == null) {
1227
- delay = component.opt('longPressDelay');
1231
+ delay = options.longPressDelay;
1228
1232
  }
1229
1233
  return delay;
1230
1234
  }
@@ -1270,19 +1274,20 @@ var EventDragging = /** @class */ (function (_super) {
1270
1274
  var origTarget = ev.origEvent.target;
1271
1275
  var _a = _this, component = _a.component, dragging = _a.dragging;
1272
1276
  var mirror = dragging.mirror;
1273
- var initialCalendar = component.calendar;
1277
+ var options = component.context.options;
1278
+ var initialCalendar = component.context.calendar;
1274
1279
  var subjectSeg = _this.subjectSeg = getElSeg(ev.subjectEl);
1275
1280
  var eventRange = _this.eventRange = subjectSeg.eventRange;
1276
1281
  var eventInstanceId = eventRange.instance.instanceId;
1277
1282
  _this.relevantEvents = getRelevantEvents(initialCalendar.state.eventStore, eventInstanceId);
1278
- dragging.minDistance = ev.isTouch ? 0 : component.opt('eventDragMinDistance');
1283
+ dragging.minDistance = ev.isTouch ? 0 : options.eventDragMinDistance;
1279
1284
  dragging.delay =
1280
1285
  // only do a touch delay if touch and this event hasn't been selected yet
1281
1286
  (ev.isTouch && eventInstanceId !== component.props.eventSelection) ?
1282
1287
  getComponentTouchDelay$1(component) :
1283
1288
  null;
1284
1289
  mirror.parentNode = initialCalendar.el;
1285
- mirror.revertDuration = component.opt('dragRevertDuration');
1290
+ mirror.revertDuration = options.dragRevertDuration;
1286
1291
  var isValid = component.isValidSegDownEl(origTarget) &&
1287
1292
  !elementClosest(origTarget, '.fc-resizer'); // NOT on a resizer
1288
1293
  dragging.setIgnoreMove(!isValid);
@@ -1292,7 +1297,8 @@ var EventDragging = /** @class */ (function (_super) {
1292
1297
  ev.subjectEl.classList.contains('fc-draggable');
1293
1298
  };
1294
1299
  _this.handleDragStart = function (ev) {
1295
- var initialCalendar = _this.component.calendar;
1300
+ var context = _this.component.context;
1301
+ var initialCalendar = context.calendar;
1296
1302
  var eventRange = _this.eventRange;
1297
1303
  var eventInstanceId = eventRange.instance.instanceId;
1298
1304
  if (ev.isTouch) {
@@ -1312,7 +1318,7 @@ var EventDragging = /** @class */ (function (_super) {
1312
1318
  el: _this.subjectSeg.el,
1313
1319
  event: new EventApi(initialCalendar, eventRange.def, eventRange.instance),
1314
1320
  jsEvent: ev.origEvent,
1315
- view: _this.component.view
1321
+ view: context.view
1316
1322
  }
1317
1323
  ]);
1318
1324
  }
@@ -1323,7 +1329,7 @@ var EventDragging = /** @class */ (function (_super) {
1323
1329
  }
1324
1330
  var relevantEvents = _this.relevantEvents;
1325
1331
  var initialHit = _this.hitDragging.initialHit;
1326
- var initialCalendar = _this.component.calendar;
1332
+ var initialCalendar = _this.component.context.calendar;
1327
1333
  // states based on new hit
1328
1334
  var receivingCalendar = null;
1329
1335
  var mutation = null;
@@ -1337,9 +1343,10 @@ var EventDragging = /** @class */ (function (_super) {
1337
1343
  };
1338
1344
  if (hit) {
1339
1345
  var receivingComponent = hit.component;
1340
- receivingCalendar = receivingComponent.calendar;
1346
+ receivingCalendar = receivingComponent.context.calendar;
1347
+ var receivingOptions = receivingComponent.context.options;
1341
1348
  if (initialCalendar === receivingCalendar ||
1342
- receivingComponent.opt('editable') && receivingComponent.opt('droppable')) {
1349
+ receivingOptions.editable && receivingOptions.droppable) {
1343
1350
  mutation = computeEventMutation(initialHit, hit, receivingCalendar.pluginSystem.hooks.eventDragMutationMassagers);
1344
1351
  if (mutation) {
1345
1352
  mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, receivingCalendar.eventUiBases, mutation, receivingCalendar);
@@ -1385,8 +1392,9 @@ var EventDragging = /** @class */ (function (_super) {
1385
1392
  };
1386
1393
  _this.handleDragEnd = function (ev) {
1387
1394
  if (_this.isDragging) {
1388
- var initialCalendar_1 = _this.component.calendar;
1389
- var initialView = _this.component.view;
1395
+ var context = _this.component.context;
1396
+ var initialCalendar_1 = context.calendar;
1397
+ var initialView = context.view;
1390
1398
  var _a = _this, receivingCalendar = _a.receivingCalendar, validMutation = _a.validMutation;
1391
1399
  var eventDef = _this.eventRange.def;
1392
1400
  var eventInstance = _this.eventRange.instance;
@@ -1467,10 +1475,11 @@ var EventDragging = /** @class */ (function (_super) {
1467
1475
  _this.cleanup();
1468
1476
  };
1469
1477
  var component = _this.component;
1478
+ var options = component.context.options;
1470
1479
  var dragging = _this.dragging = new FeaturefulElementDragging(component.el);
1471
1480
  dragging.pointer.selector = EventDragging.SELECTOR;
1472
1481
  dragging.touchScrollAllowed = false;
1473
- dragging.autoScroller.isEnabled = component.opt('dragScroll');
1482
+ dragging.autoScroller.isEnabled = options.dragScroll;
1474
1483
  var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsStore);
1475
1484
  hitDragging.useSubjectCenter = settings.useEventCenter;
1476
1485
  hitDragging.emitter.on('pointerdown', _this.handlePointerDown);
@@ -1485,7 +1494,7 @@ var EventDragging = /** @class */ (function (_super) {
1485
1494
  };
1486
1495
  // render a drag state on the next receivingCalendar
1487
1496
  EventDragging.prototype.displayDrag = function (nextCalendar, state) {
1488
- var initialCalendar = this.component.calendar;
1497
+ var initialCalendar = this.component.context.calendar;
1489
1498
  var prevCalendar = this.receivingCalendar;
1490
1499
  // does the previous calendar need to be cleared?
1491
1500
  if (prevCalendar && prevCalendar !== nextCalendar) {
@@ -1512,7 +1521,7 @@ var EventDragging = /** @class */ (function (_super) {
1512
1521
  }
1513
1522
  };
1514
1523
  EventDragging.prototype.clearDrag = function () {
1515
- var initialCalendar = this.component.calendar;
1524
+ var initialCalendar = this.component.context.calendar;
1516
1525
  var receivingCalendar = this.receivingCalendar;
1517
1526
  if (receivingCalendar) {
1518
1527
  receivingCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });
@@ -1542,14 +1551,14 @@ function computeEventMutation(hit0, hit1, massagers) {
1542
1551
  var standardProps = {};
1543
1552
  if (dateSpan0.allDay !== dateSpan1.allDay) {
1544
1553
  standardProps.allDay = dateSpan1.allDay;
1545
- standardProps.hasEnd = hit1.component.opt('allDayMaintainDuration');
1554
+ standardProps.hasEnd = hit1.component.context.options.allDayMaintainDuration;
1546
1555
  if (dateSpan1.allDay) {
1547
1556
  // means date1 is already start-of-day,
1548
1557
  // but date0 needs to be converted
1549
1558
  date0 = startOfDay(date0);
1550
1559
  }
1551
1560
  }
1552
- var delta = diffDates(date0, date1, hit0.component.dateEnv, hit0.component === hit1.component ?
1561
+ var delta = diffDates(date0, date1, hit0.component.context.dateEnv, hit0.component === hit1.component ?
1553
1562
  hit0.component.largeUnit :
1554
1563
  null);
1555
1564
  if (delta.milliseconds) { // has hours/minutes/seconds
@@ -1566,9 +1575,10 @@ function computeEventMutation(hit0, hit1, massagers) {
1566
1575
  return mutation;
1567
1576
  }
1568
1577
  function getComponentTouchDelay$1(component) {
1569
- var delay = component.opt('eventLongPressDelay');
1578
+ var options = component.context.options;
1579
+ var delay = options.eventLongPressDelay;
1570
1580
  if (delay == null) {
1571
- delay = component.opt('longPressDelay');
1581
+ delay = options.longPressDelay;
1572
1582
  }
1573
1583
  return delay;
1574
1584
  }
@@ -1587,13 +1597,13 @@ var EventDragging$1 = /** @class */ (function (_super) {
1587
1597
  var component = _this.component;
1588
1598
  var seg = _this.querySeg(ev);
1589
1599
  var eventRange = _this.eventRange = seg.eventRange;
1590
- _this.dragging.minDistance = component.opt('eventDragMinDistance');
1600
+ _this.dragging.minDistance = component.context.options.eventDragMinDistance;
1591
1601
  // if touch, need to be working with a selected event
1592
1602
  _this.dragging.setIgnoreMove(!_this.component.isValidSegDownEl(ev.origEvent.target) ||
1593
1603
  (ev.isTouch && _this.component.props.eventSelection !== eventRange.instance.instanceId));
1594
1604
  };
1595
1605
  _this.handleDragStart = function (ev) {
1596
- var calendar = _this.component.calendar;
1606
+ var _a = _this.component.context, calendar = _a.calendar, view = _a.view;
1597
1607
  var eventRange = _this.eventRange;
1598
1608
  _this.relevantEvents = getRelevantEvents(calendar.state.eventStore, _this.eventRange.instance.instanceId);
1599
1609
  _this.draggingSeg = _this.querySeg(ev);
@@ -1603,12 +1613,12 @@ var EventDragging$1 = /** @class */ (function (_super) {
1603
1613
  el: _this.draggingSeg.el,
1604
1614
  event: new EventApi(calendar, eventRange.def, eventRange.instance),
1605
1615
  jsEvent: ev.origEvent,
1606
- view: _this.component.view
1616
+ view: view
1607
1617
  }
1608
1618
  ]);
1609
1619
  };
1610
1620
  _this.handleHitUpdate = function (hit, isFinal, ev) {
1611
- var calendar = _this.component.calendar;
1621
+ var calendar = _this.component.context.calendar;
1612
1622
  var relevantEvents = _this.relevantEvents;
1613
1623
  var initialHit = _this.hitDragging.initialHit;
1614
1624
  var eventInstance = _this.eventRange.instance;
@@ -1658,8 +1668,7 @@ var EventDragging$1 = /** @class */ (function (_super) {
1658
1668
  }
1659
1669
  };
1660
1670
  _this.handleDragEnd = function (ev) {
1661
- var calendar = _this.component.calendar;
1662
- var view = _this.component.view;
1671
+ var _a = _this.component.context, calendar = _a.calendar, view = _a.view;
1663
1672
  var eventDef = _this.eventRange.def;
1664
1673
  var eventInstance = _this.eventRange.instance;
1665
1674
  var eventApi = new EventApi(calendar, eventDef, eventInstance);
@@ -1710,7 +1719,7 @@ var EventDragging$1 = /** @class */ (function (_super) {
1710
1719
  var dragging = _this.dragging = new FeaturefulElementDragging(component.el);
1711
1720
  dragging.pointer.selector = '.fc-resizer';
1712
1721
  dragging.touchScrollAllowed = false;
1713
- dragging.autoScroller.isEnabled = component.opt('dragScroll');
1722
+ dragging.autoScroller.isEnabled = component.context.options.dragScroll;
1714
1723
  var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsToStore(settings));
1715
1724
  hitDragging.emitter.on('pointerdown', _this.handlePointerDown);
1716
1725
  hitDragging.emitter.on('dragstart', _this.handleDragStart);
@@ -1727,7 +1736,7 @@ var EventDragging$1 = /** @class */ (function (_super) {
1727
1736
  return EventDragging;
1728
1737
  }(Interaction));
1729
1738
  function computeMutation(hit0, hit1, isFromStart, instanceRange, transforms) {
1730
- var dateEnv = hit0.component.dateEnv;
1739
+ var dateEnv = hit0.component.context.dateEnv;
1731
1740
  var date0 = hit0.dateSpan.range.start;
1732
1741
  var date1 = hit1.dateSpan.range.start;
1733
1742
  var delta = diffDates(date0, date1, dateEnv, hit0.component.largeUnit);
@@ -1832,7 +1841,7 @@ var ExternalElementDragging = /** @class */ (function () {
1832
1841
  origSeg: null
1833
1842
  };
1834
1843
  if (hit) {
1835
- receivingCalendar = hit.component.calendar;
1844
+ receivingCalendar = hit.component.context.calendar;
1836
1845
  if (_this.canDropElOnCalendar(ev.subjectEl, receivingCalendar)) {
1837
1846
  droppableEvent = computeEventForDateSpan(hit.dateSpan, _this.dragMeta, receivingCalendar);
1838
1847
  interaction.mutatedEvents = eventTupleToStore(droppableEvent);
@@ -1864,7 +1873,7 @@ var ExternalElementDragging = /** @class */ (function () {
1864
1873
  _this.clearDrag();
1865
1874
  if (receivingCalendar && droppableEvent) {
1866
1875
  var finalHit = _this.hitDragging.finalHit;
1867
- var finalView = finalHit.component.view;
1876
+ var finalView = finalHit.component.context.view;
1868
1877
  var dragMeta = _this.dragMeta;
1869
1878
  var arg = __assign({}, receivingCalendar.buildDatePointApi(finalHit.dateSpan), { draggedEl: pev.subjectEl, jsEvent: pev.origEvent, view: finalView });
1870
1879
  receivingCalendar.publiclyTrigger('drop', [arg]);
package/main.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Interaction Plugin v4.3.0
2
+ FullCalendar Interaction Plugin v4.4.0
3
3
  Docs & License: https://fullcalendar.io/
4
4
  (c) 2019 Adam Shaw
5
5
  */
@@ -1130,11 +1130,12 @@ Docs & License: https://fullcalendar.io/
1130
1130
  // won't even fire if moving was ignored
1131
1131
  _this.handleDragEnd = function (ev) {
1132
1132
  var component = _this.component;
1133
+ var _a = component.context, calendar = _a.calendar, view = _a.view;
1133
1134
  var pointer = _this.dragging.pointer;
1134
1135
  if (!pointer.wasTouchScroll) {
1135
- var _a = _this.hitDragging, initialHit = _a.initialHit, finalHit = _a.finalHit;
1136
+ var _b = _this.hitDragging, initialHit = _b.initialHit, finalHit = _b.finalHit;
1136
1137
  if (initialHit && finalHit && isHitsEqual(initialHit, finalHit)) {
1137
- component.calendar.triggerDateClick(initialHit.dateSpan, initialHit.dayEl, component.view, ev.origEvent);
1138
+ calendar.triggerDateClick(initialHit.dateSpan, initialHit.dayEl, view, ev.origEvent);
1138
1139
  }
1139
1140
  }
1140
1141
  };
@@ -1164,7 +1165,8 @@ Docs & License: https://fullcalendar.io/
1164
1165
  _this.dragSelection = null;
1165
1166
  _this.handlePointerDown = function (ev) {
1166
1167
  var _a = _this, component = _a.component, dragging = _a.dragging;
1167
- var canSelect = component.opt('selectable') &&
1168
+ var options = component.context.options;
1169
+ var canSelect = options.selectable &&
1168
1170
  component.isValidDateDownEl(ev.origEvent.target);
1169
1171
  // don't bother to watch expensive moves if component won't do selection
1170
1172
  dragging.setIgnoreMove(!canSelect);
@@ -1172,10 +1174,10 @@ Docs & License: https://fullcalendar.io/
1172
1174
  dragging.delay = ev.isTouch ? getComponentTouchDelay(component) : null;
1173
1175
  };
1174
1176
  _this.handleDragStart = function (ev) {
1175
- _this.component.calendar.unselect(ev); // unselect previous selections
1177
+ _this.component.context.calendar.unselect(ev); // unselect previous selections
1176
1178
  };
1177
1179
  _this.handleHitUpdate = function (hit, isFinal) {
1178
- var calendar = _this.component.calendar;
1180
+ var calendar = _this.component.context.calendar;
1179
1181
  var dragSelection = null;
1180
1182
  var isInvalid = false;
1181
1183
  if (hit) {
@@ -1204,15 +1206,16 @@ Docs & License: https://fullcalendar.io/
1204
1206
  _this.handlePointerUp = function (pev) {
1205
1207
  if (_this.dragSelection) {
1206
1208
  // selection is already rendered, so just need to report selection
1207
- _this.component.calendar.triggerDateSelect(_this.dragSelection, pev);
1209
+ _this.component.context.calendar.triggerDateSelect(_this.dragSelection, pev);
1208
1210
  _this.dragSelection = null;
1209
1211
  }
1210
1212
  };
1211
1213
  var component = settings.component;
1214
+ var options = component.context.options;
1212
1215
  var dragging = _this.dragging = new FeaturefulElementDragging(component.el);
1213
1216
  dragging.touchScrollAllowed = false;
1214
- dragging.minDistance = component.opt('selectMinDistance') || 0;
1215
- dragging.autoScroller.isEnabled = component.opt('dragScroll');
1217
+ dragging.minDistance = options.selectMinDistance || 0;
1218
+ dragging.autoScroller.isEnabled = options.dragScroll;
1216
1219
  var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, core.interactionSettingsToStore(settings));
1217
1220
  hitDragging.emitter.on('pointerdown', _this.handlePointerDown);
1218
1221
  hitDragging.emitter.on('dragstart', _this.handleDragStart);
@@ -1226,9 +1229,10 @@ Docs & License: https://fullcalendar.io/
1226
1229
  return DateSelecting;
1227
1230
  }(core.Interaction));
1228
1231
  function getComponentTouchDelay(component) {
1229
- var delay = component.opt('selectLongPressDelay');
1232
+ var options = component.context.options;
1233
+ var delay = options.selectLongPressDelay;
1230
1234
  if (delay == null) {
1231
- delay = component.opt('longPressDelay');
1235
+ delay = options.longPressDelay;
1232
1236
  }
1233
1237
  return delay;
1234
1238
  }
@@ -1274,19 +1278,20 @@ Docs & License: https://fullcalendar.io/
1274
1278
  var origTarget = ev.origEvent.target;
1275
1279
  var _a = _this, component = _a.component, dragging = _a.dragging;
1276
1280
  var mirror = dragging.mirror;
1277
- var initialCalendar = component.calendar;
1281
+ var options = component.context.options;
1282
+ var initialCalendar = component.context.calendar;
1278
1283
  var subjectSeg = _this.subjectSeg = core.getElSeg(ev.subjectEl);
1279
1284
  var eventRange = _this.eventRange = subjectSeg.eventRange;
1280
1285
  var eventInstanceId = eventRange.instance.instanceId;
1281
1286
  _this.relevantEvents = core.getRelevantEvents(initialCalendar.state.eventStore, eventInstanceId);
1282
- dragging.minDistance = ev.isTouch ? 0 : component.opt('eventDragMinDistance');
1287
+ dragging.minDistance = ev.isTouch ? 0 : options.eventDragMinDistance;
1283
1288
  dragging.delay =
1284
1289
  // only do a touch delay if touch and this event hasn't been selected yet
1285
1290
  (ev.isTouch && eventInstanceId !== component.props.eventSelection) ?
1286
1291
  getComponentTouchDelay$1(component) :
1287
1292
  null;
1288
1293
  mirror.parentNode = initialCalendar.el;
1289
- mirror.revertDuration = component.opt('dragRevertDuration');
1294
+ mirror.revertDuration = options.dragRevertDuration;
1290
1295
  var isValid = component.isValidSegDownEl(origTarget) &&
1291
1296
  !core.elementClosest(origTarget, '.fc-resizer'); // NOT on a resizer
1292
1297
  dragging.setIgnoreMove(!isValid);
@@ -1296,7 +1301,8 @@ Docs & License: https://fullcalendar.io/
1296
1301
  ev.subjectEl.classList.contains('fc-draggable');
1297
1302
  };
1298
1303
  _this.handleDragStart = function (ev) {
1299
- var initialCalendar = _this.component.calendar;
1304
+ var context = _this.component.context;
1305
+ var initialCalendar = context.calendar;
1300
1306
  var eventRange = _this.eventRange;
1301
1307
  var eventInstanceId = eventRange.instance.instanceId;
1302
1308
  if (ev.isTouch) {
@@ -1316,7 +1322,7 @@ Docs & License: https://fullcalendar.io/
1316
1322
  el: _this.subjectSeg.el,
1317
1323
  event: new core.EventApi(initialCalendar, eventRange.def, eventRange.instance),
1318
1324
  jsEvent: ev.origEvent,
1319
- view: _this.component.view
1325
+ view: context.view
1320
1326
  }
1321
1327
  ]);
1322
1328
  }
@@ -1327,7 +1333,7 @@ Docs & License: https://fullcalendar.io/
1327
1333
  }
1328
1334
  var relevantEvents = _this.relevantEvents;
1329
1335
  var initialHit = _this.hitDragging.initialHit;
1330
- var initialCalendar = _this.component.calendar;
1336
+ var initialCalendar = _this.component.context.calendar;
1331
1337
  // states based on new hit
1332
1338
  var receivingCalendar = null;
1333
1339
  var mutation = null;
@@ -1341,9 +1347,10 @@ Docs & License: https://fullcalendar.io/
1341
1347
  };
1342
1348
  if (hit) {
1343
1349
  var receivingComponent = hit.component;
1344
- receivingCalendar = receivingComponent.calendar;
1350
+ receivingCalendar = receivingComponent.context.calendar;
1351
+ var receivingOptions = receivingComponent.context.options;
1345
1352
  if (initialCalendar === receivingCalendar ||
1346
- receivingComponent.opt('editable') && receivingComponent.opt('droppable')) {
1353
+ receivingOptions.editable && receivingOptions.droppable) {
1347
1354
  mutation = computeEventMutation(initialHit, hit, receivingCalendar.pluginSystem.hooks.eventDragMutationMassagers);
1348
1355
  if (mutation) {
1349
1356
  mutatedRelevantEvents = core.applyMutationToEventStore(relevantEvents, receivingCalendar.eventUiBases, mutation, receivingCalendar);
@@ -1389,8 +1396,9 @@ Docs & License: https://fullcalendar.io/
1389
1396
  };
1390
1397
  _this.handleDragEnd = function (ev) {
1391
1398
  if (_this.isDragging) {
1392
- var initialCalendar_1 = _this.component.calendar;
1393
- var initialView = _this.component.view;
1399
+ var context = _this.component.context;
1400
+ var initialCalendar_1 = context.calendar;
1401
+ var initialView = context.view;
1394
1402
  var _a = _this, receivingCalendar = _a.receivingCalendar, validMutation = _a.validMutation;
1395
1403
  var eventDef = _this.eventRange.def;
1396
1404
  var eventInstance = _this.eventRange.instance;
@@ -1471,10 +1479,11 @@ Docs & License: https://fullcalendar.io/
1471
1479
  _this.cleanup();
1472
1480
  };
1473
1481
  var component = _this.component;
1482
+ var options = component.context.options;
1474
1483
  var dragging = _this.dragging = new FeaturefulElementDragging(component.el);
1475
1484
  dragging.pointer.selector = EventDragging.SELECTOR;
1476
1485
  dragging.touchScrollAllowed = false;
1477
- dragging.autoScroller.isEnabled = component.opt('dragScroll');
1486
+ dragging.autoScroller.isEnabled = options.dragScroll;
1478
1487
  var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, core.interactionSettingsStore);
1479
1488
  hitDragging.useSubjectCenter = settings.useEventCenter;
1480
1489
  hitDragging.emitter.on('pointerdown', _this.handlePointerDown);
@@ -1489,7 +1498,7 @@ Docs & License: https://fullcalendar.io/
1489
1498
  };
1490
1499
  // render a drag state on the next receivingCalendar
1491
1500
  EventDragging.prototype.displayDrag = function (nextCalendar, state) {
1492
- var initialCalendar = this.component.calendar;
1501
+ var initialCalendar = this.component.context.calendar;
1493
1502
  var prevCalendar = this.receivingCalendar;
1494
1503
  // does the previous calendar need to be cleared?
1495
1504
  if (prevCalendar && prevCalendar !== nextCalendar) {
@@ -1516,7 +1525,7 @@ Docs & License: https://fullcalendar.io/
1516
1525
  }
1517
1526
  };
1518
1527
  EventDragging.prototype.clearDrag = function () {
1519
- var initialCalendar = this.component.calendar;
1528
+ var initialCalendar = this.component.context.calendar;
1520
1529
  var receivingCalendar = this.receivingCalendar;
1521
1530
  if (receivingCalendar) {
1522
1531
  receivingCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });
@@ -1546,14 +1555,14 @@ Docs & License: https://fullcalendar.io/
1546
1555
  var standardProps = {};
1547
1556
  if (dateSpan0.allDay !== dateSpan1.allDay) {
1548
1557
  standardProps.allDay = dateSpan1.allDay;
1549
- standardProps.hasEnd = hit1.component.opt('allDayMaintainDuration');
1558
+ standardProps.hasEnd = hit1.component.context.options.allDayMaintainDuration;
1550
1559
  if (dateSpan1.allDay) {
1551
1560
  // means date1 is already start-of-day,
1552
1561
  // but date0 needs to be converted
1553
1562
  date0 = core.startOfDay(date0);
1554
1563
  }
1555
1564
  }
1556
- var delta = core.diffDates(date0, date1, hit0.component.dateEnv, hit0.component === hit1.component ?
1565
+ var delta = core.diffDates(date0, date1, hit0.component.context.dateEnv, hit0.component === hit1.component ?
1557
1566
  hit0.component.largeUnit :
1558
1567
  null);
1559
1568
  if (delta.milliseconds) { // has hours/minutes/seconds
@@ -1570,9 +1579,10 @@ Docs & License: https://fullcalendar.io/
1570
1579
  return mutation;
1571
1580
  }
1572
1581
  function getComponentTouchDelay$1(component) {
1573
- var delay = component.opt('eventLongPressDelay');
1582
+ var options = component.context.options;
1583
+ var delay = options.eventLongPressDelay;
1574
1584
  if (delay == null) {
1575
- delay = component.opt('longPressDelay');
1585
+ delay = options.longPressDelay;
1576
1586
  }
1577
1587
  return delay;
1578
1588
  }
@@ -1591,13 +1601,13 @@ Docs & License: https://fullcalendar.io/
1591
1601
  var component = _this.component;
1592
1602
  var seg = _this.querySeg(ev);
1593
1603
  var eventRange = _this.eventRange = seg.eventRange;
1594
- _this.dragging.minDistance = component.opt('eventDragMinDistance');
1604
+ _this.dragging.minDistance = component.context.options.eventDragMinDistance;
1595
1605
  // if touch, need to be working with a selected event
1596
1606
  _this.dragging.setIgnoreMove(!_this.component.isValidSegDownEl(ev.origEvent.target) ||
1597
1607
  (ev.isTouch && _this.component.props.eventSelection !== eventRange.instance.instanceId));
1598
1608
  };
1599
1609
  _this.handleDragStart = function (ev) {
1600
- var calendar = _this.component.calendar;
1610
+ var _a = _this.component.context, calendar = _a.calendar, view = _a.view;
1601
1611
  var eventRange = _this.eventRange;
1602
1612
  _this.relevantEvents = core.getRelevantEvents(calendar.state.eventStore, _this.eventRange.instance.instanceId);
1603
1613
  _this.draggingSeg = _this.querySeg(ev);
@@ -1607,12 +1617,12 @@ Docs & License: https://fullcalendar.io/
1607
1617
  el: _this.draggingSeg.el,
1608
1618
  event: new core.EventApi(calendar, eventRange.def, eventRange.instance),
1609
1619
  jsEvent: ev.origEvent,
1610
- view: _this.component.view
1620
+ view: view
1611
1621
  }
1612
1622
  ]);
1613
1623
  };
1614
1624
  _this.handleHitUpdate = function (hit, isFinal, ev) {
1615
- var calendar = _this.component.calendar;
1625
+ var calendar = _this.component.context.calendar;
1616
1626
  var relevantEvents = _this.relevantEvents;
1617
1627
  var initialHit = _this.hitDragging.initialHit;
1618
1628
  var eventInstance = _this.eventRange.instance;
@@ -1662,8 +1672,7 @@ Docs & License: https://fullcalendar.io/
1662
1672
  }
1663
1673
  };
1664
1674
  _this.handleDragEnd = function (ev) {
1665
- var calendar = _this.component.calendar;
1666
- var view = _this.component.view;
1675
+ var _a = _this.component.context, calendar = _a.calendar, view = _a.view;
1667
1676
  var eventDef = _this.eventRange.def;
1668
1677
  var eventInstance = _this.eventRange.instance;
1669
1678
  var eventApi = new core.EventApi(calendar, eventDef, eventInstance);
@@ -1714,7 +1723,7 @@ Docs & License: https://fullcalendar.io/
1714
1723
  var dragging = _this.dragging = new FeaturefulElementDragging(component.el);
1715
1724
  dragging.pointer.selector = '.fc-resizer';
1716
1725
  dragging.touchScrollAllowed = false;
1717
- dragging.autoScroller.isEnabled = component.opt('dragScroll');
1726
+ dragging.autoScroller.isEnabled = component.context.options.dragScroll;
1718
1727
  var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, core.interactionSettingsToStore(settings));
1719
1728
  hitDragging.emitter.on('pointerdown', _this.handlePointerDown);
1720
1729
  hitDragging.emitter.on('dragstart', _this.handleDragStart);
@@ -1731,7 +1740,7 @@ Docs & License: https://fullcalendar.io/
1731
1740
  return EventDragging;
1732
1741
  }(core.Interaction));
1733
1742
  function computeMutation(hit0, hit1, isFromStart, instanceRange, transforms) {
1734
- var dateEnv = hit0.component.dateEnv;
1743
+ var dateEnv = hit0.component.context.dateEnv;
1735
1744
  var date0 = hit0.dateSpan.range.start;
1736
1745
  var date1 = hit1.dateSpan.range.start;
1737
1746
  var delta = core.diffDates(date0, date1, dateEnv, hit0.component.largeUnit);
@@ -1836,7 +1845,7 @@ Docs & License: https://fullcalendar.io/
1836
1845
  origSeg: null
1837
1846
  };
1838
1847
  if (hit) {
1839
- receivingCalendar = hit.component.calendar;
1848
+ receivingCalendar = hit.component.context.calendar;
1840
1849
  if (_this.canDropElOnCalendar(ev.subjectEl, receivingCalendar)) {
1841
1850
  droppableEvent = computeEventForDateSpan(hit.dateSpan, _this.dragMeta, receivingCalendar);
1842
1851
  interaction.mutatedEvents = core.eventTupleToStore(droppableEvent);
@@ -1868,7 +1877,7 @@ Docs & License: https://fullcalendar.io/
1868
1877
  _this.clearDrag();
1869
1878
  if (receivingCalendar && droppableEvent) {
1870
1879
  var finalHit = _this.hitDragging.finalHit;
1871
- var finalView = finalHit.component.view;
1880
+ var finalView = finalHit.component.context.view;
1872
1881
  var dragMeta = _this.dragMeta;
1873
1882
  var arg = __assign({}, receivingCalendar.buildDatePointApi(finalHit.dateSpan), { draggedEl: pev.subjectEl, jsEvent: pev.origEvent, view: finalView });
1874
1883
  receivingCalendar.publiclyTrigger('drop', [arg]);
package/main.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sources":["../../../tmp/tsc-output/packages/interaction/src/dnd/PointerDragging.js","../../../tmp/tsc-output/packages/interaction/src/dnd/ElementMirror.js","../../../tmp/tsc-output/packages/interaction/src/scroll-geom-cache.js","../../../tmp/tsc-output/packages/interaction/src/dnd/AutoScroller.js","../../../tmp/tsc-output/packages/interaction/src/dnd/FeaturefulElementDragging.js","../../../tmp/tsc-output/packages/interaction/src/OffsetTracker.js","../../../tmp/tsc-output/packages/interaction/src/interactions/HitDragging.js","../../../tmp/tsc-output/packages/interaction/src/interactions/DateClicking.js","../../../tmp/tsc-output/packages/interaction/src/interactions/DateSelecting.js","../../../tmp/tsc-output/packages/interaction/src/interactions/EventDragging.js","../../../tmp/tsc-output/packages/interaction/src/interactions/EventResizing.js","../../../tmp/tsc-output/packages/interaction/src/interactions/UnselectAuto.js","../../../tmp/tsc-output/packages/interaction/src/interactions-external/ExternalElementDragging.js","../../../tmp/tsc-output/packages/interaction/src/interactions-external/ExternalDraggable.js","../../../tmp/tsc-output/packages/interaction/src/interactions-external/InferredElementDragging.js","../../../tmp/tsc-output/packages/interaction/src/interactions-external/ThirdPartyDraggable.js","../../../tmp/tsc-output/packages/interaction/src/main.js"],"sourcesContent":["import { config, elementClosest, EmitterMixin } from '@fullcalendar/core';\nconfig.touchMouseIgnoreWait = 500;\nvar ignoreMouseDepth = 0;\nvar listenerCnt = 0;\nvar isWindowTouchMoveCancelled = false;\n/*\nUses a \"pointer\" abstraction, which monitors UI events for both mouse and touch.\nTracks when the pointer \"drags\" on a certain element, meaning down+move+up.\n\nAlso, tracks if there was touch-scrolling.\nAlso, can prevent touch-scrolling from happening.\nAlso, can fire pointermove events when scrolling happens underneath, even when no real pointer movement.\n\nemits:\n- pointerdown\n- pointermove\n- pointerup\n*/\nvar PointerDragging = /** @class */ (function () {\n function PointerDragging(containerEl) {\n var _this = this;\n this.subjectEl = null;\n this.downEl = null;\n // options that can be directly assigned by caller\n this.selector = ''; // will cause subjectEl in all emitted events to be this element\n this.handleSelector = '';\n this.shouldIgnoreMove = false;\n this.shouldWatchScroll = true; // for simulating pointermove on scroll\n // internal states\n this.isDragging = false;\n this.isTouchDragging = false;\n this.wasTouchScroll = false;\n // Mouse\n // ----------------------------------------------------------------------------------------------------\n this.handleMouseDown = function (ev) {\n if (!_this.shouldIgnoreMouse() &&\n isPrimaryMouseButton(ev) &&\n _this.tryStart(ev)) {\n var pev = _this.createEventFromMouse(ev, true);\n _this.emitter.trigger('pointerdown', pev);\n _this.initScrollWatch(pev);\n if (!_this.shouldIgnoreMove) {\n document.addEventListener('mousemove', _this.handleMouseMove);\n }\n document.addEventListener('mouseup', _this.handleMouseUp);\n }\n };\n this.handleMouseMove = function (ev) {\n var pev = _this.createEventFromMouse(ev);\n _this.recordCoords(pev);\n _this.emitter.trigger('pointermove', pev);\n };\n this.handleMouseUp = function (ev) {\n document.removeEventListener('mousemove', _this.handleMouseMove);\n document.removeEventListener('mouseup', _this.handleMouseUp);\n _this.emitter.trigger('pointerup', _this.createEventFromMouse(ev));\n _this.cleanup(); // call last so that pointerup has access to props\n };\n // Touch\n // ----------------------------------------------------------------------------------------------------\n this.handleTouchStart = function (ev) {\n if (_this.tryStart(ev)) {\n _this.isTouchDragging = true;\n var pev = _this.createEventFromTouch(ev, true);\n _this.emitter.trigger('pointerdown', pev);\n _this.initScrollWatch(pev);\n // unlike mouse, need to attach to target, not document\n // https://stackoverflow.com/a/45760014\n var target = ev.target;\n if (!_this.shouldIgnoreMove) {\n target.addEventListener('touchmove', _this.handleTouchMove);\n }\n target.addEventListener('touchend', _this.handleTouchEnd);\n target.addEventListener('touchcancel', _this.handleTouchEnd); // treat it as a touch end\n // attach a handler to get called when ANY scroll action happens on the page.\n // this was impossible to do with normal on/off because 'scroll' doesn't bubble.\n // http://stackoverflow.com/a/32954565/96342\n window.addEventListener('scroll', _this.handleTouchScroll, true // useCapture\n );\n }\n };\n this.handleTouchMove = function (ev) {\n var pev = _this.createEventFromTouch(ev);\n _this.recordCoords(pev);\n _this.emitter.trigger('pointermove', pev);\n };\n this.handleTouchEnd = function (ev) {\n if (_this.isDragging) { // done to guard against touchend followed by touchcancel\n var target = ev.target;\n target.removeEventListener('touchmove', _this.handleTouchMove);\n target.removeEventListener('touchend', _this.handleTouchEnd);\n target.removeEventListener('touchcancel', _this.handleTouchEnd);\n window.removeEventListener('scroll', _this.handleTouchScroll, true); // useCaptured=true\n _this.emitter.trigger('pointerup', _this.createEventFromTouch(ev));\n _this.cleanup(); // call last so that pointerup has access to props\n _this.isTouchDragging = false;\n startIgnoringMouse();\n }\n };\n this.handleTouchScroll = function () {\n _this.wasTouchScroll = true;\n };\n this.handleScroll = function (ev) {\n if (!_this.shouldIgnoreMove) {\n var pageX = (window.pageXOffset - _this.prevScrollX) + _this.prevPageX;\n var pageY = (window.pageYOffset - _this.prevScrollY) + _this.prevPageY;\n _this.emitter.trigger('pointermove', {\n origEvent: ev,\n isTouch: _this.isTouchDragging,\n subjectEl: _this.subjectEl,\n pageX: pageX,\n pageY: pageY,\n deltaX: pageX - _this.origPageX,\n deltaY: pageY - _this.origPageY\n });\n }\n };\n this.containerEl = containerEl;\n this.emitter = new EmitterMixin();\n containerEl.addEventListener('mousedown', this.handleMouseDown);\n containerEl.addEventListener('touchstart', this.handleTouchStart, { passive: true });\n listenerCreated();\n }\n PointerDragging.prototype.destroy = function () {\n this.containerEl.removeEventListener('mousedown', this.handleMouseDown);\n this.containerEl.removeEventListener('touchstart', this.handleTouchStart, { passive: true });\n listenerDestroyed();\n };\n PointerDragging.prototype.tryStart = function (ev) {\n var subjectEl = this.querySubjectEl(ev);\n var downEl = ev.target;\n if (subjectEl &&\n (!this.handleSelector || elementClosest(downEl, this.handleSelector))) {\n this.subjectEl = subjectEl;\n this.downEl = downEl;\n this.isDragging = true; // do this first so cancelTouchScroll will work\n this.wasTouchScroll = false;\n return true;\n }\n return false;\n };\n PointerDragging.prototype.cleanup = function () {\n isWindowTouchMoveCancelled = false;\n this.isDragging = false;\n this.subjectEl = null;\n this.downEl = null;\n // keep wasTouchScroll around for later access\n this.destroyScrollWatch();\n };\n PointerDragging.prototype.querySubjectEl = function (ev) {\n if (this.selector) {\n return elementClosest(ev.target, this.selector);\n }\n else {\n return this.containerEl;\n }\n };\n PointerDragging.prototype.shouldIgnoreMouse = function () {\n return ignoreMouseDepth || this.isTouchDragging;\n };\n // can be called by user of this class, to cancel touch-based scrolling for the current drag\n PointerDragging.prototype.cancelTouchScroll = function () {\n if (this.isDragging) {\n isWindowTouchMoveCancelled = true;\n }\n };\n // Scrolling that simulates pointermoves\n // ----------------------------------------------------------------------------------------------------\n PointerDragging.prototype.initScrollWatch = function (ev) {\n if (this.shouldWatchScroll) {\n this.recordCoords(ev);\n window.addEventListener('scroll', this.handleScroll, true); // useCapture=true\n }\n };\n PointerDragging.prototype.recordCoords = function (ev) {\n if (this.shouldWatchScroll) {\n this.prevPageX = ev.pageX;\n this.prevPageY = ev.pageY;\n this.prevScrollX = window.pageXOffset;\n this.prevScrollY = window.pageYOffset;\n }\n };\n PointerDragging.prototype.destroyScrollWatch = function () {\n if (this.shouldWatchScroll) {\n window.removeEventListener('scroll', this.handleScroll, true); // useCaptured=true\n }\n };\n // Event Normalization\n // ----------------------------------------------------------------------------------------------------\n PointerDragging.prototype.createEventFromMouse = function (ev, isFirst) {\n var deltaX = 0;\n var deltaY = 0;\n // TODO: repeat code\n if (isFirst) {\n this.origPageX = ev.pageX;\n this.origPageY = ev.pageY;\n }\n else {\n deltaX = ev.pageX - this.origPageX;\n deltaY = ev.pageY - this.origPageY;\n }\n return {\n origEvent: ev,\n isTouch: false,\n subjectEl: this.subjectEl,\n pageX: ev.pageX,\n pageY: ev.pageY,\n deltaX: deltaX,\n deltaY: deltaY\n };\n };\n PointerDragging.prototype.createEventFromTouch = function (ev, isFirst) {\n var touches = ev.touches;\n var pageX;\n var pageY;\n var deltaX = 0;\n var deltaY = 0;\n // if touch coords available, prefer,\n // because FF would give bad ev.pageX ev.pageY\n if (touches && touches.length) {\n pageX = touches[0].pageX;\n pageY = touches[0].pageY;\n }\n else {\n pageX = ev.pageX;\n pageY = ev.pageY;\n }\n // TODO: repeat code\n if (isFirst) {\n this.origPageX = pageX;\n this.origPageY = pageY;\n }\n else {\n deltaX = pageX - this.origPageX;\n deltaY = pageY - this.origPageY;\n }\n return {\n origEvent: ev,\n isTouch: true,\n subjectEl: this.subjectEl,\n pageX: pageX,\n pageY: pageY,\n deltaX: deltaX,\n deltaY: deltaY\n };\n };\n return PointerDragging;\n}());\nexport default PointerDragging;\n// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac)\nfunction isPrimaryMouseButton(ev) {\n return ev.button === 0 && !ev.ctrlKey;\n}\n// Ignoring fake mouse events generated by touch\n// ----------------------------------------------------------------------------------------------------\nfunction startIgnoringMouse() {\n ignoreMouseDepth++;\n setTimeout(function () {\n ignoreMouseDepth--;\n }, config.touchMouseIgnoreWait);\n}\n// We want to attach touchmove as early as possible for Safari\n// ----------------------------------------------------------------------------------------------------\nfunction listenerCreated() {\n if (!(listenerCnt++)) {\n window.addEventListener('touchmove', onWindowTouchMove, { passive: false });\n }\n}\nfunction listenerDestroyed() {\n if (!(--listenerCnt)) {\n window.removeEventListener('touchmove', onWindowTouchMove, { passive: false });\n }\n}\nfunction onWindowTouchMove(ev) {\n if (isWindowTouchMoveCancelled) {\n ev.preventDefault();\n }\n}\n","import { removeElement, applyStyle, whenTransitionDone } from '@fullcalendar/core';\n/*\nAn effect in which an element follows the movement of a pointer across the screen.\nThe moving element is a clone of some other element.\nMust call start + handleMove + stop.\n*/\nvar ElementMirror = /** @class */ (function () {\n function ElementMirror() {\n this.isVisible = false; // must be explicitly enabled\n this.sourceEl = null;\n this.mirrorEl = null;\n this.sourceElRect = null; // screen coords relative to viewport\n // options that can be set directly by caller\n this.parentNode = document.body;\n this.zIndex = 9999;\n this.revertDuration = 0;\n }\n ElementMirror.prototype.start = function (sourceEl, pageX, pageY) {\n this.sourceEl = sourceEl;\n this.sourceElRect = this.sourceEl.getBoundingClientRect();\n this.origScreenX = pageX - window.pageXOffset;\n this.origScreenY = pageY - window.pageYOffset;\n this.deltaX = 0;\n this.deltaY = 0;\n this.updateElPosition();\n };\n ElementMirror.prototype.handleMove = function (pageX, pageY) {\n this.deltaX = (pageX - window.pageXOffset) - this.origScreenX;\n this.deltaY = (pageY - window.pageYOffset) - this.origScreenY;\n this.updateElPosition();\n };\n // can be called before start\n ElementMirror.prototype.setIsVisible = function (bool) {\n if (bool) {\n if (!this.isVisible) {\n if (this.mirrorEl) {\n this.mirrorEl.style.display = '';\n }\n this.isVisible = bool; // needs to happen before updateElPosition\n this.updateElPosition(); // because was not updating the position while invisible\n }\n }\n else {\n if (this.isVisible) {\n if (this.mirrorEl) {\n this.mirrorEl.style.display = 'none';\n }\n this.isVisible = bool;\n }\n }\n };\n // always async\n ElementMirror.prototype.stop = function (needsRevertAnimation, callback) {\n var _this = this;\n var done = function () {\n _this.cleanup();\n callback();\n };\n if (needsRevertAnimation &&\n this.mirrorEl &&\n this.isVisible &&\n this.revertDuration && // if 0, transition won't work\n (this.deltaX || this.deltaY) // if same coords, transition won't work\n ) {\n this.doRevertAnimation(done, this.revertDuration);\n }\n else {\n setTimeout(done, 0);\n }\n };\n ElementMirror.prototype.doRevertAnimation = function (callback, revertDuration) {\n var mirrorEl = this.mirrorEl;\n var finalSourceElRect = this.sourceEl.getBoundingClientRect(); // because autoscrolling might have happened\n mirrorEl.style.transition =\n 'top ' + revertDuration + 'ms,' +\n 'left ' + revertDuration + 'ms';\n applyStyle(mirrorEl, {\n left: finalSourceElRect.left,\n top: finalSourceElRect.top\n });\n whenTransitionDone(mirrorEl, function () {\n mirrorEl.style.transition = '';\n callback();\n });\n };\n ElementMirror.prototype.cleanup = function () {\n if (this.mirrorEl) {\n removeElement(this.mirrorEl);\n this.mirrorEl = null;\n }\n this.sourceEl = null;\n };\n ElementMirror.prototype.updateElPosition = function () {\n if (this.sourceEl && this.isVisible) {\n applyStyle(this.getMirrorEl(), {\n left: this.sourceElRect.left + this.deltaX,\n top: this.sourceElRect.top + this.deltaY\n });\n }\n };\n ElementMirror.prototype.getMirrorEl = function () {\n var sourceElRect = this.sourceElRect;\n var mirrorEl = this.mirrorEl;\n if (!mirrorEl) {\n mirrorEl = this.mirrorEl = this.sourceEl.cloneNode(true); // cloneChildren=true\n // we don't want long taps or any mouse interaction causing selection/menus.\n // would use preventSelection(), but that prevents selectstart, causing problems.\n mirrorEl.classList.add('fc-unselectable');\n mirrorEl.classList.add('fc-dragging');\n applyStyle(mirrorEl, {\n position: 'fixed',\n zIndex: this.zIndex,\n visibility: '',\n boxSizing: 'border-box',\n width: sourceElRect.right - sourceElRect.left,\n height: sourceElRect.bottom - sourceElRect.top,\n right: 'auto',\n bottom: 'auto',\n margin: 0\n });\n this.parentNode.appendChild(mirrorEl);\n }\n return mirrorEl;\n };\n return ElementMirror;\n}());\nexport default ElementMirror;\n","import * as tslib_1 from \"tslib\";\nimport { computeInnerRect, ScrollController, ElementScrollController, WindowScrollController } from '@fullcalendar/core';\n/*\nIs a cache for a given element's scroll information (all the info that ScrollController stores)\nin addition the \"client rectangle\" of the element.. the area within the scrollbars.\n\nThe cache can be in one of two modes:\n- doesListening:false - ignores when the container is scrolled by someone else\n- doesListening:true - watch for scrolling and update the cache\n*/\nvar ScrollGeomCache = /** @class */ (function (_super) {\n tslib_1.__extends(ScrollGeomCache, _super);\n function ScrollGeomCache(scrollController, doesListening) {\n var _this = _super.call(this) || this;\n _this.handleScroll = function () {\n _this.scrollTop = _this.scrollController.getScrollTop();\n _this.scrollLeft = _this.scrollController.getScrollLeft();\n _this.handleScrollChange();\n };\n _this.scrollController = scrollController;\n _this.doesListening = doesListening;\n _this.scrollTop = _this.origScrollTop = scrollController.getScrollTop();\n _this.scrollLeft = _this.origScrollLeft = scrollController.getScrollLeft();\n _this.scrollWidth = scrollController.getScrollWidth();\n _this.scrollHeight = scrollController.getScrollHeight();\n _this.clientWidth = scrollController.getClientWidth();\n _this.clientHeight = scrollController.getClientHeight();\n _this.clientRect = _this.computeClientRect(); // do last in case it needs cached values\n if (_this.doesListening) {\n _this.getEventTarget().addEventListener('scroll', _this.handleScroll);\n }\n return _this;\n }\n ScrollGeomCache.prototype.destroy = function () {\n if (this.doesListening) {\n this.getEventTarget().removeEventListener('scroll', this.handleScroll);\n }\n };\n ScrollGeomCache.prototype.getScrollTop = function () {\n return this.scrollTop;\n };\n ScrollGeomCache.prototype.getScrollLeft = function () {\n return this.scrollLeft;\n };\n ScrollGeomCache.prototype.setScrollTop = function (top) {\n this.scrollController.setScrollTop(top);\n if (!this.doesListening) {\n // we are not relying on the element to normalize out-of-bounds scroll values\n // so we need to sanitize ourselves\n this.scrollTop = Math.max(Math.min(top, this.getMaxScrollTop()), 0);\n this.handleScrollChange();\n }\n };\n ScrollGeomCache.prototype.setScrollLeft = function (top) {\n this.scrollController.setScrollLeft(top);\n if (!this.doesListening) {\n // we are not relying on the element to normalize out-of-bounds scroll values\n // so we need to sanitize ourselves\n this.scrollLeft = Math.max(Math.min(top, this.getMaxScrollLeft()), 0);\n this.handleScrollChange();\n }\n };\n ScrollGeomCache.prototype.getClientWidth = function () {\n return this.clientWidth;\n };\n ScrollGeomCache.prototype.getClientHeight = function () {\n return this.clientHeight;\n };\n ScrollGeomCache.prototype.getScrollWidth = function () {\n return this.scrollWidth;\n };\n ScrollGeomCache.prototype.getScrollHeight = function () {\n return this.scrollHeight;\n };\n ScrollGeomCache.prototype.handleScrollChange = function () {\n };\n return ScrollGeomCache;\n}(ScrollController));\nexport { ScrollGeomCache };\nvar ElementScrollGeomCache = /** @class */ (function (_super) {\n tslib_1.__extends(ElementScrollGeomCache, _super);\n function ElementScrollGeomCache(el, doesListening) {\n return _super.call(this, new ElementScrollController(el), doesListening) || this;\n }\n ElementScrollGeomCache.prototype.getEventTarget = function () {\n return this.scrollController.el;\n };\n ElementScrollGeomCache.prototype.computeClientRect = function () {\n return computeInnerRect(this.scrollController.el);\n };\n return ElementScrollGeomCache;\n}(ScrollGeomCache));\nexport { ElementScrollGeomCache };\nvar WindowScrollGeomCache = /** @class */ (function (_super) {\n tslib_1.__extends(WindowScrollGeomCache, _super);\n function WindowScrollGeomCache(doesListening) {\n return _super.call(this, new WindowScrollController(), doesListening) || this;\n }\n WindowScrollGeomCache.prototype.getEventTarget = function () {\n return window;\n };\n WindowScrollGeomCache.prototype.computeClientRect = function () {\n return {\n left: this.scrollLeft,\n right: this.scrollLeft + this.clientWidth,\n top: this.scrollTop,\n bottom: this.scrollTop + this.clientHeight\n };\n };\n // the window is the only scroll object that changes it's rectangle relative\n // to the document's topleft as it scrolls\n WindowScrollGeomCache.prototype.handleScrollChange = function () {\n this.clientRect = this.computeClientRect();\n };\n return WindowScrollGeomCache;\n}(ScrollGeomCache));\nexport { WindowScrollGeomCache };\n","import { ElementScrollGeomCache, WindowScrollGeomCache } from '../scroll-geom-cache';\n// If available we are using native \"performance\" API instead of \"Date\"\n// Read more about it on MDN:\n// https://developer.mozilla.org/en-US/docs/Web/API/Performance\nvar getTime = typeof performance === 'function' ? performance.now : Date.now;\n/*\nFor a pointer interaction, automatically scrolls certain scroll containers when the pointer\napproaches the edge.\n\nThe caller must call start + handleMove + stop.\n*/\nvar AutoScroller = /** @class */ (function () {\n function AutoScroller() {\n var _this = this;\n // options that can be set by caller\n this.isEnabled = true;\n this.scrollQuery = [window, '.fc-scroller'];\n this.edgeThreshold = 50; // pixels\n this.maxVelocity = 300; // pixels per second\n // internal state\n this.pointerScreenX = null;\n this.pointerScreenY = null;\n this.isAnimating = false;\n this.scrollCaches = null;\n // protect against the initial pointerdown being too close to an edge and starting the scroll\n this.everMovedUp = false;\n this.everMovedDown = false;\n this.everMovedLeft = false;\n this.everMovedRight = false;\n this.animate = function () {\n if (_this.isAnimating) { // wasn't cancelled between animation calls\n var edge = _this.computeBestEdge(_this.pointerScreenX + window.pageXOffset, _this.pointerScreenY + window.pageYOffset);\n if (edge) {\n var now = getTime();\n _this.handleSide(edge, (now - _this.msSinceRequest) / 1000);\n _this.requestAnimation(now);\n }\n else {\n _this.isAnimating = false; // will stop animation\n }\n }\n };\n }\n AutoScroller.prototype.start = function (pageX, pageY) {\n if (this.isEnabled) {\n this.scrollCaches = this.buildCaches();\n this.pointerScreenX = null;\n this.pointerScreenY = null;\n this.everMovedUp = false;\n this.everMovedDown = false;\n this.everMovedLeft = false;\n this.everMovedRight = false;\n this.handleMove(pageX, pageY);\n }\n };\n AutoScroller.prototype.handleMove = function (pageX, pageY) {\n if (this.isEnabled) {\n var pointerScreenX = pageX - window.pageXOffset;\n var pointerScreenY = pageY - window.pageYOffset;\n var yDelta = this.pointerScreenY === null ? 0 : pointerScreenY - this.pointerScreenY;\n var xDelta = this.pointerScreenX === null ? 0 : pointerScreenX - this.pointerScreenX;\n if (yDelta < 0) {\n this.everMovedUp = true;\n }\n else if (yDelta > 0) {\n this.everMovedDown = true;\n }\n if (xDelta < 0) {\n this.everMovedLeft = true;\n }\n else if (xDelta > 0) {\n this.everMovedRight = true;\n }\n this.pointerScreenX = pointerScreenX;\n this.pointerScreenY = pointerScreenY;\n if (!this.isAnimating) {\n this.isAnimating = true;\n this.requestAnimation(getTime());\n }\n }\n };\n AutoScroller.prototype.stop = function () {\n if (this.isEnabled) {\n this.isAnimating = false; // will stop animation\n for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n var scrollCache = _a[_i];\n scrollCache.destroy();\n }\n this.scrollCaches = null;\n }\n };\n AutoScroller.prototype.requestAnimation = function (now) {\n this.msSinceRequest = now;\n requestAnimationFrame(this.animate);\n };\n AutoScroller.prototype.handleSide = function (edge, seconds) {\n var scrollCache = edge.scrollCache;\n var edgeThreshold = this.edgeThreshold;\n var invDistance = edgeThreshold - edge.distance;\n var velocity = // the closer to the edge, the faster we scroll\n (invDistance * invDistance) / (edgeThreshold * edgeThreshold) * // quadratic\n this.maxVelocity * seconds;\n var sign = 1;\n switch (edge.name) {\n case 'left':\n sign = -1;\n // falls through\n case 'right':\n scrollCache.setScrollLeft(scrollCache.getScrollLeft() + velocity * sign);\n break;\n case 'top':\n sign = -1;\n // falls through\n case 'bottom':\n scrollCache.setScrollTop(scrollCache.getScrollTop() + velocity * sign);\n break;\n }\n };\n // left/top are relative to document topleft\n AutoScroller.prototype.computeBestEdge = function (left, top) {\n var edgeThreshold = this.edgeThreshold;\n var bestSide = null;\n for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n var scrollCache = _a[_i];\n var rect = scrollCache.clientRect;\n var leftDist = left - rect.left;\n var rightDist = rect.right - left;\n var topDist = top - rect.top;\n var bottomDist = rect.bottom - top;\n // completely within the rect?\n if (leftDist >= 0 && rightDist >= 0 && topDist >= 0 && bottomDist >= 0) {\n if (topDist <= edgeThreshold && this.everMovedUp && scrollCache.canScrollUp() &&\n (!bestSide || bestSide.distance > topDist)) {\n bestSide = { scrollCache: scrollCache, name: 'top', distance: topDist };\n }\n if (bottomDist <= edgeThreshold && this.everMovedDown && scrollCache.canScrollDown() &&\n (!bestSide || bestSide.distance > bottomDist)) {\n bestSide = { scrollCache: scrollCache, name: 'bottom', distance: bottomDist };\n }\n if (leftDist <= edgeThreshold && this.everMovedLeft && scrollCache.canScrollLeft() &&\n (!bestSide || bestSide.distance > leftDist)) {\n bestSide = { scrollCache: scrollCache, name: 'left', distance: leftDist };\n }\n if (rightDist <= edgeThreshold && this.everMovedRight && scrollCache.canScrollRight() &&\n (!bestSide || bestSide.distance > rightDist)) {\n bestSide = { scrollCache: scrollCache, name: 'right', distance: rightDist };\n }\n }\n }\n return bestSide;\n };\n AutoScroller.prototype.buildCaches = function () {\n return this.queryScrollEls().map(function (el) {\n if (el === window) {\n return new WindowScrollGeomCache(false); // false = don't listen to user-generated scrolls\n }\n else {\n return new ElementScrollGeomCache(el, false); // false = don't listen to user-generated scrolls\n }\n });\n };\n AutoScroller.prototype.queryScrollEls = function () {\n var els = [];\n for (var _i = 0, _a = this.scrollQuery; _i < _a.length; _i++) {\n var query = _a[_i];\n if (typeof query === 'object') {\n els.push(query);\n }\n else {\n els.push.apply(els, Array.prototype.slice.call(document.querySelectorAll(query)));\n }\n }\n return els;\n };\n return AutoScroller;\n}());\nexport default AutoScroller;\n","import * as tslib_1 from \"tslib\";\nimport { preventSelection, allowSelection, preventContextMenu, allowContextMenu, ElementDragging } from '@fullcalendar/core';\nimport PointerDragging from './PointerDragging';\nimport ElementMirror from './ElementMirror';\nimport AutoScroller from './AutoScroller';\n/*\nMonitors dragging on an element. Has a number of high-level features:\n- minimum distance required before dragging\n- minimum wait time (\"delay\") before dragging\n- a mirror element that follows the pointer\n*/\nvar FeaturefulElementDragging = /** @class */ (function (_super) {\n tslib_1.__extends(FeaturefulElementDragging, _super);\n function FeaturefulElementDragging(containerEl) {\n var _this = _super.call(this, containerEl) || this;\n // options that can be directly set by caller\n // the caller can also set the PointerDragging's options as well\n _this.delay = null;\n _this.minDistance = 0;\n _this.touchScrollAllowed = true; // prevents drag from starting and blocks scrolling during drag\n _this.mirrorNeedsRevert = false;\n _this.isInteracting = false; // is the user validly moving the pointer? lasts until pointerup\n _this.isDragging = false; // is it INTENTFULLY dragging? lasts until after revert animation\n _this.isDelayEnded = false;\n _this.isDistanceSurpassed = false;\n _this.delayTimeoutId = null;\n _this.onPointerDown = function (ev) {\n if (!_this.isDragging) { // so new drag doesn't happen while revert animation is going\n _this.isInteracting = true;\n _this.isDelayEnded = false;\n _this.isDistanceSurpassed = false;\n preventSelection(document.body);\n preventContextMenu(document.body);\n // prevent links from being visited if there's an eventual drag.\n // also prevents selection in older browsers (maybe?).\n // not necessary for touch, besides, browser would complain about passiveness.\n if (!ev.isTouch) {\n ev.origEvent.preventDefault();\n }\n _this.emitter.trigger('pointerdown', ev);\n if (!_this.pointer.shouldIgnoreMove) {\n // actions related to initiating dragstart+dragmove+dragend...\n _this.mirror.setIsVisible(false); // reset. caller must set-visible\n _this.mirror.start(ev.subjectEl, ev.pageX, ev.pageY); // must happen on first pointer down\n _this.startDelay(ev);\n if (!_this.minDistance) {\n _this.handleDistanceSurpassed(ev);\n }\n }\n }\n };\n _this.onPointerMove = function (ev) {\n if (_this.isInteracting) { // if false, still waiting for previous drag's revert\n _this.emitter.trigger('pointermove', ev);\n if (!_this.isDistanceSurpassed) {\n var minDistance = _this.minDistance;\n var distanceSq = void 0; // current distance from the origin, squared\n var deltaX = ev.deltaX, deltaY = ev.deltaY;\n distanceSq = deltaX * deltaX + deltaY * deltaY;\n if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem\n _this.handleDistanceSurpassed(ev);\n }\n }\n if (_this.isDragging) {\n // a real pointer move? (not one simulated by scrolling)\n if (ev.origEvent.type !== 'scroll') {\n _this.mirror.handleMove(ev.pageX, ev.pageY);\n _this.autoScroller.handleMove(ev.pageX, ev.pageY);\n }\n _this.emitter.trigger('dragmove', ev);\n }\n }\n };\n _this.onPointerUp = function (ev) {\n if (_this.isInteracting) { // if false, still waiting for previous drag's revert\n _this.isInteracting = false;\n allowSelection(document.body);\n allowContextMenu(document.body);\n _this.emitter.trigger('pointerup', ev); // can potentially set mirrorNeedsRevert\n if (_this.isDragging) {\n _this.autoScroller.stop();\n _this.tryStopDrag(ev); // which will stop the mirror\n }\n if (_this.delayTimeoutId) {\n clearTimeout(_this.delayTimeoutId);\n _this.delayTimeoutId = null;\n }\n }\n };\n var pointer = _this.pointer = new PointerDragging(containerEl);\n pointer.emitter.on('pointerdown', _this.onPointerDown);\n pointer.emitter.on('pointermove', _this.onPointerMove);\n pointer.emitter.on('pointerup', _this.onPointerUp);\n _this.mirror = new ElementMirror();\n _this.autoScroller = new AutoScroller();\n return _this;\n }\n FeaturefulElementDragging.prototype.destroy = function () {\n this.pointer.destroy();\n };\n FeaturefulElementDragging.prototype.startDelay = function (ev) {\n var _this = this;\n if (typeof this.delay === 'number') {\n this.delayTimeoutId = setTimeout(function () {\n _this.delayTimeoutId = null;\n _this.handleDelayEnd(ev);\n }, this.delay); // not assignable to number!\n }\n else {\n this.handleDelayEnd(ev);\n }\n };\n FeaturefulElementDragging.prototype.handleDelayEnd = function (ev) {\n this.isDelayEnded = true;\n this.tryStartDrag(ev);\n };\n FeaturefulElementDragging.prototype.handleDistanceSurpassed = function (ev) {\n this.isDistanceSurpassed = true;\n this.tryStartDrag(ev);\n };\n FeaturefulElementDragging.prototype.tryStartDrag = function (ev) {\n if (this.isDelayEnded && this.isDistanceSurpassed) {\n if (!this.pointer.wasTouchScroll || this.touchScrollAllowed) {\n this.isDragging = true;\n this.mirrorNeedsRevert = false;\n this.autoScroller.start(ev.pageX, ev.pageY);\n this.emitter.trigger('dragstart', ev);\n if (this.touchScrollAllowed === false) {\n this.pointer.cancelTouchScroll();\n }\n }\n }\n };\n FeaturefulElementDragging.prototype.tryStopDrag = function (ev) {\n // .stop() is ALWAYS asynchronous, which we NEED because we want all pointerup events\n // that come from the document to fire beforehand. much more convenient this way.\n this.mirror.stop(this.mirrorNeedsRevert, this.stopDrag.bind(this, ev) // bound with args\n );\n };\n FeaturefulElementDragging.prototype.stopDrag = function (ev) {\n this.isDragging = false;\n this.emitter.trigger('dragend', ev);\n };\n // fill in the implementations...\n FeaturefulElementDragging.prototype.setIgnoreMove = function (bool) {\n this.pointer.shouldIgnoreMove = bool;\n };\n FeaturefulElementDragging.prototype.setMirrorIsVisible = function (bool) {\n this.mirror.setIsVisible(bool);\n };\n FeaturefulElementDragging.prototype.setMirrorNeedsRevert = function (bool) {\n this.mirrorNeedsRevert = bool;\n };\n FeaturefulElementDragging.prototype.setAutoScrollEnabled = function (bool) {\n this.autoScroller.isEnabled = bool;\n };\n return FeaturefulElementDragging;\n}(ElementDragging));\nexport default FeaturefulElementDragging;\n","import { getClippingParents, computeRect, pointInsideRect } from '@fullcalendar/core';\nimport { ElementScrollGeomCache } from './scroll-geom-cache';\n/*\nWhen this class is instantiated, it records the offset of an element (relative to the document topleft),\nand continues to monitor scrolling, updating the cached coordinates if it needs to.\nDoes not access the DOM after instantiation, so highly performant.\n\nAlso keeps track of all scrolling/overflow:hidden containers that are parents of the given element\nand an determine if a given point is inside the combined clipping rectangle.\n*/\nvar OffsetTracker = /** @class */ (function () {\n function OffsetTracker(el) {\n this.origRect = computeRect(el);\n // will work fine for divs that have overflow:hidden\n this.scrollCaches = getClippingParents(el).map(function (el) {\n return new ElementScrollGeomCache(el, true); // listen=true\n });\n }\n OffsetTracker.prototype.destroy = function () {\n for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n var scrollCache = _a[_i];\n scrollCache.destroy();\n }\n };\n OffsetTracker.prototype.computeLeft = function () {\n var left = this.origRect.left;\n for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n var scrollCache = _a[_i];\n left += scrollCache.origScrollLeft - scrollCache.getScrollLeft();\n }\n return left;\n };\n OffsetTracker.prototype.computeTop = function () {\n var top = this.origRect.top;\n for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n var scrollCache = _a[_i];\n top += scrollCache.origScrollTop - scrollCache.getScrollTop();\n }\n return top;\n };\n OffsetTracker.prototype.isWithinClipping = function (pageX, pageY) {\n var point = { left: pageX, top: pageY };\n for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n var scrollCache = _a[_i];\n if (!isIgnoredClipping(scrollCache.getEventTarget()) &&\n !pointInsideRect(point, scrollCache.clientRect)) {\n return false;\n }\n }\n return true;\n };\n return OffsetTracker;\n}());\nexport default OffsetTracker;\n// certain clipping containers should never constrain interactions, like <html> and <body>\n// https://github.com/fullcalendar/fullcalendar/issues/3615\nfunction isIgnoredClipping(node) {\n var tagName = node.tagName;\n return tagName === 'HTML' || tagName === 'BODY';\n}\n","import { EmitterMixin, isDateSpansEqual, computeRect, constrainPoint, intersectRects, getRectCenter, diffPoints, rangeContainsRange, mapHash } from '@fullcalendar/core';\nimport OffsetTracker from '../OffsetTracker';\n/*\nTracks movement over multiple droppable areas (aka \"hits\")\nthat exist in one or more DateComponents.\nRelies on an existing draggable.\n\nemits:\n- pointerdown\n- dragstart\n- hitchange - fires initially, even if not over a hit\n- pointerup\n- (hitchange - again, to null, if ended over a hit)\n- dragend\n*/\nvar HitDragging = /** @class */ (function () {\n function HitDragging(dragging, droppableStore) {\n var _this = this;\n // options that can be set by caller\n this.useSubjectCenter = false;\n this.requireInitial = true; // if doesn't start out on a hit, won't emit any events\n this.initialHit = null;\n this.movingHit = null;\n this.finalHit = null; // won't ever be populated if shouldIgnoreMove\n this.handlePointerDown = function (ev) {\n var dragging = _this.dragging;\n _this.initialHit = null;\n _this.movingHit = null;\n _this.finalHit = null;\n _this.prepareHits();\n _this.processFirstCoord(ev);\n if (_this.initialHit || !_this.requireInitial) {\n dragging.setIgnoreMove(false);\n _this.emitter.trigger('pointerdown', ev); // TODO: fire this before computing processFirstCoord, so listeners can cancel. this gets fired by almost every handler :(\n }\n else {\n dragging.setIgnoreMove(true);\n }\n };\n this.handleDragStart = function (ev) {\n _this.emitter.trigger('dragstart', ev);\n _this.handleMove(ev, true); // force = fire even if initially null\n };\n this.handleDragMove = function (ev) {\n _this.emitter.trigger('dragmove', ev);\n _this.handleMove(ev);\n };\n this.handlePointerUp = function (ev) {\n _this.releaseHits();\n _this.emitter.trigger('pointerup', ev);\n };\n this.handleDragEnd = function (ev) {\n if (_this.movingHit) {\n _this.emitter.trigger('hitupdate', null, true, ev);\n }\n _this.finalHit = _this.movingHit;\n _this.movingHit = null;\n _this.emitter.trigger('dragend', ev);\n };\n this.droppableStore = droppableStore;\n dragging.emitter.on('pointerdown', this.handlePointerDown);\n dragging.emitter.on('dragstart', this.handleDragStart);\n dragging.emitter.on('dragmove', this.handleDragMove);\n dragging.emitter.on('pointerup', this.handlePointerUp);\n dragging.emitter.on('dragend', this.handleDragEnd);\n this.dragging = dragging;\n this.emitter = new EmitterMixin();\n }\n // sets initialHit\n // sets coordAdjust\n HitDragging.prototype.processFirstCoord = function (ev) {\n var origPoint = { left: ev.pageX, top: ev.pageY };\n var adjustedPoint = origPoint;\n var subjectEl = ev.subjectEl;\n var subjectRect;\n if (subjectEl !== document) {\n subjectRect = computeRect(subjectEl);\n adjustedPoint = constrainPoint(adjustedPoint, subjectRect);\n }\n var initialHit = this.initialHit = this.queryHitForOffset(adjustedPoint.left, adjustedPoint.top);\n if (initialHit) {\n if (this.useSubjectCenter && subjectRect) {\n var slicedSubjectRect = intersectRects(subjectRect, initialHit.rect);\n if (slicedSubjectRect) {\n adjustedPoint = getRectCenter(slicedSubjectRect);\n }\n }\n this.coordAdjust = diffPoints(adjustedPoint, origPoint);\n }\n else {\n this.coordAdjust = { left: 0, top: 0 };\n }\n };\n HitDragging.prototype.handleMove = function (ev, forceHandle) {\n var hit = this.queryHitForOffset(ev.pageX + this.coordAdjust.left, ev.pageY + this.coordAdjust.top);\n if (forceHandle || !isHitsEqual(this.movingHit, hit)) {\n this.movingHit = hit;\n this.emitter.trigger('hitupdate', hit, false, ev);\n }\n };\n HitDragging.prototype.prepareHits = function () {\n this.offsetTrackers = mapHash(this.droppableStore, function (interactionSettings) {\n interactionSettings.component.buildPositionCaches();\n return new OffsetTracker(interactionSettings.el);\n });\n };\n HitDragging.prototype.releaseHits = function () {\n var offsetTrackers = this.offsetTrackers;\n for (var id in offsetTrackers) {\n offsetTrackers[id].destroy();\n }\n this.offsetTrackers = {};\n };\n HitDragging.prototype.queryHitForOffset = function (offsetLeft, offsetTop) {\n var _a = this, droppableStore = _a.droppableStore, offsetTrackers = _a.offsetTrackers;\n var bestHit = null;\n for (var id in droppableStore) {\n var component = droppableStore[id].component;\n var offsetTracker = offsetTrackers[id];\n if (offsetTracker.isWithinClipping(offsetLeft, offsetTop)) {\n var originLeft = offsetTracker.computeLeft();\n var originTop = offsetTracker.computeTop();\n var positionLeft = offsetLeft - originLeft;\n var positionTop = offsetTop - originTop;\n var origRect = offsetTracker.origRect;\n var width = origRect.right - origRect.left;\n var height = origRect.bottom - origRect.top;\n if (\n // must be within the element's bounds\n positionLeft >= 0 && positionLeft < width &&\n positionTop >= 0 && positionTop < height) {\n var hit = component.queryHit(positionLeft, positionTop, width, height);\n if (hit &&\n (\n // make sure the hit is within activeRange, meaning it's not a deal cell\n !component.props.dateProfile || // hack for DayTile\n rangeContainsRange(component.props.dateProfile.activeRange, hit.dateSpan.range)) &&\n (!bestHit || hit.layer > bestHit.layer)) {\n // TODO: better way to re-orient rectangle\n hit.rect.left += originLeft;\n hit.rect.right += originLeft;\n hit.rect.top += originTop;\n hit.rect.bottom += originTop;\n bestHit = hit;\n }\n }\n }\n }\n return bestHit;\n };\n return HitDragging;\n}());\nexport default HitDragging;\nexport function isHitsEqual(hit0, hit1) {\n if (!hit0 && !hit1) {\n return true;\n }\n if (Boolean(hit0) !== Boolean(hit1)) {\n return false;\n }\n return isDateSpansEqual(hit0.dateSpan, hit1.dateSpan);\n}\n","import * as tslib_1 from \"tslib\";\nimport { Interaction, interactionSettingsToStore } from '@fullcalendar/core';\nimport FeaturefulElementDragging from '../dnd/FeaturefulElementDragging';\nimport HitDragging, { isHitsEqual } from './HitDragging';\n/*\nMonitors when the user clicks on a specific date/time of a component.\nA pointerdown+pointerup on the same \"hit\" constitutes a click.\n*/\nvar DateClicking = /** @class */ (function (_super) {\n tslib_1.__extends(DateClicking, _super);\n function DateClicking(settings) {\n var _this = _super.call(this, settings) || this;\n _this.handlePointerDown = function (ev) {\n var dragging = _this.dragging;\n // do this in pointerdown (not dragend) because DOM might be mutated by the time dragend is fired\n dragging.setIgnoreMove(!_this.component.isValidDateDownEl(dragging.pointer.downEl));\n };\n // won't even fire if moving was ignored\n _this.handleDragEnd = function (ev) {\n var component = _this.component;\n var _a = component.context, calendar = _a.calendar, view = _a.view;\n var pointer = _this.dragging.pointer;\n if (!pointer.wasTouchScroll) {\n var _b = _this.hitDragging, initialHit = _b.initialHit, finalHit = _b.finalHit;\n if (initialHit && finalHit && isHitsEqual(initialHit, finalHit)) {\n calendar.triggerDateClick(initialHit.dateSpan, initialHit.dayEl, view, ev.origEvent);\n }\n }\n };\n var component = settings.component;\n // we DO want to watch pointer moves because otherwise finalHit won't get populated\n _this.dragging = new FeaturefulElementDragging(component.el);\n _this.dragging.autoScroller.isEnabled = false;\n var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsToStore(settings));\n hitDragging.emitter.on('pointerdown', _this.handlePointerDown);\n hitDragging.emitter.on('dragend', _this.handleDragEnd);\n return _this;\n }\n DateClicking.prototype.destroy = function () {\n this.dragging.destroy();\n };\n return DateClicking;\n}(Interaction));\nexport default DateClicking;\n","import * as tslib_1 from \"tslib\";\nimport { compareNumbers, enableCursor, disableCursor, Interaction, interactionSettingsToStore } from '@fullcalendar/core';\nimport HitDragging from './HitDragging';\nimport FeaturefulElementDragging from '../dnd/FeaturefulElementDragging';\nimport { __assign } from 'tslib';\n/*\nTracks when the user selects a portion of time of a component,\nconstituted by a drag over date cells, with a possible delay at the beginning of the drag.\n*/\nvar DateSelecting = /** @class */ (function (_super) {\n tslib_1.__extends(DateSelecting, _super);\n function DateSelecting(settings) {\n var _this = _super.call(this, settings) || this;\n _this.dragSelection = null;\n _this.handlePointerDown = function (ev) {\n var _a = _this, component = _a.component, dragging = _a.dragging;\n var options = component.context.options;\n var canSelect = options.selectable &&\n component.isValidDateDownEl(ev.origEvent.target);\n // don't bother to watch expensive moves if component won't do selection\n dragging.setIgnoreMove(!canSelect);\n // if touch, require user to hold down\n dragging.delay = ev.isTouch ? getComponentTouchDelay(component) : null;\n };\n _this.handleDragStart = function (ev) {\n _this.component.context.calendar.unselect(ev); // unselect previous selections\n };\n _this.handleHitUpdate = function (hit, isFinal) {\n var calendar = _this.component.context.calendar;\n var dragSelection = null;\n var isInvalid = false;\n if (hit) {\n dragSelection = joinHitsIntoSelection(_this.hitDragging.initialHit, hit, calendar.pluginSystem.hooks.dateSelectionTransformers);\n if (!dragSelection || !_this.component.isDateSelectionValid(dragSelection)) {\n isInvalid = true;\n dragSelection = null;\n }\n }\n if (dragSelection) {\n calendar.dispatch({ type: 'SELECT_DATES', selection: dragSelection });\n }\n else if (!isFinal) { // only unselect if moved away while dragging\n calendar.dispatch({ type: 'UNSELECT_DATES' });\n }\n if (!isInvalid) {\n enableCursor();\n }\n else {\n disableCursor();\n }\n if (!isFinal) {\n _this.dragSelection = dragSelection; // only clear if moved away from all hits while dragging\n }\n };\n _this.handlePointerUp = function (pev) {\n if (_this.dragSelection) {\n // selection is already rendered, so just need to report selection\n _this.component.context.calendar.triggerDateSelect(_this.dragSelection, pev);\n _this.dragSelection = null;\n }\n };\n var component = settings.component;\n var options = component.context.options;\n var dragging = _this.dragging = new FeaturefulElementDragging(component.el);\n dragging.touchScrollAllowed = false;\n dragging.minDistance = options.selectMinDistance || 0;\n dragging.autoScroller.isEnabled = options.dragScroll;\n var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsToStore(settings));\n hitDragging.emitter.on('pointerdown', _this.handlePointerDown);\n hitDragging.emitter.on('dragstart', _this.handleDragStart);\n hitDragging.emitter.on('hitupdate', _this.handleHitUpdate);\n hitDragging.emitter.on('pointerup', _this.handlePointerUp);\n return _this;\n }\n DateSelecting.prototype.destroy = function () {\n this.dragging.destroy();\n };\n return DateSelecting;\n}(Interaction));\nexport default DateSelecting;\nfunction getComponentTouchDelay(component) {\n var options = component.context.options;\n var delay = options.selectLongPressDelay;\n if (delay == null) {\n delay = options.longPressDelay;\n }\n return delay;\n}\nfunction joinHitsIntoSelection(hit0, hit1, dateSelectionTransformers) {\n var dateSpan0 = hit0.dateSpan;\n var dateSpan1 = hit1.dateSpan;\n var ms = [\n dateSpan0.range.start,\n dateSpan0.range.end,\n dateSpan1.range.start,\n dateSpan1.range.end\n ];\n ms.sort(compareNumbers);\n var props = {};\n for (var _i = 0, dateSelectionTransformers_1 = dateSelectionTransformers; _i < dateSelectionTransformers_1.length; _i++) {\n var transformer = dateSelectionTransformers_1[_i];\n var res = transformer(hit0, hit1);\n if (res === false) {\n return null;\n }\n else if (res) {\n __assign(props, res);\n }\n }\n props.range = { start: ms[0], end: ms[3] };\n props.allDay = dateSpan0.allDay;\n return props;\n}\n","import * as tslib_1 from \"tslib\";\nimport { applyMutationToEventStore, startOfDay, elementClosest, getRelevantEvents, createEmptyEventStore, diffDates, enableCursor, disableCursor, getElSeg, EventApi, Interaction, interactionSettingsStore } from '@fullcalendar/core';\nimport HitDragging, { isHitsEqual } from './HitDragging';\nimport FeaturefulElementDragging from '../dnd/FeaturefulElementDragging';\nimport { __assign } from 'tslib';\nvar EventDragging = /** @class */ (function (_super) {\n tslib_1.__extends(EventDragging, _super);\n function EventDragging(settings) {\n var _this = _super.call(this, settings) || this;\n // internal state\n _this.subjectSeg = null; // the seg being selected/dragged\n _this.isDragging = false;\n _this.eventRange = null;\n _this.relevantEvents = null; // the events being dragged\n _this.receivingCalendar = null;\n _this.validMutation = null;\n _this.mutatedRelevantEvents = null;\n _this.handlePointerDown = function (ev) {\n var origTarget = ev.origEvent.target;\n var _a = _this, component = _a.component, dragging = _a.dragging;\n var mirror = dragging.mirror;\n var options = component.context.options;\n var initialCalendar = component.context.calendar;\n var subjectSeg = _this.subjectSeg = getElSeg(ev.subjectEl);\n var eventRange = _this.eventRange = subjectSeg.eventRange;\n var eventInstanceId = eventRange.instance.instanceId;\n _this.relevantEvents = getRelevantEvents(initialCalendar.state.eventStore, eventInstanceId);\n dragging.minDistance = ev.isTouch ? 0 : options.eventDragMinDistance;\n dragging.delay =\n // only do a touch delay if touch and this event hasn't been selected yet\n (ev.isTouch && eventInstanceId !== component.props.eventSelection) ?\n getComponentTouchDelay(component) :\n null;\n mirror.parentNode = initialCalendar.el;\n mirror.revertDuration = options.dragRevertDuration;\n var isValid = component.isValidSegDownEl(origTarget) &&\n !elementClosest(origTarget, '.fc-resizer'); // NOT on a resizer\n dragging.setIgnoreMove(!isValid);\n // disable dragging for elements that are resizable (ie, selectable)\n // but are not draggable\n _this.isDragging = isValid &&\n ev.subjectEl.classList.contains('fc-draggable');\n };\n _this.handleDragStart = function (ev) {\n var context = _this.component.context;\n var initialCalendar = context.calendar;\n var eventRange = _this.eventRange;\n var eventInstanceId = eventRange.instance.instanceId;\n if (ev.isTouch) {\n // need to select a different event?\n if (eventInstanceId !== _this.component.props.eventSelection) {\n initialCalendar.dispatch({ type: 'SELECT_EVENT', eventInstanceId: eventInstanceId });\n }\n }\n else {\n // if now using mouse, but was previous touch interaction, clear selected event\n initialCalendar.dispatch({ type: 'UNSELECT_EVENT' });\n }\n if (_this.isDragging) {\n initialCalendar.unselect(ev); // unselect *date* selection\n initialCalendar.publiclyTrigger('eventDragStart', [\n {\n el: _this.subjectSeg.el,\n event: new EventApi(initialCalendar, eventRange.def, eventRange.instance),\n jsEvent: ev.origEvent,\n view: context.view\n }\n ]);\n }\n };\n _this.handleHitUpdate = function (hit, isFinal) {\n if (!_this.isDragging) {\n return;\n }\n var relevantEvents = _this.relevantEvents;\n var initialHit = _this.hitDragging.initialHit;\n var initialCalendar = _this.component.context.calendar;\n // states based on new hit\n var receivingCalendar = null;\n var mutation = null;\n var mutatedRelevantEvents = null;\n var isInvalid = false;\n var interaction = {\n affectedEvents: relevantEvents,\n mutatedEvents: createEmptyEventStore(),\n isEvent: true,\n origSeg: _this.subjectSeg\n };\n if (hit) {\n var receivingComponent = hit.component;\n receivingCalendar = receivingComponent.context.calendar;\n var receivingOptions = receivingComponent.context.options;\n if (initialCalendar === receivingCalendar ||\n receivingOptions.editable && receivingOptions.droppable) {\n mutation = computeEventMutation(initialHit, hit, receivingCalendar.pluginSystem.hooks.eventDragMutationMassagers);\n if (mutation) {\n mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, receivingCalendar.eventUiBases, mutation, receivingCalendar);\n interaction.mutatedEvents = mutatedRelevantEvents;\n if (!receivingComponent.isInteractionValid(interaction)) {\n isInvalid = true;\n mutation = null;\n mutatedRelevantEvents = null;\n interaction.mutatedEvents = createEmptyEventStore();\n }\n }\n }\n else {\n receivingCalendar = null;\n }\n }\n _this.displayDrag(receivingCalendar, interaction);\n if (!isInvalid) {\n enableCursor();\n }\n else {\n disableCursor();\n }\n if (!isFinal) {\n if (initialCalendar === receivingCalendar && // TODO: write test for this\n isHitsEqual(initialHit, hit)) {\n mutation = null;\n }\n _this.dragging.setMirrorNeedsRevert(!mutation);\n // render the mirror if no already-rendered mirror\n // TODO: wish we could somehow wait for dispatch to guarantee render\n _this.dragging.setMirrorIsVisible(!hit || !document.querySelector('.fc-mirror'));\n // assign states based on new hit\n _this.receivingCalendar = receivingCalendar;\n _this.validMutation = mutation;\n _this.mutatedRelevantEvents = mutatedRelevantEvents;\n }\n };\n _this.handlePointerUp = function () {\n if (!_this.isDragging) {\n _this.cleanup(); // because handleDragEnd won't fire\n }\n };\n _this.handleDragEnd = function (ev) {\n if (_this.isDragging) {\n var context = _this.component.context;\n var initialCalendar_1 = context.calendar;\n var initialView = context.view;\n var _a = _this, receivingCalendar = _a.receivingCalendar, validMutation = _a.validMutation;\n var eventDef = _this.eventRange.def;\n var eventInstance = _this.eventRange.instance;\n var eventApi = new EventApi(initialCalendar_1, eventDef, eventInstance);\n var relevantEvents_1 = _this.relevantEvents;\n var mutatedRelevantEvents = _this.mutatedRelevantEvents;\n var finalHit = _this.hitDragging.finalHit;\n _this.clearDrag(); // must happen after revert animation\n initialCalendar_1.publiclyTrigger('eventDragStop', [\n {\n el: _this.subjectSeg.el,\n event: eventApi,\n jsEvent: ev.origEvent,\n view: initialView\n }\n ]);\n if (validMutation) {\n // dropped within same calendar\n if (receivingCalendar === initialCalendar_1) {\n initialCalendar_1.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: mutatedRelevantEvents\n });\n var transformed = {};\n for (var _i = 0, _b = initialCalendar_1.pluginSystem.hooks.eventDropTransformers; _i < _b.length; _i++) {\n var transformer = _b[_i];\n __assign(transformed, transformer(validMutation, initialCalendar_1));\n }\n var eventDropArg = tslib_1.__assign({}, transformed, { el: ev.subjectEl, delta: validMutation.datesDelta, oldEvent: eventApi, event: new EventApi(// the data AFTER the mutation\n initialCalendar_1, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null), revert: function () {\n initialCalendar_1.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents_1\n });\n }, jsEvent: ev.origEvent, view: initialView });\n initialCalendar_1.publiclyTrigger('eventDrop', [eventDropArg]);\n // dropped in different calendar\n }\n else if (receivingCalendar) {\n initialCalendar_1.publiclyTrigger('eventLeave', [\n {\n draggedEl: ev.subjectEl,\n event: eventApi,\n view: initialView\n }\n ]);\n initialCalendar_1.dispatch({\n type: 'REMOVE_EVENT_INSTANCES',\n instances: _this.mutatedRelevantEvents.instances\n });\n receivingCalendar.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: _this.mutatedRelevantEvents\n });\n if (ev.isTouch) {\n receivingCalendar.dispatch({\n type: 'SELECT_EVENT',\n eventInstanceId: eventInstance.instanceId\n });\n }\n var dropArg = tslib_1.__assign({}, receivingCalendar.buildDatePointApi(finalHit.dateSpan), { draggedEl: ev.subjectEl, jsEvent: ev.origEvent, view: finalHit.component // should this be finalHit.component.view? See #4644\n });\n receivingCalendar.publiclyTrigger('drop', [dropArg]);\n receivingCalendar.publiclyTrigger('eventReceive', [\n {\n draggedEl: ev.subjectEl,\n event: new EventApi(// the data AFTER the mutation\n receivingCalendar, mutatedRelevantEvents.defs[eventDef.defId], mutatedRelevantEvents.instances[eventInstance.instanceId]),\n view: finalHit.component // should this be finalHit.component.view? See #4644\n }\n ]);\n }\n }\n else {\n initialCalendar_1.publiclyTrigger('_noEventDrop');\n }\n }\n _this.cleanup();\n };\n var component = _this.component;\n var options = component.context.options;\n var dragging = _this.dragging = new FeaturefulElementDragging(component.el);\n dragging.pointer.selector = EventDragging.SELECTOR;\n dragging.touchScrollAllowed = false;\n dragging.autoScroller.isEnabled = options.dragScroll;\n var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsStore);\n hitDragging.useSubjectCenter = settings.useEventCenter;\n hitDragging.emitter.on('pointerdown', _this.handlePointerDown);\n hitDragging.emitter.on('dragstart', _this.handleDragStart);\n hitDragging.emitter.on('hitupdate', _this.handleHitUpdate);\n hitDragging.emitter.on('pointerup', _this.handlePointerUp);\n hitDragging.emitter.on('dragend', _this.handleDragEnd);\n return _this;\n }\n EventDragging.prototype.destroy = function () {\n this.dragging.destroy();\n };\n // render a drag state on the next receivingCalendar\n EventDragging.prototype.displayDrag = function (nextCalendar, state) {\n var initialCalendar = this.component.context.calendar;\n var prevCalendar = this.receivingCalendar;\n // does the previous calendar need to be cleared?\n if (prevCalendar && prevCalendar !== nextCalendar) {\n // does the initial calendar need to be cleared?\n // if so, don't clear all the way. we still need to to hide the affectedEvents\n if (prevCalendar === initialCalendar) {\n prevCalendar.dispatch({\n type: 'SET_EVENT_DRAG',\n state: {\n affectedEvents: state.affectedEvents,\n mutatedEvents: createEmptyEventStore(),\n isEvent: true,\n origSeg: state.origSeg\n }\n });\n // completely clear the old calendar if it wasn't the initial\n }\n else {\n prevCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });\n }\n }\n if (nextCalendar) {\n nextCalendar.dispatch({ type: 'SET_EVENT_DRAG', state: state });\n }\n };\n EventDragging.prototype.clearDrag = function () {\n var initialCalendar = this.component.context.calendar;\n var receivingCalendar = this.receivingCalendar;\n if (receivingCalendar) {\n receivingCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });\n }\n // the initial calendar might have an dummy drag state from displayDrag\n if (initialCalendar !== receivingCalendar) {\n initialCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });\n }\n };\n EventDragging.prototype.cleanup = function () {\n this.subjectSeg = null;\n this.isDragging = false;\n this.eventRange = null;\n this.relevantEvents = null;\n this.receivingCalendar = null;\n this.validMutation = null;\n this.mutatedRelevantEvents = null;\n };\n EventDragging.SELECTOR = '.fc-draggable, .fc-resizable'; // TODO: test this in IE11\n return EventDragging;\n}(Interaction));\nexport default EventDragging;\nfunction computeEventMutation(hit0, hit1, massagers) {\n var dateSpan0 = hit0.dateSpan;\n var dateSpan1 = hit1.dateSpan;\n var date0 = dateSpan0.range.start;\n var date1 = dateSpan1.range.start;\n var standardProps = {};\n if (dateSpan0.allDay !== dateSpan1.allDay) {\n standardProps.allDay = dateSpan1.allDay;\n standardProps.hasEnd = hit1.component.context.options.allDayMaintainDuration;\n if (dateSpan1.allDay) {\n // means date1 is already start-of-day,\n // but date0 needs to be converted\n date0 = startOfDay(date0);\n }\n }\n var delta = diffDates(date0, date1, hit0.component.context.dateEnv, hit0.component === hit1.component ?\n hit0.component.largeUnit :\n null);\n if (delta.milliseconds) { // has hours/minutes/seconds\n standardProps.allDay = false;\n }\n var mutation = {\n datesDelta: delta,\n standardProps: standardProps\n };\n for (var _i = 0, massagers_1 = massagers; _i < massagers_1.length; _i++) {\n var massager = massagers_1[_i];\n massager(mutation, hit0, hit1);\n }\n return mutation;\n}\nfunction getComponentTouchDelay(component) {\n var options = component.context.options;\n var delay = options.eventLongPressDelay;\n if (delay == null) {\n delay = options.longPressDelay;\n }\n return delay;\n}\n","import * as tslib_1 from \"tslib\";\nimport { applyMutationToEventStore, elementClosest, getRelevantEvents, createEmptyEventStore, diffDates, enableCursor, disableCursor, EventApi, getElSeg, createDuration, Interaction, interactionSettingsToStore } from '@fullcalendar/core';\nimport HitDragging, { isHitsEqual } from './HitDragging';\nimport FeaturefulElementDragging from '../dnd/FeaturefulElementDragging';\nimport { __assign } from 'tslib';\nvar EventDragging = /** @class */ (function (_super) {\n tslib_1.__extends(EventDragging, _super);\n function EventDragging(settings) {\n var _this = _super.call(this, settings) || this;\n // internal state\n _this.draggingSeg = null; // TODO: rename to resizingSeg? subjectSeg?\n _this.eventRange = null;\n _this.relevantEvents = null;\n _this.validMutation = null;\n _this.mutatedRelevantEvents = null;\n _this.handlePointerDown = function (ev) {\n var component = _this.component;\n var seg = _this.querySeg(ev);\n var eventRange = _this.eventRange = seg.eventRange;\n _this.dragging.minDistance = component.context.options.eventDragMinDistance;\n // if touch, need to be working with a selected event\n _this.dragging.setIgnoreMove(!_this.component.isValidSegDownEl(ev.origEvent.target) ||\n (ev.isTouch && _this.component.props.eventSelection !== eventRange.instance.instanceId));\n };\n _this.handleDragStart = function (ev) {\n var _a = _this.component.context, calendar = _a.calendar, view = _a.view;\n var eventRange = _this.eventRange;\n _this.relevantEvents = getRelevantEvents(calendar.state.eventStore, _this.eventRange.instance.instanceId);\n _this.draggingSeg = _this.querySeg(ev);\n calendar.unselect();\n calendar.publiclyTrigger('eventResizeStart', [\n {\n el: _this.draggingSeg.el,\n event: new EventApi(calendar, eventRange.def, eventRange.instance),\n jsEvent: ev.origEvent,\n view: view\n }\n ]);\n };\n _this.handleHitUpdate = function (hit, isFinal, ev) {\n var calendar = _this.component.context.calendar;\n var relevantEvents = _this.relevantEvents;\n var initialHit = _this.hitDragging.initialHit;\n var eventInstance = _this.eventRange.instance;\n var mutation = null;\n var mutatedRelevantEvents = null;\n var isInvalid = false;\n var interaction = {\n affectedEvents: relevantEvents,\n mutatedEvents: createEmptyEventStore(),\n isEvent: true,\n origSeg: _this.draggingSeg\n };\n if (hit) {\n mutation = computeMutation(initialHit, hit, ev.subjectEl.classList.contains('fc-start-resizer'), eventInstance.range, calendar.pluginSystem.hooks.eventResizeJoinTransforms);\n }\n if (mutation) {\n mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, calendar.eventUiBases, mutation, calendar);\n interaction.mutatedEvents = mutatedRelevantEvents;\n if (!_this.component.isInteractionValid(interaction)) {\n isInvalid = true;\n mutation = null;\n mutatedRelevantEvents = null;\n interaction.mutatedEvents = null;\n }\n }\n if (mutatedRelevantEvents) {\n calendar.dispatch({\n type: 'SET_EVENT_RESIZE',\n state: interaction\n });\n }\n else {\n calendar.dispatch({ type: 'UNSET_EVENT_RESIZE' });\n }\n if (!isInvalid) {\n enableCursor();\n }\n else {\n disableCursor();\n }\n if (!isFinal) {\n if (mutation && isHitsEqual(initialHit, hit)) {\n mutation = null;\n }\n _this.validMutation = mutation;\n _this.mutatedRelevantEvents = mutatedRelevantEvents;\n }\n };\n _this.handleDragEnd = function (ev) {\n var _a = _this.component.context, calendar = _a.calendar, view = _a.view;\n var eventDef = _this.eventRange.def;\n var eventInstance = _this.eventRange.instance;\n var eventApi = new EventApi(calendar, eventDef, eventInstance);\n var relevantEvents = _this.relevantEvents;\n var mutatedRelevantEvents = _this.mutatedRelevantEvents;\n calendar.publiclyTrigger('eventResizeStop', [\n {\n el: _this.draggingSeg.el,\n event: eventApi,\n jsEvent: ev.origEvent,\n view: view\n }\n ]);\n if (_this.validMutation) {\n calendar.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: mutatedRelevantEvents\n });\n calendar.publiclyTrigger('eventResize', [\n {\n el: _this.draggingSeg.el,\n startDelta: _this.validMutation.startDelta || createDuration(0),\n endDelta: _this.validMutation.endDelta || createDuration(0),\n prevEvent: eventApi,\n event: new EventApi(// the data AFTER the mutation\n calendar, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null),\n revert: function () {\n calendar.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents\n });\n },\n jsEvent: ev.origEvent,\n view: view\n }\n ]);\n }\n else {\n calendar.publiclyTrigger('_noEventResize');\n }\n // reset all internal state\n _this.draggingSeg = null;\n _this.relevantEvents = null;\n _this.validMutation = null;\n // okay to keep eventInstance around. useful to set it in handlePointerDown\n };\n var component = settings.component;\n var dragging = _this.dragging = new FeaturefulElementDragging(component.el);\n dragging.pointer.selector = '.fc-resizer';\n dragging.touchScrollAllowed = false;\n dragging.autoScroller.isEnabled = component.context.options.dragScroll;\n var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsToStore(settings));\n hitDragging.emitter.on('pointerdown', _this.handlePointerDown);\n hitDragging.emitter.on('dragstart', _this.handleDragStart);\n hitDragging.emitter.on('hitupdate', _this.handleHitUpdate);\n hitDragging.emitter.on('dragend', _this.handleDragEnd);\n return _this;\n }\n EventDragging.prototype.destroy = function () {\n this.dragging.destroy();\n };\n EventDragging.prototype.querySeg = function (ev) {\n return getElSeg(elementClosest(ev.subjectEl, this.component.fgSegSelector));\n };\n return EventDragging;\n}(Interaction));\nexport default EventDragging;\nfunction computeMutation(hit0, hit1, isFromStart, instanceRange, transforms) {\n var dateEnv = hit0.component.context.dateEnv;\n var date0 = hit0.dateSpan.range.start;\n var date1 = hit1.dateSpan.range.start;\n var delta = diffDates(date0, date1, dateEnv, hit0.component.largeUnit);\n var props = {};\n for (var _i = 0, transforms_1 = transforms; _i < transforms_1.length; _i++) {\n var transform = transforms_1[_i];\n var res = transform(hit0, hit1);\n if (res === false) {\n return null;\n }\n else if (res) {\n __assign(props, res);\n }\n }\n if (isFromStart) {\n if (dateEnv.add(instanceRange.start, delta) < instanceRange.end) {\n props.startDelta = delta;\n return props;\n }\n }\n else {\n if (dateEnv.add(instanceRange.end, delta) > instanceRange.start) {\n props.endDelta = delta;\n return props;\n }\n }\n return null;\n}\n","import { elementClosest } from '@fullcalendar/core';\nimport PointerDragging from '../dnd/PointerDragging';\nimport EventDragging from './EventDragging';\nvar UnselectAuto = /** @class */ (function () {\n function UnselectAuto(calendar) {\n var _this = this;\n this.isRecentPointerDateSelect = false; // wish we could use a selector to detect date selection, but uses hit system\n this.onSelect = function (selectInfo) {\n if (selectInfo.jsEvent) {\n _this.isRecentPointerDateSelect = true;\n }\n };\n this.onDocumentPointerUp = function (pev) {\n var _a = _this, calendar = _a.calendar, documentPointer = _a.documentPointer;\n var state = calendar.state;\n // touch-scrolling should never unfocus any type of selection\n if (!documentPointer.wasTouchScroll) {\n if (state.dateSelection && // an existing date selection?\n !_this.isRecentPointerDateSelect // a new pointer-initiated date selection since last onDocumentPointerUp?\n ) {\n var unselectAuto = calendar.viewOpt('unselectAuto');\n var unselectCancel = calendar.viewOpt('unselectCancel');\n if (unselectAuto && (!unselectAuto || !elementClosest(documentPointer.downEl, unselectCancel))) {\n calendar.unselect(pev);\n }\n }\n if (state.eventSelection && // an existing event selected?\n !elementClosest(documentPointer.downEl, EventDragging.SELECTOR) // interaction DIDN'T start on an event\n ) {\n calendar.dispatch({ type: 'UNSELECT_EVENT' });\n }\n }\n _this.isRecentPointerDateSelect = false;\n };\n this.calendar = calendar;\n var documentPointer = this.documentPointer = new PointerDragging(document);\n documentPointer.shouldIgnoreMove = true;\n documentPointer.shouldWatchScroll = false;\n documentPointer.emitter.on('pointerup', this.onDocumentPointerUp);\n /*\n TODO: better way to know about whether there was a selection with the pointer\n */\n calendar.on('select', this.onSelect);\n }\n UnselectAuto.prototype.destroy = function () {\n this.calendar.off('select', this.onSelect);\n this.documentPointer.destroy();\n };\n return UnselectAuto;\n}());\nexport default UnselectAuto;\n","import * as tslib_1 from \"tslib\";\nimport { interactionSettingsStore, parseEventDef, createEventInstance, createEmptyEventStore, eventTupleToStore, config, parseDragMeta, EventApi, elementMatches, enableCursor, disableCursor, isInteractionValid } from '@fullcalendar/core';\nimport HitDragging from '../interactions/HitDragging';\nimport { __assign } from 'tslib';\n/*\nGiven an already instantiated draggable object for one-or-more elements,\nInterprets any dragging as an attempt to drag an events that lives outside\nof a calendar onto a calendar.\n*/\nvar ExternalElementDragging = /** @class */ (function () {\n function ExternalElementDragging(dragging, suppliedDragMeta) {\n var _this = this;\n this.receivingCalendar = null;\n this.droppableEvent = null; // will exist for all drags, even if create:false\n this.suppliedDragMeta = null;\n this.dragMeta = null;\n this.handleDragStart = function (ev) {\n _this.dragMeta = _this.buildDragMeta(ev.subjectEl);\n };\n this.handleHitUpdate = function (hit, isFinal, ev) {\n var dragging = _this.hitDragging.dragging;\n var receivingCalendar = null;\n var droppableEvent = null;\n var isInvalid = false;\n var interaction = {\n affectedEvents: createEmptyEventStore(),\n mutatedEvents: createEmptyEventStore(),\n isEvent: _this.dragMeta.create,\n origSeg: null\n };\n if (hit) {\n receivingCalendar = hit.component.context.calendar;\n if (_this.canDropElOnCalendar(ev.subjectEl, receivingCalendar)) {\n droppableEvent = computeEventForDateSpan(hit.dateSpan, _this.dragMeta, receivingCalendar);\n interaction.mutatedEvents = eventTupleToStore(droppableEvent);\n isInvalid = !isInteractionValid(interaction, receivingCalendar);\n if (isInvalid) {\n interaction.mutatedEvents = createEmptyEventStore();\n droppableEvent = null;\n }\n }\n }\n _this.displayDrag(receivingCalendar, interaction);\n // show mirror if no already-rendered mirror element OR if we are shutting down the mirror (?)\n // TODO: wish we could somehow wait for dispatch to guarantee render\n dragging.setMirrorIsVisible(isFinal || !droppableEvent || !document.querySelector('.fc-mirror'));\n if (!isInvalid) {\n enableCursor();\n }\n else {\n disableCursor();\n }\n if (!isFinal) {\n dragging.setMirrorNeedsRevert(!droppableEvent);\n _this.receivingCalendar = receivingCalendar;\n _this.droppableEvent = droppableEvent;\n }\n };\n this.handleDragEnd = function (pev) {\n var _a = _this, receivingCalendar = _a.receivingCalendar, droppableEvent = _a.droppableEvent;\n _this.clearDrag();\n if (receivingCalendar && droppableEvent) {\n var finalHit = _this.hitDragging.finalHit;\n var finalView = finalHit.component.context.view;\n var dragMeta = _this.dragMeta;\n var arg = tslib_1.__assign({}, receivingCalendar.buildDatePointApi(finalHit.dateSpan), { draggedEl: pev.subjectEl, jsEvent: pev.origEvent, view: finalView });\n receivingCalendar.publiclyTrigger('drop', [arg]);\n if (dragMeta.create) {\n receivingCalendar.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: eventTupleToStore(droppableEvent)\n });\n if (pev.isTouch) {\n receivingCalendar.dispatch({\n type: 'SELECT_EVENT',\n eventInstanceId: droppableEvent.instance.instanceId\n });\n }\n // signal that an external event landed\n receivingCalendar.publiclyTrigger('eventReceive', [\n {\n draggedEl: pev.subjectEl,\n event: new EventApi(receivingCalendar, droppableEvent.def, droppableEvent.instance),\n view: finalView\n }\n ]);\n }\n }\n _this.receivingCalendar = null;\n _this.droppableEvent = null;\n };\n var hitDragging = this.hitDragging = new HitDragging(dragging, interactionSettingsStore);\n hitDragging.requireInitial = false; // will start outside of a component\n hitDragging.emitter.on('dragstart', this.handleDragStart);\n hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n hitDragging.emitter.on('dragend', this.handleDragEnd);\n this.suppliedDragMeta = suppliedDragMeta;\n }\n ExternalElementDragging.prototype.buildDragMeta = function (subjectEl) {\n if (typeof this.suppliedDragMeta === 'object') {\n return parseDragMeta(this.suppliedDragMeta);\n }\n else if (typeof this.suppliedDragMeta === 'function') {\n return parseDragMeta(this.suppliedDragMeta(subjectEl));\n }\n else {\n return getDragMetaFromEl(subjectEl);\n }\n };\n ExternalElementDragging.prototype.displayDrag = function (nextCalendar, state) {\n var prevCalendar = this.receivingCalendar;\n if (prevCalendar && prevCalendar !== nextCalendar) {\n prevCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });\n }\n if (nextCalendar) {\n nextCalendar.dispatch({ type: 'SET_EVENT_DRAG', state: state });\n }\n };\n ExternalElementDragging.prototype.clearDrag = function () {\n if (this.receivingCalendar) {\n this.receivingCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });\n }\n };\n ExternalElementDragging.prototype.canDropElOnCalendar = function (el, receivingCalendar) {\n var dropAccept = receivingCalendar.opt('dropAccept');\n if (typeof dropAccept === 'function') {\n return dropAccept(el);\n }\n else if (typeof dropAccept === 'string' && dropAccept) {\n return Boolean(elementMatches(el, dropAccept));\n }\n return true;\n };\n return ExternalElementDragging;\n}());\nexport default ExternalElementDragging;\n// Utils for computing event store from the DragMeta\n// ----------------------------------------------------------------------------------------------------\nfunction computeEventForDateSpan(dateSpan, dragMeta, calendar) {\n var defProps = tslib_1.__assign({}, dragMeta.leftoverProps);\n for (var _i = 0, _a = calendar.pluginSystem.hooks.externalDefTransforms; _i < _a.length; _i++) {\n var transform = _a[_i];\n __assign(defProps, transform(dateSpan, dragMeta));\n }\n var def = parseEventDef(defProps, dragMeta.sourceId, dateSpan.allDay, calendar.opt('forceEventDuration') || Boolean(dragMeta.duration), // hasEnd\n calendar);\n var start = dateSpan.range.start;\n // only rely on time info if drop zone is all-day,\n // otherwise, we already know the time\n if (dateSpan.allDay && dragMeta.startTime) {\n start = calendar.dateEnv.add(start, dragMeta.startTime);\n }\n var end = dragMeta.duration ?\n calendar.dateEnv.add(start, dragMeta.duration) :\n calendar.getDefaultEventEnd(dateSpan.allDay, start);\n var instance = createEventInstance(def.defId, { start: start, end: end });\n return { def: def, instance: instance };\n}\n// Utils for extracting data from element\n// ----------------------------------------------------------------------------------------------------\nfunction getDragMetaFromEl(el) {\n var str = getEmbeddedElData(el, 'event');\n var obj = str ?\n JSON.parse(str) :\n { create: false }; // if no embedded data, assume no event creation\n return parseDragMeta(obj);\n}\nconfig.dataAttrPrefix = '';\nfunction getEmbeddedElData(el, name) {\n var prefix = config.dataAttrPrefix;\n var prefixedName = (prefix ? prefix + '-' : '') + name;\n return el.getAttribute('data-' + prefixedName) || '';\n}\n","import { globalDefaults } from '@fullcalendar/core';\nimport FeaturefulElementDragging from '../dnd/FeaturefulElementDragging';\nimport ExternalElementDragging from './ExternalElementDragging';\n/*\nMakes an element (that is *external* to any calendar) draggable.\nCan pass in data that determines how an event will be created when dropped onto a calendar.\nLeverages FullCalendar's internal drag-n-drop functionality WITHOUT a third-party drag system.\n*/\nvar ExternalDraggable = /** @class */ (function () {\n function ExternalDraggable(el, settings) {\n var _this = this;\n if (settings === void 0) { settings = {}; }\n this.handlePointerDown = function (ev) {\n var dragging = _this.dragging;\n var _a = _this.settings, minDistance = _a.minDistance, longPressDelay = _a.longPressDelay;\n dragging.minDistance =\n minDistance != null ?\n minDistance :\n (ev.isTouch ? 0 : globalDefaults.eventDragMinDistance);\n dragging.delay =\n ev.isTouch ? // TODO: eventually read eventLongPressDelay instead vvv\n (longPressDelay != null ? longPressDelay : globalDefaults.longPressDelay) :\n 0;\n };\n this.handleDragStart = function (ev) {\n if (ev.isTouch &&\n _this.dragging.delay &&\n ev.subjectEl.classList.contains('fc-event')) {\n _this.dragging.mirror.getMirrorEl().classList.add('fc-selected');\n }\n };\n this.settings = settings;\n var dragging = this.dragging = new FeaturefulElementDragging(el);\n dragging.touchScrollAllowed = false;\n if (settings.itemSelector != null) {\n dragging.pointer.selector = settings.itemSelector;\n }\n if (settings.appendTo != null) {\n dragging.mirror.parentNode = settings.appendTo; // TODO: write tests\n }\n dragging.emitter.on('pointerdown', this.handlePointerDown);\n dragging.emitter.on('dragstart', this.handleDragStart);\n new ExternalElementDragging(dragging, settings.eventData);\n }\n ExternalDraggable.prototype.destroy = function () {\n this.dragging.destroy();\n };\n return ExternalDraggable;\n}());\nexport default ExternalDraggable;\n","import * as tslib_1 from \"tslib\";\nimport { ElementDragging } from '@fullcalendar/core';\nimport PointerDragging from '../dnd/PointerDragging';\n/*\nDetects when a *THIRD-PARTY* drag-n-drop system interacts with elements.\nThe third-party system is responsible for drawing the visuals effects of the drag.\nThis class simply monitors for pointer movements and fires events.\nIt also has the ability to hide the moving element (the \"mirror\") during the drag.\n*/\nvar InferredElementDragging = /** @class */ (function (_super) {\n tslib_1.__extends(InferredElementDragging, _super);\n function InferredElementDragging(containerEl) {\n var _this = _super.call(this, containerEl) || this;\n _this.shouldIgnoreMove = false;\n _this.mirrorSelector = '';\n _this.currentMirrorEl = null;\n _this.handlePointerDown = function (ev) {\n _this.emitter.trigger('pointerdown', ev);\n if (!_this.shouldIgnoreMove) {\n // fire dragstart right away. does not support delay or min-distance\n _this.emitter.trigger('dragstart', ev);\n }\n };\n _this.handlePointerMove = function (ev) {\n if (!_this.shouldIgnoreMove) {\n _this.emitter.trigger('dragmove', ev);\n }\n };\n _this.handlePointerUp = function (ev) {\n _this.emitter.trigger('pointerup', ev);\n if (!_this.shouldIgnoreMove) {\n // fire dragend right away. does not support a revert animation\n _this.emitter.trigger('dragend', ev);\n }\n };\n var pointer = _this.pointer = new PointerDragging(containerEl);\n pointer.emitter.on('pointerdown', _this.handlePointerDown);\n pointer.emitter.on('pointermove', _this.handlePointerMove);\n pointer.emitter.on('pointerup', _this.handlePointerUp);\n return _this;\n }\n InferredElementDragging.prototype.destroy = function () {\n this.pointer.destroy();\n };\n InferredElementDragging.prototype.setIgnoreMove = function (bool) {\n this.shouldIgnoreMove = bool;\n };\n InferredElementDragging.prototype.setMirrorIsVisible = function (bool) {\n if (bool) {\n // restore a previously hidden element.\n // use the reference in case the selector class has already been removed.\n if (this.currentMirrorEl) {\n this.currentMirrorEl.style.visibility = '';\n this.currentMirrorEl = null;\n }\n }\n else {\n var mirrorEl = this.mirrorSelector ?\n document.querySelector(this.mirrorSelector) :\n null;\n if (mirrorEl) {\n this.currentMirrorEl = mirrorEl;\n mirrorEl.style.visibility = 'hidden';\n }\n }\n };\n return InferredElementDragging;\n}(ElementDragging));\nexport default InferredElementDragging;\n","import ExternalElementDragging from './ExternalElementDragging';\nimport InferredElementDragging from './InferredElementDragging';\n/*\nBridges third-party drag-n-drop systems with FullCalendar.\nMust be instantiated and destroyed by caller.\n*/\nvar ThirdPartyDraggable = /** @class */ (function () {\n function ThirdPartyDraggable(containerOrSettings, settings) {\n var containerEl = document;\n if (\n // wish we could just test instanceof EventTarget, but doesn't work in IE11\n containerOrSettings === document ||\n containerOrSettings instanceof Element) {\n containerEl = containerOrSettings;\n settings = settings || {};\n }\n else {\n settings = (containerOrSettings || {});\n }\n var dragging = this.dragging = new InferredElementDragging(containerEl);\n if (typeof settings.itemSelector === 'string') {\n dragging.pointer.selector = settings.itemSelector;\n }\n else if (containerEl === document) {\n dragging.pointer.selector = '[data-event]';\n }\n if (typeof settings.mirrorSelector === 'string') {\n dragging.mirrorSelector = settings.mirrorSelector;\n }\n new ExternalElementDragging(dragging, settings.eventData);\n }\n ThirdPartyDraggable.prototype.destroy = function () {\n this.dragging.destroy();\n };\n return ThirdPartyDraggable;\n}());\nexport default ThirdPartyDraggable;\n","import { createPlugin } from '@fullcalendar/core';\nimport DateClicking from './interactions/DateClicking';\nimport DateSelecting from './interactions/DateSelecting';\nimport EventDragging from './interactions/EventDragging';\nimport EventResizing from './interactions/EventResizing';\nimport UnselectAuto from './interactions/UnselectAuto';\nimport FeaturefulElementDragging from './dnd/FeaturefulElementDragging';\nexport default createPlugin({\n componentInteractions: [DateClicking, DateSelecting, EventDragging, EventResizing],\n calendarInteractions: [UnselectAuto],\n elementDraggingImpl: FeaturefulElementDragging\n});\nexport { FeaturefulElementDragging };\nexport { default as PointerDragging } from './dnd/PointerDragging';\nexport { default as Draggable } from './interactions-external/ExternalDraggable';\nexport { default as ThirdPartyDraggable } from './interactions-external/ThirdPartyDraggable';\n"],"names":["tslib_1.__extends","getComponentTouchDelay","tslib_1.__assign","EventDragging","EventResizing"],"mappings":"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"}
package/main.min.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
- FullCalendar Interaction Plugin v4.3.0
2
+ FullCalendar Interaction Plugin v4.4.0
3
3
  Docs & License: https://fullcalendar.io/
4
4
  (c) 2019 Adam Shaw
5
5
  */
6
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@fullcalendar/core")):"function"==typeof define&&define.amd?define(["exports","@fullcalendar/core"],t):t((e=e||self).FullCalendarInteraction={},e.FullCalendar)}(this,function(e,t){"use strict";var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function r(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var i=function(){return(i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};t.config.touchMouseIgnoreWait=500;var o=0,a=0,l=!1,s=function(){function e(e){var n=this;this.subjectEl=null,this.downEl=null,this.selector="",this.handleSelector="",this.shouldIgnoreMove=!1,this.shouldWatchScroll=!0,this.isDragging=!1,this.isTouchDragging=!1,this.wasTouchScroll=!1,this.handleMouseDown=function(e){if(!n.shouldIgnoreMouse()&&function(e){return 0===e.button&&!e.ctrlKey}(e)&&n.tryStart(e)){var t=n.createEventFromMouse(e,!0);n.emitter.trigger("pointerdown",t),n.initScrollWatch(t),n.shouldIgnoreMove||document.addEventListener("mousemove",n.handleMouseMove),document.addEventListener("mouseup",n.handleMouseUp)}},this.handleMouseMove=function(e){var t=n.createEventFromMouse(e);n.recordCoords(t),n.emitter.trigger("pointermove",t)},this.handleMouseUp=function(e){document.removeEventListener("mousemove",n.handleMouseMove),document.removeEventListener("mouseup",n.handleMouseUp),n.emitter.trigger("pointerup",n.createEventFromMouse(e)),n.cleanup()},this.handleTouchStart=function(e){if(n.tryStart(e)){n.isTouchDragging=!0;var t=n.createEventFromTouch(e,!0);n.emitter.trigger("pointerdown",t),n.initScrollWatch(t);var r=e.target;n.shouldIgnoreMove||r.addEventListener("touchmove",n.handleTouchMove),r.addEventListener("touchend",n.handleTouchEnd),r.addEventListener("touchcancel",n.handleTouchEnd),window.addEventListener("scroll",n.handleTouchScroll,!0)}},this.handleTouchMove=function(e){var t=n.createEventFromTouch(e);n.recordCoords(t),n.emitter.trigger("pointermove",t)},this.handleTouchEnd=function(e){if(n.isDragging){var r=e.target;r.removeEventListener("touchmove",n.handleTouchMove),r.removeEventListener("touchend",n.handleTouchEnd),r.removeEventListener("touchcancel",n.handleTouchEnd),window.removeEventListener("scroll",n.handleTouchScroll,!0),n.emitter.trigger("pointerup",n.createEventFromTouch(e)),n.cleanup(),n.isTouchDragging=!1,o++,setTimeout(function(){o--},t.config.touchMouseIgnoreWait)}},this.handleTouchScroll=function(){n.wasTouchScroll=!0},this.handleScroll=function(e){if(!n.shouldIgnoreMove){var t=window.pageXOffset-n.prevScrollX+n.prevPageX,r=window.pageYOffset-n.prevScrollY+n.prevPageY;n.emitter.trigger("pointermove",{origEvent:e,isTouch:n.isTouchDragging,subjectEl:n.subjectEl,pageX:t,pageY:r,deltaX:t-n.origPageX,deltaY:r-n.origPageY})}},this.containerEl=e,this.emitter=new t.EmitterMixin,e.addEventListener("mousedown",this.handleMouseDown),e.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),a++||window.addEventListener("touchmove",c,{passive:!1})}return e.prototype.destroy=function(){this.containerEl.removeEventListener("mousedown",this.handleMouseDown),this.containerEl.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),--a||window.removeEventListener("touchmove",c,{passive:!1})},e.prototype.tryStart=function(e){var n=this.querySubjectEl(e),r=e.target;return!(!n||this.handleSelector&&!t.elementClosest(r,this.handleSelector))&&(this.subjectEl=n,this.downEl=r,this.isDragging=!0,this.wasTouchScroll=!1,!0)},e.prototype.cleanup=function(){l=!1,this.isDragging=!1,this.subjectEl=null,this.downEl=null,this.destroyScrollWatch()},e.prototype.querySubjectEl=function(e){return this.selector?t.elementClosest(e.target,this.selector):this.containerEl},e.prototype.shouldIgnoreMouse=function(){return o||this.isTouchDragging},e.prototype.cancelTouchScroll=function(){this.isDragging&&(l=!0)},e.prototype.initScrollWatch=function(e){this.shouldWatchScroll&&(this.recordCoords(e),window.addEventListener("scroll",this.handleScroll,!0))},e.prototype.recordCoords=function(e){this.shouldWatchScroll&&(this.prevPageX=e.pageX,this.prevPageY=e.pageY,this.prevScrollX=window.pageXOffset,this.prevScrollY=window.pageYOffset)},e.prototype.destroyScrollWatch=function(){this.shouldWatchScroll&&window.removeEventListener("scroll",this.handleScroll,!0)},e.prototype.createEventFromMouse=function(e,t){var n=0,r=0;return t?(this.origPageX=e.pageX,this.origPageY=e.pageY):(n=e.pageX-this.origPageX,r=e.pageY-this.origPageY),{origEvent:e,isTouch:!1,subjectEl:this.subjectEl,pageX:e.pageX,pageY:e.pageY,deltaX:n,deltaY:r}},e.prototype.createEventFromTouch=function(e,t){var n,r,i=e.touches,o=0,a=0;return i&&i.length?(n=i[0].pageX,r=i[0].pageY):(n=e.pageX,r=e.pageY),t?(this.origPageX=n,this.origPageY=r):(o=n-this.origPageX,a=r-this.origPageY),{origEvent:e,isTouch:!0,subjectEl:this.subjectEl,pageX:n,pageY:r,deltaX:o,deltaY:a}},e}();function c(e){l&&e.preventDefault()}var d=function(){function e(){this.isVisible=!1,this.sourceEl=null,this.mirrorEl=null,this.sourceElRect=null,this.parentNode=document.body,this.zIndex=9999,this.revertDuration=0}return e.prototype.start=function(e,t,n){this.sourceEl=e,this.sourceElRect=this.sourceEl.getBoundingClientRect(),this.origScreenX=t-window.pageXOffset,this.origScreenY=n-window.pageYOffset,this.deltaX=0,this.deltaY=0,this.updateElPosition()},e.prototype.handleMove=function(e,t){this.deltaX=e-window.pageXOffset-this.origScreenX,this.deltaY=t-window.pageYOffset-this.origScreenY,this.updateElPosition()},e.prototype.setIsVisible=function(e){e?this.isVisible||(this.mirrorEl&&(this.mirrorEl.style.display=""),this.isVisible=e,this.updateElPosition()):this.isVisible&&(this.mirrorEl&&(this.mirrorEl.style.display="none"),this.isVisible=e)},e.prototype.stop=function(e,t){var n=this,r=function(){n.cleanup(),t()};e&&this.mirrorEl&&this.isVisible&&this.revertDuration&&(this.deltaX||this.deltaY)?this.doRevertAnimation(r,this.revertDuration):setTimeout(r,0)},e.prototype.doRevertAnimation=function(e,n){var r=this.mirrorEl,i=this.sourceEl.getBoundingClientRect();r.style.transition="top "+n+"ms,left "+n+"ms",t.applyStyle(r,{left:i.left,top:i.top}),t.whenTransitionDone(r,function(){r.style.transition="",e()})},e.prototype.cleanup=function(){this.mirrorEl&&(t.removeElement(this.mirrorEl),this.mirrorEl=null),this.sourceEl=null},e.prototype.updateElPosition=function(){this.sourceEl&&this.isVisible&&t.applyStyle(this.getMirrorEl(),{left:this.sourceElRect.left+this.deltaX,top:this.sourceElRect.top+this.deltaY})},e.prototype.getMirrorEl=function(){var e=this.sourceElRect,n=this.mirrorEl;return n||((n=this.mirrorEl=this.sourceEl.cloneNode(!0)).classList.add("fc-unselectable"),n.classList.add("fc-dragging"),t.applyStyle(n,{position:"fixed",zIndex:this.zIndex,visibility:"",boxSizing:"border-box",width:e.right-e.left,height:e.bottom-e.top,right:"auto",bottom:"auto",margin:0}),this.parentNode.appendChild(n)),n},e}(),g=function(e){function t(t,n){var r=e.call(this)||this;return r.handleScroll=function(){r.scrollTop=r.scrollController.getScrollTop(),r.scrollLeft=r.scrollController.getScrollLeft(),r.handleScrollChange()},r.scrollController=t,r.doesListening=n,r.scrollTop=r.origScrollTop=t.getScrollTop(),r.scrollLeft=r.origScrollLeft=t.getScrollLeft(),r.scrollWidth=t.getScrollWidth(),r.scrollHeight=t.getScrollHeight(),r.clientWidth=t.getClientWidth(),r.clientHeight=t.getClientHeight(),r.clientRect=r.computeClientRect(),r.doesListening&&r.getEventTarget().addEventListener("scroll",r.handleScroll),r}return r(t,e),t.prototype.destroy=function(){this.doesListening&&this.getEventTarget().removeEventListener("scroll",this.handleScroll)},t.prototype.getScrollTop=function(){return this.scrollTop},t.prototype.getScrollLeft=function(){return this.scrollLeft},t.prototype.setScrollTop=function(e){this.scrollController.setScrollTop(e),this.doesListening||(this.scrollTop=Math.max(Math.min(e,this.getMaxScrollTop()),0),this.handleScrollChange())},t.prototype.setScrollLeft=function(e){this.scrollController.setScrollLeft(e),this.doesListening||(this.scrollLeft=Math.max(Math.min(e,this.getMaxScrollLeft()),0),this.handleScrollChange())},t.prototype.getClientWidth=function(){return this.clientWidth},t.prototype.getClientHeight=function(){return this.clientHeight},t.prototype.getScrollWidth=function(){return this.scrollWidth},t.prototype.getScrollHeight=function(){return this.scrollHeight},t.prototype.handleScrollChange=function(){},t}(t.ScrollController),u=function(e){function n(n,r){return e.call(this,new t.ElementScrollController(n),r)||this}return r(n,e),n.prototype.getEventTarget=function(){return this.scrollController.el},n.prototype.computeClientRect=function(){return t.computeInnerRect(this.scrollController.el)},n}(g),h=function(e){function n(n){return e.call(this,new t.WindowScrollController,n)||this}return r(n,e),n.prototype.getEventTarget=function(){return window},n.prototype.computeClientRect=function(){return{left:this.scrollLeft,right:this.scrollLeft+this.clientWidth,top:this.scrollTop,bottom:this.scrollTop+this.clientHeight}},n.prototype.handleScrollChange=function(){this.clientRect=this.computeClientRect()},n}(g),p="function"==typeof performance?performance.now:Date.now,v=function(){function e(){var e=this;this.isEnabled=!0,this.scrollQuery=[window,".fc-scroller"],this.edgeThreshold=50,this.maxVelocity=300,this.pointerScreenX=null,this.pointerScreenY=null,this.isAnimating=!1,this.scrollCaches=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.animate=function(){if(e.isAnimating){var t=e.computeBestEdge(e.pointerScreenX+window.pageXOffset,e.pointerScreenY+window.pageYOffset);if(t){var n=p();e.handleSide(t,(n-e.msSinceRequest)/1e3),e.requestAnimation(n)}else e.isAnimating=!1}}}return e.prototype.start=function(e,t){this.isEnabled&&(this.scrollCaches=this.buildCaches(),this.pointerScreenX=null,this.pointerScreenY=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.handleMove(e,t))},e.prototype.handleMove=function(e,t){if(this.isEnabled){var n=e-window.pageXOffset,r=t-window.pageYOffset,i=null===this.pointerScreenY?0:r-this.pointerScreenY,o=null===this.pointerScreenX?0:n-this.pointerScreenX;i<0?this.everMovedUp=!0:i>0&&(this.everMovedDown=!0),o<0?this.everMovedLeft=!0:o>0&&(this.everMovedRight=!0),this.pointerScreenX=n,this.pointerScreenY=r,this.isAnimating||(this.isAnimating=!0,this.requestAnimation(p()))}},e.prototype.stop=function(){if(this.isEnabled){this.isAnimating=!1;for(var e=0,t=this.scrollCaches;e<t.length;e++){t[e].destroy()}this.scrollCaches=null}},e.prototype.requestAnimation=function(e){this.msSinceRequest=e,requestAnimationFrame(this.animate)},e.prototype.handleSide=function(e,t){var n=e.scrollCache,r=this.edgeThreshold,i=r-e.distance,o=i*i/(r*r)*this.maxVelocity*t,a=1;switch(e.name){case"left":a=-1;case"right":n.setScrollLeft(n.getScrollLeft()+o*a);break;case"top":a=-1;case"bottom":n.setScrollTop(n.getScrollTop()+o*a)}},e.prototype.computeBestEdge=function(e,t){for(var n=this.edgeThreshold,r=null,i=0,o=this.scrollCaches;i<o.length;i++){var a=o[i],l=a.clientRect,s=e-l.left,c=l.right-e,d=t-l.top,g=l.bottom-t;s>=0&&c>=0&&d>=0&&g>=0&&(d<=n&&this.everMovedUp&&a.canScrollUp()&&(!r||r.distance>d)&&(r={scrollCache:a,name:"top",distance:d}),g<=n&&this.everMovedDown&&a.canScrollDown()&&(!r||r.distance>g)&&(r={scrollCache:a,name:"bottom",distance:g}),s<=n&&this.everMovedLeft&&a.canScrollLeft()&&(!r||r.distance>s)&&(r={scrollCache:a,name:"left",distance:s}),c<=n&&this.everMovedRight&&a.canScrollRight()&&(!r||r.distance>c)&&(r={scrollCache:a,name:"right",distance:c}))}return r},e.prototype.buildCaches=function(){return this.queryScrollEls().map(function(e){return e===window?new h(!1):new u(e,!1)})},e.prototype.queryScrollEls=function(){for(var e=[],t=0,n=this.scrollQuery;t<n.length;t++){var r=n[t];"object"==typeof r?e.push(r):e.push.apply(e,Array.prototype.slice.call(document.querySelectorAll(r)))}return e},e}(),f=function(e){function n(n){var r=e.call(this,n)||this;r.delay=null,r.minDistance=0,r.touchScrollAllowed=!0,r.mirrorNeedsRevert=!1,r.isInteracting=!1,r.isDragging=!1,r.isDelayEnded=!1,r.isDistanceSurpassed=!1,r.delayTimeoutId=null,r.onPointerDown=function(e){r.isDragging||(r.isInteracting=!0,r.isDelayEnded=!1,r.isDistanceSurpassed=!1,t.preventSelection(document.body),t.preventContextMenu(document.body),e.isTouch||e.origEvent.preventDefault(),r.emitter.trigger("pointerdown",e),r.pointer.shouldIgnoreMove||(r.mirror.setIsVisible(!1),r.mirror.start(e.subjectEl,e.pageX,e.pageY),r.startDelay(e),r.minDistance||r.handleDistanceSurpassed(e)))},r.onPointerMove=function(e){if(r.isInteracting){if(r.emitter.trigger("pointermove",e),!r.isDistanceSurpassed){var t=r.minDistance,n=e.deltaX,i=e.deltaY;n*n+i*i>=t*t&&r.handleDistanceSurpassed(e)}r.isDragging&&("scroll"!==e.origEvent.type&&(r.mirror.handleMove(e.pageX,e.pageY),r.autoScroller.handleMove(e.pageX,e.pageY)),r.emitter.trigger("dragmove",e))}},r.onPointerUp=function(e){r.isInteracting&&(r.isInteracting=!1,t.allowSelection(document.body),t.allowContextMenu(document.body),r.emitter.trigger("pointerup",e),r.isDragging&&(r.autoScroller.stop(),r.tryStopDrag(e)),r.delayTimeoutId&&(clearTimeout(r.delayTimeoutId),r.delayTimeoutId=null))};var i=r.pointer=new s(n);return i.emitter.on("pointerdown",r.onPointerDown),i.emitter.on("pointermove",r.onPointerMove),i.emitter.on("pointerup",r.onPointerUp),r.mirror=new d,r.autoScroller=new v,r}return r(n,e),n.prototype.destroy=function(){this.pointer.destroy()},n.prototype.startDelay=function(e){var t=this;"number"==typeof this.delay?this.delayTimeoutId=setTimeout(function(){t.delayTimeoutId=null,t.handleDelayEnd(e)},this.delay):this.handleDelayEnd(e)},n.prototype.handleDelayEnd=function(e){this.isDelayEnded=!0,this.tryStartDrag(e)},n.prototype.handleDistanceSurpassed=function(e){this.isDistanceSurpassed=!0,this.tryStartDrag(e)},n.prototype.tryStartDrag=function(e){this.isDelayEnded&&this.isDistanceSurpassed&&(this.pointer.wasTouchScroll&&!this.touchScrollAllowed||(this.isDragging=!0,this.mirrorNeedsRevert=!1,this.autoScroller.start(e.pageX,e.pageY),this.emitter.trigger("dragstart",e),!1===this.touchScrollAllowed&&this.pointer.cancelTouchScroll()))},n.prototype.tryStopDrag=function(e){this.mirror.stop(this.mirrorNeedsRevert,this.stopDrag.bind(this,e))},n.prototype.stopDrag=function(e){this.isDragging=!1,this.emitter.trigger("dragend",e)},n.prototype.setIgnoreMove=function(e){this.pointer.shouldIgnoreMove=e},n.prototype.setMirrorIsVisible=function(e){this.mirror.setIsVisible(e)},n.prototype.setMirrorNeedsRevert=function(e){this.mirrorNeedsRevert=e},n.prototype.setAutoScrollEnabled=function(e){this.autoScroller.isEnabled=e},n}(t.ElementDragging),E=function(){function e(e){this.origRect=t.computeRect(e),this.scrollCaches=t.getClippingParents(e).map(function(e){return new u(e,!0)})}return e.prototype.destroy=function(){for(var e=0,t=this.scrollCaches;e<t.length;e++){t[e].destroy()}},e.prototype.computeLeft=function(){for(var e=this.origRect.left,t=0,n=this.scrollCaches;t<n.length;t++){var r=n[t];e+=r.origScrollLeft-r.getScrollLeft()}return e},e.prototype.computeTop=function(){for(var e=this.origRect.top,t=0,n=this.scrollCaches;t<n.length;t++){var r=n[t];e+=r.origScrollTop-r.getScrollTop()}return e},e.prototype.isWithinClipping=function(e,n){for(var r,i,o={left:e,top:n},a=0,l=this.scrollCaches;a<l.length;a++){var s=l[a];if(r=s.getEventTarget(),i=void 0,"HTML"!==(i=r.tagName)&&"BODY"!==i&&!t.pointInsideRect(o,s.clientRect))return!1}return!0},e}();var m=function(){function e(e,n){var r=this;this.useSubjectCenter=!1,this.requireInitial=!0,this.initialHit=null,this.movingHit=null,this.finalHit=null,this.handlePointerDown=function(e){var t=r.dragging;r.initialHit=null,r.movingHit=null,r.finalHit=null,r.prepareHits(),r.processFirstCoord(e),r.initialHit||!r.requireInitial?(t.setIgnoreMove(!1),r.emitter.trigger("pointerdown",e)):t.setIgnoreMove(!0)},this.handleDragStart=function(e){r.emitter.trigger("dragstart",e),r.handleMove(e,!0)},this.handleDragMove=function(e){r.emitter.trigger("dragmove",e),r.handleMove(e)},this.handlePointerUp=function(e){r.releaseHits(),r.emitter.trigger("pointerup",e)},this.handleDragEnd=function(e){r.movingHit&&r.emitter.trigger("hitupdate",null,!0,e),r.finalHit=r.movingHit,r.movingHit=null,r.emitter.trigger("dragend",e)},this.droppableStore=n,e.emitter.on("pointerdown",this.handlePointerDown),e.emitter.on("dragstart",this.handleDragStart),e.emitter.on("dragmove",this.handleDragMove),e.emitter.on("pointerup",this.handlePointerUp),e.emitter.on("dragend",this.handleDragEnd),this.dragging=e,this.emitter=new t.EmitterMixin}return e.prototype.processFirstCoord=function(e){var n,r={left:e.pageX,top:e.pageY},i=r,o=e.subjectEl;o!==document&&(n=t.computeRect(o),i=t.constrainPoint(i,n));var a=this.initialHit=this.queryHitForOffset(i.left,i.top);if(a){if(this.useSubjectCenter&&n){var l=t.intersectRects(n,a.rect);l&&(i=t.getRectCenter(l))}this.coordAdjust=t.diffPoints(i,r)}else this.coordAdjust={left:0,top:0}},e.prototype.handleMove=function(e,t){var n=this.queryHitForOffset(e.pageX+this.coordAdjust.left,e.pageY+this.coordAdjust.top);!t&&S(this.movingHit,n)||(this.movingHit=n,this.emitter.trigger("hitupdate",n,!1,e))},e.prototype.prepareHits=function(){this.offsetTrackers=t.mapHash(this.droppableStore,function(e){return e.component.buildPositionCaches(),new E(e.el)})},e.prototype.releaseHits=function(){var e=this.offsetTrackers;for(var t in e)e[t].destroy();this.offsetTrackers={}},e.prototype.queryHitForOffset=function(e,n){var r=this.droppableStore,i=this.offsetTrackers,o=null;for(var a in r){var l=r[a].component,s=i[a];if(s.isWithinClipping(e,n)){var c=s.computeLeft(),d=s.computeTop(),g=e-c,u=n-d,h=s.origRect,p=h.right-h.left,v=h.bottom-h.top;if(g>=0&&g<p&&u>=0&&u<v){var f=l.queryHit(g,u,p,v);!f||l.props.dateProfile&&!t.rangeContainsRange(l.props.dateProfile.activeRange,f.dateSpan.range)||o&&!(f.layer>o.layer)||(f.rect.left+=c,f.rect.right+=c,f.rect.top+=d,f.rect.bottom+=d,o=f)}}}return o},e}();function S(e,n){return!e&&!n||Boolean(e)===Boolean(n)&&t.isDateSpansEqual(e.dateSpan,n.dateSpan)}var y=function(e){function n(n){var r=e.call(this,n)||this;r.handlePointerDown=function(e){var t=r.dragging;t.setIgnoreMove(!r.component.isValidDateDownEl(t.pointer.downEl))},r.handleDragEnd=function(e){var t=r.component;if(!r.dragging.pointer.wasTouchScroll){var n=r.hitDragging,i=n.initialHit,o=n.finalHit;i&&o&&S(i,o)&&t.calendar.triggerDateClick(i.dateSpan,i.dayEl,t.view,e.origEvent)}};var i=n.component;r.dragging=new f(i.el),r.dragging.autoScroller.isEnabled=!1;var o=r.hitDragging=new m(r.dragging,t.interactionSettingsToStore(n));return o.emitter.on("pointerdown",r.handlePointerDown),o.emitter.on("dragend",r.handleDragEnd),r}return r(n,e),n.prototype.destroy=function(){this.dragging.destroy()},n}(t.Interaction),D=function(e){function n(n){var r=e.call(this,n)||this;r.dragSelection=null,r.handlePointerDown=function(e){var t=r,n=t.component,i=t.dragging,o=n.opt("selectable")&&n.isValidDateDownEl(e.origEvent.target);i.setIgnoreMove(!o),i.delay=e.isTouch?function(e){var t=e.opt("selectLongPressDelay");null==t&&(t=e.opt("longPressDelay"));return t}(n):null},r.handleDragStart=function(e){r.component.calendar.unselect(e)},r.handleHitUpdate=function(e,n){var o=r.component.calendar,a=null,l=!1;e&&((a=function(e,n,r){var o=e.dateSpan,a=n.dateSpan,l=[o.range.start,o.range.end,a.range.start,a.range.end];l.sort(t.compareNumbers);for(var s={},c=0,d=r;c<d.length;c++){var g=d[c],u=g(e,n);if(!1===u)return null;u&&i(s,u)}return s.range={start:l[0],end:l[3]},s.allDay=o.allDay,s}(r.hitDragging.initialHit,e,o.pluginSystem.hooks.dateSelectionTransformers))&&r.component.isDateSelectionValid(a)||(l=!0,a=null)),a?o.dispatch({type:"SELECT_DATES",selection:a}):n||o.dispatch({type:"UNSELECT_DATES"}),l?t.disableCursor():t.enableCursor(),n||(r.dragSelection=a)},r.handlePointerUp=function(e){r.dragSelection&&(r.component.calendar.triggerDateSelect(r.dragSelection,e),r.dragSelection=null)};var o=n.component,a=r.dragging=new f(o.el);a.touchScrollAllowed=!1,a.minDistance=o.opt("selectMinDistance")||0,a.autoScroller.isEnabled=o.opt("dragScroll");var l=r.hitDragging=new m(r.dragging,t.interactionSettingsToStore(n));return l.emitter.on("pointerdown",r.handlePointerDown),l.emitter.on("dragstart",r.handleDragStart),l.emitter.on("hitupdate",r.handleHitUpdate),l.emitter.on("pointerup",r.handlePointerUp),r}return r(n,e),n.prototype.destroy=function(){this.dragging.destroy()},n}(t.Interaction);var w=function(e){function n(r){var o=e.call(this,r)||this;o.subjectSeg=null,o.isDragging=!1,o.eventRange=null,o.relevantEvents=null,o.receivingCalendar=null,o.validMutation=null,o.mutatedRelevantEvents=null,o.handlePointerDown=function(e){var n=e.origEvent.target,r=o,i=r.component,a=r.dragging,l=a.mirror,s=i.calendar,c=o.subjectSeg=t.getElSeg(e.subjectEl),d=(o.eventRange=c.eventRange).instance.instanceId;o.relevantEvents=t.getRelevantEvents(s.state.eventStore,d),a.minDistance=e.isTouch?0:i.opt("eventDragMinDistance"),a.delay=e.isTouch&&d!==i.props.eventSelection?function(e){var t=e.opt("eventLongPressDelay");null==t&&(t=e.opt("longPressDelay"));return t}(i):null,l.parentNode=s.el,l.revertDuration=i.opt("dragRevertDuration");var g=i.isValidSegDownEl(n)&&!t.elementClosest(n,".fc-resizer");a.setIgnoreMove(!g),o.isDragging=g&&e.subjectEl.classList.contains("fc-draggable")},o.handleDragStart=function(e){var n=o.component.calendar,r=o.eventRange,i=r.instance.instanceId;e.isTouch?i!==o.component.props.eventSelection&&n.dispatch({type:"SELECT_EVENT",eventInstanceId:i}):n.dispatch({type:"UNSELECT_EVENT"}),o.isDragging&&(n.unselect(e),n.publiclyTrigger("eventDragStart",[{el:o.subjectSeg.el,event:new t.EventApi(n,r.def,r.instance),jsEvent:e.origEvent,view:o.component.view}]))},o.handleHitUpdate=function(e,n){if(o.isDragging){var r=o.relevantEvents,i=o.hitDragging.initialHit,a=o.component.calendar,l=null,s=null,c=null,d=!1,g={affectedEvents:r,mutatedEvents:t.createEmptyEventStore(),isEvent:!0,origSeg:o.subjectSeg};if(e){var u=e.component;a===(l=u.calendar)||u.opt("editable")&&u.opt("droppable")?(s=function(e,n,r){var i=e.dateSpan,o=n.dateSpan,a=i.range.start,l=o.range.start,s={};i.allDay!==o.allDay&&(s.allDay=o.allDay,s.hasEnd=n.component.opt("allDayMaintainDuration"),o.allDay&&(a=t.startOfDay(a)));var c=t.diffDates(a,l,e.component.dateEnv,e.component===n.component?e.component.largeUnit:null);c.milliseconds&&(s.allDay=!1);for(var d={datesDelta:c,standardProps:s},g=0,u=r;g<u.length;g++){var h=u[g];h(d,e,n)}return d}(i,e,l.pluginSystem.hooks.eventDragMutationMassagers))&&(c=t.applyMutationToEventStore(r,l.eventUiBases,s,l),g.mutatedEvents=c,u.isInteractionValid(g)||(d=!0,s=null,c=null,g.mutatedEvents=t.createEmptyEventStore())):l=null}o.displayDrag(l,g),d?t.disableCursor():t.enableCursor(),n||(a===l&&S(i,e)&&(s=null),o.dragging.setMirrorNeedsRevert(!s),o.dragging.setMirrorIsVisible(!e||!document.querySelector(".fc-mirror")),o.receivingCalendar=l,o.validMutation=s,o.mutatedRelevantEvents=c)}},o.handlePointerUp=function(){o.isDragging||o.cleanup()},o.handleDragEnd=function(e){if(o.isDragging){var n=o.component.calendar,r=o.component.view,a=o,l=a.receivingCalendar,s=a.validMutation,c=o.eventRange.def,d=o.eventRange.instance,g=new t.EventApi(n,c,d),u=o.relevantEvents,h=o.mutatedRelevantEvents,p=o.hitDragging.finalHit;if(o.clearDrag(),n.publiclyTrigger("eventDragStop",[{el:o.subjectSeg.el,event:g,jsEvent:e.origEvent,view:r}]),s){if(l===n){n.dispatch({type:"MERGE_EVENTS",eventStore:h});for(var v={},f=0,E=n.pluginSystem.hooks.eventDropTransformers;f<E.length;f++){var m=E[f];i(v,m(s,n))}var S=i({},v,{el:e.subjectEl,delta:s.datesDelta,oldEvent:g,event:new t.EventApi(n,h.defs[c.defId],d?h.instances[d.instanceId]:null),revert:function(){n.dispatch({type:"MERGE_EVENTS",eventStore:u})},jsEvent:e.origEvent,view:r});n.publiclyTrigger("eventDrop",[S])}else if(l){n.publiclyTrigger("eventLeave",[{draggedEl:e.subjectEl,event:g,view:r}]),n.dispatch({type:"REMOVE_EVENT_INSTANCES",instances:o.mutatedRelevantEvents.instances}),l.dispatch({type:"MERGE_EVENTS",eventStore:o.mutatedRelevantEvents}),e.isTouch&&l.dispatch({type:"SELECT_EVENT",eventInstanceId:d.instanceId});var y=i({},l.buildDatePointApi(p.dateSpan),{draggedEl:e.subjectEl,jsEvent:e.origEvent,view:p.component});l.publiclyTrigger("drop",[y]),l.publiclyTrigger("eventReceive",[{draggedEl:e.subjectEl,event:new t.EventApi(l,h.defs[c.defId],h.instances[d.instanceId]),view:p.component}])}}else n.publiclyTrigger("_noEventDrop")}o.cleanup()};var a=o.component,l=o.dragging=new f(a.el);l.pointer.selector=n.SELECTOR,l.touchScrollAllowed=!1,l.autoScroller.isEnabled=a.opt("dragScroll");var s=o.hitDragging=new m(o.dragging,t.interactionSettingsStore);return s.useSubjectCenter=r.useEventCenter,s.emitter.on("pointerdown",o.handlePointerDown),s.emitter.on("dragstart",o.handleDragStart),s.emitter.on("hitupdate",o.handleHitUpdate),s.emitter.on("pointerup",o.handlePointerUp),s.emitter.on("dragend",o.handleDragEnd),o}return r(n,e),n.prototype.destroy=function(){this.dragging.destroy()},n.prototype.displayDrag=function(e,n){var r=this.component.calendar,i=this.receivingCalendar;i&&i!==e&&(i===r?i.dispatch({type:"SET_EVENT_DRAG",state:{affectedEvents:n.affectedEvents,mutatedEvents:t.createEmptyEventStore(),isEvent:!0,origSeg:n.origSeg}}):i.dispatch({type:"UNSET_EVENT_DRAG"})),e&&e.dispatch({type:"SET_EVENT_DRAG",state:n})},n.prototype.clearDrag=function(){var e=this.component.calendar,t=this.receivingCalendar;t&&t.dispatch({type:"UNSET_EVENT_DRAG"}),e!==t&&e.dispatch({type:"UNSET_EVENT_DRAG"})},n.prototype.cleanup=function(){this.subjectSeg=null,this.isDragging=!1,this.eventRange=null,this.relevantEvents=null,this.receivingCalendar=null,this.validMutation=null,this.mutatedRelevantEvents=null},n.SELECTOR=".fc-draggable, .fc-resizable",n}(t.Interaction);var T=function(e){function n(n){var r=e.call(this,n)||this;r.draggingSeg=null,r.eventRange=null,r.relevantEvents=null,r.validMutation=null,r.mutatedRelevantEvents=null,r.handlePointerDown=function(e){var t=r.component,n=r.querySeg(e),i=r.eventRange=n.eventRange;r.dragging.minDistance=t.opt("eventDragMinDistance"),r.dragging.setIgnoreMove(!r.component.isValidSegDownEl(e.origEvent.target)||e.isTouch&&r.component.props.eventSelection!==i.instance.instanceId)},r.handleDragStart=function(e){var n=r.component.calendar,i=r.eventRange;r.relevantEvents=t.getRelevantEvents(n.state.eventStore,r.eventRange.instance.instanceId),r.draggingSeg=r.querySeg(e),n.unselect(),n.publiclyTrigger("eventResizeStart",[{el:r.draggingSeg.el,event:new t.EventApi(n,i.def,i.instance),jsEvent:e.origEvent,view:r.component.view}])},r.handleHitUpdate=function(e,n,o){var a=r.component.calendar,l=r.relevantEvents,s=r.hitDragging.initialHit,c=r.eventRange.instance,d=null,g=null,u=!1,h={affectedEvents:l,mutatedEvents:t.createEmptyEventStore(),isEvent:!0,origSeg:r.draggingSeg};e&&(d=function(e,n,r,o,a){for(var l=e.component.dateEnv,s=e.dateSpan.range.start,c=n.dateSpan.range.start,d=t.diffDates(s,c,l,e.component.largeUnit),g={},u=0,h=a;u<h.length;u++){var p=h[u],v=p(e,n);if(!1===v)return null;v&&i(g,v)}if(r){if(l.add(o.start,d)<o.end)return g.startDelta=d,g}else if(l.add(o.end,d)>o.start)return g.endDelta=d,g;return null}(s,e,o.subjectEl.classList.contains("fc-start-resizer"),c.range,a.pluginSystem.hooks.eventResizeJoinTransforms)),d&&(g=t.applyMutationToEventStore(l,a.eventUiBases,d,a),h.mutatedEvents=g,r.component.isInteractionValid(h)||(u=!0,d=null,g=null,h.mutatedEvents=null)),g?a.dispatch({type:"SET_EVENT_RESIZE",state:h}):a.dispatch({type:"UNSET_EVENT_RESIZE"}),u?t.disableCursor():t.enableCursor(),n||(d&&S(s,e)&&(d=null),r.validMutation=d,r.mutatedRelevantEvents=g)},r.handleDragEnd=function(e){var n=r.component.calendar,i=r.component.view,o=r.eventRange.def,a=r.eventRange.instance,l=new t.EventApi(n,o,a),s=r.relevantEvents,c=r.mutatedRelevantEvents;n.publiclyTrigger("eventResizeStop",[{el:r.draggingSeg.el,event:l,jsEvent:e.origEvent,view:i}]),r.validMutation?(n.dispatch({type:"MERGE_EVENTS",eventStore:c}),n.publiclyTrigger("eventResize",[{el:r.draggingSeg.el,startDelta:r.validMutation.startDelta||t.createDuration(0),endDelta:r.validMutation.endDelta||t.createDuration(0),prevEvent:l,event:new t.EventApi(n,c.defs[o.defId],a?c.instances[a.instanceId]:null),revert:function(){n.dispatch({type:"MERGE_EVENTS",eventStore:s})},jsEvent:e.origEvent,view:i}])):n.publiclyTrigger("_noEventResize"),r.draggingSeg=null,r.relevantEvents=null,r.validMutation=null};var o=n.component,a=r.dragging=new f(o.el);a.pointer.selector=".fc-resizer",a.touchScrollAllowed=!1,a.autoScroller.isEnabled=o.opt("dragScroll");var l=r.hitDragging=new m(r.dragging,t.interactionSettingsToStore(n));return l.emitter.on("pointerdown",r.handlePointerDown),l.emitter.on("dragstart",r.handleDragStart),l.emitter.on("hitupdate",r.handleHitUpdate),l.emitter.on("dragend",r.handleDragEnd),r}return r(n,e),n.prototype.destroy=function(){this.dragging.destroy()},n.prototype.querySeg=function(e){return t.getElSeg(t.elementClosest(e.subjectEl,this.component.fgSegSelector))},n}(t.Interaction);var M=function(){function e(e){var n=this;this.isRecentPointerDateSelect=!1,this.onSelect=function(e){e.jsEvent&&(n.isRecentPointerDateSelect=!0)},this.onDocumentPointerUp=function(e){var r=n,i=r.calendar,o=r.documentPointer,a=i.state;if(!o.wasTouchScroll){if(a.dateSelection&&!n.isRecentPointerDateSelect){var l=i.viewOpt("unselectAuto"),s=i.viewOpt("unselectCancel");!l||l&&t.elementClosest(o.downEl,s)||i.unselect(e)}a.eventSelection&&!t.elementClosest(o.downEl,w.SELECTOR)&&i.dispatch({type:"UNSELECT_EVENT"})}n.isRecentPointerDateSelect=!1},this.calendar=e;var r=this.documentPointer=new s(document);r.shouldIgnoreMove=!0,r.shouldWatchScroll=!1,r.emitter.on("pointerup",this.onDocumentPointerUp),e.on("select",this.onSelect)}return e.prototype.destroy=function(){this.calendar.off("select",this.onSelect),this.documentPointer.destroy()},e}(),b=function(){function e(e,n){var r=this;this.receivingCalendar=null,this.droppableEvent=null,this.suppliedDragMeta=null,this.dragMeta=null,this.handleDragStart=function(e){r.dragMeta=r.buildDragMeta(e.subjectEl)},this.handleHitUpdate=function(e,n,o){var a=r.hitDragging.dragging,l=null,s=null,c=!1,d={affectedEvents:t.createEmptyEventStore(),mutatedEvents:t.createEmptyEventStore(),isEvent:r.dragMeta.create,origSeg:null};e&&(l=e.component.calendar,r.canDropElOnCalendar(o.subjectEl,l)&&(s=function(e,n,r){for(var o=i({},n.leftoverProps),a=0,l=r.pluginSystem.hooks.externalDefTransforms;a<l.length;a++){var s=l[a];i(o,s(e,n))}var c=t.parseEventDef(o,n.sourceId,e.allDay,r.opt("forceEventDuration")||Boolean(n.duration),r),d=e.range.start;e.allDay&&n.startTime&&(d=r.dateEnv.add(d,n.startTime));var g=n.duration?r.dateEnv.add(d,n.duration):r.getDefaultEventEnd(e.allDay,d),u=t.createEventInstance(c.defId,{start:d,end:g});return{def:c,instance:u}}(e.dateSpan,r.dragMeta,l),d.mutatedEvents=t.eventTupleToStore(s),(c=!t.isInteractionValid(d,l))&&(d.mutatedEvents=t.createEmptyEventStore(),s=null))),r.displayDrag(l,d),a.setMirrorIsVisible(n||!s||!document.querySelector(".fc-mirror")),c?t.disableCursor():t.enableCursor(),n||(a.setMirrorNeedsRevert(!s),r.receivingCalendar=l,r.droppableEvent=s)},this.handleDragEnd=function(e){var n=r,o=n.receivingCalendar,a=n.droppableEvent;if(r.clearDrag(),o&&a){var l=r.hitDragging.finalHit,s=l.component.view,c=r.dragMeta,d=i({},o.buildDatePointApi(l.dateSpan),{draggedEl:e.subjectEl,jsEvent:e.origEvent,view:s});o.publiclyTrigger("drop",[d]),c.create&&(o.dispatch({type:"MERGE_EVENTS",eventStore:t.eventTupleToStore(a)}),e.isTouch&&o.dispatch({type:"SELECT_EVENT",eventInstanceId:a.instance.instanceId}),o.publiclyTrigger("eventReceive",[{draggedEl:e.subjectEl,event:new t.EventApi(o,a.def,a.instance),view:s}]))}r.receivingCalendar=null,r.droppableEvent=null};var o=this.hitDragging=new m(e,t.interactionSettingsStore);o.requireInitial=!1,o.emitter.on("dragstart",this.handleDragStart),o.emitter.on("hitupdate",this.handleHitUpdate),o.emitter.on("dragend",this.handleDragEnd),this.suppliedDragMeta=n}return e.prototype.buildDragMeta=function(e){return"object"==typeof this.suppliedDragMeta?t.parseDragMeta(this.suppliedDragMeta):"function"==typeof this.suppliedDragMeta?t.parseDragMeta(this.suppliedDragMeta(e)):(n=function(e,n){var r=t.config.dataAttrPrefix,i=(r?r+"-":"")+n;return e.getAttribute("data-"+i)||""}(e,"event"),r=n?JSON.parse(n):{create:!1},t.parseDragMeta(r));var n,r},e.prototype.displayDrag=function(e,t){var n=this.receivingCalendar;n&&n!==e&&n.dispatch({type:"UNSET_EVENT_DRAG"}),e&&e.dispatch({type:"SET_EVENT_DRAG",state:t})},e.prototype.clearDrag=function(){this.receivingCalendar&&this.receivingCalendar.dispatch({type:"UNSET_EVENT_DRAG"})},e.prototype.canDropElOnCalendar=function(e,n){var r=n.opt("dropAccept");return"function"==typeof r?r(e):"string"!=typeof r||!r||Boolean(t.elementMatches(e,r))},e}();t.config.dataAttrPrefix="";var C=function(){function e(e,n){var r=this;void 0===n&&(n={}),this.handlePointerDown=function(e){var n=r.dragging,i=r.settings,o=i.minDistance,a=i.longPressDelay;n.minDistance=null!=o?o:e.isTouch?0:t.globalDefaults.eventDragMinDistance,n.delay=e.isTouch?null!=a?a:t.globalDefaults.longPressDelay:0},this.handleDragStart=function(e){e.isTouch&&r.dragging.delay&&e.subjectEl.classList.contains("fc-event")&&r.dragging.mirror.getMirrorEl().classList.add("fc-selected")},this.settings=n;var i=this.dragging=new f(e);i.touchScrollAllowed=!1,null!=n.itemSelector&&(i.pointer.selector=n.itemSelector),null!=n.appendTo&&(i.mirror.parentNode=n.appendTo),i.emitter.on("pointerdown",this.handlePointerDown),i.emitter.on("dragstart",this.handleDragStart),new b(i,n.eventData)}return e.prototype.destroy=function(){this.dragging.destroy()},e}(),R=function(e){function t(t){var n=e.call(this,t)||this;n.shouldIgnoreMove=!1,n.mirrorSelector="",n.currentMirrorEl=null,n.handlePointerDown=function(e){n.emitter.trigger("pointerdown",e),n.shouldIgnoreMove||n.emitter.trigger("dragstart",e)},n.handlePointerMove=function(e){n.shouldIgnoreMove||n.emitter.trigger("dragmove",e)},n.handlePointerUp=function(e){n.emitter.trigger("pointerup",e),n.shouldIgnoreMove||n.emitter.trigger("dragend",e)};var r=n.pointer=new s(t);return r.emitter.on("pointerdown",n.handlePointerDown),r.emitter.on("pointermove",n.handlePointerMove),r.emitter.on("pointerup",n.handlePointerUp),n}return r(t,e),t.prototype.destroy=function(){this.pointer.destroy()},t.prototype.setIgnoreMove=function(e){this.shouldIgnoreMove=e},t.prototype.setMirrorIsVisible=function(e){if(e)this.currentMirrorEl&&(this.currentMirrorEl.style.visibility="",this.currentMirrorEl=null);else{var t=this.mirrorSelector?document.querySelector(this.mirrorSelector):null;t&&(this.currentMirrorEl=t,t.style.visibility="hidden")}},t}(t.ElementDragging),I=function(){function e(e,t){var n=document;e===document||e instanceof Element?(n=e,t=t||{}):t=e||{};var r=this.dragging=new R(n);"string"==typeof t.itemSelector?r.pointer.selector=t.itemSelector:n===document&&(r.pointer.selector="[data-event]"),"string"==typeof t.mirrorSelector&&(r.mirrorSelector=t.mirrorSelector),new b(r,t.eventData)}return e.prototype.destroy=function(){this.dragging.destroy()},e}(),P=t.createPlugin({componentInteractions:[y,D,w,T],calendarInteractions:[M],elementDraggingImpl:f});e.Draggable=C,e.FeaturefulElementDragging=f,e.PointerDragging=s,e.ThirdPartyDraggable=I,e.default=P,Object.defineProperty(e,"__esModule",{value:!0})});
6
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@fullcalendar/core")):"function"==typeof define&&define.amd?define(["exports","@fullcalendar/core"],t):t((e=e||self).FullCalendarInteraction={},e.FullCalendar)}(this,function(e,t){"use strict";var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function r(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var i=function(){return(i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};t.config.touchMouseIgnoreWait=500;var o=0,a=0,l=!1,s=function(){function e(e){var n=this;this.subjectEl=null,this.downEl=null,this.selector="",this.handleSelector="",this.shouldIgnoreMove=!1,this.shouldWatchScroll=!0,this.isDragging=!1,this.isTouchDragging=!1,this.wasTouchScroll=!1,this.handleMouseDown=function(e){if(!n.shouldIgnoreMouse()&&function(e){return 0===e.button&&!e.ctrlKey}(e)&&n.tryStart(e)){var t=n.createEventFromMouse(e,!0);n.emitter.trigger("pointerdown",t),n.initScrollWatch(t),n.shouldIgnoreMove||document.addEventListener("mousemove",n.handleMouseMove),document.addEventListener("mouseup",n.handleMouseUp)}},this.handleMouseMove=function(e){var t=n.createEventFromMouse(e);n.recordCoords(t),n.emitter.trigger("pointermove",t)},this.handleMouseUp=function(e){document.removeEventListener("mousemove",n.handleMouseMove),document.removeEventListener("mouseup",n.handleMouseUp),n.emitter.trigger("pointerup",n.createEventFromMouse(e)),n.cleanup()},this.handleTouchStart=function(e){if(n.tryStart(e)){n.isTouchDragging=!0;var t=n.createEventFromTouch(e,!0);n.emitter.trigger("pointerdown",t),n.initScrollWatch(t);var r=e.target;n.shouldIgnoreMove||r.addEventListener("touchmove",n.handleTouchMove),r.addEventListener("touchend",n.handleTouchEnd),r.addEventListener("touchcancel",n.handleTouchEnd),window.addEventListener("scroll",n.handleTouchScroll,!0)}},this.handleTouchMove=function(e){var t=n.createEventFromTouch(e);n.recordCoords(t),n.emitter.trigger("pointermove",t)},this.handleTouchEnd=function(e){if(n.isDragging){var r=e.target;r.removeEventListener("touchmove",n.handleTouchMove),r.removeEventListener("touchend",n.handleTouchEnd),r.removeEventListener("touchcancel",n.handleTouchEnd),window.removeEventListener("scroll",n.handleTouchScroll,!0),n.emitter.trigger("pointerup",n.createEventFromTouch(e)),n.cleanup(),n.isTouchDragging=!1,o++,setTimeout(function(){o--},t.config.touchMouseIgnoreWait)}},this.handleTouchScroll=function(){n.wasTouchScroll=!0},this.handleScroll=function(e){if(!n.shouldIgnoreMove){var t=window.pageXOffset-n.prevScrollX+n.prevPageX,r=window.pageYOffset-n.prevScrollY+n.prevPageY;n.emitter.trigger("pointermove",{origEvent:e,isTouch:n.isTouchDragging,subjectEl:n.subjectEl,pageX:t,pageY:r,deltaX:t-n.origPageX,deltaY:r-n.origPageY})}},this.containerEl=e,this.emitter=new t.EmitterMixin,e.addEventListener("mousedown",this.handleMouseDown),e.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),a++||window.addEventListener("touchmove",c,{passive:!1})}return e.prototype.destroy=function(){this.containerEl.removeEventListener("mousedown",this.handleMouseDown),this.containerEl.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),--a||window.removeEventListener("touchmove",c,{passive:!1})},e.prototype.tryStart=function(e){var n=this.querySubjectEl(e),r=e.target;return!(!n||this.handleSelector&&!t.elementClosest(r,this.handleSelector))&&(this.subjectEl=n,this.downEl=r,this.isDragging=!0,this.wasTouchScroll=!1,!0)},e.prototype.cleanup=function(){l=!1,this.isDragging=!1,this.subjectEl=null,this.downEl=null,this.destroyScrollWatch()},e.prototype.querySubjectEl=function(e){return this.selector?t.elementClosest(e.target,this.selector):this.containerEl},e.prototype.shouldIgnoreMouse=function(){return o||this.isTouchDragging},e.prototype.cancelTouchScroll=function(){this.isDragging&&(l=!0)},e.prototype.initScrollWatch=function(e){this.shouldWatchScroll&&(this.recordCoords(e),window.addEventListener("scroll",this.handleScroll,!0))},e.prototype.recordCoords=function(e){this.shouldWatchScroll&&(this.prevPageX=e.pageX,this.prevPageY=e.pageY,this.prevScrollX=window.pageXOffset,this.prevScrollY=window.pageYOffset)},e.prototype.destroyScrollWatch=function(){this.shouldWatchScroll&&window.removeEventListener("scroll",this.handleScroll,!0)},e.prototype.createEventFromMouse=function(e,t){var n=0,r=0;return t?(this.origPageX=e.pageX,this.origPageY=e.pageY):(n=e.pageX-this.origPageX,r=e.pageY-this.origPageY),{origEvent:e,isTouch:!1,subjectEl:this.subjectEl,pageX:e.pageX,pageY:e.pageY,deltaX:n,deltaY:r}},e.prototype.createEventFromTouch=function(e,t){var n,r,i=e.touches,o=0,a=0;return i&&i.length?(n=i[0].pageX,r=i[0].pageY):(n=e.pageX,r=e.pageY),t?(this.origPageX=n,this.origPageY=r):(o=n-this.origPageX,a=r-this.origPageY),{origEvent:e,isTouch:!0,subjectEl:this.subjectEl,pageX:n,pageY:r,deltaX:o,deltaY:a}},e}();function c(e){l&&e.preventDefault()}var d=function(){function e(){this.isVisible=!1,this.sourceEl=null,this.mirrorEl=null,this.sourceElRect=null,this.parentNode=document.body,this.zIndex=9999,this.revertDuration=0}return e.prototype.start=function(e,t,n){this.sourceEl=e,this.sourceElRect=this.sourceEl.getBoundingClientRect(),this.origScreenX=t-window.pageXOffset,this.origScreenY=n-window.pageYOffset,this.deltaX=0,this.deltaY=0,this.updateElPosition()},e.prototype.handleMove=function(e,t){this.deltaX=e-window.pageXOffset-this.origScreenX,this.deltaY=t-window.pageYOffset-this.origScreenY,this.updateElPosition()},e.prototype.setIsVisible=function(e){e?this.isVisible||(this.mirrorEl&&(this.mirrorEl.style.display=""),this.isVisible=e,this.updateElPosition()):this.isVisible&&(this.mirrorEl&&(this.mirrorEl.style.display="none"),this.isVisible=e)},e.prototype.stop=function(e,t){var n=this,r=function(){n.cleanup(),t()};e&&this.mirrorEl&&this.isVisible&&this.revertDuration&&(this.deltaX||this.deltaY)?this.doRevertAnimation(r,this.revertDuration):setTimeout(r,0)},e.prototype.doRevertAnimation=function(e,n){var r=this.mirrorEl,i=this.sourceEl.getBoundingClientRect();r.style.transition="top "+n+"ms,left "+n+"ms",t.applyStyle(r,{left:i.left,top:i.top}),t.whenTransitionDone(r,function(){r.style.transition="",e()})},e.prototype.cleanup=function(){this.mirrorEl&&(t.removeElement(this.mirrorEl),this.mirrorEl=null),this.sourceEl=null},e.prototype.updateElPosition=function(){this.sourceEl&&this.isVisible&&t.applyStyle(this.getMirrorEl(),{left:this.sourceElRect.left+this.deltaX,top:this.sourceElRect.top+this.deltaY})},e.prototype.getMirrorEl=function(){var e=this.sourceElRect,n=this.mirrorEl;return n||((n=this.mirrorEl=this.sourceEl.cloneNode(!0)).classList.add("fc-unselectable"),n.classList.add("fc-dragging"),t.applyStyle(n,{position:"fixed",zIndex:this.zIndex,visibility:"",boxSizing:"border-box",width:e.right-e.left,height:e.bottom-e.top,right:"auto",bottom:"auto",margin:0}),this.parentNode.appendChild(n)),n},e}(),g=function(e){function t(t,n){var r=e.call(this)||this;return r.handleScroll=function(){r.scrollTop=r.scrollController.getScrollTop(),r.scrollLeft=r.scrollController.getScrollLeft(),r.handleScrollChange()},r.scrollController=t,r.doesListening=n,r.scrollTop=r.origScrollTop=t.getScrollTop(),r.scrollLeft=r.origScrollLeft=t.getScrollLeft(),r.scrollWidth=t.getScrollWidth(),r.scrollHeight=t.getScrollHeight(),r.clientWidth=t.getClientWidth(),r.clientHeight=t.getClientHeight(),r.clientRect=r.computeClientRect(),r.doesListening&&r.getEventTarget().addEventListener("scroll",r.handleScroll),r}return r(t,e),t.prototype.destroy=function(){this.doesListening&&this.getEventTarget().removeEventListener("scroll",this.handleScroll)},t.prototype.getScrollTop=function(){return this.scrollTop},t.prototype.getScrollLeft=function(){return this.scrollLeft},t.prototype.setScrollTop=function(e){this.scrollController.setScrollTop(e),this.doesListening||(this.scrollTop=Math.max(Math.min(e,this.getMaxScrollTop()),0),this.handleScrollChange())},t.prototype.setScrollLeft=function(e){this.scrollController.setScrollLeft(e),this.doesListening||(this.scrollLeft=Math.max(Math.min(e,this.getMaxScrollLeft()),0),this.handleScrollChange())},t.prototype.getClientWidth=function(){return this.clientWidth},t.prototype.getClientHeight=function(){return this.clientHeight},t.prototype.getScrollWidth=function(){return this.scrollWidth},t.prototype.getScrollHeight=function(){return this.scrollHeight},t.prototype.handleScrollChange=function(){},t}(t.ScrollController),u=function(e){function n(n,r){return e.call(this,new t.ElementScrollController(n),r)||this}return r(n,e),n.prototype.getEventTarget=function(){return this.scrollController.el},n.prototype.computeClientRect=function(){return t.computeInnerRect(this.scrollController.el)},n}(g),h=function(e){function n(n){return e.call(this,new t.WindowScrollController,n)||this}return r(n,e),n.prototype.getEventTarget=function(){return window},n.prototype.computeClientRect=function(){return{left:this.scrollLeft,right:this.scrollLeft+this.clientWidth,top:this.scrollTop,bottom:this.scrollTop+this.clientHeight}},n.prototype.handleScrollChange=function(){this.clientRect=this.computeClientRect()},n}(g),p="function"==typeof performance?performance.now:Date.now,v=function(){function e(){var e=this;this.isEnabled=!0,this.scrollQuery=[window,".fc-scroller"],this.edgeThreshold=50,this.maxVelocity=300,this.pointerScreenX=null,this.pointerScreenY=null,this.isAnimating=!1,this.scrollCaches=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.animate=function(){if(e.isAnimating){var t=e.computeBestEdge(e.pointerScreenX+window.pageXOffset,e.pointerScreenY+window.pageYOffset);if(t){var n=p();e.handleSide(t,(n-e.msSinceRequest)/1e3),e.requestAnimation(n)}else e.isAnimating=!1}}}return e.prototype.start=function(e,t){this.isEnabled&&(this.scrollCaches=this.buildCaches(),this.pointerScreenX=null,this.pointerScreenY=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.handleMove(e,t))},e.prototype.handleMove=function(e,t){if(this.isEnabled){var n=e-window.pageXOffset,r=t-window.pageYOffset,i=null===this.pointerScreenY?0:r-this.pointerScreenY,o=null===this.pointerScreenX?0:n-this.pointerScreenX;i<0?this.everMovedUp=!0:i>0&&(this.everMovedDown=!0),o<0?this.everMovedLeft=!0:o>0&&(this.everMovedRight=!0),this.pointerScreenX=n,this.pointerScreenY=r,this.isAnimating||(this.isAnimating=!0,this.requestAnimation(p()))}},e.prototype.stop=function(){if(this.isEnabled){this.isAnimating=!1;for(var e=0,t=this.scrollCaches;e<t.length;e++){t[e].destroy()}this.scrollCaches=null}},e.prototype.requestAnimation=function(e){this.msSinceRequest=e,requestAnimationFrame(this.animate)},e.prototype.handleSide=function(e,t){var n=e.scrollCache,r=this.edgeThreshold,i=r-e.distance,o=i*i/(r*r)*this.maxVelocity*t,a=1;switch(e.name){case"left":a=-1;case"right":n.setScrollLeft(n.getScrollLeft()+o*a);break;case"top":a=-1;case"bottom":n.setScrollTop(n.getScrollTop()+o*a)}},e.prototype.computeBestEdge=function(e,t){for(var n=this.edgeThreshold,r=null,i=0,o=this.scrollCaches;i<o.length;i++){var a=o[i],l=a.clientRect,s=e-l.left,c=l.right-e,d=t-l.top,g=l.bottom-t;s>=0&&c>=0&&d>=0&&g>=0&&(d<=n&&this.everMovedUp&&a.canScrollUp()&&(!r||r.distance>d)&&(r={scrollCache:a,name:"top",distance:d}),g<=n&&this.everMovedDown&&a.canScrollDown()&&(!r||r.distance>g)&&(r={scrollCache:a,name:"bottom",distance:g}),s<=n&&this.everMovedLeft&&a.canScrollLeft()&&(!r||r.distance>s)&&(r={scrollCache:a,name:"left",distance:s}),c<=n&&this.everMovedRight&&a.canScrollRight()&&(!r||r.distance>c)&&(r={scrollCache:a,name:"right",distance:c}))}return r},e.prototype.buildCaches=function(){return this.queryScrollEls().map(function(e){return e===window?new h(!1):new u(e,!1)})},e.prototype.queryScrollEls=function(){for(var e=[],t=0,n=this.scrollQuery;t<n.length;t++){var r=n[t];"object"==typeof r?e.push(r):e.push.apply(e,Array.prototype.slice.call(document.querySelectorAll(r)))}return e},e}(),f=function(e){function n(n){var r=e.call(this,n)||this;r.delay=null,r.minDistance=0,r.touchScrollAllowed=!0,r.mirrorNeedsRevert=!1,r.isInteracting=!1,r.isDragging=!1,r.isDelayEnded=!1,r.isDistanceSurpassed=!1,r.delayTimeoutId=null,r.onPointerDown=function(e){r.isDragging||(r.isInteracting=!0,r.isDelayEnded=!1,r.isDistanceSurpassed=!1,t.preventSelection(document.body),t.preventContextMenu(document.body),e.isTouch||e.origEvent.preventDefault(),r.emitter.trigger("pointerdown",e),r.pointer.shouldIgnoreMove||(r.mirror.setIsVisible(!1),r.mirror.start(e.subjectEl,e.pageX,e.pageY),r.startDelay(e),r.minDistance||r.handleDistanceSurpassed(e)))},r.onPointerMove=function(e){if(r.isInteracting){if(r.emitter.trigger("pointermove",e),!r.isDistanceSurpassed){var t=r.minDistance,n=e.deltaX,i=e.deltaY;n*n+i*i>=t*t&&r.handleDistanceSurpassed(e)}r.isDragging&&("scroll"!==e.origEvent.type&&(r.mirror.handleMove(e.pageX,e.pageY),r.autoScroller.handleMove(e.pageX,e.pageY)),r.emitter.trigger("dragmove",e))}},r.onPointerUp=function(e){r.isInteracting&&(r.isInteracting=!1,t.allowSelection(document.body),t.allowContextMenu(document.body),r.emitter.trigger("pointerup",e),r.isDragging&&(r.autoScroller.stop(),r.tryStopDrag(e)),r.delayTimeoutId&&(clearTimeout(r.delayTimeoutId),r.delayTimeoutId=null))};var i=r.pointer=new s(n);return i.emitter.on("pointerdown",r.onPointerDown),i.emitter.on("pointermove",r.onPointerMove),i.emitter.on("pointerup",r.onPointerUp),r.mirror=new d,r.autoScroller=new v,r}return r(n,e),n.prototype.destroy=function(){this.pointer.destroy()},n.prototype.startDelay=function(e){var t=this;"number"==typeof this.delay?this.delayTimeoutId=setTimeout(function(){t.delayTimeoutId=null,t.handleDelayEnd(e)},this.delay):this.handleDelayEnd(e)},n.prototype.handleDelayEnd=function(e){this.isDelayEnded=!0,this.tryStartDrag(e)},n.prototype.handleDistanceSurpassed=function(e){this.isDistanceSurpassed=!0,this.tryStartDrag(e)},n.prototype.tryStartDrag=function(e){this.isDelayEnded&&this.isDistanceSurpassed&&(this.pointer.wasTouchScroll&&!this.touchScrollAllowed||(this.isDragging=!0,this.mirrorNeedsRevert=!1,this.autoScroller.start(e.pageX,e.pageY),this.emitter.trigger("dragstart",e),!1===this.touchScrollAllowed&&this.pointer.cancelTouchScroll()))},n.prototype.tryStopDrag=function(e){this.mirror.stop(this.mirrorNeedsRevert,this.stopDrag.bind(this,e))},n.prototype.stopDrag=function(e){this.isDragging=!1,this.emitter.trigger("dragend",e)},n.prototype.setIgnoreMove=function(e){this.pointer.shouldIgnoreMove=e},n.prototype.setMirrorIsVisible=function(e){this.mirror.setIsVisible(e)},n.prototype.setMirrorNeedsRevert=function(e){this.mirrorNeedsRevert=e},n.prototype.setAutoScrollEnabled=function(e){this.autoScroller.isEnabled=e},n}(t.ElementDragging),E=function(){function e(e){this.origRect=t.computeRect(e),this.scrollCaches=t.getClippingParents(e).map(function(e){return new u(e,!0)})}return e.prototype.destroy=function(){for(var e=0,t=this.scrollCaches;e<t.length;e++){t[e].destroy()}},e.prototype.computeLeft=function(){for(var e=this.origRect.left,t=0,n=this.scrollCaches;t<n.length;t++){var r=n[t];e+=r.origScrollLeft-r.getScrollLeft()}return e},e.prototype.computeTop=function(){for(var e=this.origRect.top,t=0,n=this.scrollCaches;t<n.length;t++){var r=n[t];e+=r.origScrollTop-r.getScrollTop()}return e},e.prototype.isWithinClipping=function(e,n){for(var r,i,o={left:e,top:n},a=0,l=this.scrollCaches;a<l.length;a++){var s=l[a];if(r=s.getEventTarget(),i=void 0,"HTML"!==(i=r.tagName)&&"BODY"!==i&&!t.pointInsideRect(o,s.clientRect))return!1}return!0},e}();var m=function(){function e(e,n){var r=this;this.useSubjectCenter=!1,this.requireInitial=!0,this.initialHit=null,this.movingHit=null,this.finalHit=null,this.handlePointerDown=function(e){var t=r.dragging;r.initialHit=null,r.movingHit=null,r.finalHit=null,r.prepareHits(),r.processFirstCoord(e),r.initialHit||!r.requireInitial?(t.setIgnoreMove(!1),r.emitter.trigger("pointerdown",e)):t.setIgnoreMove(!0)},this.handleDragStart=function(e){r.emitter.trigger("dragstart",e),r.handleMove(e,!0)},this.handleDragMove=function(e){r.emitter.trigger("dragmove",e),r.handleMove(e)},this.handlePointerUp=function(e){r.releaseHits(),r.emitter.trigger("pointerup",e)},this.handleDragEnd=function(e){r.movingHit&&r.emitter.trigger("hitupdate",null,!0,e),r.finalHit=r.movingHit,r.movingHit=null,r.emitter.trigger("dragend",e)},this.droppableStore=n,e.emitter.on("pointerdown",this.handlePointerDown),e.emitter.on("dragstart",this.handleDragStart),e.emitter.on("dragmove",this.handleDragMove),e.emitter.on("pointerup",this.handlePointerUp),e.emitter.on("dragend",this.handleDragEnd),this.dragging=e,this.emitter=new t.EmitterMixin}return e.prototype.processFirstCoord=function(e){var n,r={left:e.pageX,top:e.pageY},i=r,o=e.subjectEl;o!==document&&(n=t.computeRect(o),i=t.constrainPoint(i,n));var a=this.initialHit=this.queryHitForOffset(i.left,i.top);if(a){if(this.useSubjectCenter&&n){var l=t.intersectRects(n,a.rect);l&&(i=t.getRectCenter(l))}this.coordAdjust=t.diffPoints(i,r)}else this.coordAdjust={left:0,top:0}},e.prototype.handleMove=function(e,t){var n=this.queryHitForOffset(e.pageX+this.coordAdjust.left,e.pageY+this.coordAdjust.top);!t&&S(this.movingHit,n)||(this.movingHit=n,this.emitter.trigger("hitupdate",n,!1,e))},e.prototype.prepareHits=function(){this.offsetTrackers=t.mapHash(this.droppableStore,function(e){return e.component.buildPositionCaches(),new E(e.el)})},e.prototype.releaseHits=function(){var e=this.offsetTrackers;for(var t in e)e[t].destroy();this.offsetTrackers={}},e.prototype.queryHitForOffset=function(e,n){var r=this.droppableStore,i=this.offsetTrackers,o=null;for(var a in r){var l=r[a].component,s=i[a];if(s.isWithinClipping(e,n)){var c=s.computeLeft(),d=s.computeTop(),g=e-c,u=n-d,h=s.origRect,p=h.right-h.left,v=h.bottom-h.top;if(g>=0&&g<p&&u>=0&&u<v){var f=l.queryHit(g,u,p,v);!f||l.props.dateProfile&&!t.rangeContainsRange(l.props.dateProfile.activeRange,f.dateSpan.range)||o&&!(f.layer>o.layer)||(f.rect.left+=c,f.rect.right+=c,f.rect.top+=d,f.rect.bottom+=d,o=f)}}}return o},e}();function S(e,n){return!e&&!n||Boolean(e)===Boolean(n)&&t.isDateSpansEqual(e.dateSpan,n.dateSpan)}var y=function(e){function n(n){var r=e.call(this,n)||this;r.handlePointerDown=function(e){var t=r.dragging;t.setIgnoreMove(!r.component.isValidDateDownEl(t.pointer.downEl))},r.handleDragEnd=function(e){var t=r.component.context,n=t.calendar,i=t.view;if(!r.dragging.pointer.wasTouchScroll){var o=r.hitDragging,a=o.initialHit,l=o.finalHit;a&&l&&S(a,l)&&n.triggerDateClick(a.dateSpan,a.dayEl,i,e.origEvent)}};var i=n.component;r.dragging=new f(i.el),r.dragging.autoScroller.isEnabled=!1;var o=r.hitDragging=new m(r.dragging,t.interactionSettingsToStore(n));return o.emitter.on("pointerdown",r.handlePointerDown),o.emitter.on("dragend",r.handleDragEnd),r}return r(n,e),n.prototype.destroy=function(){this.dragging.destroy()},n}(t.Interaction),D=function(e){function n(n){var r=e.call(this,n)||this;r.dragSelection=null,r.handlePointerDown=function(e){var t=r,n=t.component,i=t.dragging,o=n.context.options.selectable&&n.isValidDateDownEl(e.origEvent.target);i.setIgnoreMove(!o),i.delay=e.isTouch?function(e){var t=e.context.options,n=t.selectLongPressDelay;null==n&&(n=t.longPressDelay);return n}(n):null},r.handleDragStart=function(e){r.component.context.calendar.unselect(e)},r.handleHitUpdate=function(e,n){var o=r.component.context.calendar,a=null,l=!1;e&&((a=function(e,n,r){var o=e.dateSpan,a=n.dateSpan,l=[o.range.start,o.range.end,a.range.start,a.range.end];l.sort(t.compareNumbers);for(var s={},c=0,d=r;c<d.length;c++){var g=d[c],u=g(e,n);if(!1===u)return null;u&&i(s,u)}return s.range={start:l[0],end:l[3]},s.allDay=o.allDay,s}(r.hitDragging.initialHit,e,o.pluginSystem.hooks.dateSelectionTransformers))&&r.component.isDateSelectionValid(a)||(l=!0,a=null)),a?o.dispatch({type:"SELECT_DATES",selection:a}):n||o.dispatch({type:"UNSELECT_DATES"}),l?t.disableCursor():t.enableCursor(),n||(r.dragSelection=a)},r.handlePointerUp=function(e){r.dragSelection&&(r.component.context.calendar.triggerDateSelect(r.dragSelection,e),r.dragSelection=null)};var o=n.component,a=o.context.options,l=r.dragging=new f(o.el);l.touchScrollAllowed=!1,l.minDistance=a.selectMinDistance||0,l.autoScroller.isEnabled=a.dragScroll;var s=r.hitDragging=new m(r.dragging,t.interactionSettingsToStore(n));return s.emitter.on("pointerdown",r.handlePointerDown),s.emitter.on("dragstart",r.handleDragStart),s.emitter.on("hitupdate",r.handleHitUpdate),s.emitter.on("pointerup",r.handlePointerUp),r}return r(n,e),n.prototype.destroy=function(){this.dragging.destroy()},n}(t.Interaction);var w=function(e){function n(r){var o=e.call(this,r)||this;o.subjectSeg=null,o.isDragging=!1,o.eventRange=null,o.relevantEvents=null,o.receivingCalendar=null,o.validMutation=null,o.mutatedRelevantEvents=null,o.handlePointerDown=function(e){var n=e.origEvent.target,r=o,i=r.component,a=r.dragging,l=a.mirror,s=i.context.options,c=i.context.calendar,d=o.subjectSeg=t.getElSeg(e.subjectEl),g=(o.eventRange=d.eventRange).instance.instanceId;o.relevantEvents=t.getRelevantEvents(c.state.eventStore,g),a.minDistance=e.isTouch?0:s.eventDragMinDistance,a.delay=e.isTouch&&g!==i.props.eventSelection?function(e){var t=e.context.options,n=t.eventLongPressDelay;null==n&&(n=t.longPressDelay);return n}(i):null,l.parentNode=c.el,l.revertDuration=s.dragRevertDuration;var u=i.isValidSegDownEl(n)&&!t.elementClosest(n,".fc-resizer");a.setIgnoreMove(!u),o.isDragging=u&&e.subjectEl.classList.contains("fc-draggable")},o.handleDragStart=function(e){var n=o.component.context,r=n.calendar,i=o.eventRange,a=i.instance.instanceId;e.isTouch?a!==o.component.props.eventSelection&&r.dispatch({type:"SELECT_EVENT",eventInstanceId:a}):r.dispatch({type:"UNSELECT_EVENT"}),o.isDragging&&(r.unselect(e),r.publiclyTrigger("eventDragStart",[{el:o.subjectSeg.el,event:new t.EventApi(r,i.def,i.instance),jsEvent:e.origEvent,view:n.view}]))},o.handleHitUpdate=function(e,n){if(o.isDragging){var r=o.relevantEvents,i=o.hitDragging.initialHit,a=o.component.context.calendar,l=null,s=null,c=null,d=!1,g={affectedEvents:r,mutatedEvents:t.createEmptyEventStore(),isEvent:!0,origSeg:o.subjectSeg};if(e){var u=e.component;l=u.context.calendar;var h=u.context.options;a===l||h.editable&&h.droppable?(s=function(e,n,r){var i=e.dateSpan,o=n.dateSpan,a=i.range.start,l=o.range.start,s={};i.allDay!==o.allDay&&(s.allDay=o.allDay,s.hasEnd=n.component.context.options.allDayMaintainDuration,o.allDay&&(a=t.startOfDay(a)));var c=t.diffDates(a,l,e.component.context.dateEnv,e.component===n.component?e.component.largeUnit:null);c.milliseconds&&(s.allDay=!1);for(var d={datesDelta:c,standardProps:s},g=0,u=r;g<u.length;g++){var h=u[g];h(d,e,n)}return d}(i,e,l.pluginSystem.hooks.eventDragMutationMassagers))&&(c=t.applyMutationToEventStore(r,l.eventUiBases,s,l),g.mutatedEvents=c,u.isInteractionValid(g)||(d=!0,s=null,c=null,g.mutatedEvents=t.createEmptyEventStore())):l=null}o.displayDrag(l,g),d?t.disableCursor():t.enableCursor(),n||(a===l&&S(i,e)&&(s=null),o.dragging.setMirrorNeedsRevert(!s),o.dragging.setMirrorIsVisible(!e||!document.querySelector(".fc-mirror")),o.receivingCalendar=l,o.validMutation=s,o.mutatedRelevantEvents=c)}},o.handlePointerUp=function(){o.isDragging||o.cleanup()},o.handleDragEnd=function(e){if(o.isDragging){var n=o.component.context,r=n.calendar,a=n.view,l=o,s=l.receivingCalendar,c=l.validMutation,d=o.eventRange.def,g=o.eventRange.instance,u=new t.EventApi(r,d,g),h=o.relevantEvents,p=o.mutatedRelevantEvents,v=o.hitDragging.finalHit;if(o.clearDrag(),r.publiclyTrigger("eventDragStop",[{el:o.subjectSeg.el,event:u,jsEvent:e.origEvent,view:a}]),c){if(s===r){r.dispatch({type:"MERGE_EVENTS",eventStore:p});for(var f={},E=0,m=r.pluginSystem.hooks.eventDropTransformers;E<m.length;E++){var S=m[E];i(f,S(c,r))}var y=i({},f,{el:e.subjectEl,delta:c.datesDelta,oldEvent:u,event:new t.EventApi(r,p.defs[d.defId],g?p.instances[g.instanceId]:null),revert:function(){r.dispatch({type:"MERGE_EVENTS",eventStore:h})},jsEvent:e.origEvent,view:a});r.publiclyTrigger("eventDrop",[y])}else if(s){r.publiclyTrigger("eventLeave",[{draggedEl:e.subjectEl,event:u,view:a}]),r.dispatch({type:"REMOVE_EVENT_INSTANCES",instances:o.mutatedRelevantEvents.instances}),s.dispatch({type:"MERGE_EVENTS",eventStore:o.mutatedRelevantEvents}),e.isTouch&&s.dispatch({type:"SELECT_EVENT",eventInstanceId:g.instanceId});var D=i({},s.buildDatePointApi(v.dateSpan),{draggedEl:e.subjectEl,jsEvent:e.origEvent,view:v.component});s.publiclyTrigger("drop",[D]),s.publiclyTrigger("eventReceive",[{draggedEl:e.subjectEl,event:new t.EventApi(s,p.defs[d.defId],p.instances[g.instanceId]),view:v.component}])}}else r.publiclyTrigger("_noEventDrop")}o.cleanup()};var a=o.component,l=a.context.options,s=o.dragging=new f(a.el);s.pointer.selector=n.SELECTOR,s.touchScrollAllowed=!1,s.autoScroller.isEnabled=l.dragScroll;var c=o.hitDragging=new m(o.dragging,t.interactionSettingsStore);return c.useSubjectCenter=r.useEventCenter,c.emitter.on("pointerdown",o.handlePointerDown),c.emitter.on("dragstart",o.handleDragStart),c.emitter.on("hitupdate",o.handleHitUpdate),c.emitter.on("pointerup",o.handlePointerUp),c.emitter.on("dragend",o.handleDragEnd),o}return r(n,e),n.prototype.destroy=function(){this.dragging.destroy()},n.prototype.displayDrag=function(e,n){var r=this.component.context.calendar,i=this.receivingCalendar;i&&i!==e&&(i===r?i.dispatch({type:"SET_EVENT_DRAG",state:{affectedEvents:n.affectedEvents,mutatedEvents:t.createEmptyEventStore(),isEvent:!0,origSeg:n.origSeg}}):i.dispatch({type:"UNSET_EVENT_DRAG"})),e&&e.dispatch({type:"SET_EVENT_DRAG",state:n})},n.prototype.clearDrag=function(){var e=this.component.context.calendar,t=this.receivingCalendar;t&&t.dispatch({type:"UNSET_EVENT_DRAG"}),e!==t&&e.dispatch({type:"UNSET_EVENT_DRAG"})},n.prototype.cleanup=function(){this.subjectSeg=null,this.isDragging=!1,this.eventRange=null,this.relevantEvents=null,this.receivingCalendar=null,this.validMutation=null,this.mutatedRelevantEvents=null},n.SELECTOR=".fc-draggable, .fc-resizable",n}(t.Interaction);var T=function(e){function n(n){var r=e.call(this,n)||this;r.draggingSeg=null,r.eventRange=null,r.relevantEvents=null,r.validMutation=null,r.mutatedRelevantEvents=null,r.handlePointerDown=function(e){var t=r.component,n=r.querySeg(e),i=r.eventRange=n.eventRange;r.dragging.minDistance=t.context.options.eventDragMinDistance,r.dragging.setIgnoreMove(!r.component.isValidSegDownEl(e.origEvent.target)||e.isTouch&&r.component.props.eventSelection!==i.instance.instanceId)},r.handleDragStart=function(e){var n=r.component.context,i=n.calendar,o=n.view,a=r.eventRange;r.relevantEvents=t.getRelevantEvents(i.state.eventStore,r.eventRange.instance.instanceId),r.draggingSeg=r.querySeg(e),i.unselect(),i.publiclyTrigger("eventResizeStart",[{el:r.draggingSeg.el,event:new t.EventApi(i,a.def,a.instance),jsEvent:e.origEvent,view:o}])},r.handleHitUpdate=function(e,n,o){var a=r.component.context.calendar,l=r.relevantEvents,s=r.hitDragging.initialHit,c=r.eventRange.instance,d=null,g=null,u=!1,h={affectedEvents:l,mutatedEvents:t.createEmptyEventStore(),isEvent:!0,origSeg:r.draggingSeg};e&&(d=function(e,n,r,o,a){for(var l=e.component.context.dateEnv,s=e.dateSpan.range.start,c=n.dateSpan.range.start,d=t.diffDates(s,c,l,e.component.largeUnit),g={},u=0,h=a;u<h.length;u++){var p=h[u],v=p(e,n);if(!1===v)return null;v&&i(g,v)}if(r){if(l.add(o.start,d)<o.end)return g.startDelta=d,g}else if(l.add(o.end,d)>o.start)return g.endDelta=d,g;return null}(s,e,o.subjectEl.classList.contains("fc-start-resizer"),c.range,a.pluginSystem.hooks.eventResizeJoinTransforms)),d&&(g=t.applyMutationToEventStore(l,a.eventUiBases,d,a),h.mutatedEvents=g,r.component.isInteractionValid(h)||(u=!0,d=null,g=null,h.mutatedEvents=null)),g?a.dispatch({type:"SET_EVENT_RESIZE",state:h}):a.dispatch({type:"UNSET_EVENT_RESIZE"}),u?t.disableCursor():t.enableCursor(),n||(d&&S(s,e)&&(d=null),r.validMutation=d,r.mutatedRelevantEvents=g)},r.handleDragEnd=function(e){var n=r.component.context,i=n.calendar,o=n.view,a=r.eventRange.def,l=r.eventRange.instance,s=new t.EventApi(i,a,l),c=r.relevantEvents,d=r.mutatedRelevantEvents;i.publiclyTrigger("eventResizeStop",[{el:r.draggingSeg.el,event:s,jsEvent:e.origEvent,view:o}]),r.validMutation?(i.dispatch({type:"MERGE_EVENTS",eventStore:d}),i.publiclyTrigger("eventResize",[{el:r.draggingSeg.el,startDelta:r.validMutation.startDelta||t.createDuration(0),endDelta:r.validMutation.endDelta||t.createDuration(0),prevEvent:s,event:new t.EventApi(i,d.defs[a.defId],l?d.instances[l.instanceId]:null),revert:function(){i.dispatch({type:"MERGE_EVENTS",eventStore:c})},jsEvent:e.origEvent,view:o}])):i.publiclyTrigger("_noEventResize"),r.draggingSeg=null,r.relevantEvents=null,r.validMutation=null};var o=n.component,a=r.dragging=new f(o.el);a.pointer.selector=".fc-resizer",a.touchScrollAllowed=!1,a.autoScroller.isEnabled=o.context.options.dragScroll;var l=r.hitDragging=new m(r.dragging,t.interactionSettingsToStore(n));return l.emitter.on("pointerdown",r.handlePointerDown),l.emitter.on("dragstart",r.handleDragStart),l.emitter.on("hitupdate",r.handleHitUpdate),l.emitter.on("dragend",r.handleDragEnd),r}return r(n,e),n.prototype.destroy=function(){this.dragging.destroy()},n.prototype.querySeg=function(e){return t.getElSeg(t.elementClosest(e.subjectEl,this.component.fgSegSelector))},n}(t.Interaction);var M=function(){function e(e){var n=this;this.isRecentPointerDateSelect=!1,this.onSelect=function(e){e.jsEvent&&(n.isRecentPointerDateSelect=!0)},this.onDocumentPointerUp=function(e){var r=n,i=r.calendar,o=r.documentPointer,a=i.state;if(!o.wasTouchScroll){if(a.dateSelection&&!n.isRecentPointerDateSelect){var l=i.viewOpt("unselectAuto"),s=i.viewOpt("unselectCancel");!l||l&&t.elementClosest(o.downEl,s)||i.unselect(e)}a.eventSelection&&!t.elementClosest(o.downEl,w.SELECTOR)&&i.dispatch({type:"UNSELECT_EVENT"})}n.isRecentPointerDateSelect=!1},this.calendar=e;var r=this.documentPointer=new s(document);r.shouldIgnoreMove=!0,r.shouldWatchScroll=!1,r.emitter.on("pointerup",this.onDocumentPointerUp),e.on("select",this.onSelect)}return e.prototype.destroy=function(){this.calendar.off("select",this.onSelect),this.documentPointer.destroy()},e}(),b=function(){function e(e,n){var r=this;this.receivingCalendar=null,this.droppableEvent=null,this.suppliedDragMeta=null,this.dragMeta=null,this.handleDragStart=function(e){r.dragMeta=r.buildDragMeta(e.subjectEl)},this.handleHitUpdate=function(e,n,o){var a=r.hitDragging.dragging,l=null,s=null,c=!1,d={affectedEvents:t.createEmptyEventStore(),mutatedEvents:t.createEmptyEventStore(),isEvent:r.dragMeta.create,origSeg:null};e&&(l=e.component.context.calendar,r.canDropElOnCalendar(o.subjectEl,l)&&(s=function(e,n,r){for(var o=i({},n.leftoverProps),a=0,l=r.pluginSystem.hooks.externalDefTransforms;a<l.length;a++){var s=l[a];i(o,s(e,n))}var c=t.parseEventDef(o,n.sourceId,e.allDay,r.opt("forceEventDuration")||Boolean(n.duration),r),d=e.range.start;e.allDay&&n.startTime&&(d=r.dateEnv.add(d,n.startTime));var g=n.duration?r.dateEnv.add(d,n.duration):r.getDefaultEventEnd(e.allDay,d),u=t.createEventInstance(c.defId,{start:d,end:g});return{def:c,instance:u}}(e.dateSpan,r.dragMeta,l),d.mutatedEvents=t.eventTupleToStore(s),(c=!t.isInteractionValid(d,l))&&(d.mutatedEvents=t.createEmptyEventStore(),s=null))),r.displayDrag(l,d),a.setMirrorIsVisible(n||!s||!document.querySelector(".fc-mirror")),c?t.disableCursor():t.enableCursor(),n||(a.setMirrorNeedsRevert(!s),r.receivingCalendar=l,r.droppableEvent=s)},this.handleDragEnd=function(e){var n=r,o=n.receivingCalendar,a=n.droppableEvent;if(r.clearDrag(),o&&a){var l=r.hitDragging.finalHit,s=l.component.context.view,c=r.dragMeta,d=i({},o.buildDatePointApi(l.dateSpan),{draggedEl:e.subjectEl,jsEvent:e.origEvent,view:s});o.publiclyTrigger("drop",[d]),c.create&&(o.dispatch({type:"MERGE_EVENTS",eventStore:t.eventTupleToStore(a)}),e.isTouch&&o.dispatch({type:"SELECT_EVENT",eventInstanceId:a.instance.instanceId}),o.publiclyTrigger("eventReceive",[{draggedEl:e.subjectEl,event:new t.EventApi(o,a.def,a.instance),view:s}]))}r.receivingCalendar=null,r.droppableEvent=null};var o=this.hitDragging=new m(e,t.interactionSettingsStore);o.requireInitial=!1,o.emitter.on("dragstart",this.handleDragStart),o.emitter.on("hitupdate",this.handleHitUpdate),o.emitter.on("dragend",this.handleDragEnd),this.suppliedDragMeta=n}return e.prototype.buildDragMeta=function(e){return"object"==typeof this.suppliedDragMeta?t.parseDragMeta(this.suppliedDragMeta):"function"==typeof this.suppliedDragMeta?t.parseDragMeta(this.suppliedDragMeta(e)):(n=function(e,n){var r=t.config.dataAttrPrefix,i=(r?r+"-":"")+n;return e.getAttribute("data-"+i)||""}(e,"event"),r=n?JSON.parse(n):{create:!1},t.parseDragMeta(r));var n,r},e.prototype.displayDrag=function(e,t){var n=this.receivingCalendar;n&&n!==e&&n.dispatch({type:"UNSET_EVENT_DRAG"}),e&&e.dispatch({type:"SET_EVENT_DRAG",state:t})},e.prototype.clearDrag=function(){this.receivingCalendar&&this.receivingCalendar.dispatch({type:"UNSET_EVENT_DRAG"})},e.prototype.canDropElOnCalendar=function(e,n){var r=n.opt("dropAccept");return"function"==typeof r?r(e):"string"!=typeof r||!r||Boolean(t.elementMatches(e,r))},e}();t.config.dataAttrPrefix="";var C=function(){function e(e,n){var r=this;void 0===n&&(n={}),this.handlePointerDown=function(e){var n=r.dragging,i=r.settings,o=i.minDistance,a=i.longPressDelay;n.minDistance=null!=o?o:e.isTouch?0:t.globalDefaults.eventDragMinDistance,n.delay=e.isTouch?null!=a?a:t.globalDefaults.longPressDelay:0},this.handleDragStart=function(e){e.isTouch&&r.dragging.delay&&e.subjectEl.classList.contains("fc-event")&&r.dragging.mirror.getMirrorEl().classList.add("fc-selected")},this.settings=n;var i=this.dragging=new f(e);i.touchScrollAllowed=!1,null!=n.itemSelector&&(i.pointer.selector=n.itemSelector),null!=n.appendTo&&(i.mirror.parentNode=n.appendTo),i.emitter.on("pointerdown",this.handlePointerDown),i.emitter.on("dragstart",this.handleDragStart),new b(i,n.eventData)}return e.prototype.destroy=function(){this.dragging.destroy()},e}(),R=function(e){function t(t){var n=e.call(this,t)||this;n.shouldIgnoreMove=!1,n.mirrorSelector="",n.currentMirrorEl=null,n.handlePointerDown=function(e){n.emitter.trigger("pointerdown",e),n.shouldIgnoreMove||n.emitter.trigger("dragstart",e)},n.handlePointerMove=function(e){n.shouldIgnoreMove||n.emitter.trigger("dragmove",e)},n.handlePointerUp=function(e){n.emitter.trigger("pointerup",e),n.shouldIgnoreMove||n.emitter.trigger("dragend",e)};var r=n.pointer=new s(t);return r.emitter.on("pointerdown",n.handlePointerDown),r.emitter.on("pointermove",n.handlePointerMove),r.emitter.on("pointerup",n.handlePointerUp),n}return r(t,e),t.prototype.destroy=function(){this.pointer.destroy()},t.prototype.setIgnoreMove=function(e){this.shouldIgnoreMove=e},t.prototype.setMirrorIsVisible=function(e){if(e)this.currentMirrorEl&&(this.currentMirrorEl.style.visibility="",this.currentMirrorEl=null);else{var t=this.mirrorSelector?document.querySelector(this.mirrorSelector):null;t&&(this.currentMirrorEl=t,t.style.visibility="hidden")}},t}(t.ElementDragging),I=function(){function e(e,t){var n=document;e===document||e instanceof Element?(n=e,t=t||{}):t=e||{};var r=this.dragging=new R(n);"string"==typeof t.itemSelector?r.pointer.selector=t.itemSelector:n===document&&(r.pointer.selector="[data-event]"),"string"==typeof t.mirrorSelector&&(r.mirrorSelector=t.mirrorSelector),new b(r,t.eventData)}return e.prototype.destroy=function(){this.dragging.destroy()},e}(),P=t.createPlugin({componentInteractions:[y,D,w,T],calendarInteractions:[M],elementDraggingImpl:f});e.Draggable=C,e.FeaturefulElementDragging=f,e.PointerDragging=s,e.ThirdPartyDraggable=I,e.default=P,Object.defineProperty(e,"__esModule",{value:!0})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fullcalendar/interaction",
3
- "version": "4.3.0",
3
+ "version": "4.4.0",
4
4
  "title": "FullCalendar Interaction Plugin",
5
5
  "description": "Provides functionality for event drag-n-drop, resizing, dateClick, and selectable actions",
6
6
  "keywords": [
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "copyright": "2019 Adam Shaw",
26
26
  "peerDependencies": {
27
- "@fullcalendar/core": "~4.3.0"
27
+ "@fullcalendar/core": "~4.4.0"
28
28
  },
29
29
  "main": "main.js",
30
30
  "module": "main.esm.js",