fullcalendar 6.1.17 → 6.1.18

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.17
2
+ FullCalendar Standard Bundle v6.1.18
3
3
  Docs & License: https://fullcalendar.io/docs/initialize-globals
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1765,6 +1765,25 @@ var FullCalendar = (function (exports) {
1765
1765
  if (oldProps === newProps) {
1766
1766
  return true;
1767
1767
  }
1768
+ // if (debug) {
1769
+ // for (let key in newProps) {
1770
+ // if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) {
1771
+ // // equal
1772
+ // } else {
1773
+ // if (debug) {
1774
+ // console.log('prop difference', key, oldProps[key], newProps[key])
1775
+ // }
1776
+ // }
1777
+ // }
1778
+ // // check for props that were omitted in the new
1779
+ // for (let key in oldProps) {
1780
+ // if (!(key in newProps)) {
1781
+ // if (debug) {
1782
+ // console.log('prop absent', key)
1783
+ // }
1784
+ // }
1785
+ // }
1786
+ // }
1768
1787
  for (let key in newProps) {
1769
1788
  if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;
1770
1789
  else {
@@ -2355,13 +2374,14 @@ var FullCalendar = (function (exports) {
2355
2374
 
2356
2375
  /* eslint max-classes-per-file: off */
2357
2376
  class PureComponent extends x$1 {
2377
+ // debug: boolean
2358
2378
  shouldComponentUpdate(nextProps, nextState) {
2359
- if (this.debug) {
2360
- // eslint-disable-next-line no-console
2361
- console.log(getUnequalProps(nextProps, this.props), getUnequalProps(nextState, this.state));
2362
- }
2363
- return !compareObjs(this.props, nextProps, this.propEquality) ||
2364
- !compareObjs(this.state, nextState, this.stateEquality);
2379
+ const shouldUpdate = !compareObjs(this.props, nextProps, this.propEquality /*, this.debug */) ||
2380
+ !compareObjs(this.state, nextState, this.stateEquality /*, this.debug */);
2381
+ // if (this.debug && shouldUpdate) {
2382
+ // console.log('shouldUpdate!')
2383
+ // }
2384
+ return shouldUpdate;
2365
2385
  }
2366
2386
  // HACK for freakin' React StrictMode
2367
2387
  safeSetState(newState) {
@@ -2601,10 +2621,10 @@ var FullCalendar = (function (exports) {
2601
2621
  let { props, context } = this;
2602
2622
  let { options } = context;
2603
2623
  let renderProps = { view: context.viewApi };
2604
- return (y(ContentContainer, Object.assign({}, props, { elTag: props.elTag || 'div', elClasses: [
2624
+ return (y(ContentContainer, { elRef: props.elRef, elTag: props.elTag || 'div', elAttrs: props.elAttrs, elClasses: [
2605
2625
  ...buildViewClassNames(props.viewSpec),
2606
2626
  ...(props.elClasses || []),
2607
- ], renderProps: renderProps, classNameGenerator: options.viewClassNames, generatorName: undefined, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount }), () => props.children));
2627
+ ], elStyle: props.elStyle, renderProps: renderProps, classNameGenerator: options.viewClassNames, generatorName: undefined, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount }, () => props.children));
2608
2628
  }
2609
2629
  }
2610
2630
  function buildViewClassNames(viewSpec) {
@@ -7059,8 +7079,11 @@ var FullCalendar = (function (exports) {
7059
7079
  class EventContainer extends BaseComponent {
7060
7080
  constructor() {
7061
7081
  super(...arguments);
7082
+ // memo
7083
+ this.buildPublicEvent = memoize((context, eventDef, eventInstance) => new EventImpl(context, eventDef, eventInstance));
7062
7084
  this.handleEl = (el) => {
7063
7085
  this.el = el;
7086
+ setRef(this.props.elRef, el);
7064
7087
  if (el) {
7065
7088
  setElSeg(el, this.props.seg);
7066
7089
  }
@@ -7073,7 +7096,7 @@ var FullCalendar = (function (exports) {
7073
7096
  const { eventRange } = seg;
7074
7097
  const { ui } = eventRange;
7075
7098
  const renderProps = {
7076
- event: new EventImpl(context, eventRange.def, eventRange.instance),
7099
+ event: this.buildPublicEvent(context, eventRange.def, eventRange.instance),
7077
7100
  view: context.viewApi,
7078
7101
  timeText: props.timeText,
7079
7102
  textColor: ui.textColor,
@@ -7092,11 +7115,11 @@ var FullCalendar = (function (exports) {
7092
7115
  isDragging: Boolean(props.isDragging),
7093
7116
  isResizing: Boolean(props.isResizing),
7094
7117
  };
7095
- return (y(ContentContainer, Object.assign({}, props /* contains children */, { elRef: this.handleEl, elClasses: [
7118
+ return (y(ContentContainer, { elRef: this.handleEl, elTag: props.elTag, elAttrs: props.elAttrs, elClasses: [
7096
7119
  ...getEventClassNames(renderProps),
7097
7120
  ...seg.eventRange.ui.classNames,
7098
7121
  ...(props.elClasses || []),
7099
- ], renderProps: renderProps, generatorName: "eventContent", customGenerator: options.eventContent, defaultGenerator: props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount })));
7122
+ ], elStyle: props.elStyle, renderProps: renderProps, generatorName: "eventContent", customGenerator: options.eventContent, defaultGenerator: props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount }, props.children));
7100
7123
  }
7101
7124
  componentDidUpdate(prevProps) {
7102
7125
  if (this.el && this.props.seg !== prevProps.seg) {
@@ -7123,6 +7146,9 @@ var FullCalendar = (function (exports) {
7123
7146
  Boolean(eventContentArg.isEndResizable) && (y("div", { className: "fc-event-resizer fc-event-resizer-end" }))))));
7124
7147
  }
7125
7148
  }
7149
+ StandardEvent.addPropsEquality({
7150
+ seg: isPropsEqual,
7151
+ });
7126
7152
  function renderInnerContent$1$1(innerProps) {
7127
7153
  return (y("div", { className: "fc-event-main-frame" },
7128
7154
  innerProps.timeText && (y("div", { className: "fc-event-time" }, innerProps.timeText)),
@@ -7137,7 +7163,7 @@ var FullCalendar = (function (exports) {
7137
7163
  date: context.dateEnv.toDate(props.date),
7138
7164
  view: context.viewApi,
7139
7165
  };
7140
- return (y(ContentContainer, Object.assign({}, props /* includes children */, { elTag: props.elTag || 'div', renderProps: renderProps, generatorName: "nowIndicatorContent", customGenerator: options.nowIndicatorContent, classNameGenerator: options.nowIndicatorClassNames, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount })));
7166
+ return (y(ContentContainer, { elRef: props.elRef, elTag: props.elTag || 'div', elAttrs: props.elAttrs, elClasses: props.elClasses, elStyle: props.elStyle, renderProps: renderProps, generatorName: "nowIndicatorContent", customGenerator: options.nowIndicatorContent, classNameGenerator: options.nowIndicatorClassNames, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount }, props.children));
7141
7167
  }));
7142
7168
 
7143
7169
  const DAY_NUM_FORMAT = createFormatter({ day: 'numeric' });
@@ -7160,12 +7186,12 @@ var FullCalendar = (function (exports) {
7160
7186
  dateEnv: context.dateEnv,
7161
7187
  monthStartFormat: options.monthStartFormat,
7162
7188
  });
7163
- return (y(ContentContainer, Object.assign({}, props /* includes children */, { elClasses: [
7189
+ return (y(ContentContainer, { elRef: props.elRef, elTag: props.elTag, elAttrs: Object.assign(Object.assign({}, props.elAttrs), (renderProps.isDisabled ? {} : { 'data-date': formatDayString(props.date) })), elClasses: [
7164
7190
  ...getDayClassNames(renderProps, context.theme),
7165
7191
  ...(props.elClasses || []),
7166
- ], elAttrs: Object.assign(Object.assign({}, props.elAttrs), (renderProps.isDisabled ? {} : { 'data-date': formatDayString(props.date) })), renderProps: renderProps, generatorName: "dayCellContent", customGenerator: options.dayCellContent, defaultGenerator: props.defaultGenerator, classNameGenerator:
7192
+ ], elStyle: props.elStyle, renderProps: renderProps, generatorName: "dayCellContent", customGenerator: options.dayCellContent, defaultGenerator: props.defaultGenerator, classNameGenerator:
7167
7193
  // don't use custom classNames if disabled
7168
- renderProps.isDisabled ? undefined : options.dayCellClassNames, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount })));
7194
+ renderProps.isDisabled ? undefined : options.dayCellClassNames, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount }, props.children));
7169
7195
  }
7170
7196
  }
7171
7197
  function hasCustomDayCellContent(options) {
@@ -7202,7 +7228,7 @@ var FullCalendar = (function (exports) {
7202
7228
  let text = dateEnv.format(date, format);
7203
7229
  let renderProps = { num, text, date };
7204
7230
  return (y(ContentContainer // why isn't WeekNumberContentArg being auto-detected?
7205
- , Object.assign({}, props /* includes children */, { renderProps: renderProps, generatorName: "weekNumberContent", customGenerator: options.weekNumberContent, defaultGenerator: renderInner, classNameGenerator: options.weekNumberClassNames, didMount: options.weekNumberDidMount, willUnmount: options.weekNumberWillUnmount })));
7231
+ , { elRef: props.elRef, elTag: props.elTag, elAttrs: props.elAttrs, elClasses: props.elClasses, elStyle: props.elStyle, renderProps: renderProps, generatorName: "weekNumberContent", customGenerator: options.weekNumberContent, defaultGenerator: renderInner, classNameGenerator: options.weekNumberClassNames, didMount: options.weekNumberDidMount, willUnmount: options.weekNumberWillUnmount }, props.children));
7206
7232
  }));
7207
7233
  function renderInner(innerProps) {
7208
7234
  return innerProps.text;
@@ -9908,7 +9934,7 @@ var FullCalendar = (function (exports) {
9908
9934
  return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;
9909
9935
  }
9910
9936
 
9911
- const version = '6.1.17';
9937
+ const version = '6.1.18';
9912
9938
 
9913
9939
  config.touchMouseIgnoreWait = 500;
9914
9940
  let ignoreMouseDepth = 0;
@@ -12748,7 +12774,7 @@ var FullCalendar = (function (exports) {
12748
12774
  constructor() {
12749
12775
  super(...arguments);
12750
12776
  this.splitBusinessHourSegs = memoize(splitSegsByRow);
12751
- this.splitBgEventSegs = memoize(splitSegsByRow);
12777
+ this.splitBgEventSegs = memoize(splitAllDaySegsByRow);
12752
12778
  this.splitFgEventSegs = memoize(splitSegsByRow);
12753
12779
  this.splitDateSelectionSegs = memoize(splitSegsByRow);
12754
12780
  this.splitEventDrag = memoize(splitInteractionByRow);
@@ -12772,7 +12798,7 @@ var FullCalendar = (function (exports) {
12772
12798
  return (y(NowTimer, { unit: "day" }, (nowDate, todayRange) => (y(_, null, props.cells.map((cells, row) => (y(TableRow, { ref: this.rowRefs.createRef(row), key: cells.length
12773
12799
  ? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */
12774
12800
  : row // in case there are no cells (like when resource view is loading)
12775
- , showDayNumbers: rowCnt > 1, showWeekNumbers: props.showWeekNumbers, todayRange: todayRange, dateProfile: props.dateProfile, cells: cells, renderIntro: props.renderRowIntro, businessHourSegs: businessHourSegsByRow[row], eventSelection: props.eventSelection, bgEventSegs: bgEventSegsByRow[row].filter(isSegAllDay) /* hack */, fgEventSegs: fgEventSegsByRow[row], dateSelectionSegs: dateSelectionSegsByRow[row], eventDrag: eventDragByRow[row], eventResize: eventResizeByRow[row], dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, clientWidth: props.clientWidth, clientHeight: props.clientHeight, cellMinHeight: cellMinHeight, forPrint: props.forPrint })))))));
12801
+ , showDayNumbers: rowCnt > 1, showWeekNumbers: props.showWeekNumbers, todayRange: todayRange, dateProfile: props.dateProfile, cells: cells, renderIntro: props.renderRowIntro, businessHourSegs: businessHourSegsByRow[row], eventSelection: props.eventSelection, bgEventSegs: bgEventSegsByRow[row], fgEventSegs: fgEventSegsByRow[row], dateSelectionSegs: dateSelectionSegsByRow[row], eventDrag: eventDragByRow[row], eventResize: eventResizeByRow[row], dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, clientWidth: props.clientWidth, clientHeight: props.clientHeight, cellMinHeight: cellMinHeight, forPrint: props.forPrint })))))));
12776
12802
  }
12777
12803
  componentDidMount() {
12778
12804
  this.registerInteractiveComponent();
@@ -12841,6 +12867,9 @@ var FullCalendar = (function (exports) {
12841
12867
  return { start, end };
12842
12868
  }
12843
12869
  }
12870
+ function splitAllDaySegsByRow(segs, rowCnt) {
12871
+ return splitSegsByRow(segs.filter(isSegAllDay), rowCnt);
12872
+ }
12844
12873
  function isSegAllDay(seg) {
12845
12874
  return seg.eventRange.def.allDay;
12846
12875
  }