fullcalendar 6.1.10 → 6.1.12

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/index.global.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Standard Bundle v6.1.10
2
+ FullCalendar Standard Bundle v6.1.12
3
3
  Docs & License: https://fullcalendar.io/docs/initialize-globals
4
4
  (c) 2023 Adam Shaw
5
5
  */
@@ -21,7 +21,9 @@ var FullCalendar = (function (exports) {
21
21
  });
22
22
  }
23
23
  function ensureElHasStyles(el) {
24
- if (el.isConnected) {
24
+ if (el.isConnected && // sometimes true if SSR system simulates DOM
25
+ el.getRootNode // sometimes undefined if SSR system simulates DOM
26
+ ) {
25
27
  registerStylesRoot(el.getRootNode());
26
28
  }
27
29
  }
@@ -4434,7 +4436,7 @@ var FullCalendar = (function (exports) {
4434
4436
  function getSegMeta(seg, todayRange, nowDate) {
4435
4437
  let segRange = seg.eventRange.range;
4436
4438
  return {
4437
- isPast: segRange.end < (nowDate || todayRange.start),
4439
+ isPast: segRange.end <= (nowDate || todayRange.start),
4438
4440
  isFuture: segRange.start >= (nowDate || todayRange.end),
4439
4441
  isToday: todayRange && rangeContainsMarker(todayRange, segRange.start),
4440
4442
  };
@@ -4697,10 +4699,14 @@ var FullCalendar = (function (exports) {
4697
4699
  forPrint: false,
4698
4700
  };
4699
4701
  this.handleBeforePrint = () => {
4700
- this.setState({ forPrint: true });
4702
+ flushSync(() => {
4703
+ this.setState({ forPrint: true });
4704
+ });
4701
4705
  };
4702
4706
  this.handleAfterPrint = () => {
4703
- this.setState({ forPrint: false });
4707
+ flushSync(() => {
4708
+ this.setState({ forPrint: false });
4709
+ });
4704
4710
  };
4705
4711
  }
4706
4712
  render() {
@@ -5498,10 +5504,10 @@ var FullCalendar = (function (exports) {
5498
5504
  function computeRect(el) {
5499
5505
  let rect = el.getBoundingClientRect();
5500
5506
  return {
5501
- left: rect.left + window.pageXOffset,
5502
- top: rect.top + window.pageYOffset,
5503
- right: rect.right + window.pageXOffset,
5504
- bottom: rect.bottom + window.pageYOffset,
5507
+ left: rect.left + window.scrollX,
5508
+ top: rect.top + window.scrollY,
5509
+ right: rect.right + window.scrollX,
5510
+ bottom: rect.bottom + window.scrollY,
5505
5511
  };
5506
5512
  }
5507
5513
  function computeClippedClientRect(el) {
@@ -5692,16 +5698,16 @@ var FullCalendar = (function (exports) {
5692
5698
  }
5693
5699
  class WindowScrollController extends ScrollController {
5694
5700
  getScrollTop() {
5695
- return window.pageYOffset;
5701
+ return window.scrollY;
5696
5702
  }
5697
5703
  getScrollLeft() {
5698
- return window.pageXOffset;
5704
+ return window.scrollX;
5699
5705
  }
5700
5706
  setScrollTop(n) {
5701
- window.scroll(window.pageXOffset, n);
5707
+ window.scroll(window.scrollX, n);
5702
5708
  }
5703
5709
  setScrollLeft(n) {
5704
- window.scroll(n, window.pageYOffset);
5710
+ window.scroll(n, window.scrollY);
5705
5711
  }
5706
5712
  getScrollWidth() {
5707
5713
  return document.documentElement.scrollWidth;
@@ -5759,8 +5765,8 @@ var FullCalendar = (function (exports) {
5759
5765
 
5760
5766
  class SegHierarchy {
5761
5767
  constructor(getEntryThickness = (entry) => {
5762
- // should return an integer
5763
- return entry.thickness;
5768
+ // if no thickness known, assume 1 (if 0, so small it always fits)
5769
+ return entry.thickness || 1;
5764
5770
  }) {
5765
5771
  this.getEntryThickness = getEntryThickness;
5766
5772
  // settings
@@ -5783,51 +5789,45 @@ var FullCalendar = (function (exports) {
5783
5789
  let insertion = this.findInsertion(entry);
5784
5790
  if (this.isInsertionValid(insertion, entry)) {
5785
5791
  this.insertEntryAt(entry, insertion);
5786
- return 1;
5787
5792
  }
5788
- return this.handleInvalidInsertion(insertion, entry, hiddenEntries);
5793
+ else {
5794
+ this.handleInvalidInsertion(insertion, entry, hiddenEntries);
5795
+ }
5789
5796
  }
5790
5797
  isInsertionValid(insertion, entry) {
5791
5798
  return (this.maxCoord === -1 || insertion.levelCoord + this.getEntryThickness(entry) <= this.maxCoord) &&
5792
5799
  (this.maxStackCnt === -1 || insertion.stackCnt < this.maxStackCnt);
5793
5800
  }
5794
- // returns number of new entries inserted
5795
5801
  handleInvalidInsertion(insertion, entry, hiddenEntries) {
5796
5802
  if (this.allowReslicing && insertion.touchingEntry) {
5797
- return this.splitEntry(entry, insertion.touchingEntry, hiddenEntries);
5803
+ const hiddenEntry = Object.assign(Object.assign({}, entry), { span: intersectSpans(entry.span, insertion.touchingEntry.span) });
5804
+ hiddenEntries.push(hiddenEntry);
5805
+ this.splitEntry(entry, insertion.touchingEntry, hiddenEntries);
5806
+ }
5807
+ else {
5808
+ hiddenEntries.push(entry);
5798
5809
  }
5799
- hiddenEntries.push(entry);
5800
- return 0;
5801
5810
  }
5811
+ /*
5812
+ Does NOT add what hit the `barrier` into hiddenEntries. Should already be done.
5813
+ */
5802
5814
  splitEntry(entry, barrier, hiddenEntries) {
5803
- let partCnt = 0;
5804
- let splitHiddenEntries = [];
5805
5815
  let entrySpan = entry.span;
5806
5816
  let barrierSpan = barrier.span;
5807
5817
  if (entrySpan.start < barrierSpan.start) {
5808
- partCnt += this.insertEntry({
5818
+ this.insertEntry({
5809
5819
  index: entry.index,
5810
5820
  thickness: entry.thickness,
5811
5821
  span: { start: entrySpan.start, end: barrierSpan.start },
5812
- }, splitHiddenEntries);
5822
+ }, hiddenEntries);
5813
5823
  }
5814
5824
  if (entrySpan.end > barrierSpan.end) {
5815
- partCnt += this.insertEntry({
5825
+ this.insertEntry({
5816
5826
  index: entry.index,
5817
5827
  thickness: entry.thickness,
5818
5828
  span: { start: barrierSpan.end, end: entrySpan.end },
5819
- }, splitHiddenEntries);
5829
+ }, hiddenEntries);
5820
5830
  }
5821
- if (partCnt) {
5822
- hiddenEntries.push({
5823
- index: entry.index,
5824
- thickness: entry.thickness,
5825
- span: intersectSpans(barrierSpan, entrySpan), // guaranteed to intersect
5826
- }, ...splitHiddenEntries);
5827
- return partCnt;
5828
- }
5829
- hiddenEntries.push(entry);
5830
- return 0;
5831
5831
  }
5832
5832
  insertEntryAt(entry, insertion) {
5833
5833
  let { entriesByLevel, levelCoords } = this;
@@ -5842,6 +5842,9 @@ var FullCalendar = (function (exports) {
5842
5842
  }
5843
5843
  this.stackCnts[buildEntryKey(entry)] = insertion.stackCnt;
5844
5844
  }
5845
+ /*
5846
+ does not care about limits
5847
+ */
5845
5848
  findInsertion(newEntry) {
5846
5849
  let { levelCoords, entriesByLevel, strictOrder, stackCnts } = this;
5847
5850
  let levelCnt = levelCoords.length;
@@ -5851,7 +5854,7 @@ var FullCalendar = (function (exports) {
5851
5854
  let touchingEntry = null;
5852
5855
  let stackCnt = 0;
5853
5856
  for (let trackingLevel = 0; trackingLevel < levelCnt; trackingLevel += 1) {
5854
- let trackingCoord = levelCoords[trackingLevel];
5857
+ const trackingCoord = levelCoords[trackingLevel];
5855
5858
  // if the current level is past the placed entry, we have found a good empty space and can stop.
5856
5859
  // if strictOrder, keep finding more lateral intersections.
5857
5860
  if (!strictOrder && trackingCoord >= candidateCoord + this.getEntryThickness(newEntry)) {
@@ -9604,7 +9607,7 @@ var FullCalendar = (function (exports) {
9604
9607
  let viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);
9605
9608
  let viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)
9606
9609
  ? this.state.viewLabelId
9607
- : '';
9610
+ : undefined;
9608
9611
  return (y(ViewContextType.Provider, { value: viewContext },
9609
9612
  toolbarConfig.header && (y(Toolbar, Object.assign({ ref: this.headerRef, extraClassName: "fc-header-toolbar", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),
9610
9613
  y(ViewHarness, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },
@@ -9832,7 +9835,7 @@ var FullCalendar = (function (exports) {
9832
9835
  return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;
9833
9836
  }
9834
9837
 
9835
- const version = '6.1.10';
9838
+ const version = '6.1.12';
9836
9839
 
9837
9840
  config.touchMouseIgnoreWait = 500;
9838
9841
  let ignoreMouseDepth = 0;
@@ -9934,8 +9937,8 @@ var FullCalendar = (function (exports) {
9934
9937
  };
9935
9938
  this.handleScroll = (ev) => {
9936
9939
  if (!this.shouldIgnoreMove) {
9937
- let pageX = (window.pageXOffset - this.prevScrollX) + this.prevPageX;
9938
- let pageY = (window.pageYOffset - this.prevScrollY) + this.prevPageY;
9940
+ let pageX = (window.scrollX - this.prevScrollX) + this.prevPageX;
9941
+ let pageY = (window.scrollY - this.prevScrollY) + this.prevPageY;
9939
9942
  this.emitter.trigger('pointermove', {
9940
9943
  origEvent: ev,
9941
9944
  isTouch: this.isTouchDragging,
@@ -10004,8 +10007,8 @@ var FullCalendar = (function (exports) {
10004
10007
  if (this.shouldWatchScroll) {
10005
10008
  this.prevPageX = ev.pageX;
10006
10009
  this.prevPageY = ev.pageY;
10007
- this.prevScrollX = window.pageXOffset;
10008
- this.prevScrollY = window.pageYOffset;
10010
+ this.prevScrollX = window.scrollX;
10011
+ this.prevScrollY = window.scrollY;
10009
10012
  }
10010
10013
  }
10011
10014
  destroyScrollWatch() {
@@ -10124,15 +10127,15 @@ var FullCalendar = (function (exports) {
10124
10127
  start(sourceEl, pageX, pageY) {
10125
10128
  this.sourceEl = sourceEl;
10126
10129
  this.sourceElRect = this.sourceEl.getBoundingClientRect();
10127
- this.origScreenX = pageX - window.pageXOffset;
10128
- this.origScreenY = pageY - window.pageYOffset;
10130
+ this.origScreenX = pageX - window.scrollX;
10131
+ this.origScreenY = pageY - window.scrollY;
10129
10132
  this.deltaX = 0;
10130
10133
  this.deltaY = 0;
10131
10134
  this.updateElPosition();
10132
10135
  }
10133
10136
  handleMove(pageX, pageY) {
10134
- this.deltaX = (pageX - window.pageXOffset) - this.origScreenX;
10135
- this.deltaY = (pageY - window.pageYOffset) - this.origScreenY;
10137
+ this.deltaX = (pageX - window.scrollX) - this.origScreenX;
10138
+ this.deltaY = (pageY - window.scrollY) - this.origScreenY;
10136
10139
  this.updateElPosition();
10137
10140
  }
10138
10141
  // can be called before start
@@ -10210,6 +10213,7 @@ var FullCalendar = (function (exports) {
10210
10213
  // would use preventSelection(), but that prevents selectstart, causing problems.
10211
10214
  mirrorEl.style.userSelect = 'none';
10212
10215
  mirrorEl.style.webkitUserSelect = 'none';
10216
+ mirrorEl.style.pointerEvents = 'none';
10213
10217
  mirrorEl.classList.add('fc-event-dragging');
10214
10218
  applyStyle(mirrorEl, {
10215
10219
  position: 'fixed',
@@ -10365,7 +10369,7 @@ var FullCalendar = (function (exports) {
10365
10369
  this.everMovedRight = false;
10366
10370
  this.animate = () => {
10367
10371
  if (this.isAnimating) { // wasn't cancelled between animation calls
10368
- let edge = this.computeBestEdge(this.pointerScreenX + window.pageXOffset, this.pointerScreenY + window.pageYOffset);
10372
+ let edge = this.computeBestEdge(this.pointerScreenX + window.scrollX, this.pointerScreenY + window.scrollY);
10369
10373
  if (edge) {
10370
10374
  let now = getTime();
10371
10375
  this.handleSide(edge, (now - this.msSinceRequest) / 1000);
@@ -10391,8 +10395,8 @@ var FullCalendar = (function (exports) {
10391
10395
  }
10392
10396
  handleMove(pageX, pageY) {
10393
10397
  if (this.isEnabled) {
10394
- let pointerScreenX = pageX - window.pageXOffset;
10395
- let pointerScreenY = pageY - window.pageYOffset;
10398
+ let pointerScreenX = pageX - window.scrollX;
10399
+ let pointerScreenY = pageY - window.scrollY;
10396
10400
  let yDelta = this.pointerScreenY === null ? 0 : pointerScreenY - this.pointerScreenY;
10397
10401
  let xDelta = this.pointerScreenX === null ? 0 : pointerScreenX - this.pointerScreenX;
10398
10402
  if (yDelta < 0) {
@@ -10472,6 +10476,10 @@ var FullCalendar = (function (exports) {
10472
10476
  (!bestSide || bestSide.distance > bottomDist)) {
10473
10477
  bestSide = { scrollCache, name: 'bottom', distance: bottomDist };
10474
10478
  }
10479
+ /*
10480
+ TODO: fix broken RTL scrolling. canScrollLeft always returning false
10481
+ https://github.com/fullcalendar/fullcalendar/issues/4837
10482
+ */
10475
10483
  if (leftDist <= edgeThreshold && this.everMovedLeft && scrollCache.canScrollLeft() &&
10476
10484
  (!bestSide || bestSide.distance > leftDist)) {
10477
10485
  bestSide = { scrollCache, name: 'left', distance: leftDist };
@@ -10499,6 +10507,10 @@ var FullCalendar = (function (exports) {
10499
10507
  els.push(query);
10500
10508
  }
10501
10509
  else {
10510
+ /*
10511
+ TODO: in the future, always have auto-scroll happen on element where current Hit came from
10512
+ Ticket: https://github.com/fullcalendar/fullcalendar/issues/4593
10513
+ */
10502
10514
  els.push(...Array.prototype.slice.call(scrollStartEl.getRootNode().querySelectorAll(query)));
10503
10515
  }
10504
10516
  }
@@ -10673,6 +10685,7 @@ var FullCalendar = (function (exports) {
10673
10685
  */
10674
10686
  class OffsetTracker {
10675
10687
  constructor(el) {
10688
+ this.el = el;
10676
10689
  this.origRect = computeRect(el);
10677
10690
  // will work fine for divs that have overflow:hidden
10678
10691
  this.scrollCaches = getClippingParents(el).map((scrollEl) => new ElementScrollGeomCache(scrollEl, true));
@@ -10732,6 +10745,7 @@ var FullCalendar = (function (exports) {
10732
10745
  // options that can be set by caller
10733
10746
  this.useSubjectCenter = false;
10734
10747
  this.requireInitial = true; // if doesn't start out on a hit, won't emit any events
10748
+ this.disablePointCheck = false;
10735
10749
  this.initialHit = null;
10736
10750
  this.movingHit = null;
10737
10751
  this.finalHit = null; // won't ever be populated if shouldIgnoreMove
@@ -10848,6 +10862,13 @@ var FullCalendar = (function (exports) {
10848
10862
  if (hit && (
10849
10863
  // make sure the hit is within activeRange, meaning it's not a dead cell
10850
10864
  rangeContainsRange(hit.dateProfile.activeRange, hit.dateSpan.range)) &&
10865
+ // Ensure the component we are querying for the hit is accessibly my the pointer
10866
+ // Prevents obscured calendars (ex: under a modal dialog) from accepting hit
10867
+ // https://github.com/fullcalendar/fullcalendar/issues/5026
10868
+ (this.disablePointCheck ||
10869
+ offsetTracker.el.contains(document.elementFromPoint(
10870
+ // add-back origins to get coordinate relative to top-left of window viewport
10871
+ positionLeft + originLeft - window.scrollX, positionTop + originTop - window.scrollY))) &&
10851
10872
  (!bestHit || hit.layer > bestHit.layer)) {
10852
10873
  hit.componentId = id;
10853
10874
  hit.context = component.context;
@@ -11128,7 +11149,7 @@ var FullCalendar = (function (exports) {
11128
11149
  let receivingOptions = receivingContext.options;
11129
11150
  if (initialContext === receivingContext ||
11130
11151
  (receivingOptions.editable && receivingOptions.droppable)) {
11131
- mutation = computeEventMutation(initialHit, hit, receivingContext.getCurrentData().pluginHooks.eventDragMutationMassagers);
11152
+ mutation = computeEventMutation(initialHit, hit, this.eventRange.instance.range.start, receivingContext.getCurrentData().pluginHooks.eventDragMutationMassagers);
11132
11153
  if (mutation) {
11133
11154
  mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, receivingContext.getCurrentData().eventUiBases, mutation, receivingContext);
11134
11155
  interaction.mutatedEvents = mutatedRelevantEvents;
@@ -11335,7 +11356,7 @@ var FullCalendar = (function (exports) {
11335
11356
  // TODO: test this in IE11
11336
11357
  // QUESTION: why do we need it on the resizable???
11337
11358
  EventDragging.SELECTOR = '.fc-event-draggable, .fc-event-resizable';
11338
- function computeEventMutation(hit0, hit1, massagers) {
11359
+ function computeEventMutation(hit0, hit1, eventInstanceStart, massagers) {
11339
11360
  let dateSpan0 = hit0.dateSpan;
11340
11361
  let dateSpan1 = hit1.dateSpan;
11341
11362
  let date0 = dateSpan0.range.start;
@@ -11349,6 +11370,11 @@ var FullCalendar = (function (exports) {
11349
11370
  // but date0 needs to be converted
11350
11371
  date0 = startOfDay(date0);
11351
11372
  }
11373
+ else {
11374
+ // Moving from allDate->timed
11375
+ // Doesn't matter where on the event the drag began, mutate the event's start-date to date1
11376
+ date0 = eventInstanceStart;
11377
+ }
11352
11378
  }
11353
11379
  let delta = diffDates(date0, date1, hit0.context.dateEnv, hit0.componentId === hit1.componentId ?
11354
11380
  hit0.largeUnit :
@@ -11914,7 +11940,10 @@ var FullCalendar = (function (exports) {
11914
11940
  if (typeof settings.mirrorSelector === 'string') {
11915
11941
  dragging.mirrorSelector = settings.mirrorSelector;
11916
11942
  }
11917
- new ExternalElementDragging(dragging, settings.eventData); // eslint-disable-line no-new
11943
+ let externalDragging = new ExternalElementDragging(dragging, settings.eventData);
11944
+ // The hit-detection system requires that the dnd-mirror-element be pointer-events:none,
11945
+ // but this can't be guaranteed for third-party draggables, so disable
11946
+ externalDragging.hitDragging.disablePointCheck = true;
11918
11947
  }
11919
11948
  destroy() {
11920
11949
  this.dragging.destroy();
@@ -12199,7 +12228,8 @@ var FullCalendar = (function (exports) {
12199
12228
  let segUid = segs[segEntry.index].eventRange.instance.instanceId +
12200
12229
  ':' + segEntry.span.start +
12201
12230
  ':' + (segEntry.span.end - 1);
12202
- return segHeights[segUid];
12231
+ // if no thickness known, assume 1 (if 0, so small it always fits)
12232
+ return segHeights[segUid] || 1;
12203
12233
  });
12204
12234
  hierarchy.allowReslicing = true;
12205
12235
  hierarchy.strictOrder = strictOrder;
@@ -12401,16 +12431,20 @@ var FullCalendar = (function (exports) {
12401
12431
  handleInvalidInsertion(insertion, entry, hiddenEntries) {
12402
12432
  const { entriesByLevel, forceHidden } = this;
12403
12433
  const { touchingEntry, touchingLevel, touchingLateral } = insertion;
12434
+ // the entry that the new insertion is touching must be hidden
12404
12435
  if (this.hiddenConsumes && touchingEntry) {
12405
12436
  const touchingEntryId = buildEntryKey(touchingEntry);
12406
- // if not already hidden
12407
12437
  if (!forceHidden[touchingEntryId]) {
12408
12438
  if (this.allowReslicing) {
12409
- const placeholderEntry = Object.assign(Object.assign({}, touchingEntry), { span: intersectSpans(touchingEntry.span, entry.span) });
12410
- const placeholderEntryId = buildEntryKey(placeholderEntry);
12411
- forceHidden[placeholderEntryId] = true;
12412
- entriesByLevel[touchingLevel][touchingLateral] = placeholderEntry; // replace touchingEntry with our placeholder
12413
- this.splitEntry(touchingEntry, entry, hiddenEntries); // split up the touchingEntry, reinsert it
12439
+ // split up the touchingEntry, reinsert it
12440
+ const hiddenEntry = Object.assign(Object.assign({}, touchingEntry), { span: intersectSpans(touchingEntry.span, entry.span) });
12441
+ // reinsert the area that turned into a "more" link (so no other entries try to
12442
+ // occupy the space) but mark it forced-hidden
12443
+ const hiddenEntryId = buildEntryKey(hiddenEntry);
12444
+ forceHidden[hiddenEntryId] = true;
12445
+ entriesByLevel[touchingLevel][touchingLateral] = hiddenEntry;
12446
+ hiddenEntries.push(hiddenEntry);
12447
+ this.splitEntry(touchingEntry, entry, hiddenEntries);
12414
12448
  }
12415
12449
  else {
12416
12450
  forceHidden[touchingEntryId] = true;
@@ -12418,7 +12452,8 @@ var FullCalendar = (function (exports) {
12418
12452
  }
12419
12453
  }
12420
12454
  }
12421
- return super.handleInvalidInsertion(insertion, entry, hiddenEntries);
12455
+ // will try to reslice...
12456
+ super.handleInvalidInsertion(insertion, entry, hiddenEntries);
12422
12457
  }
12423
12458
  }
12424
12459
 
@@ -12933,9 +12968,6 @@ var FullCalendar = (function (exports) {
12933
12968
  },
12934
12969
  });
12935
12970
 
12936
- var css_248z$2 = ".fc-v-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-v-event .fc-event-main{color:var(--fc-event-text-color);height:100%}.fc-v-event .fc-event-main-frame{display:flex;flex-direction:column;height:100%}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{bottom:0;max-height:100%;overflow:hidden;top:0}.fc-v-event:not(.fc-event-start){border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.fc-v-event:not(.fc-event-end){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-width:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:var(--fc-event-resizer-thickness);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{min-height:100%;position:relative;z-index:1}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table,.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{border-bottom:0;height:1.5em}.fc .fc-timegrid-slot:empty:before{content:\"\\00a0\"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{align-items:center;display:flex;justify-content:flex-end;overflow:hidden}.fc .fc-timegrid-axis-cushion{flex-shrink:0;max-width:60px}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols{bottom:0;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{left:0;position:absolute;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness{position:absolute}.fc-timegrid-event-harness>.fc-timegrid-event{bottom:0;left:0;position:absolute;right:0;top:0}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror,.fc-timegrid-more-link{box-shadow:0 0 0 1px var(--fc-page-bg-color)}.fc-timegrid-event,.fc-timegrid-more-link{border-radius:3px;font-size:var(--fc-small-font-size)}.fc-timegrid-event{margin-bottom:1px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{font-size:var(--fc-small-font-size);margin-bottom:1px;white-space:nowrap}.fc-timegrid-event-short .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-short .fc-event-time:after{content:\"\\00a0-\\00a0\"}.fc-timegrid-event-short .fc-event-title{font-size:var(--fc-small-font-size)}.fc-timegrid-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;margin-bottom:1px;position:absolute;z-index:9999}.fc-timegrid-more-link-inner{padding:3px 2px;top:0}.fc-direction-ltr .fc-timegrid-more-link{right:0}.fc-direction-rtl .fc-timegrid-more-link{left:0}.fc .fc-timegrid-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;border-width:1px 0 0;left:0;position:absolute;right:0;z-index:4}.fc .fc-timegrid-now-indicator-arrow{border-color:var(--fc-now-indicator-color);border-style:solid;margin-top:-5px;position:absolute;z-index:4}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 0 5px 6px;left:0}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 6px 5px 0;right:0}";
12937
- injectStyles(css_248z$2);
12938
-
12939
12971
  class AllDaySplitter extends Splitter {
12940
12972
  getKeyInfo() {
12941
12973
  return {
@@ -14073,6 +14105,9 @@ var FullCalendar = (function (exports) {
14073
14105
  return new DayTableModel(daySeries, false);
14074
14106
  }
14075
14107
 
14108
+ var css_248z$2 = ".fc-v-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-v-event .fc-event-main{color:var(--fc-event-text-color);height:100%}.fc-v-event .fc-event-main-frame{display:flex;flex-direction:column;height:100%}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{bottom:0;max-height:100%;overflow:hidden;top:0}.fc-v-event:not(.fc-event-start){border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.fc-v-event:not(.fc-event-end){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-width:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:var(--fc-event-resizer-thickness);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{min-height:100%;position:relative;z-index:1}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table,.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{border-bottom:0;height:1.5em}.fc .fc-timegrid-slot:empty:before{content:\"\\00a0\"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{align-items:center;display:flex;justify-content:flex-end;overflow:hidden}.fc .fc-timegrid-axis-cushion{flex-shrink:0;max-width:60px}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols{bottom:0;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{left:0;position:absolute;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness{position:absolute}.fc-timegrid-event-harness>.fc-timegrid-event{bottom:0;left:0;position:absolute;right:0;top:0}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror,.fc-timegrid-more-link{box-shadow:0 0 0 1px var(--fc-page-bg-color)}.fc-timegrid-event,.fc-timegrid-more-link{border-radius:3px;font-size:var(--fc-small-font-size)}.fc-timegrid-event{margin-bottom:1px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{font-size:var(--fc-small-font-size);margin-bottom:1px;white-space:nowrap}.fc-timegrid-event-short .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-short .fc-event-time:after{content:\"\\00a0-\\00a0\"}.fc-timegrid-event-short .fc-event-title{font-size:var(--fc-small-font-size)}.fc-timegrid-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;margin-bottom:1px;position:absolute;z-index:9999}.fc-timegrid-more-link-inner{padding:3px 2px;top:0}.fc-direction-ltr .fc-timegrid-more-link{right:0}.fc-direction-rtl .fc-timegrid-more-link{left:0}.fc .fc-timegrid-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;border-width:1px 0 0;left:0;position:absolute;right:0;z-index:4}.fc .fc-timegrid-now-indicator-arrow{border-color:var(--fc-now-indicator-color);border-style:solid;margin-top:-5px;position:absolute;z-index:4}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 0 5px 6px;left:0}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 6px 5px 0;right:0}";
14109
+ injectStyles(css_248z$2);
14110
+
14076
14111
  const OPTION_REFINERS$2 = {
14077
14112
  allDaySlot: Boolean,
14078
14113
  };