@fullcalendar/scrollgrid 5.9.0 → 5.11.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.cjs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Scheduler v5.9.0
2
+ FullCalendar Scheduler v5.10.2
3
3
  Docs & License: https://fullcalendar.io/scheduler
4
4
  (c) 2021 Adam Shaw
5
5
  */
@@ -579,31 +579,33 @@ var ScrollGrid = /** @class */ (function (_super) {
579
579
  var bodySectionNodes = [];
580
580
  var footSectionNodes = [];
581
581
  while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {
582
- headSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights));
582
+ headSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));
583
583
  configI += 1;
584
584
  }
585
585
  while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {
586
- bodySectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights));
586
+ bodySectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, false));
587
587
  configI += 1;
588
588
  }
589
589
  while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {
590
- footSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights));
590
+ footSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));
591
591
  configI += 1;
592
592
  }
593
593
  var isBuggy = !common.getCanVGrowWithinCell(); // see NOTE in SimpleScrollGrid
594
+ var roleAttrs = { role: 'rowgroup' };
594
595
  return common.createElement('table', {
595
596
  ref: props.elRef,
597
+ role: 'grid',
596
598
  className: classNames.join(' '),
597
- }, renderMacroColGroup(colGroupStats, shrinkWidths), Boolean(!isBuggy && headSectionNodes.length) && common.createElement.apply(void 0, tslib.__spreadArray(['thead', {}], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && common.createElement.apply(void 0, tslib.__spreadArray(['tbody', {}], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && common.createElement.apply(void 0, tslib.__spreadArray(['tfoot', {}], footSectionNodes)), isBuggy && common.createElement.apply(void 0, tslib.__spreadArray(tslib.__spreadArray(tslib.__spreadArray(['tbody', {}], headSectionNodes), bodySectionNodes), footSectionNodes)));
599
+ }, renderMacroColGroup(colGroupStats, shrinkWidths), Boolean(!isBuggy && headSectionNodes.length) && common.createElement.apply(void 0, tslib.__spreadArray(['thead', roleAttrs], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && common.createElement.apply(void 0, tslib.__spreadArray(['tbody', roleAttrs], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && common.createElement.apply(void 0, tslib.__spreadArray(['tfoot', roleAttrs], footSectionNodes)), isBuggy && common.createElement.apply(void 0, tslib.__spreadArray(tslib.__spreadArray(tslib.__spreadArray(['tbody', roleAttrs], headSectionNodes), bodySectionNodes), footSectionNodes)));
598
600
  };
599
- ScrollGrid.prototype.renderSection = function (sectionConfig, sectionIndex, colGroupStats, microColGroupNodes, sectionRowMaxHeights) {
601
+ ScrollGrid.prototype.renderSection = function (sectionConfig, sectionIndex, colGroupStats, microColGroupNodes, sectionRowMaxHeights, isHeader) {
600
602
  var _this = this;
601
603
  if ('outerContent' in sectionConfig) {
602
604
  return (common.createElement(common.Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));
603
605
  }
604
- return (common.createElement("tr", { key: sectionConfig.key, className: common.getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, sectionConfig.chunks.map(function (chunkConfig, i) { return _this.renderChunk(sectionConfig, sectionIndex, colGroupStats[i], microColGroupNodes[i], chunkConfig, i, (sectionRowMaxHeights[sectionIndex] || [])[i] || []); })));
606
+ return (common.createElement("tr", { key: sectionConfig.key, role: "presentation", className: common.getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, sectionConfig.chunks.map(function (chunkConfig, i) { return _this.renderChunk(sectionConfig, sectionIndex, colGroupStats[i], microColGroupNodes[i], chunkConfig, i, (sectionRowMaxHeights[sectionIndex] || [])[i] || [], isHeader); })));
605
607
  };
606
- ScrollGrid.prototype.renderChunk = function (sectionConfig, sectionIndex, colGroupStat, microColGroupNode, chunkConfig, chunkIndex, rowHeights) {
608
+ ScrollGrid.prototype.renderChunk = function (sectionConfig, sectionIndex, colGroupStat, microColGroupNode, chunkConfig, chunkIndex, rowHeights, isHeader) {
607
609
  if ('outerContent' in chunkConfig) {
608
610
  return (common.createElement(common.Fragment, { key: chunkConfig.key }, chunkConfig.outerContent));
609
611
  }
@@ -630,7 +632,7 @@ var ScrollGrid = /** @class */ (function (_super) {
630
632
  syncRowHeights: Boolean(sectionConfig.syncRowHeights),
631
633
  rowSyncHeights: rowHeights,
632
634
  reportRowHeightChange: this.handleRowHeightChange,
633
- });
635
+ }, isHeader);
634
636
  var overflowX = forceXScrollbars ? (isLastSection ? 'scroll' : 'scroll-hidden') :
635
637
  !allowXScrolling ? 'hidden' :
636
638
  (isLastSection ? 'auto' : 'scroll-hidden');
@@ -640,7 +642,11 @@ var ScrollGrid = /** @class */ (function (_super) {
640
642
  // it *could* be possible to reduce DOM wrappers by only doing a ClippedScroller when allowXScrolling or allowYScrolling,
641
643
  // but if these values were to change, the inner components would be unmounted/remounted because of the parent change.
642
644
  content = (common.createElement(ClippedScroller, { ref: this.clippedScrollerRefs.createRef(index), scrollerElRef: this.scrollerElRefs.createRef(index), overflowX: overflowX, overflowY: overflowY, liquid: chunkVGrow, maxHeight: sectionConfig.maxHeight }, content));
643
- return (common.createElement("td", { key: chunkConfig.key, ref: this.chunkElRefs.createRef(index) }, content));
645
+ return common.createElement(isHeader ? 'th' : 'td', {
646
+ key: chunkConfig.key,
647
+ ref: this.chunkElRefs.createRef(index),
648
+ role: 'presentation',
649
+ }, content);
644
650
  };
645
651
  ScrollGrid.prototype.componentDidMount = function () {
646
652
  this.updateScrollSyncers();
package/main.d.ts CHANGED
@@ -42,8 +42,8 @@ declare class ScrollGrid extends BaseComponent<ScrollGridProps, ScrollGridState>
42
42
  private recentSizingCnt;
43
43
  state: ScrollGridState;
44
44
  render(): VNode;
45
- renderSection(sectionConfig: ScrollGridSectionConfig, sectionIndex: number, colGroupStats: ColGroupStat[], microColGroupNodes: VNode[], sectionRowMaxHeights: number[][][]): VNode;
46
- renderChunk(sectionConfig: ScrollGridSectionConfig, sectionIndex: number, colGroupStat: ColGroupStat | undefined, microColGroupNode: VNode | undefined, chunkConfig: ScrollGridChunkConfig, chunkIndex: number, rowHeights: number[]): VNode;
45
+ renderSection(sectionConfig: ScrollGridSectionConfig, sectionIndex: number, colGroupStats: ColGroupStat[], microColGroupNodes: VNode[], sectionRowMaxHeights: number[][][], isHeader: boolean): VNode;
46
+ renderChunk(sectionConfig: ScrollGridSectionConfig, sectionIndex: number, colGroupStat: ColGroupStat | undefined, microColGroupNode: VNode | undefined, chunkConfig: ScrollGridChunkConfig, chunkIndex: number, rowHeights: number[], isHeader: boolean): VNode;
47
47
  componentDidMount(): void;
48
48
  componentDidUpdate(prevProps: ScrollGridProps, prevState: ScrollGridState): void;
49
49
  componentWillUnmount(): void;
package/main.global.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Scheduler v5.9.0
2
+ FullCalendar Scheduler v5.10.2
3
3
  Docs & License: https://fullcalendar.io/scheduler
4
4
  (c) 2021 Adam Shaw
5
5
  */
@@ -626,31 +626,33 @@ var FullCalendarScrollGrid = (function (exports, common, premiumCommonPlugin) {
626
626
  var bodySectionNodes = [];
627
627
  var footSectionNodes = [];
628
628
  while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {
629
- headSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights));
629
+ headSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));
630
630
  configI += 1;
631
631
  }
632
632
  while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {
633
- bodySectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights));
633
+ bodySectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, false));
634
634
  configI += 1;
635
635
  }
636
636
  while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {
637
- footSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights));
637
+ footSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));
638
638
  configI += 1;
639
639
  }
640
640
  var isBuggy = !common.getCanVGrowWithinCell(); // see NOTE in SimpleScrollGrid
641
+ var roleAttrs = { role: 'rowgroup' };
641
642
  return common.createElement('table', {
642
643
  ref: props.elRef,
644
+ role: 'grid',
643
645
  className: classNames.join(' '),
644
- }, renderMacroColGroup(colGroupStats, shrinkWidths), Boolean(!isBuggy && headSectionNodes.length) && common.createElement.apply(void 0, __spreadArray(['thead', {}], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && common.createElement.apply(void 0, __spreadArray(['tbody', {}], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && common.createElement.apply(void 0, __spreadArray(['tfoot', {}], footSectionNodes)), isBuggy && common.createElement.apply(void 0, __spreadArray(__spreadArray(__spreadArray(['tbody', {}], headSectionNodes), bodySectionNodes), footSectionNodes)));
646
+ }, renderMacroColGroup(colGroupStats, shrinkWidths), Boolean(!isBuggy && headSectionNodes.length) && common.createElement.apply(void 0, __spreadArray(['thead', roleAttrs], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && common.createElement.apply(void 0, __spreadArray(['tbody', roleAttrs], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && common.createElement.apply(void 0, __spreadArray(['tfoot', roleAttrs], footSectionNodes)), isBuggy && common.createElement.apply(void 0, __spreadArray(__spreadArray(__spreadArray(['tbody', roleAttrs], headSectionNodes), bodySectionNodes), footSectionNodes)));
645
647
  };
646
- ScrollGrid.prototype.renderSection = function (sectionConfig, sectionIndex, colGroupStats, microColGroupNodes, sectionRowMaxHeights) {
648
+ ScrollGrid.prototype.renderSection = function (sectionConfig, sectionIndex, colGroupStats, microColGroupNodes, sectionRowMaxHeights, isHeader) {
647
649
  var _this = this;
648
650
  if ('outerContent' in sectionConfig) {
649
651
  return (common.createElement(common.Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));
650
652
  }
651
- return (common.createElement("tr", { key: sectionConfig.key, className: common.getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, sectionConfig.chunks.map(function (chunkConfig, i) { return _this.renderChunk(sectionConfig, sectionIndex, colGroupStats[i], microColGroupNodes[i], chunkConfig, i, (sectionRowMaxHeights[sectionIndex] || [])[i] || []); })));
653
+ return (common.createElement("tr", { key: sectionConfig.key, role: "presentation", className: common.getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, sectionConfig.chunks.map(function (chunkConfig, i) { return _this.renderChunk(sectionConfig, sectionIndex, colGroupStats[i], microColGroupNodes[i], chunkConfig, i, (sectionRowMaxHeights[sectionIndex] || [])[i] || [], isHeader); })));
652
654
  };
653
- ScrollGrid.prototype.renderChunk = function (sectionConfig, sectionIndex, colGroupStat, microColGroupNode, chunkConfig, chunkIndex, rowHeights) {
655
+ ScrollGrid.prototype.renderChunk = function (sectionConfig, sectionIndex, colGroupStat, microColGroupNode, chunkConfig, chunkIndex, rowHeights, isHeader) {
654
656
  if ('outerContent' in chunkConfig) {
655
657
  return (common.createElement(common.Fragment, { key: chunkConfig.key }, chunkConfig.outerContent));
656
658
  }
@@ -677,7 +679,7 @@ var FullCalendarScrollGrid = (function (exports, common, premiumCommonPlugin) {
677
679
  syncRowHeights: Boolean(sectionConfig.syncRowHeights),
678
680
  rowSyncHeights: rowHeights,
679
681
  reportRowHeightChange: this.handleRowHeightChange,
680
- });
682
+ }, isHeader);
681
683
  var overflowX = forceXScrollbars ? (isLastSection ? 'scroll' : 'scroll-hidden') :
682
684
  !allowXScrolling ? 'hidden' :
683
685
  (isLastSection ? 'auto' : 'scroll-hidden');
@@ -687,7 +689,11 @@ var FullCalendarScrollGrid = (function (exports, common, premiumCommonPlugin) {
687
689
  // it *could* be possible to reduce DOM wrappers by only doing a ClippedScroller when allowXScrolling or allowYScrolling,
688
690
  // but if these values were to change, the inner components would be unmounted/remounted because of the parent change.
689
691
  content = (common.createElement(ClippedScroller, { ref: this.clippedScrollerRefs.createRef(index), scrollerElRef: this.scrollerElRefs.createRef(index), overflowX: overflowX, overflowY: overflowY, liquid: chunkVGrow, maxHeight: sectionConfig.maxHeight }, content));
690
- return (common.createElement("td", { key: chunkConfig.key, ref: this.chunkElRefs.createRef(index) }, content));
692
+ return common.createElement(isHeader ? 'th' : 'td', {
693
+ key: chunkConfig.key,
694
+ ref: this.chunkElRefs.createRef(index),
695
+ role: 'presentation',
696
+ }, content);
691
697
  };
692
698
  ScrollGrid.prototype.componentDidMount = function () {
693
699
  this.updateScrollSyncers();
@@ -1,6 +1,6 @@
1
1
  /*!
2
- FullCalendar Scheduler v5.9.0
2
+ FullCalendar Scheduler v5.10.2
3
3
  Docs & License: https://fullcalendar.io/scheduler
4
4
  (c) 2021 Adam Shaw
5
5
  */
6
- var FullCalendarScrollGrid=function(e,t,r){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=o(FullCalendarPremiumCommon),l=function(e,t){return(l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)};function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}l(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var s=function(){return(s=Object.assign||function(e){for(var t,r=1,o=arguments.length;r<o;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function c(e,t,r){if(r||2===arguments.length)for(var o,n=0,l=t.length;n<l;n++)!o&&n in t||(o||(o=Array.prototype.slice.call(t,0,n)),o[n]=t[n]);return e.concat(o||t)}var a,h="wheel mousewheel DomMouseScroll MozMousePixelScroll".split(" "),u=function(){function e(e){var r=this;this.el=e,this.emitter=new t.Emitter,this.isScrolling=!1,this.isTouching=!1,this.isRecentlyWheeled=!1,this.isRecentlyScrolled=!1,this.wheelWaiter=new t.DelayedRunner(this._handleWheelWaited.bind(this)),this.scrollWaiter=new t.DelayedRunner(this._handleScrollWaited.bind(this)),this.handleScroll=function(){r.startScroll(),r.emitter.trigger("scroll",r.isRecentlyWheeled,r.isTouching),r.isRecentlyScrolled=!0,r.scrollWaiter.request(500)},this.handleWheel=function(){r.isRecentlyWheeled=!0,r.wheelWaiter.request(500)},this.handleTouchStart=function(){r.isTouching=!0},this.handleTouchEnd=function(){r.isTouching=!1,r.isRecentlyScrolled||r.endScroll()},e.addEventListener("scroll",this.handleScroll),e.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),e.addEventListener("touchend",this.handleTouchEnd);for(var o=0,n=h;o<n.length;o++){var l=n[o];e.addEventListener(l,this.handleWheel)}}return e.prototype.destroy=function(){var e=this.el;e.removeEventListener("scroll",this.handleScroll),e.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),e.removeEventListener("touchend",this.handleTouchEnd);for(var t=0,r=h;t<r.length;t++){var o=r[t];e.removeEventListener(o,this.handleWheel)}},e.prototype.startScroll=function(){this.isScrolling||(this.isScrolling=!0,this.emitter.trigger("scrollStart",this.isRecentlyWheeled,this.isTouching))},e.prototype.endScroll=function(){this.isScrolling&&(this.emitter.trigger("scrollEnd"),this.isScrolling=!1,this.isRecentlyScrolled=!0,this.isRecentlyWheeled=!1,this.scrollWaiter.clear(),this.wheelWaiter.clear())},e.prototype._handleScrollWaited=function(){this.isRecentlyScrolled=!1,this.isTouching||this.endScroll()},e.prototype._handleWheelWaited=function(){this.isRecentlyWheeled=!1},e}();function d(e){var t=e.scrollLeft;if("rtl"===window.getComputedStyle(e).direction)switch(f()){case"negative":t*=-1;case"reverse":t=e.scrollWidth-t-e.clientWidth}return t}function p(e,t){if("rtl"===window.getComputedStyle(e).direction)switch(f()){case"reverse":t=e.scrollWidth-t;break;case"negative":t=-(e.scrollWidth-t)}e.scrollLeft=t}function f(){return a||(a=function(){var e,r=document.createElement("div");r.style.position="absolute",r.style.top="-1000px",r.style.width="1px",r.style.height="1px",r.style.overflow="scroll",r.style.direction="rtl",r.style.fontSize="100px",r.innerHTML="A",document.body.appendChild(r),r.scrollLeft>0?e="positive":(r.scrollLeft=1,e=r.scrollLeft>0?"reverse":"negative");return t.removeElement(r),e}())}var g,y="undefined"!=typeof navigator&&/Edge/.test(navigator.userAgent),S=function(){function e(e,r){var o=this;this.scrollEl=e,this.isRtl=r,this.usingRelative=null,this.updateSize=function(){var e=o.scrollEl,r=t.findElements(e,".fc-sticky"),n=o.queryElGeoms(r),l=e.clientWidth,i=e.clientHeight;o.usingRelative?function(e,r,o,n,l){e.forEach((function(e,i){var s,c,a=r[i],h=a.naturalBound,u=a.parentBound,d=u.right-u.left,p=u.bottom-u.bottom;d>n||p>l?(s=o[i].left-h.left,c=o[i].top-h.top):(s="",c=""),t.applyStyle(e,{position:"relative",left:s,right:-s,top:c})}))}(r,n,o.computeElDestinations(n,l),l,i):function(e,r,o){e.forEach((function(e,n){var l,i=r[n],s=i.textAlign,c=i.elWidth,a=i.parentBound,h=a.right-a.left;l="center"===s&&h>o?(o-c)/2:"",t.applyStyle(e,{left:l,right:l,top:0})}))}(r,n,l)},this.usingRelative=!function(){null==g&&(g=function(){var e=document.createElement("div");e.style.position="sticky",document.body.appendChild(e);var r=window.getComputedStyle(e).position;return t.removeElement(e),"sticky"===r}());return g}()||y&&r,this.usingRelative&&(this.listener=new u(e),this.listener.emitter.on("scrollEnd",this.updateSize))}return e.prototype.destroy=function(){this.listener&&this.listener.destroy()},e.prototype.queryElGeoms=function(e){for(var r=this.scrollEl,o=this.isRtl,n=function(e){var r=e.getBoundingClientRect(),o=t.computeEdges(e);return{left:r.left+o.borderLeft+o.scrollbarLeft-d(e),top:r.top+o.borderTop-e.scrollTop}}(r),l=[],i=0,s=e;i<s.length;i++){var c=s[i],a=t.translateRect(t.computeInnerRect(c.parentNode,!0,!0),-n.left,-n.top),h=c.getBoundingClientRect(),u=window.getComputedStyle(c),p=window.getComputedStyle(c.parentNode).textAlign,f=null;"start"===p?p=o?"right":"left":"end"===p&&(p=o?"left":"right"),"sticky"!==u.position&&(f=t.translateRect(h,-n.left-(parseFloat(u.left)||0),-n.top-(parseFloat(u.top)||0))),l.push({parentBound:a,naturalBound:f,elWidth:h.width,elHeight:h.height,textAlign:p})}return l},e.prototype.computeElDestinations=function(e,t){var r=this.scrollEl,o=r.scrollTop,n=d(r),l=n+t;return e.map((function(e){var t,r,i=e.elWidth,s=e.elHeight,c=e.parentBound,a=e.naturalBound;switch(e.textAlign){case"left":t=n;break;case"right":t=l-i;break;case"center":t=(n+l)/2-i/2}return t=Math.min(t,c.right-i),t=Math.max(t,c.left),r=o,r=Math.min(r,c.bottom-s),{left:t,top:r=Math.max(r,a.top)}}))},e}();var m=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.elRef=t.createRef(),r.state={xScrollbarWidth:0,yScrollbarWidth:0},r.handleScroller=function(e){r.scroller=e,t.setRef(r.props.scrollerRef,e)},r.handleSizing=function(){var e=r.props;"scroll-hidden"===e.overflowY&&r.setState({yScrollbarWidth:r.scroller.getYScrollbarWidth()}),"scroll-hidden"===e.overflowX&&r.setState({xScrollbarWidth:r.scroller.getXScrollbarWidth()})},r}return i(r,e),r.prototype.render=function(){var e=this,r=e.props,o=e.state,n=e.context.isRtl&&t.getIsRtlScrollbarOnLeft(),l=0,i=0,s=0;return"scroll-hidden"===r.overflowX&&(s=o.xScrollbarWidth),"scroll-hidden"===r.overflowY&&null!=o.yScrollbarWidth&&(n?l=o.yScrollbarWidth:i=o.yScrollbarWidth),t.createElement("div",{ref:this.elRef,className:"fc-scroller-harness"+(r.liquid?" fc-scroller-harness-liquid":"")},t.createElement(t.Scroller,{ref:this.handleScroller,elRef:this.props.scrollerElRef,overflowX:"scroll-hidden"===r.overflowX?"scroll":r.overflowX,overflowY:"scroll-hidden"===r.overflowY?"scroll":r.overflowY,overcomeLeft:l,overcomeRight:i,overcomeBottom:s,maxHeight:"number"==typeof r.maxHeight?r.maxHeight+("scroll-hidden"===r.overflowX?o.xScrollbarWidth:0):"",liquid:r.liquid,liquidIsAbsolute:!0},r.children))},r.prototype.componentDidMount=function(){this.handleSizing(),this.context.addResizeHandler(this.handleSizing)},r.prototype.componentDidUpdate=function(e){t.isPropsEqual(e,this.props)||this.handleSizing()},r.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleSizing)},r.prototype.needsXScrolling=function(){return this.scroller.needsXScrolling()},r.prototype.needsYScrolling=function(){return this.scroller.needsYScrolling()},r}(t.BaseComponent),v=function(){function e(e,t){var r=this;this.isVertical=e,this.scrollEls=t,this.isPaused=!1,this.scrollListeners=t.map((function(e){return r.bindScroller(e)}))}return e.prototype.destroy=function(){for(var e=0,t=this.scrollListeners;e<t.length;e++){t[e].destroy()}},e.prototype.bindScroller=function(e){var t=this,r=this.scrollEls,o=this.isVertical,n=new u(e);return n.emitter.on("scroll",(function(n,l){if(!t.isPaused&&((!t.masterEl||t.masterEl!==e&&(n||l))&&t.assignMaster(e),t.masterEl===e))for(var i=0,s=r;i<s.length;i++){var c=s[i];c!==e&&(o?c.scrollTop=e.scrollTop:c.scrollLeft=e.scrollLeft)}})),n.emitter.on("scrollEnd",(function(){t.masterEl===e&&(t.masterEl=null)})),n},e.prototype.assignMaster=function(e){this.masterEl=e;for(var t=0,r=this.scrollListeners;t<r.length;t++){var o=r[t];o.el!==e&&o.endScroll()}},e.prototype.forceScrollLeft=function(e){this.isPaused=!0;for(var t=0,r=this.scrollListeners;t<r.length;t++){p(r[t].el,e)}this.isPaused=!1},e.prototype.forceScrollTop=function(e){this.isPaused=!0;for(var t=0,r=this.scrollListeners;t<r.length;t++){r[t].el.scrollTop=e}this.isPaused=!1},e}(),R=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.compileColGroupStats=t.memoizeArraylike(b,M),r.renderMicroColGroups=t.memoizeArraylike(t.renderMicroColGroup),r.clippedScrollerRefs=new t.RefMap,r.scrollerElRefs=new t.RefMap(r._handleScrollerEl.bind(r)),r.chunkElRefs=new t.RefMap(r._handleChunkEl.bind(r)),r.getStickyScrolling=t.memoizeArraylike(L,null,z),r.getScrollSyncersBySection=t.memoizeHashlike(x.bind(r,!0),null,H),r.getScrollSyncersByColumn=t.memoizeHashlike(x.bind(r,!1),null,H),r.stickyScrollings=[],r.scrollSyncersBySection={},r.scrollSyncersByColumn={},r.rowUnstableMap=new Map,r.rowInnerMaxHeightMap=new Map,r.anyRowHeightsChanged=!1,r.recentSizingCnt=0,r.state={shrinkWidths:[],forceYScrollbars:!1,forceXScrollbars:!1,scrollerClientWidths:{},scrollerClientHeights:{},sectionRowMaxHeights:[]},r.handleSizing=function(e,t){if(r.allowSizing()){t||(r.anyRowHeightsChanged=!0);var o={};(e||!t&&!r.rowUnstableMap.size)&&(o.sectionRowMaxHeights=r.computeSectionRowMaxHeights()),r.setState(s(s({shrinkWidths:r.computeShrinkWidths()},r.computeScrollerDims()),o),(function(){r.rowUnstableMap.size||r.updateStickyScrolling()}))}},r.handleRowHeightChange=function(e,t){var o=r,n=o.rowUnstableMap,l=o.rowInnerMaxHeightMap;if(t){n.delete(e);var i=E(e);l.has(e)&&l.get(e)===i||(l.set(e,i),r.anyRowHeightsChanged=!0),!n.size&&r.anyRowHeightsChanged&&(r.anyRowHeightsChanged=!1,r.setState({sectionRowMaxHeights:r.computeSectionRowMaxHeights()}))}else n.set(e,!0)},r}return i(r,e),r.prototype.render=function(){var e=this,r=e.props,o=e.state,n=e.context,l=o.shrinkWidths,i=this.compileColGroupStats(r.colGroups.map((function(e){return[e]}))),s=this.renderMicroColGroups(i.map((function(e,t){return[e.cols,l[t]]}))),a=t.getScrollGridClassNames(r.liquid,n),h=this.getDims();h[0],h[1];for(var u,d=r.sections,p=d.length,f=0,g=[],y=[],S=[];f<p&&"header"===(u=d[f]).type;)g.push(this.renderSection(u,f,i,s,o.sectionRowMaxHeights)),f+=1;for(;f<p&&"body"===(u=d[f]).type;)y.push(this.renderSection(u,f,i,s,o.sectionRowMaxHeights)),f+=1;for(;f<p&&"footer"===(u=d[f]).type;)S.push(this.renderSection(u,f,i,s,o.sectionRowMaxHeights)),f+=1;var m=!t.getCanVGrowWithinCell();return t.createElement("table",{ref:r.elRef,className:a.join(" ")},function(e,r){var o=e.map((function(e,o){var n=e.width;return"shrink"===n&&(n=e.totalColWidth+t.sanitizeShrinkWidth(r[o])+1),t.createElement("col",{style:{width:n}})}));return t.createElement.apply(void 0,c(["colgroup",{}],o))}(i,l),Boolean(!m&&g.length)&&t.createElement.apply(void 0,c(["thead",{}],g)),Boolean(!m&&y.length)&&t.createElement.apply(void 0,c(["tbody",{}],y)),Boolean(!m&&S.length)&&t.createElement.apply(void 0,c(["tfoot",{}],S)),m&&t.createElement.apply(void 0,c(c(c(["tbody",{}],g),y),S)))},r.prototype.renderSection=function(e,r,o,n,l){var i=this;return"outerContent"in e?t.createElement(t.Fragment,{key:e.key},e.outerContent):t.createElement("tr",{key:e.key,className:t.getSectionClassNames(e,this.props.liquid).join(" ")},e.chunks.map((function(t,s){return i.renderChunk(e,r,o[s],n[s],t,s,(l[r]||[])[s]||[])})))},r.prototype.renderChunk=function(e,r,o,n,l,i,s){if("outerContent"in l)return t.createElement(t.Fragment,{key:l.key},l.outerContent);var c=this.state,a=c.scrollerClientWidths,h=c.scrollerClientHeights,u=this.getDims(),d=u[0],p=u[1],f=r*p+i,g=i===(!this.context.isRtl||t.getIsRtlScrollbarOnLeft()?p-1:0),y=r===d-1,S=y&&c.forceXScrollbars,v=g&&c.forceYScrollbars,R=o&&o.allowXScrolling,w=t.getAllowYScrolling(this.props,e),E=t.getSectionHasLiquidHeight(this.props,e),C=e.expandRows&&E,b=o&&o.totalColMinWidth||"",W=t.renderChunkContent(e,l,{tableColGroupNode:n,tableMinWidth:b,clientWidth:void 0!==a[f]?a[f]:null,clientHeight:void 0!==h[f]?h[f]:null,expandRows:C,syncRowHeights:Boolean(e.syncRowHeights),rowSyncHeights:s,reportRowHeightChange:this.handleRowHeightChange}),k=S?y?"scroll":"scroll-hidden":R?y?"auto":"scroll-hidden":"hidden",M=v?g?"scroll":"scroll-hidden":w?g?"auto":"scroll-hidden":"hidden";return W=t.createElement(m,{ref:this.clippedScrollerRefs.createRef(f),scrollerElRef:this.scrollerElRefs.createRef(f),overflowX:k,overflowY:M,liquid:E,maxHeight:e.maxHeight},W),t.createElement("td",{key:l.key,ref:this.chunkElRefs.createRef(f)},W)},r.prototype.componentDidMount=function(){this.updateScrollSyncers(),this.handleSizing(!1),this.context.addResizeHandler(this.handleSizing)},r.prototype.componentDidUpdate=function(e,t){this.updateScrollSyncers(),this.handleSizing(!1,t.sectionRowMaxHeights!==this.state.sectionRowMaxHeights)},r.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleSizing),this.destroyStickyScrolling(),this.destroyScrollSyncers()},r.prototype.allowSizing=function(){var e=new Date;return!this.lastSizingDate||e.valueOf()>this.lastSizingDate.valueOf()+t.config.SCROLLGRID_RESIZE_INTERVAL?(this.lastSizingDate=e,this.recentSizingCnt=0,!0):(this.recentSizingCnt+=1)<=10},r.prototype.computeShrinkWidths=function(){var e=this,r=this.compileColGroupStats(this.props.colGroups.map((function(e){return[e]}))),o=this.getDims(),n=o[0],l=o[1],i=n*l,s=[];return r.forEach((function(r,o){if(r.hasShrinkCol){var n=e.chunkElRefs.collect(o,i,l);s[o]=t.computeShrinkWidth(n)}})),s},r.prototype.computeSectionRowMaxHeights=function(){for(var e=new Map,r=this.getDims(),o=r[0],n=r[1],l=[],i=0;i<o;i+=1){var s=this.props.sections[i],c=[];if(s&&s.syncRowHeights){for(var a=[],h=0;h<n;h+=1){var u=i*n+h,d=[],p=this.chunkElRefs.currentMap[u];d=p?t.findElements(p,".fc-scrollgrid-sync-table tr").map((function(t){var r=E(t);return e.set(t,r),r})):[],a.push(d)}var f=a[0].length,g=!0;for(h=1;h<n;h+=1){if(!(s.chunks[h]&&void 0!==s.chunks[h].outerContent)&&a[h].length!==f){g=!1;break}}if(g){for(h=0;h<n;h+=1)c.push([]);for(C=0;C<f;C+=1){var y=[];for(h=0;h<n;h+=1){var S=a[h][C];null!=S&&y.push(S)}var m=Math.max.apply(Math,y);for(h=0;h<n;h+=1)c[h].push(m)}}else{for(var v=[],h=0;h<n;h+=1)v.push(w(a[h])+a[h].length);for(var R=Math.max.apply(Math,v),h=0;h<n;h+=1){var C,b=a[h].length,W=R-b,k=Math.floor(W/b),M=W-k*(b-1),x=[];for((C=0)<b&&(x.push(M),C+=1);C<b;)x.push(k),C+=1;c.push(x)}}}l.push(c)}return this.rowInnerMaxHeightMap=e,l},r.prototype.computeScrollerDims=function(){for(var e=t.getScrollbarWidths(),r=this.getDims(),o=r[0],n=r[1],l=!this.context.isRtl||t.getIsRtlScrollbarOnLeft()?n-1:0,i=o-1,s=this.clippedScrollerRefs.currentMap,c=this.scrollerElRefs.currentMap,a=!1,h=!1,u={},d={},p=0;p<o;p+=1){if((g=s[y=p*n+l])&&g.needsYScrolling()){a=!0;break}}for(var f=0;f<n;f+=1){var g;if((g=s[y=i*n+f])&&g.needsXScrolling()){h=!0;break}}for(p=0;p<o;p+=1)for(f=0;f<n;f+=1){var y,S=c[y=p*n+f];if(S){var m=S.parentNode;u[y]=Math.floor(m.getBoundingClientRect().width-(f===l&&a?e.y:0)),d[y]=Math.floor(m.getBoundingClientRect().height-(p===i&&h?e.x:0))}}return{forceYScrollbars:a,forceXScrollbars:h,scrollerClientWidths:u,scrollerClientHeights:d}},r.prototype.updateStickyScrolling=function(){var e=this.context.isRtl,t=this.scrollerElRefs.getAll().map((function(t){return[t,e]})),r=this.getStickyScrolling(t);r.forEach((function(e){return e.updateSize()})),this.stickyScrollings=r},r.prototype.destroyStickyScrolling=function(){this.stickyScrollings.forEach(z)},r.prototype.updateScrollSyncers=function(){for(var e=this.getDims(),r=e[0],o=e[1],n=r*o,l={},i={},s=this.scrollerElRefs.currentMap,c=0;c<r;c+=1){var a=c*o,h=a+o;l[c]=t.collectFromHash(s,a,h,1)}for(var u=0;u<o;u+=1)i[u]=this.scrollerElRefs.collect(u,n,o);this.scrollSyncersBySection=this.getScrollSyncersBySection(l),this.scrollSyncersByColumn=this.getScrollSyncersByColumn(i)},r.prototype.destroyScrollSyncers=function(){t.mapHash(this.scrollSyncersBySection,H),t.mapHash(this.scrollSyncersByColumn,H)},r.prototype.getChunkConfigByIndex=function(e){var t=this.getDims()[1],r=Math.floor(e/t),o=e%t,n=this.props.sections[r];return n&&n.chunks[o]},r.prototype.forceScrollLeft=function(e,t){var r=this.scrollSyncersByColumn[e];r&&r.forceScrollLeft(t)},r.prototype.forceScrollTop=function(e,t){var r=this.scrollSyncersBySection[e];r&&r.forceScrollTop(t)},r.prototype._handleChunkEl=function(e,r){var o=this.getChunkConfigByIndex(parseInt(r,10));o&&t.setRef(o.elRef,e)},r.prototype._handleScrollerEl=function(e,r){var o=this.getChunkConfigByIndex(parseInt(r,10));o&&t.setRef(o.scrollerElRef,e)},r.prototype.getDims=function(){var e=this.props.sections.length;return[e,e?this.props.sections[0].chunks.length:0]},r}(t.BaseComponent);function w(e){for(var t=0,r=0,o=e;r<o.length;r++){t+=o[r]}return t}function E(e){var r=t.findElements(e,".fc-scrollgrid-sync-inner").map(C);return r.length?Math.max.apply(Math,r):0}function C(e){return e.offsetHeight}function b(e){var r=W(e.cols,"width"),o=W(e.cols,"minWidth"),n=t.hasShrinkWidth(e.cols);return{hasShrinkCol:n,totalColWidth:r,totalColMinWidth:o,allowXScrolling:"shrink"!==e.width&&Boolean(r||o||n),cols:e.cols,width:e.width}}function W(e,t){for(var r=0,o=0,n=e;o<n.length;o++){var l=n[o],i=l[t];"number"==typeof i&&(r+=i*(l.span||1))}return r}R.addStateEquality({shrinkWidths:t.isArraysEqual,scrollerClientWidths:t.isPropsEqual,scrollerClientHeights:t.isPropsEqual});var k={cols:t.isColPropsEqual};function M(e,r){return t.compareObjs(e,r,k)}function x(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return new v(e,t)}function H(e){e.destroy()}function L(e,t){return new S(e,t)}function z(e){e.destroy()}var B=t.createPlugin({deps:[n.default],scrollGridImpl:R});return t.config.SCROLLGRID_RESIZE_INTERVAL=500,t.globalPlugins.push(B),e.ScrollGrid=R,e.default=B,e.setScrollFromLeftEdge=p,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar);
6
+ var FullCalendarScrollGrid=function(e,t,r){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=o(FullCalendarPremiumCommon),l=function(e,t){return(l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)};function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}l(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var s=function(){return(s=Object.assign||function(e){for(var t,r=1,o=arguments.length;r<o;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function c(e,t,r){if(r||2===arguments.length)for(var o,n=0,l=t.length;n<l;n++)!o&&n in t||(o||(o=Array.prototype.slice.call(t,0,n)),o[n]=t[n]);return e.concat(o||t)}var a,h="wheel mousewheel DomMouseScroll MozMousePixelScroll".split(" "),u=function(){function e(e){var r=this;this.el=e,this.emitter=new t.Emitter,this.isScrolling=!1,this.isTouching=!1,this.isRecentlyWheeled=!1,this.isRecentlyScrolled=!1,this.wheelWaiter=new t.DelayedRunner(this._handleWheelWaited.bind(this)),this.scrollWaiter=new t.DelayedRunner(this._handleScrollWaited.bind(this)),this.handleScroll=function(){r.startScroll(),r.emitter.trigger("scroll",r.isRecentlyWheeled,r.isTouching),r.isRecentlyScrolled=!0,r.scrollWaiter.request(500)},this.handleWheel=function(){r.isRecentlyWheeled=!0,r.wheelWaiter.request(500)},this.handleTouchStart=function(){r.isTouching=!0},this.handleTouchEnd=function(){r.isTouching=!1,r.isRecentlyScrolled||r.endScroll()},e.addEventListener("scroll",this.handleScroll),e.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),e.addEventListener("touchend",this.handleTouchEnd);for(var o=0,n=h;o<n.length;o++){var l=n[o];e.addEventListener(l,this.handleWheel)}}return e.prototype.destroy=function(){var e=this.el;e.removeEventListener("scroll",this.handleScroll),e.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),e.removeEventListener("touchend",this.handleTouchEnd);for(var t=0,r=h;t<r.length;t++){var o=r[t];e.removeEventListener(o,this.handleWheel)}},e.prototype.startScroll=function(){this.isScrolling||(this.isScrolling=!0,this.emitter.trigger("scrollStart",this.isRecentlyWheeled,this.isTouching))},e.prototype.endScroll=function(){this.isScrolling&&(this.emitter.trigger("scrollEnd"),this.isScrolling=!1,this.isRecentlyScrolled=!0,this.isRecentlyWheeled=!1,this.scrollWaiter.clear(),this.wheelWaiter.clear())},e.prototype._handleScrollWaited=function(){this.isRecentlyScrolled=!1,this.isTouching||this.endScroll()},e.prototype._handleWheelWaited=function(){this.isRecentlyWheeled=!1},e}();function d(e){var t=e.scrollLeft;if("rtl"===window.getComputedStyle(e).direction)switch(f()){case"negative":t*=-1;case"reverse":t=e.scrollWidth-t-e.clientWidth}return t}function p(e,t){if("rtl"===window.getComputedStyle(e).direction)switch(f()){case"reverse":t=e.scrollWidth-t;break;case"negative":t=-(e.scrollWidth-t)}e.scrollLeft=t}function f(){return a||(a=function(){var e,r=document.createElement("div");r.style.position="absolute",r.style.top="-1000px",r.style.width="1px",r.style.height="1px",r.style.overflow="scroll",r.style.direction="rtl",r.style.fontSize="100px",r.innerHTML="A",document.body.appendChild(r),r.scrollLeft>0?e="positive":(r.scrollLeft=1,e=r.scrollLeft>0?"reverse":"negative");return t.removeElement(r),e}())}var g,y="undefined"!=typeof navigator&&/Edge/.test(navigator.userAgent),S=function(){function e(e,r){var o=this;this.scrollEl=e,this.isRtl=r,this.usingRelative=null,this.updateSize=function(){var e=o.scrollEl,r=t.findElements(e,".fc-sticky"),n=o.queryElGeoms(r),l=e.clientWidth,i=e.clientHeight;o.usingRelative?function(e,r,o,n,l){e.forEach((function(e,i){var s,c,a=r[i],h=a.naturalBound,u=a.parentBound,d=u.right-u.left,p=u.bottom-u.bottom;d>n||p>l?(s=o[i].left-h.left,c=o[i].top-h.top):(s="",c=""),t.applyStyle(e,{position:"relative",left:s,right:-s,top:c})}))}(r,n,o.computeElDestinations(n,l),l,i):function(e,r,o){e.forEach((function(e,n){var l,i=r[n],s=i.textAlign,c=i.elWidth,a=i.parentBound,h=a.right-a.left;l="center"===s&&h>o?(o-c)/2:"",t.applyStyle(e,{left:l,right:l,top:0})}))}(r,n,l)},this.usingRelative=!function(){null==g&&(g=function(){var e=document.createElement("div");e.style.position="sticky",document.body.appendChild(e);var r=window.getComputedStyle(e).position;return t.removeElement(e),"sticky"===r}());return g}()||y&&r,this.usingRelative&&(this.listener=new u(e),this.listener.emitter.on("scrollEnd",this.updateSize))}return e.prototype.destroy=function(){this.listener&&this.listener.destroy()},e.prototype.queryElGeoms=function(e){for(var r=this.scrollEl,o=this.isRtl,n=function(e){var r=e.getBoundingClientRect(),o=t.computeEdges(e);return{left:r.left+o.borderLeft+o.scrollbarLeft-d(e),top:r.top+o.borderTop-e.scrollTop}}(r),l=[],i=0,s=e;i<s.length;i++){var c=s[i],a=t.translateRect(t.computeInnerRect(c.parentNode,!0,!0),-n.left,-n.top),h=c.getBoundingClientRect(),u=window.getComputedStyle(c),p=window.getComputedStyle(c.parentNode).textAlign,f=null;"start"===p?p=o?"right":"left":"end"===p&&(p=o?"left":"right"),"sticky"!==u.position&&(f=t.translateRect(h,-n.left-(parseFloat(u.left)||0),-n.top-(parseFloat(u.top)||0))),l.push({parentBound:a,naturalBound:f,elWidth:h.width,elHeight:h.height,textAlign:p})}return l},e.prototype.computeElDestinations=function(e,t){var r=this.scrollEl,o=r.scrollTop,n=d(r),l=n+t;return e.map((function(e){var t,r,i=e.elWidth,s=e.elHeight,c=e.parentBound,a=e.naturalBound;switch(e.textAlign){case"left":t=n;break;case"right":t=l-i;break;case"center":t=(n+l)/2-i/2}return t=Math.min(t,c.right-i),t=Math.max(t,c.left),r=o,r=Math.min(r,c.bottom-s),{left:t,top:r=Math.max(r,a.top)}}))},e}();var m=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.elRef=t.createRef(),r.state={xScrollbarWidth:0,yScrollbarWidth:0},r.handleScroller=function(e){r.scroller=e,t.setRef(r.props.scrollerRef,e)},r.handleSizing=function(){var e=r.props;"scroll-hidden"===e.overflowY&&r.setState({yScrollbarWidth:r.scroller.getYScrollbarWidth()}),"scroll-hidden"===e.overflowX&&r.setState({xScrollbarWidth:r.scroller.getXScrollbarWidth()})},r}return i(r,e),r.prototype.render=function(){var e=this,r=e.props,o=e.state,n=e.context.isRtl&&t.getIsRtlScrollbarOnLeft(),l=0,i=0,s=0;return"scroll-hidden"===r.overflowX&&(s=o.xScrollbarWidth),"scroll-hidden"===r.overflowY&&null!=o.yScrollbarWidth&&(n?l=o.yScrollbarWidth:i=o.yScrollbarWidth),t.createElement("div",{ref:this.elRef,className:"fc-scroller-harness"+(r.liquid?" fc-scroller-harness-liquid":"")},t.createElement(t.Scroller,{ref:this.handleScroller,elRef:this.props.scrollerElRef,overflowX:"scroll-hidden"===r.overflowX?"scroll":r.overflowX,overflowY:"scroll-hidden"===r.overflowY?"scroll":r.overflowY,overcomeLeft:l,overcomeRight:i,overcomeBottom:s,maxHeight:"number"==typeof r.maxHeight?r.maxHeight+("scroll-hidden"===r.overflowX?o.xScrollbarWidth:0):"",liquid:r.liquid,liquidIsAbsolute:!0},r.children))},r.prototype.componentDidMount=function(){this.handleSizing(),this.context.addResizeHandler(this.handleSizing)},r.prototype.componentDidUpdate=function(e){t.isPropsEqual(e,this.props)||this.handleSizing()},r.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleSizing)},r.prototype.needsXScrolling=function(){return this.scroller.needsXScrolling()},r.prototype.needsYScrolling=function(){return this.scroller.needsYScrolling()},r}(t.BaseComponent),v=function(){function e(e,t){var r=this;this.isVertical=e,this.scrollEls=t,this.isPaused=!1,this.scrollListeners=t.map((function(e){return r.bindScroller(e)}))}return e.prototype.destroy=function(){for(var e=0,t=this.scrollListeners;e<t.length;e++){t[e].destroy()}},e.prototype.bindScroller=function(e){var t=this,r=this.scrollEls,o=this.isVertical,n=new u(e);return n.emitter.on("scroll",(function(n,l){if(!t.isPaused&&((!t.masterEl||t.masterEl!==e&&(n||l))&&t.assignMaster(e),t.masterEl===e))for(var i=0,s=r;i<s.length;i++){var c=s[i];c!==e&&(o?c.scrollTop=e.scrollTop:c.scrollLeft=e.scrollLeft)}})),n.emitter.on("scrollEnd",(function(){t.masterEl===e&&(t.masterEl=null)})),n},e.prototype.assignMaster=function(e){this.masterEl=e;for(var t=0,r=this.scrollListeners;t<r.length;t++){var o=r[t];o.el!==e&&o.endScroll()}},e.prototype.forceScrollLeft=function(e){this.isPaused=!0;for(var t=0,r=this.scrollListeners;t<r.length;t++){p(r[t].el,e)}this.isPaused=!1},e.prototype.forceScrollTop=function(e){this.isPaused=!0;for(var t=0,r=this.scrollListeners;t<r.length;t++){r[t].el.scrollTop=e}this.isPaused=!1},e}(),R=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return r.compileColGroupStats=t.memoizeArraylike(b,M),r.renderMicroColGroups=t.memoizeArraylike(t.renderMicroColGroup),r.clippedScrollerRefs=new t.RefMap,r.scrollerElRefs=new t.RefMap(r._handleScrollerEl.bind(r)),r.chunkElRefs=new t.RefMap(r._handleChunkEl.bind(r)),r.getStickyScrolling=t.memoizeArraylike(L,null,z),r.getScrollSyncersBySection=t.memoizeHashlike(x.bind(r,!0),null,H),r.getScrollSyncersByColumn=t.memoizeHashlike(x.bind(r,!1),null,H),r.stickyScrollings=[],r.scrollSyncersBySection={},r.scrollSyncersByColumn={},r.rowUnstableMap=new Map,r.rowInnerMaxHeightMap=new Map,r.anyRowHeightsChanged=!1,r.recentSizingCnt=0,r.state={shrinkWidths:[],forceYScrollbars:!1,forceXScrollbars:!1,scrollerClientWidths:{},scrollerClientHeights:{},sectionRowMaxHeights:[]},r.handleSizing=function(e,t){if(r.allowSizing()){t||(r.anyRowHeightsChanged=!0);var o={};(e||!t&&!r.rowUnstableMap.size)&&(o.sectionRowMaxHeights=r.computeSectionRowMaxHeights()),r.setState(s(s({shrinkWidths:r.computeShrinkWidths()},r.computeScrollerDims()),o),(function(){r.rowUnstableMap.size||r.updateStickyScrolling()}))}},r.handleRowHeightChange=function(e,t){var o=r,n=o.rowUnstableMap,l=o.rowInnerMaxHeightMap;if(t){n.delete(e);var i=E(e);l.has(e)&&l.get(e)===i||(l.set(e,i),r.anyRowHeightsChanged=!0),!n.size&&r.anyRowHeightsChanged&&(r.anyRowHeightsChanged=!1,r.setState({sectionRowMaxHeights:r.computeSectionRowMaxHeights()}))}else n.set(e,!0)},r}return i(r,e),r.prototype.render=function(){var e=this,r=e.props,o=e.state,n=e.context,l=o.shrinkWidths,i=this.compileColGroupStats(r.colGroups.map((function(e){return[e]}))),s=this.renderMicroColGroups(i.map((function(e,t){return[e.cols,l[t]]}))),a=t.getScrollGridClassNames(r.liquid,n),h=this.getDims();h[0],h[1];for(var u,d=r.sections,p=d.length,f=0,g=[],y=[],S=[];f<p&&"header"===(u=d[f]).type;)g.push(this.renderSection(u,f,i,s,o.sectionRowMaxHeights,!0)),f+=1;for(;f<p&&"body"===(u=d[f]).type;)y.push(this.renderSection(u,f,i,s,o.sectionRowMaxHeights,!1)),f+=1;for(;f<p&&"footer"===(u=d[f]).type;)S.push(this.renderSection(u,f,i,s,o.sectionRowMaxHeights,!0)),f+=1;var m=!t.getCanVGrowWithinCell(),v={role:"rowgroup"};return t.createElement("table",{ref:r.elRef,role:"grid",className:a.join(" ")},function(e,r){var o=e.map((function(e,o){var n=e.width;return"shrink"===n&&(n=e.totalColWidth+t.sanitizeShrinkWidth(r[o])+1),t.createElement("col",{style:{width:n}})}));return t.createElement.apply(void 0,c(["colgroup",{}],o))}(i,l),Boolean(!m&&g.length)&&t.createElement.apply(void 0,c(["thead",v],g)),Boolean(!m&&y.length)&&t.createElement.apply(void 0,c(["tbody",v],y)),Boolean(!m&&S.length)&&t.createElement.apply(void 0,c(["tfoot",v],S)),m&&t.createElement.apply(void 0,c(c(c(["tbody",v],g),y),S)))},r.prototype.renderSection=function(e,r,o,n,l,i){var s=this;return"outerContent"in e?t.createElement(t.Fragment,{key:e.key},e.outerContent):t.createElement("tr",{key:e.key,role:"presentation",className:t.getSectionClassNames(e,this.props.liquid).join(" ")},e.chunks.map((function(t,c){return s.renderChunk(e,r,o[c],n[c],t,c,(l[r]||[])[c]||[],i)})))},r.prototype.renderChunk=function(e,r,o,n,l,i,s,c){if("outerContent"in l)return t.createElement(t.Fragment,{key:l.key},l.outerContent);var a=this.state,h=a.scrollerClientWidths,u=a.scrollerClientHeights,d=this.getDims(),p=d[0],f=d[1],g=r*f+i,y=i===(!this.context.isRtl||t.getIsRtlScrollbarOnLeft()?f-1:0),S=r===p-1,v=S&&a.forceXScrollbars,R=y&&a.forceYScrollbars,w=o&&o.allowXScrolling,E=t.getAllowYScrolling(this.props,e),C=t.getSectionHasLiquidHeight(this.props,e),b=e.expandRows&&C,W=o&&o.totalColMinWidth||"",k=t.renderChunkContent(e,l,{tableColGroupNode:n,tableMinWidth:W,clientWidth:void 0!==h[g]?h[g]:null,clientHeight:void 0!==u[g]?u[g]:null,expandRows:b,syncRowHeights:Boolean(e.syncRowHeights),rowSyncHeights:s,reportRowHeightChange:this.handleRowHeightChange},c),M=v?S?"scroll":"scroll-hidden":w?S?"auto":"scroll-hidden":"hidden",x=R?y?"scroll":"scroll-hidden":E?y?"auto":"scroll-hidden":"hidden";return k=t.createElement(m,{ref:this.clippedScrollerRefs.createRef(g),scrollerElRef:this.scrollerElRefs.createRef(g),overflowX:M,overflowY:x,liquid:C,maxHeight:e.maxHeight},k),t.createElement(c?"th":"td",{key:l.key,ref:this.chunkElRefs.createRef(g),role:"presentation"},k)},r.prototype.componentDidMount=function(){this.updateScrollSyncers(),this.handleSizing(!1),this.context.addResizeHandler(this.handleSizing)},r.prototype.componentDidUpdate=function(e,t){this.updateScrollSyncers(),this.handleSizing(!1,t.sectionRowMaxHeights!==this.state.sectionRowMaxHeights)},r.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleSizing),this.destroyStickyScrolling(),this.destroyScrollSyncers()},r.prototype.allowSizing=function(){var e=new Date;return!this.lastSizingDate||e.valueOf()>this.lastSizingDate.valueOf()+t.config.SCROLLGRID_RESIZE_INTERVAL?(this.lastSizingDate=e,this.recentSizingCnt=0,!0):(this.recentSizingCnt+=1)<=10},r.prototype.computeShrinkWidths=function(){var e=this,r=this.compileColGroupStats(this.props.colGroups.map((function(e){return[e]}))),o=this.getDims(),n=o[0],l=o[1],i=n*l,s=[];return r.forEach((function(r,o){if(r.hasShrinkCol){var n=e.chunkElRefs.collect(o,i,l);s[o]=t.computeShrinkWidth(n)}})),s},r.prototype.computeSectionRowMaxHeights=function(){for(var e=new Map,r=this.getDims(),o=r[0],n=r[1],l=[],i=0;i<o;i+=1){var s=this.props.sections[i],c=[];if(s&&s.syncRowHeights){for(var a=[],h=0;h<n;h+=1){var u=i*n+h,d=[],p=this.chunkElRefs.currentMap[u];d=p?t.findElements(p,".fc-scrollgrid-sync-table tr").map((function(t){var r=E(t);return e.set(t,r),r})):[],a.push(d)}var f=a[0].length,g=!0;for(h=1;h<n;h+=1){if(!(s.chunks[h]&&void 0!==s.chunks[h].outerContent)&&a[h].length!==f){g=!1;break}}if(g){for(h=0;h<n;h+=1)c.push([]);for(C=0;C<f;C+=1){var y=[];for(h=0;h<n;h+=1){var S=a[h][C];null!=S&&y.push(S)}var m=Math.max.apply(Math,y);for(h=0;h<n;h+=1)c[h].push(m)}}else{for(var v=[],h=0;h<n;h+=1)v.push(w(a[h])+a[h].length);for(var R=Math.max.apply(Math,v),h=0;h<n;h+=1){var C,b=a[h].length,W=R-b,k=Math.floor(W/b),M=W-k*(b-1),x=[];for((C=0)<b&&(x.push(M),C+=1);C<b;)x.push(k),C+=1;c.push(x)}}}l.push(c)}return this.rowInnerMaxHeightMap=e,l},r.prototype.computeScrollerDims=function(){for(var e=t.getScrollbarWidths(),r=this.getDims(),o=r[0],n=r[1],l=!this.context.isRtl||t.getIsRtlScrollbarOnLeft()?n-1:0,i=o-1,s=this.clippedScrollerRefs.currentMap,c=this.scrollerElRefs.currentMap,a=!1,h=!1,u={},d={},p=0;p<o;p+=1){if((g=s[y=p*n+l])&&g.needsYScrolling()){a=!0;break}}for(var f=0;f<n;f+=1){var g;if((g=s[y=i*n+f])&&g.needsXScrolling()){h=!0;break}}for(p=0;p<o;p+=1)for(f=0;f<n;f+=1){var y,S=c[y=p*n+f];if(S){var m=S.parentNode;u[y]=Math.floor(m.getBoundingClientRect().width-(f===l&&a?e.y:0)),d[y]=Math.floor(m.getBoundingClientRect().height-(p===i&&h?e.x:0))}}return{forceYScrollbars:a,forceXScrollbars:h,scrollerClientWidths:u,scrollerClientHeights:d}},r.prototype.updateStickyScrolling=function(){var e=this.context.isRtl,t=this.scrollerElRefs.getAll().map((function(t){return[t,e]})),r=this.getStickyScrolling(t);r.forEach((function(e){return e.updateSize()})),this.stickyScrollings=r},r.prototype.destroyStickyScrolling=function(){this.stickyScrollings.forEach(z)},r.prototype.updateScrollSyncers=function(){for(var e=this.getDims(),r=e[0],o=e[1],n=r*o,l={},i={},s=this.scrollerElRefs.currentMap,c=0;c<r;c+=1){var a=c*o,h=a+o;l[c]=t.collectFromHash(s,a,h,1)}for(var u=0;u<o;u+=1)i[u]=this.scrollerElRefs.collect(u,n,o);this.scrollSyncersBySection=this.getScrollSyncersBySection(l),this.scrollSyncersByColumn=this.getScrollSyncersByColumn(i)},r.prototype.destroyScrollSyncers=function(){t.mapHash(this.scrollSyncersBySection,H),t.mapHash(this.scrollSyncersByColumn,H)},r.prototype.getChunkConfigByIndex=function(e){var t=this.getDims()[1],r=Math.floor(e/t),o=e%t,n=this.props.sections[r];return n&&n.chunks[o]},r.prototype.forceScrollLeft=function(e,t){var r=this.scrollSyncersByColumn[e];r&&r.forceScrollLeft(t)},r.prototype.forceScrollTop=function(e,t){var r=this.scrollSyncersBySection[e];r&&r.forceScrollTop(t)},r.prototype._handleChunkEl=function(e,r){var o=this.getChunkConfigByIndex(parseInt(r,10));o&&t.setRef(o.elRef,e)},r.prototype._handleScrollerEl=function(e,r){var o=this.getChunkConfigByIndex(parseInt(r,10));o&&t.setRef(o.scrollerElRef,e)},r.prototype.getDims=function(){var e=this.props.sections.length;return[e,e?this.props.sections[0].chunks.length:0]},r}(t.BaseComponent);function w(e){for(var t=0,r=0,o=e;r<o.length;r++){t+=o[r]}return t}function E(e){var r=t.findElements(e,".fc-scrollgrid-sync-inner").map(C);return r.length?Math.max.apply(Math,r):0}function C(e){return e.offsetHeight}function b(e){var r=W(e.cols,"width"),o=W(e.cols,"minWidth"),n=t.hasShrinkWidth(e.cols);return{hasShrinkCol:n,totalColWidth:r,totalColMinWidth:o,allowXScrolling:"shrink"!==e.width&&Boolean(r||o||n),cols:e.cols,width:e.width}}function W(e,t){for(var r=0,o=0,n=e;o<n.length;o++){var l=n[o],i=l[t];"number"==typeof i&&(r+=i*(l.span||1))}return r}R.addStateEquality({shrinkWidths:t.isArraysEqual,scrollerClientWidths:t.isPropsEqual,scrollerClientHeights:t.isPropsEqual});var k={cols:t.isColPropsEqual};function M(e,r){return t.compareObjs(e,r,k)}function x(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return new v(e,t)}function H(e){e.destroy()}function L(e,t){return new S(e,t)}function z(e){e.destroy()}var B=t.createPlugin({deps:[n.default],scrollGridImpl:R});return t.config.SCROLLGRID_RESIZE_INTERVAL=500,t.globalPlugins.push(B),e.ScrollGrid=R,e.default=B,e.setScrollFromLeftEdge=p,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar);
package/main.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Scheduler v5.9.0
2
+ FullCalendar Scheduler v5.10.2
3
3
  Docs & License: https://fullcalendar.io/scheduler
4
4
  (c) 2021 Adam Shaw
5
5
  */
@@ -571,31 +571,33 @@ var ScrollGrid = /** @class */ (function (_super) {
571
571
  var bodySectionNodes = [];
572
572
  var footSectionNodes = [];
573
573
  while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {
574
- headSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights));
574
+ headSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));
575
575
  configI += 1;
576
576
  }
577
577
  while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {
578
- bodySectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights));
578
+ bodySectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, false));
579
579
  configI += 1;
580
580
  }
581
581
  while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {
582
- footSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights));
582
+ footSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));
583
583
  configI += 1;
584
584
  }
585
585
  var isBuggy = !getCanVGrowWithinCell(); // see NOTE in SimpleScrollGrid
586
+ var roleAttrs = { role: 'rowgroup' };
586
587
  return createElement('table', {
587
588
  ref: props.elRef,
589
+ role: 'grid',
588
590
  className: classNames.join(' '),
589
- }, renderMacroColGroup(colGroupStats, shrinkWidths), Boolean(!isBuggy && headSectionNodes.length) && createElement.apply(void 0, __spreadArray(['thead', {}], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && createElement.apply(void 0, __spreadArray(['tbody', {}], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && createElement.apply(void 0, __spreadArray(['tfoot', {}], footSectionNodes)), isBuggy && createElement.apply(void 0, __spreadArray(__spreadArray(__spreadArray(['tbody', {}], headSectionNodes), bodySectionNodes), footSectionNodes)));
591
+ }, renderMacroColGroup(colGroupStats, shrinkWidths), Boolean(!isBuggy && headSectionNodes.length) && createElement.apply(void 0, __spreadArray(['thead', roleAttrs], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && createElement.apply(void 0, __spreadArray(['tbody', roleAttrs], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && createElement.apply(void 0, __spreadArray(['tfoot', roleAttrs], footSectionNodes)), isBuggy && createElement.apply(void 0, __spreadArray(__spreadArray(__spreadArray(['tbody', roleAttrs], headSectionNodes), bodySectionNodes), footSectionNodes)));
590
592
  };
591
- ScrollGrid.prototype.renderSection = function (sectionConfig, sectionIndex, colGroupStats, microColGroupNodes, sectionRowMaxHeights) {
593
+ ScrollGrid.prototype.renderSection = function (sectionConfig, sectionIndex, colGroupStats, microColGroupNodes, sectionRowMaxHeights, isHeader) {
592
594
  var _this = this;
593
595
  if ('outerContent' in sectionConfig) {
594
596
  return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));
595
597
  }
596
- return (createElement("tr", { key: sectionConfig.key, className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, sectionConfig.chunks.map(function (chunkConfig, i) { return _this.renderChunk(sectionConfig, sectionIndex, colGroupStats[i], microColGroupNodes[i], chunkConfig, i, (sectionRowMaxHeights[sectionIndex] || [])[i] || []); })));
598
+ return (createElement("tr", { key: sectionConfig.key, role: "presentation", className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, sectionConfig.chunks.map(function (chunkConfig, i) { return _this.renderChunk(sectionConfig, sectionIndex, colGroupStats[i], microColGroupNodes[i], chunkConfig, i, (sectionRowMaxHeights[sectionIndex] || [])[i] || [], isHeader); })));
597
599
  };
598
- ScrollGrid.prototype.renderChunk = function (sectionConfig, sectionIndex, colGroupStat, microColGroupNode, chunkConfig, chunkIndex, rowHeights) {
600
+ ScrollGrid.prototype.renderChunk = function (sectionConfig, sectionIndex, colGroupStat, microColGroupNode, chunkConfig, chunkIndex, rowHeights, isHeader) {
599
601
  if ('outerContent' in chunkConfig) {
600
602
  return (createElement(Fragment, { key: chunkConfig.key }, chunkConfig.outerContent));
601
603
  }
@@ -622,7 +624,7 @@ var ScrollGrid = /** @class */ (function (_super) {
622
624
  syncRowHeights: Boolean(sectionConfig.syncRowHeights),
623
625
  rowSyncHeights: rowHeights,
624
626
  reportRowHeightChange: this.handleRowHeightChange,
625
- });
627
+ }, isHeader);
626
628
  var overflowX = forceXScrollbars ? (isLastSection ? 'scroll' : 'scroll-hidden') :
627
629
  !allowXScrolling ? 'hidden' :
628
630
  (isLastSection ? 'auto' : 'scroll-hidden');
@@ -632,7 +634,11 @@ var ScrollGrid = /** @class */ (function (_super) {
632
634
  // it *could* be possible to reduce DOM wrappers by only doing a ClippedScroller when allowXScrolling or allowYScrolling,
633
635
  // but if these values were to change, the inner components would be unmounted/remounted because of the parent change.
634
636
  content = (createElement(ClippedScroller, { ref: this.clippedScrollerRefs.createRef(index), scrollerElRef: this.scrollerElRefs.createRef(index), overflowX: overflowX, overflowY: overflowY, liquid: chunkVGrow, maxHeight: sectionConfig.maxHeight }, content));
635
- return (createElement("td", { key: chunkConfig.key, ref: this.chunkElRefs.createRef(index) }, content));
637
+ return createElement(isHeader ? 'th' : 'td', {
638
+ key: chunkConfig.key,
639
+ ref: this.chunkElRefs.createRef(index),
640
+ role: 'presentation',
641
+ }, content);
636
642
  };
637
643
  ScrollGrid.prototype.componentDidMount = function () {
638
644
  this.updateScrollSyncers();
package/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["src/ScrollListener.ts","src/scroll-left-norm.tsx","src/StickyScrolling.ts","src/ClippedScroller.tsx","src/ScrollSyncer.ts","src/ScrollGrid.tsx","src/main.ts"],"sourcesContent":["import { Emitter, DelayedRunner } from '@fullcalendar/common'\n\nconst WHEEL_EVENT_NAMES = 'wheel mousewheel DomMouseScroll MozMousePixelScroll'.split(' ')\n\n/*\nALSO, with the ability to disable touch\n*/\nexport class ScrollListener {\n emitter = new Emitter()\n private isScrolling = false\n private isTouching = false // user currently has finger down?\n private isRecentlyWheeled = false\n private isRecentlyScrolled = false\n private wheelWaiter = new DelayedRunner(this._handleWheelWaited.bind(this))\n private scrollWaiter = new DelayedRunner(this._handleScrollWaited.bind(this))\n\n constructor(public el: HTMLElement) {\n el.addEventListener('scroll', this.handleScroll)\n el.addEventListener('touchstart', this.handleTouchStart, { passive: true })\n el.addEventListener('touchend', this.handleTouchEnd)\n\n for (let eventName of WHEEL_EVENT_NAMES) {\n el.addEventListener(eventName, this.handleWheel)\n }\n }\n\n destroy() {\n let { el } = this\n el.removeEventListener('scroll', this.handleScroll)\n el.removeEventListener('touchstart', this.handleTouchStart, { passive: true } as AddEventListenerOptions)\n el.removeEventListener('touchend', this.handleTouchEnd)\n\n for (let eventName of WHEEL_EVENT_NAMES) {\n el.removeEventListener(eventName, this.handleWheel)\n }\n }\n\n // Start / Stop\n // ----------------------------------------------------------------------------------------------\n\n private startScroll() {\n if (!this.isScrolling) {\n this.isScrolling = true\n this.emitter.trigger('scrollStart', this.isRecentlyWheeled, this.isTouching)\n }\n }\n\n endScroll() {\n if (this.isScrolling) {\n this.emitter.trigger('scrollEnd')\n this.isScrolling = false\n this.isRecentlyScrolled = true\n this.isRecentlyWheeled = false\n this.scrollWaiter.clear()\n this.wheelWaiter.clear()\n }\n }\n\n // Handlers\n // ----------------------------------------------------------------------------------------------\n\n handleScroll = () => {\n this.startScroll()\n this.emitter.trigger('scroll', this.isRecentlyWheeled, this.isTouching)\n this.isRecentlyScrolled = true\n this.scrollWaiter.request(500)\n }\n\n _handleScrollWaited() {\n this.isRecentlyScrolled = false\n\n // only end the scroll if not currently touching.\n // if touching, the scrolling will end later, on touchend.\n if (!this.isTouching) {\n this.endScroll() // won't fire if already ended\n }\n }\n\n // will fire *before* the scroll event is fired (might not cause a scroll)\n handleWheel = () => {\n this.isRecentlyWheeled = true\n this.wheelWaiter.request(500)\n }\n\n _handleWheelWaited() {\n this.isRecentlyWheeled = false\n }\n\n // will fire *before* the scroll event is fired (might not cause a scroll)\n handleTouchStart = () => {\n this.isTouching = true\n }\n\n handleTouchEnd = () => {\n this.isTouching = false\n\n // if the user ended their touch, and the scroll area wasn't moving,\n // we consider this to be the end of the scroll.\n if (!this.isRecentlyScrolled) {\n this.endScroll() // won't fire if already ended\n }\n }\n}\n","import { removeElement, computeEdges } from '@fullcalendar/common'\n\n// TODO: assume the el has no borders?\nexport function getScrollCanvasOrigin(scrollEl: HTMLElement) { // best place for this?\n let rect = scrollEl.getBoundingClientRect()\n let edges = computeEdges(scrollEl) // TODO: pass in isRtl?\n\n return {\n left: rect.left + edges.borderLeft + edges.scrollbarLeft - getScrollFromLeftEdge(scrollEl),\n top: rect.top + edges.borderTop - scrollEl.scrollTop,\n }\n}\n\nexport function getScrollFromLeftEdge(el: HTMLElement) {\n let scrollLeft = el.scrollLeft\n let computedStyles = window.getComputedStyle(el) // TODO: pass in isRtl instead?\n\n if (computedStyles.direction === 'rtl') {\n switch (getRtlScrollSystem()) {\n case 'negative':\n scrollLeft *= -1 // convert to 'reverse'. fall through...\n case 'reverse': // scrollLeft is distance between scrollframe's right edge scrollcanvas's right edge\n scrollLeft = el.scrollWidth - scrollLeft - el.clientWidth\n }\n }\n\n return scrollLeft\n}\n\nexport function setScrollFromLeftEdge(el: HTMLElement, scrollLeft: number) {\n let computedStyles = window.getComputedStyle(el) // TODO: pass in isRtl instead?\n\n if (computedStyles.direction === 'rtl') {\n switch (getRtlScrollSystem()) {\n case 'reverse':\n scrollLeft = el.scrollWidth - scrollLeft\n break\n case 'negative':\n scrollLeft = -(el.scrollWidth - scrollLeft)\n break\n }\n }\n\n el.scrollLeft = scrollLeft\n}\n\n// Horizontal Scroll System Detection\n// ----------------------------------------------------------------------------------------------\n\nlet _rtlScrollSystem\n\nfunction getRtlScrollSystem() {\n return _rtlScrollSystem || (_rtlScrollSystem = detectRtlScrollSystem())\n}\n\nfunction detectRtlScrollSystem() {\n let el = document.createElement('div')\n el.style.position = 'absolute'\n el.style.top = '-1000px'\n el.style.width = '1px'\n el.style.height = '1px'\n el.style.overflow = 'scroll'\n el.style.direction = 'rtl'\n el.style.fontSize = '100px'\n el.innerHTML = 'A'\n\n document.body.appendChild(el)\n\n let system\n if (el.scrollLeft > 0) {\n system = 'positive' // scroll is a positive number from the left edge\n } else {\n el.scrollLeft = 1\n if (el.scrollLeft > 0) {\n system = 'reverse' // scroll is a positive number from the right edge\n } else {\n system = 'negative' // scroll is a negative number from the right edge\n }\n }\n\n removeElement(el)\n return system\n}\n","import {\n applyStyle,\n translateRect, Rect, Point,\n findElements,\n computeInnerRect,\n CssDimValue,\n removeElement,\n} from '@fullcalendar/common'\nimport { ScrollListener } from './ScrollListener'\nimport { getScrollCanvasOrigin, getScrollFromLeftEdge } from './scroll-left-norm'\n\ninterface ElementGeom {\n parentBound: Rect // relative to the canvas origin\n naturalBound: Rect | null // of the el itself\n elWidth: number\n elHeight: number\n textAlign: string\n}\n\nconst IS_MS_EDGE = typeof navigator !== 'undefined' && /Edge/.test(navigator.userAgent) // TODO: what about Chromeum-based Edge?\nconst STICKY_SELECTOR = '.fc-sticky'\n\n/*\nuseful beyond the native position:sticky for these reasons:\n- support in IE11\n- nice centering support\n\nREQUIREMENT: fc-sticky elements, if the fc-sticky className is taken away, should NOT have relative or absolute positioning.\nThis is because we attach the coords with JS, and the VDOM might take away the fc-sticky class but doesn't know kill the positioning.\n\nTODO: don't query text-align:center. isn't compatible with flexbox centering. instead, check natural X coord within parent container\n*/\nexport class StickyScrolling {\n listener?: ScrollListener\n usingRelative: boolean | null = null\n\n constructor(\n private scrollEl: HTMLElement,\n private isRtl: boolean,\n ) {\n this.usingRelative =\n !getStickySupported() || // IE11\n // https://stackoverflow.com/questions/56835658/in-microsoft-edge-sticky-positioning-doesnt-work-when-combined-with-dir-rtl\n (IS_MS_EDGE && isRtl)\n\n if (this.usingRelative) {\n this.listener = new ScrollListener(scrollEl)\n this.listener.emitter.on('scrollEnd', this.updateSize)\n }\n }\n\n destroy() {\n if (this.listener) {\n this.listener.destroy()\n }\n }\n\n updateSize = () => {\n let { scrollEl } = this\n let els = findElements(scrollEl, STICKY_SELECTOR)\n let elGeoms = this.queryElGeoms(els)\n let viewportWidth = scrollEl.clientWidth\n let viewportHeight = scrollEl.clientHeight\n\n if (this.usingRelative) {\n let elDestinations = this.computeElDestinations(elGeoms, viewportWidth) // read before prepPositioning\n\n assignRelativePositions(els, elGeoms, elDestinations, viewportWidth, viewportHeight)\n } else {\n assignStickyPositions(els, elGeoms, viewportWidth)\n }\n }\n\n queryElGeoms(els: HTMLElement[]): ElementGeom[] {\n let { scrollEl, isRtl } = this\n let canvasOrigin = getScrollCanvasOrigin(scrollEl)\n let elGeoms: ElementGeom[] = []\n\n for (let el of els) {\n let parentBound = translateRect(\n computeInnerRect(el.parentNode as HTMLElement, true, true), // weird way to call this!!!\n -canvasOrigin.left,\n -canvasOrigin.top,\n )\n\n let elRect = el.getBoundingClientRect()\n let computedStyles = window.getComputedStyle(el)\n let textAlign = window.getComputedStyle(el.parentNode as HTMLElement).textAlign // ask the parent\n let naturalBound = null\n\n if (textAlign === 'start') {\n textAlign = isRtl ? 'right' : 'left'\n } else if (textAlign === 'end') {\n textAlign = isRtl ? 'left' : 'right'\n }\n\n if (computedStyles.position !== 'sticky') {\n naturalBound = translateRect(\n elRect,\n -canvasOrigin.left - (parseFloat(computedStyles.left) || 0), // could be 'auto'\n -canvasOrigin.top - (parseFloat(computedStyles.top) || 0),\n )\n }\n\n elGeoms.push({\n parentBound,\n naturalBound,\n elWidth: elRect.width,\n elHeight: elRect.height,\n textAlign,\n })\n }\n\n return elGeoms\n }\n\n // only for IE\n computeElDestinations(elGeoms: ElementGeom[], viewportWidth: number): Point[] {\n let { scrollEl } = this\n let viewportTop = scrollEl.scrollTop\n let viewportLeft = getScrollFromLeftEdge(scrollEl)\n let viewportRight = viewportLeft + viewportWidth\n\n return elGeoms.map((elGeom) => {\n let { elWidth, elHeight, parentBound, naturalBound } = elGeom\n let destLeft // relative to canvas topleft\n let destTop // \"\n\n switch (elGeom.textAlign) {\n case 'left':\n destLeft = viewportLeft\n break\n case 'right':\n destLeft = viewportRight - elWidth\n break\n case 'center':\n destLeft = (viewportLeft + viewportRight) / 2 - elWidth / 2 /// noooo, use half-width insteadddddddd\n break\n }\n\n destLeft = Math.min(destLeft, parentBound.right - elWidth)\n destLeft = Math.max(destLeft, parentBound.left)\n\n destTop = viewportTop\n destTop = Math.min(destTop, parentBound.bottom - elHeight)\n destTop = Math.max(destTop, naturalBound.top) // better to use natural top for upper bound\n\n return { left: destLeft, top: destTop }\n })\n }\n}\n\nfunction assignRelativePositions(\n els: HTMLElement[],\n elGeoms: ElementGeom[],\n elDestinations: Point[],\n viewportWidth: number,\n viewportHeight: number,\n) {\n els.forEach((el, i) => {\n let { naturalBound, parentBound } = elGeoms[i]\n let parentWidth = parentBound.right - parentBound.left\n let parentHeight = parentBound.bottom - parentBound.bottom\n let left: CssDimValue\n let top: CssDimValue\n\n if (\n parentWidth > viewportWidth ||\n parentHeight > viewportHeight\n ) {\n left = elDestinations[i].left - naturalBound.left\n top = elDestinations[i].top - naturalBound.top\n } else { // if parent container can be completely in view, we don't need stickiness\n left = ''\n top = ''\n }\n\n applyStyle(el, {\n position: 'relative',\n left,\n right: -left, // for rtl\n top,\n })\n })\n}\n\nfunction assignStickyPositions(els: HTMLElement[], elGeoms: ElementGeom[], viewportWidth: number) {\n els.forEach((el, i) => {\n let { textAlign, elWidth, parentBound } = elGeoms[i]\n let parentWidth = parentBound.right - parentBound.left\n let left: CssDimValue\n\n if (\n textAlign === 'center' &&\n parentWidth > viewportWidth\n ) {\n left = (viewportWidth - elWidth) / 2\n } else { // if parent container can be completely in view, we don't need stickiness\n left = ''\n }\n\n applyStyle(el, { // will already have fc-sticky class which makes it sticky\n left,\n right: left, // for when centered\n top: 0,\n })\n })\n}\n\nlet _isStickySupported\n\nfunction getStickySupported() {\n if (_isStickySupported == null) {\n _isStickySupported = computeStickySupported()\n }\n return _isStickySupported\n}\n\nfunction computeStickySupported() {\n let el = document.createElement('div')\n el.style.position = 'sticky'\n document.body.appendChild(el)\n let val = window.getComputedStyle(el).position\n removeElement(el)\n return val === 'sticky'\n}\n","import {\n createElement, ComponentChildren, createRef, Ref, BaseComponent, setRef,\n ScrollerLike,\n Scroller, OverflowValue,\n getIsRtlScrollbarOnLeft,\n isPropsEqual,\n} from '@fullcalendar/common'\n\nexport type ClippedOverflowValue = OverflowValue | 'scroll-hidden'\n\nexport interface ClippedScrollerProps {\n overflowX: ClippedOverflowValue\n overflowY: ClippedOverflowValue\n liquid: boolean\n maxHeight?: number // incompatible with liquid\n children?: ComponentChildren\n scrollerRef?: Ref<Scroller>\n scrollerElRef?: Ref<HTMLElement>\n}\n\ninterface ClippedScrollerState {\n yScrollbarWidth?: number\n xScrollbarWidth?: number\n}\n\nexport class ClippedScroller extends BaseComponent<ClippedScrollerProps, ClippedScrollerState> implements ScrollerLike {\n private elRef = createRef<HTMLDivElement>()\n private scroller: Scroller\n\n state = {\n xScrollbarWidth: 0,\n yScrollbarWidth: 0,\n }\n\n render() {\n let { props, state, context } = this\n let isScrollbarOnLeft = context.isRtl && getIsRtlScrollbarOnLeft()\n let overcomeLeft = 0\n let overcomeRight = 0\n let overcomeBottom = 0\n\n if (props.overflowX === 'scroll-hidden') {\n overcomeBottom = state.xScrollbarWidth\n }\n\n if (props.overflowY === 'scroll-hidden') {\n if (state.yScrollbarWidth != null) {\n if (isScrollbarOnLeft) {\n overcomeLeft = state.yScrollbarWidth\n } else {\n overcomeRight = state.yScrollbarWidth\n }\n }\n }\n\n return (\n <div\n ref={this.elRef}\n className={'fc-scroller-harness' + (props.liquid ? ' fc-scroller-harness-liquid' : '')}\n >\n <Scroller\n ref={this.handleScroller}\n elRef={this.props.scrollerElRef}\n overflowX={props.overflowX === 'scroll-hidden' ? 'scroll' : props.overflowX}\n overflowY={props.overflowY === 'scroll-hidden' ? 'scroll' : props.overflowY}\n overcomeLeft={overcomeLeft}\n overcomeRight={overcomeRight}\n overcomeBottom={overcomeBottom}\n maxHeight={\n typeof props.maxHeight === 'number'\n ? (props.maxHeight + (props.overflowX === 'scroll-hidden' ? state.xScrollbarWidth : 0))\n : ''\n }\n liquid={props.liquid}\n liquidIsAbsolute\n >\n {props.children}\n </Scroller>\n </div>\n )\n }\n\n handleScroller = (scroller: Scroller) => {\n this.scroller = scroller\n setRef(this.props.scrollerRef, scroller)\n }\n\n componentDidMount() {\n this.handleSizing()\n this.context.addResizeHandler(this.handleSizing)\n }\n\n componentDidUpdate(prevProps: ClippedScrollerProps) {\n if (!isPropsEqual(prevProps, this.props)) { // an external change?\n this.handleSizing()\n }\n }\n\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing)\n }\n\n handleSizing = () => {\n let { props } = this\n\n if (props.overflowY === 'scroll-hidden') {\n this.setState({ yScrollbarWidth: this.scroller.getYScrollbarWidth() })\n }\n\n if (props.overflowX === 'scroll-hidden') {\n this.setState({ xScrollbarWidth: this.scroller.getXScrollbarWidth() })\n }\n }\n\n needsXScrolling() {\n return this.scroller.needsXScrolling()\n }\n\n needsYScrolling() {\n return this.scroller.needsYScrolling()\n }\n}\n","import { ScrollListener } from './ScrollListener'\nimport { setScrollFromLeftEdge } from './scroll-left-norm'\n\nexport class ScrollSyncer {\n private masterEl: HTMLElement\n private scrollListeners: ScrollListener[]\n private isPaused: boolean = false\n\n constructor(\n private isVertical: boolean,\n private scrollEls: HTMLElement[],\n ) {\n this.scrollListeners = scrollEls.map((el) => this.bindScroller(el))\n }\n\n destroy() {\n for (let scrollListener of this.scrollListeners) {\n scrollListener.destroy()\n }\n }\n\n bindScroller(el: HTMLElement) {\n let { scrollEls, isVertical } = this\n let scrollListener = new ScrollListener(el)\n\n const onScroll = (isWheel, isTouch) => {\n if (!this.isPaused) {\n if (!this.masterEl || (this.masterEl !== el && (isWheel || isTouch))) {\n this.assignMaster(el)\n }\n\n if (this.masterEl === el) { // dealing with current\n for (let otherEl of scrollEls) {\n if (otherEl !== el) {\n if (isVertical) {\n otherEl.scrollTop = el.scrollTop\n } else {\n otherEl.scrollLeft = el.scrollLeft\n }\n }\n }\n }\n }\n }\n\n const onScrollEnd = () => {\n if (this.masterEl === el) {\n this.masterEl = null\n }\n }\n\n scrollListener.emitter.on('scroll', onScroll)\n scrollListener.emitter.on('scrollEnd', onScrollEnd)\n\n return scrollListener\n }\n\n assignMaster(el: HTMLElement) {\n this.masterEl = el\n\n for (let scrollListener of this.scrollListeners) {\n if (scrollListener.el !== el) {\n scrollListener.endScroll() // to prevent residual scrolls from reclaiming master\n }\n }\n }\n\n /*\n will normalize the scrollLeft value\n */\n forceScrollLeft(scrollLeft: number) {\n this.isPaused = true\n\n for (let listener of this.scrollListeners) {\n setScrollFromLeftEdge(listener.el, scrollLeft)\n }\n\n this.isPaused = false\n }\n\n forceScrollTop(top: number) {\n this.isPaused = true\n\n for (let listener of this.scrollListeners) {\n listener.el.scrollTop = top\n }\n\n this.isPaused = false\n }\n}\n","import {\n createElement, VNode, Fragment,\n BaseComponent,\n isArraysEqual,\n findElements,\n mapHash,\n RefMap,\n ColProps, CssDimValue, hasShrinkWidth, renderMicroColGroup,\n ScrollGridProps, ScrollGridSectionConfig, ColGroupConfig,\n getScrollGridClassNames, getSectionClassNames, getSectionHasLiquidHeight, getAllowYScrolling, renderChunkContent, computeShrinkWidth,\n getIsRtlScrollbarOnLeft,\n setRef,\n sanitizeShrinkWidth,\n isPropsEqual,\n compareObjs,\n isColPropsEqual,\n getScrollbarWidths,\n memoizeArraylike,\n collectFromHash,\n memoizeHashlike,\n ScrollGridChunkConfig,\n getCanVGrowWithinCell,\n config,\n} from '@fullcalendar/common'\nimport { StickyScrolling } from './StickyScrolling'\nimport { ClippedScroller, ClippedOverflowValue } from './ClippedScroller'\nimport { ScrollSyncer } from './ScrollSyncer'\n\ninterface ScrollGridState {\n shrinkWidths: number[] // for only one col within each vertical stack of chunks\n forceYScrollbars: boolean // null means not computed yet\n forceXScrollbars: boolean // \"\n scrollerClientWidths: { [index: string]: number } // why not use array?\n scrollerClientHeights: { [index: string]: number }\n sectionRowMaxHeights: number[][][]\n}\n\ninterface ColGroupStat {\n hasShrinkCol: boolean\n totalColWidth: number\n totalColMinWidth: number\n allowXScrolling: boolean\n width?: CssDimValue\n cols: ColProps[]\n}\n\n/*\nTODO: make <ScrollGridSection> subcomponent\nNOTE: doesn't support collapsibleWidth (which is sortof a hack anyway)\n*/\nexport class ScrollGrid extends BaseComponent<ScrollGridProps, ScrollGridState> {\n private compileColGroupStats = memoizeArraylike(compileColGroupStat, isColGroupStatsEqual)\n private renderMicroColGroups = memoizeArraylike(renderMicroColGroup) // yucky to memoize VNodes, but much more efficient for consumers\n private clippedScrollerRefs = new RefMap<ClippedScroller>()\n\n // doesn't hold non-scrolling els used just for padding\n private scrollerElRefs = new RefMap<HTMLElement>(this._handleScrollerEl.bind(this))\n\n private chunkElRefs = new RefMap<HTMLTableCellElement>(this._handleChunkEl.bind(this))\n private getStickyScrolling = memoizeArraylike(initStickyScrolling, null, destroyStickyScrolling)\n private getScrollSyncersBySection = memoizeHashlike(initScrollSyncer.bind(this, true), null, destroyScrollSyncer)\n private getScrollSyncersByColumn = memoizeHashlike(initScrollSyncer.bind(this, false), null, destroyScrollSyncer)\n private stickyScrollings: StickyScrolling[] = []\n private scrollSyncersBySection: { [sectionI: string]: ScrollSyncer } = {}\n private scrollSyncersByColumn: { [columnI: string]: ScrollSyncer } = {}\n\n // for row-height-syncing\n private rowUnstableMap = new Map<HTMLTableRowElement, boolean>() // no need to groom. always self-cancels\n private rowInnerMaxHeightMap = new Map<HTMLTableRowElement, number>()\n private anyRowHeightsChanged = false\n\n private lastSizingDate: Date\n private recentSizingCnt = 0\n\n state: ScrollGridState = {\n shrinkWidths: [],\n forceYScrollbars: false,\n forceXScrollbars: false,\n scrollerClientWidths: {},\n scrollerClientHeights: {},\n sectionRowMaxHeights: [],\n }\n\n render(): VNode {\n let { props, state, context } = this\n let { shrinkWidths } = state\n\n let colGroupStats = this.compileColGroupStats(props.colGroups.map((colGroup) => [colGroup]))\n let microColGroupNodes = this.renderMicroColGroups(colGroupStats.map((stat, i) => [stat.cols, shrinkWidths[i]]))\n let classNames = getScrollGridClassNames(props.liquid, context)\n\n // yuck\n let indices: [ number, number ][] = []\n let [sectionCnt, chunksPerSection] = this.getDims()\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n indices.push([sectionI, chunkI])\n }\n }\n\n // TODO: make DRY\n let sectionConfigs = props.sections\n let configCnt = sectionConfigs.length\n let configI = 0\n let currentConfig: ScrollGridSectionConfig\n let headSectionNodes: VNode[] = []\n let bodySectionNodes: VNode[] = []\n let footSectionNodes: VNode[] = []\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n headSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights))\n configI += 1\n }\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights))\n configI += 1\n }\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights))\n configI += 1\n }\n\n let isBuggy = !getCanVGrowWithinCell() // see NOTE in SimpleScrollGrid\n\n return createElement(\n 'table',\n {\n ref: props.elRef,\n className: classNames.join(' '),\n },\n renderMacroColGroup(colGroupStats, shrinkWidths),\n Boolean(!isBuggy && headSectionNodes.length) && createElement('thead', {}, ...headSectionNodes),\n Boolean(!isBuggy && bodySectionNodes.length) && createElement('tbody', {}, ...bodySectionNodes),\n Boolean(!isBuggy && footSectionNodes.length) && createElement('tfoot', {}, ...footSectionNodes),\n isBuggy && createElement('tbody', {}, ...headSectionNodes, ...bodySectionNodes, ...footSectionNodes),\n )\n }\n\n renderSection(\n sectionConfig: ScrollGridSectionConfig,\n sectionIndex: number,\n colGroupStats: ColGroupStat[],\n microColGroupNodes: VNode[],\n sectionRowMaxHeights: number[][][],\n ): VNode {\n if ('outerContent' in sectionConfig) {\n return (\n <Fragment key={sectionConfig.key}>\n {sectionConfig.outerContent}\n </Fragment>\n )\n }\n\n return (\n <tr key={sectionConfig.key} className={getSectionClassNames(sectionConfig, this.props.liquid).join(' ')}>\n {sectionConfig.chunks.map((chunkConfig, i) => this.renderChunk(\n sectionConfig,\n sectionIndex,\n colGroupStats[i],\n microColGroupNodes[i],\n chunkConfig,\n i,\n (sectionRowMaxHeights[sectionIndex] || [])[i] || [],\n ))}\n </tr>\n )\n }\n\n renderChunk(\n sectionConfig: ScrollGridSectionConfig,\n sectionIndex: number,\n colGroupStat: ColGroupStat | undefined,\n microColGroupNode: VNode | undefined,\n chunkConfig: ScrollGridChunkConfig,\n chunkIndex: number,\n rowHeights: number[],\n ): VNode {\n if ('outerContent' in chunkConfig) {\n return (\n <Fragment key={chunkConfig.key}>\n {chunkConfig.outerContent}\n </Fragment>\n )\n }\n\n let { state } = this\n let { scrollerClientWidths, scrollerClientHeights } = state\n\n let [sectionCnt, chunksPerSection] = this.getDims()\n let index = sectionIndex * chunksPerSection + chunkIndex\n let sideScrollIndex = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0\n let isVScrollSide = chunkIndex === sideScrollIndex\n let isLastSection = sectionIndex === sectionCnt - 1\n\n let forceXScrollbars = isLastSection && state.forceXScrollbars // NOOOO can result in `null`\n let forceYScrollbars = isVScrollSide && state.forceYScrollbars // NOOOO can result in `null`\n\n let allowXScrolling = colGroupStat && colGroupStat.allowXScrolling // rename?\n let allowYScrolling = getAllowYScrolling(this.props, sectionConfig) // rename? do in section func?\n\n let chunkVGrow = getSectionHasLiquidHeight(this.props, sectionConfig) // do in section func?\n let expandRows = sectionConfig.expandRows && chunkVGrow\n let tableMinWidth = (colGroupStat && colGroupStat.totalColMinWidth) || ''\n\n let content = renderChunkContent(sectionConfig, chunkConfig, {\n tableColGroupNode: microColGroupNode,\n tableMinWidth,\n clientWidth: scrollerClientWidths[index] !== undefined ? scrollerClientWidths[index] : null,\n clientHeight: scrollerClientHeights[index] !== undefined ? scrollerClientHeights[index] : null,\n expandRows,\n syncRowHeights: Boolean(sectionConfig.syncRowHeights),\n rowSyncHeights: rowHeights,\n reportRowHeightChange: this.handleRowHeightChange,\n })\n\n let overflowX: ClippedOverflowValue =\n forceXScrollbars ? (isLastSection ? 'scroll' : 'scroll-hidden') :\n !allowXScrolling ? 'hidden' :\n (isLastSection ? 'auto' : 'scroll-hidden')\n\n let overflowY: ClippedOverflowValue =\n forceYScrollbars ? (isVScrollSide ? 'scroll' : 'scroll-hidden') :\n !allowYScrolling ? 'hidden' :\n (isVScrollSide ? 'auto' : 'scroll-hidden')\n\n // it *could* be possible to reduce DOM wrappers by only doing a ClippedScroller when allowXScrolling or allowYScrolling,\n // but if these values were to change, the inner components would be unmounted/remounted because of the parent change.\n content = (\n <ClippedScroller\n ref={this.clippedScrollerRefs.createRef(index)}\n scrollerElRef={this.scrollerElRefs.createRef(index)}\n overflowX={overflowX}\n overflowY={overflowY}\n liquid={chunkVGrow}\n maxHeight={sectionConfig.maxHeight}\n >\n {content}\n </ClippedScroller>\n )\n\n return (\n <td key={chunkConfig.key} ref={this.chunkElRefs.createRef(index)}>\n {content}\n </td>\n )\n }\n\n componentDidMount() {\n this.updateScrollSyncers()\n this.handleSizing(false)\n\n this.context.addResizeHandler(this.handleSizing)\n }\n\n componentDidUpdate(prevProps: ScrollGridProps, prevState: ScrollGridState) {\n this.updateScrollSyncers()\n\n // TODO: need better solution when state contains non-sizing things\n this.handleSizing(false, prevState.sectionRowMaxHeights !== this.state.sectionRowMaxHeights)\n }\n\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing)\n\n this.destroyStickyScrolling()\n this.destroyScrollSyncers()\n }\n\n handleSizing = (isForcedResize: boolean, sectionRowMaxHeightsChanged?: boolean) => {\n if (!this.allowSizing()) {\n return\n }\n\n if (!sectionRowMaxHeightsChanged) { // something else changed, probably external\n this.anyRowHeightsChanged = true\n }\n\n let otherState: Partial<ScrollGridState> = {}\n\n // if reacting to self-change of sectionRowMaxHeightsChanged, or not stable, don't do anything\n if (isForcedResize || (!sectionRowMaxHeightsChanged && !this.rowUnstableMap.size)) {\n otherState.sectionRowMaxHeights = this.computeSectionRowMaxHeights()\n }\n\n this.setState({\n shrinkWidths: this.computeShrinkWidths(),\n ...this.computeScrollerDims(),\n ...(otherState as any), // wtf\n }, () => {\n if (!this.rowUnstableMap.size) {\n this.updateStickyScrolling() // needs to happen AFTER final positioning committed to DOM\n }\n })\n }\n\n allowSizing() {\n let now = new Date()\n\n if (\n !this.lastSizingDate ||\n now.valueOf() > this.lastSizingDate.valueOf() + config.SCROLLGRID_RESIZE_INTERVAL\n ) {\n this.lastSizingDate = now\n this.recentSizingCnt = 0\n return true\n }\n\n return (this.recentSizingCnt += 1) <= 10\n }\n\n handleRowHeightChange = (rowEl: HTMLTableRowElement, isStable: boolean) => {\n let { rowUnstableMap, rowInnerMaxHeightMap } = this\n\n if (!isStable) {\n rowUnstableMap.set(rowEl, true)\n } else {\n rowUnstableMap.delete(rowEl)\n\n let innerMaxHeight = getRowInnerMaxHeight(rowEl)\n if (!rowInnerMaxHeightMap.has(rowEl) || rowInnerMaxHeightMap.get(rowEl) !== innerMaxHeight) {\n rowInnerMaxHeightMap.set(rowEl, innerMaxHeight)\n this.anyRowHeightsChanged = true\n }\n\n if (!rowUnstableMap.size && this.anyRowHeightsChanged) {\n this.anyRowHeightsChanged = false\n this.setState({\n sectionRowMaxHeights: this.computeSectionRowMaxHeights(),\n })\n }\n }\n }\n\n computeShrinkWidths() {\n let colGroupStats = this.compileColGroupStats(this.props.colGroups.map((colGroup) => [colGroup]))\n let [sectionCnt, chunksPerSection] = this.getDims()\n let cnt = sectionCnt * chunksPerSection\n let shrinkWidths: number[] = []\n\n colGroupStats.forEach((colGroupStat, i) => {\n if (colGroupStat.hasShrinkCol) {\n let chunkEls = this.chunkElRefs.collect(i, cnt, chunksPerSection) // in one col\n shrinkWidths[i] = computeShrinkWidth(chunkEls)\n }\n })\n\n return shrinkWidths\n }\n\n // has the side effect of grooming rowInnerMaxHeightMap\n // TODO: somehow short-circuit if there are no new height changes\n private computeSectionRowMaxHeights() {\n let newHeightMap = new Map<HTMLTableRowElement, number>()\n\n let [sectionCnt, chunksPerSection] = this.getDims()\n let sectionRowMaxHeights: number[][][] = []\n\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n let sectionConfig = this.props.sections[sectionI]\n let assignableHeights: number[][] = [] // chunk, row\n\n if (sectionConfig && sectionConfig.syncRowHeights) {\n let rowHeightsByChunk: number[][] = []\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let index = sectionI * chunksPerSection + chunkI\n let rowHeights: number[] = []\n\n let chunkEl = this.chunkElRefs.currentMap[index]\n if (chunkEl) {\n rowHeights = findElements(chunkEl, '.fc-scrollgrid-sync-table tr').map((rowEl: HTMLTableRowElement) => {\n let max = getRowInnerMaxHeight(rowEl)\n newHeightMap.set(rowEl, max)\n return max\n })\n } else {\n rowHeights = []\n }\n\n rowHeightsByChunk.push(rowHeights)\n }\n\n let rowCnt = rowHeightsByChunk[0].length\n let isEqualRowCnt = true\n\n for (let chunkI = 1; chunkI < chunksPerSection; chunkI += 1) {\n let isOuterContent = sectionConfig.chunks[chunkI] && sectionConfig.chunks[chunkI].outerContent !== undefined // can be null\n\n if (!isOuterContent && rowHeightsByChunk[chunkI].length !== rowCnt) { // skip outer content\n isEqualRowCnt = false\n break\n }\n }\n\n if (!isEqualRowCnt) {\n let chunkHeightSums: number[] = []\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n chunkHeightSums.push(\n sumNumbers(rowHeightsByChunk[chunkI]) + rowHeightsByChunk[chunkI].length, // add in border\n )\n }\n\n let maxTotalSum = Math.max(...chunkHeightSums)\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let rowInChunkCnt = rowHeightsByChunk[chunkI].length\n let rowInChunkTotalHeight = maxTotalSum - rowInChunkCnt // subtract border\n\n // height of non-first row. we do this to avoid rounding, because it's unreliable within a table\n let rowInChunkHeightOthers = Math.floor(rowInChunkTotalHeight / rowInChunkCnt)\n\n // whatever is leftover goes to the first row\n let rowInChunkHeightFirst = rowInChunkTotalHeight - rowInChunkHeightOthers * (rowInChunkCnt - 1)\n\n let rowInChunkHeights: number[] = []\n let row = 0\n\n if (row < rowInChunkCnt) {\n rowInChunkHeights.push(rowInChunkHeightFirst)\n row += 1\n }\n\n while (row < rowInChunkCnt) {\n rowInChunkHeights.push(rowInChunkHeightOthers)\n row += 1\n }\n\n assignableHeights.push(rowInChunkHeights)\n }\n } else {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n assignableHeights.push([])\n }\n\n for (let row = 0; row < rowCnt; row += 1) {\n let rowHeightsAcrossChunks: number[] = []\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let h = rowHeightsByChunk[chunkI][row]\n if (h != null) { // protect against outerContent\n rowHeightsAcrossChunks.push(h)\n }\n }\n\n let maxHeight = Math.max(...rowHeightsAcrossChunks)\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n assignableHeights[chunkI].push(maxHeight)\n }\n }\n }\n }\n\n sectionRowMaxHeights.push(assignableHeights)\n }\n\n this.rowInnerMaxHeightMap = newHeightMap\n\n return sectionRowMaxHeights\n }\n\n computeScrollerDims() {\n let scrollbarWidth = getScrollbarWidths()\n let [sectionCnt, chunksPerSection] = this.getDims()\n let sideScrollI = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0\n let lastSectionI = sectionCnt - 1\n let currentScrollers = this.clippedScrollerRefs.currentMap\n let scrollerEls = this.scrollerElRefs.currentMap\n let forceYScrollbars = false\n let forceXScrollbars = false\n let scrollerClientWidths: { [index: string]: number } = {}\n let scrollerClientHeights: { [index: string]: number } = {}\n\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) { // along edge\n let index = sectionI * chunksPerSection + sideScrollI\n let scroller = currentScrollers[index]\n\n if (scroller && scroller.needsYScrolling()) {\n forceYScrollbars = true\n break\n }\n }\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) { // along last row\n let index = lastSectionI * chunksPerSection + chunkI\n let scroller = currentScrollers[index]\n\n if (scroller && scroller.needsXScrolling()) {\n forceXScrollbars = true\n break\n }\n }\n\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let index = sectionI * chunksPerSection + chunkI\n let scrollerEl = scrollerEls[index]\n\n if (scrollerEl) {\n // TODO: weird way to get this. need harness b/c doesn't include table borders\n let harnessEl = scrollerEl.parentNode as HTMLElement\n\n scrollerClientWidths[index] = Math.floor(\n harnessEl.getBoundingClientRect().width - (\n (chunkI === sideScrollI && forceYScrollbars)\n ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n : 0\n ),\n )\n\n scrollerClientHeights[index] = Math.floor(\n harnessEl.getBoundingClientRect().height - (\n (sectionI === lastSectionI && forceXScrollbars)\n ? scrollbarWidth.x // use global because scroller might not have scrollbars yet but will need them in future\n : 0\n ),\n )\n }\n }\n }\n\n return { forceYScrollbars, forceXScrollbars, scrollerClientWidths, scrollerClientHeights }\n }\n\n updateStickyScrolling() {\n let { isRtl } = this.context\n let argsByKey = this.scrollerElRefs.getAll().map(\n (scrollEl) => [scrollEl, isRtl] as [ HTMLElement, boolean ],\n )\n\n let stickyScrollings = this.getStickyScrolling(argsByKey)\n\n stickyScrollings.forEach((stickyScrolling) => stickyScrolling.updateSize())\n\n this.stickyScrollings = stickyScrollings\n }\n\n destroyStickyScrolling() {\n this.stickyScrollings.forEach(destroyStickyScrolling)\n }\n\n updateScrollSyncers() {\n let [sectionCnt, chunksPerSection] = this.getDims()\n let cnt = sectionCnt * chunksPerSection\n let scrollElsBySection: { [sectionI: string]: HTMLElement[] } = {}\n let scrollElsByColumn: { [colI: string]: HTMLElement[] } = {}\n let scrollElMap = this.scrollerElRefs.currentMap\n\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n let startIndex = sectionI * chunksPerSection\n let endIndex = startIndex + chunksPerSection\n\n scrollElsBySection[sectionI] = collectFromHash(scrollElMap, startIndex, endIndex, 1) // use the filtered\n }\n\n for (let col = 0; col < chunksPerSection; col += 1) {\n scrollElsByColumn[col] = this.scrollerElRefs.collect(col, cnt, chunksPerSection) // DON'T use the filtered\n }\n\n this.scrollSyncersBySection = this.getScrollSyncersBySection(scrollElsBySection)\n this.scrollSyncersByColumn = this.getScrollSyncersByColumn(scrollElsByColumn)\n }\n\n destroyScrollSyncers() {\n mapHash(this.scrollSyncersBySection, destroyScrollSyncer)\n mapHash(this.scrollSyncersByColumn, destroyScrollSyncer)\n }\n\n getChunkConfigByIndex(index: number) { // somewhat expensive for something so simple\n let chunksPerSection = this.getDims()[1]\n let sectionI = Math.floor(index / chunksPerSection)\n let chunkI = index % chunksPerSection\n let sectionConfig = this.props.sections[sectionI]\n\n return sectionConfig && sectionConfig.chunks[chunkI]\n }\n\n forceScrollLeft(col: number, scrollLeft: number) {\n let scrollSyncer = this.scrollSyncersByColumn[col]\n\n if (scrollSyncer) {\n scrollSyncer.forceScrollLeft(scrollLeft)\n }\n }\n\n forceScrollTop(sectionI: number, scrollTop: number) {\n let scrollSyncer = this.scrollSyncersBySection[sectionI]\n\n if (scrollSyncer) {\n scrollSyncer.forceScrollTop(scrollTop)\n }\n }\n\n _handleChunkEl(chunkEl: HTMLTableCellElement | null, key: string) {\n let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10))\n\n if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n setRef(chunkConfig.elRef, chunkEl)\n }\n }\n\n _handleScrollerEl(scrollerEl: HTMLElement | null, key: string) {\n let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10))\n\n if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n setRef(chunkConfig.scrollerElRef, scrollerEl)\n }\n }\n\n getDims() {\n let sectionCnt = this.props.sections.length\n let chunksPerSection = sectionCnt ? this.props.sections[0].chunks.length : 0\n\n return [sectionCnt, chunksPerSection]\n }\n}\n\nScrollGrid.addStateEquality({\n shrinkWidths: isArraysEqual,\n scrollerClientWidths: isPropsEqual,\n scrollerClientHeights: isPropsEqual,\n})\n\nfunction sumNumbers(numbers: number[]) { // TODO: general util\n let sum = 0\n\n for (let n of numbers) {\n sum += n\n }\n\n return sum\n}\n\nfunction getRowInnerMaxHeight(rowEl: HTMLElement) {\n let innerHeights = findElements(rowEl, '.fc-scrollgrid-sync-inner').map(getElHeight)\n\n if (innerHeights.length) {\n return Math.max(...innerHeights)\n }\n\n return 0\n}\n\nfunction getElHeight(el: HTMLElement) {\n return el.offsetHeight // better to deal with integers, for rounding, for PureComponent\n}\n\nfunction renderMacroColGroup(colGroupStats: ColGroupStat[], shrinkWidths: number[]) {\n let children = colGroupStats.map((colGroupStat, i) => {\n let width = colGroupStat.width\n\n if (width === 'shrink') {\n width = colGroupStat.totalColWidth + sanitizeShrinkWidth(shrinkWidths[i]) + 1 // +1 for border :(\n }\n\n return ( // eslint-disable-next-line react/jsx-key\n <col style={{ width }} />\n )\n })\n\n return createElement('colgroup', {}, ...children)\n}\n\nfunction compileColGroupStat(colGroupConfig: ColGroupConfig): ColGroupStat {\n let totalColWidth = sumColProp(colGroupConfig.cols, 'width') // excludes \"shrink\"\n let totalColMinWidth = sumColProp(colGroupConfig.cols, 'minWidth')\n let hasShrinkCol = hasShrinkWidth(colGroupConfig.cols)\n let allowXScrolling = colGroupConfig.width !== 'shrink' && Boolean(totalColWidth || totalColMinWidth || hasShrinkCol)\n\n return {\n hasShrinkCol,\n totalColWidth,\n totalColMinWidth,\n allowXScrolling,\n cols: colGroupConfig.cols,\n width: colGroupConfig.width,\n }\n}\n\nfunction sumColProp(cols: ColProps[], propName: string) {\n let total = 0\n\n for (let col of cols) {\n let val = col[propName]\n\n if (typeof val === 'number') {\n total += val * (col.span || 1)\n }\n }\n\n return total\n}\n\nconst COL_GROUP_STAT_EQUALITY = {\n cols: isColPropsEqual,\n}\n\nfunction isColGroupStatsEqual(stat0: ColGroupStat, stat1: ColGroupStat): boolean {\n return compareObjs(stat0, stat1, COL_GROUP_STAT_EQUALITY)\n}\n\n// for memoizers...\n\nfunction initScrollSyncer(isVertical: boolean, ...scrollEls: HTMLElement[]) {\n return new ScrollSyncer(isVertical, scrollEls)\n}\n\nfunction destroyScrollSyncer(scrollSyncer: ScrollSyncer) {\n scrollSyncer.destroy()\n}\n\nfunction initStickyScrolling(scrollEl: HTMLElement, isRtl: boolean) {\n return new StickyScrolling(scrollEl, isRtl)\n}\n\nfunction destroyStickyScrolling(stickyScrolling: StickyScrolling) {\n stickyScrolling.destroy()\n}\n","import { createPlugin, config } from '@fullcalendar/common'\n\nimport premiumCommonPlugin from '@fullcalendar/premium-common' // eslint-disable-line import/no-duplicates\n// ensure ambient declarations\nimport '@fullcalendar/premium-common' // eslint-disable-line import/no-duplicates\n\nimport { ScrollGrid } from './ScrollGrid'\n\nexport { ScrollGrid }\nexport { setScrollFromLeftEdge } from './scroll-left-norm'\n\nexport default createPlugin({\n deps: [\n premiumCommonPlugin,\n ],\n scrollGridImpl: ScrollGrid,\n})\n\nconfig.SCROLLGRID_RESIZE_INTERVAL = 500\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sources":["src/ScrollListener.ts","src/scroll-left-norm.tsx","src/StickyScrolling.ts","src/ClippedScroller.tsx","src/ScrollSyncer.ts","src/ScrollGrid.tsx","src/main.ts"],"sourcesContent":["import { Emitter, DelayedRunner } from '@fullcalendar/common'\n\nconst WHEEL_EVENT_NAMES = 'wheel mousewheel DomMouseScroll MozMousePixelScroll'.split(' ')\n\n/*\nALSO, with the ability to disable touch\n*/\nexport class ScrollListener {\n emitter = new Emitter()\n private isScrolling = false\n private isTouching = false // user currently has finger down?\n private isRecentlyWheeled = false\n private isRecentlyScrolled = false\n private wheelWaiter = new DelayedRunner(this._handleWheelWaited.bind(this))\n private scrollWaiter = new DelayedRunner(this._handleScrollWaited.bind(this))\n\n constructor(public el: HTMLElement) {\n el.addEventListener('scroll', this.handleScroll)\n el.addEventListener('touchstart', this.handleTouchStart, { passive: true })\n el.addEventListener('touchend', this.handleTouchEnd)\n\n for (let eventName of WHEEL_EVENT_NAMES) {\n el.addEventListener(eventName, this.handleWheel)\n }\n }\n\n destroy() {\n let { el } = this\n el.removeEventListener('scroll', this.handleScroll)\n el.removeEventListener('touchstart', this.handleTouchStart, { passive: true } as AddEventListenerOptions)\n el.removeEventListener('touchend', this.handleTouchEnd)\n\n for (let eventName of WHEEL_EVENT_NAMES) {\n el.removeEventListener(eventName, this.handleWheel)\n }\n }\n\n // Start / Stop\n // ----------------------------------------------------------------------------------------------\n\n private startScroll() {\n if (!this.isScrolling) {\n this.isScrolling = true\n this.emitter.trigger('scrollStart', this.isRecentlyWheeled, this.isTouching)\n }\n }\n\n endScroll() {\n if (this.isScrolling) {\n this.emitter.trigger('scrollEnd')\n this.isScrolling = false\n this.isRecentlyScrolled = true\n this.isRecentlyWheeled = false\n this.scrollWaiter.clear()\n this.wheelWaiter.clear()\n }\n }\n\n // Handlers\n // ----------------------------------------------------------------------------------------------\n\n handleScroll = () => {\n this.startScroll()\n this.emitter.trigger('scroll', this.isRecentlyWheeled, this.isTouching)\n this.isRecentlyScrolled = true\n this.scrollWaiter.request(500)\n }\n\n _handleScrollWaited() {\n this.isRecentlyScrolled = false\n\n // only end the scroll if not currently touching.\n // if touching, the scrolling will end later, on touchend.\n if (!this.isTouching) {\n this.endScroll() // won't fire if already ended\n }\n }\n\n // will fire *before* the scroll event is fired (might not cause a scroll)\n handleWheel = () => {\n this.isRecentlyWheeled = true\n this.wheelWaiter.request(500)\n }\n\n _handleWheelWaited() {\n this.isRecentlyWheeled = false\n }\n\n // will fire *before* the scroll event is fired (might not cause a scroll)\n handleTouchStart = () => {\n this.isTouching = true\n }\n\n handleTouchEnd = () => {\n this.isTouching = false\n\n // if the user ended their touch, and the scroll area wasn't moving,\n // we consider this to be the end of the scroll.\n if (!this.isRecentlyScrolled) {\n this.endScroll() // won't fire if already ended\n }\n }\n}\n","import { removeElement, computeEdges } from '@fullcalendar/common'\n\n// TODO: assume the el has no borders?\nexport function getScrollCanvasOrigin(scrollEl: HTMLElement) { // best place for this?\n let rect = scrollEl.getBoundingClientRect()\n let edges = computeEdges(scrollEl) // TODO: pass in isRtl?\n\n return {\n left: rect.left + edges.borderLeft + edges.scrollbarLeft - getScrollFromLeftEdge(scrollEl),\n top: rect.top + edges.borderTop - scrollEl.scrollTop,\n }\n}\n\nexport function getScrollFromLeftEdge(el: HTMLElement) {\n let scrollLeft = el.scrollLeft\n let computedStyles = window.getComputedStyle(el) // TODO: pass in isRtl instead?\n\n if (computedStyles.direction === 'rtl') {\n switch (getRtlScrollSystem()) {\n case 'negative':\n scrollLeft *= -1 // convert to 'reverse'. fall through...\n case 'reverse': // scrollLeft is distance between scrollframe's right edge scrollcanvas's right edge\n scrollLeft = el.scrollWidth - scrollLeft - el.clientWidth\n }\n }\n\n return scrollLeft\n}\n\nexport function setScrollFromLeftEdge(el: HTMLElement, scrollLeft: number) {\n let computedStyles = window.getComputedStyle(el) // TODO: pass in isRtl instead?\n\n if (computedStyles.direction === 'rtl') {\n switch (getRtlScrollSystem()) {\n case 'reverse':\n scrollLeft = el.scrollWidth - scrollLeft\n break\n case 'negative':\n scrollLeft = -(el.scrollWidth - scrollLeft)\n break\n }\n }\n\n el.scrollLeft = scrollLeft\n}\n\n// Horizontal Scroll System Detection\n// ----------------------------------------------------------------------------------------------\n\nlet _rtlScrollSystem\n\nfunction getRtlScrollSystem() {\n return _rtlScrollSystem || (_rtlScrollSystem = detectRtlScrollSystem())\n}\n\nfunction detectRtlScrollSystem() {\n let el = document.createElement('div')\n el.style.position = 'absolute'\n el.style.top = '-1000px'\n el.style.width = '1px'\n el.style.height = '1px'\n el.style.overflow = 'scroll'\n el.style.direction = 'rtl'\n el.style.fontSize = '100px'\n el.innerHTML = 'A'\n\n document.body.appendChild(el)\n\n let system\n if (el.scrollLeft > 0) {\n system = 'positive' // scroll is a positive number from the left edge\n } else {\n el.scrollLeft = 1\n if (el.scrollLeft > 0) {\n system = 'reverse' // scroll is a positive number from the right edge\n } else {\n system = 'negative' // scroll is a negative number from the right edge\n }\n }\n\n removeElement(el)\n return system\n}\n","import {\n applyStyle,\n translateRect, Rect, Point,\n findElements,\n computeInnerRect,\n CssDimValue,\n removeElement,\n} from '@fullcalendar/common'\nimport { ScrollListener } from './ScrollListener'\nimport { getScrollCanvasOrigin, getScrollFromLeftEdge } from './scroll-left-norm'\n\ninterface ElementGeom {\n parentBound: Rect // relative to the canvas origin\n naturalBound: Rect | null // of the el itself\n elWidth: number\n elHeight: number\n textAlign: string\n}\n\nconst IS_MS_EDGE = typeof navigator !== 'undefined' && /Edge/.test(navigator.userAgent) // TODO: what about Chromeum-based Edge?\nconst STICKY_SELECTOR = '.fc-sticky'\n\n/*\nuseful beyond the native position:sticky for these reasons:\n- support in IE11\n- nice centering support\n\nREQUIREMENT: fc-sticky elements, if the fc-sticky className is taken away, should NOT have relative or absolute positioning.\nThis is because we attach the coords with JS, and the VDOM might take away the fc-sticky class but doesn't know kill the positioning.\n\nTODO: don't query text-align:center. isn't compatible with flexbox centering. instead, check natural X coord within parent container\n*/\nexport class StickyScrolling {\n listener?: ScrollListener\n usingRelative: boolean | null = null\n\n constructor(\n private scrollEl: HTMLElement,\n private isRtl: boolean,\n ) {\n this.usingRelative =\n !getStickySupported() || // IE11\n // https://stackoverflow.com/questions/56835658/in-microsoft-edge-sticky-positioning-doesnt-work-when-combined-with-dir-rtl\n (IS_MS_EDGE && isRtl)\n\n if (this.usingRelative) {\n this.listener = new ScrollListener(scrollEl)\n this.listener.emitter.on('scrollEnd', this.updateSize)\n }\n }\n\n destroy() {\n if (this.listener) {\n this.listener.destroy()\n }\n }\n\n updateSize = () => {\n let { scrollEl } = this\n let els = findElements(scrollEl, STICKY_SELECTOR)\n let elGeoms = this.queryElGeoms(els)\n let viewportWidth = scrollEl.clientWidth\n let viewportHeight = scrollEl.clientHeight\n\n if (this.usingRelative) {\n let elDestinations = this.computeElDestinations(elGeoms, viewportWidth) // read before prepPositioning\n\n assignRelativePositions(els, elGeoms, elDestinations, viewportWidth, viewportHeight)\n } else {\n assignStickyPositions(els, elGeoms, viewportWidth)\n }\n }\n\n queryElGeoms(els: HTMLElement[]): ElementGeom[] {\n let { scrollEl, isRtl } = this\n let canvasOrigin = getScrollCanvasOrigin(scrollEl)\n let elGeoms: ElementGeom[] = []\n\n for (let el of els) {\n let parentBound = translateRect(\n computeInnerRect(el.parentNode as HTMLElement, true, true), // weird way to call this!!!\n -canvasOrigin.left,\n -canvasOrigin.top,\n )\n\n let elRect = el.getBoundingClientRect()\n let computedStyles = window.getComputedStyle(el)\n let textAlign = window.getComputedStyle(el.parentNode as HTMLElement).textAlign // ask the parent\n let naturalBound = null\n\n if (textAlign === 'start') {\n textAlign = isRtl ? 'right' : 'left'\n } else if (textAlign === 'end') {\n textAlign = isRtl ? 'left' : 'right'\n }\n\n if (computedStyles.position !== 'sticky') {\n naturalBound = translateRect(\n elRect,\n -canvasOrigin.left - (parseFloat(computedStyles.left) || 0), // could be 'auto'\n -canvasOrigin.top - (parseFloat(computedStyles.top) || 0),\n )\n }\n\n elGeoms.push({\n parentBound,\n naturalBound,\n elWidth: elRect.width,\n elHeight: elRect.height,\n textAlign,\n })\n }\n\n return elGeoms\n }\n\n // only for IE\n computeElDestinations(elGeoms: ElementGeom[], viewportWidth: number): Point[] {\n let { scrollEl } = this\n let viewportTop = scrollEl.scrollTop\n let viewportLeft = getScrollFromLeftEdge(scrollEl)\n let viewportRight = viewportLeft + viewportWidth\n\n return elGeoms.map((elGeom) => {\n let { elWidth, elHeight, parentBound, naturalBound } = elGeom\n let destLeft // relative to canvas topleft\n let destTop // \"\n\n switch (elGeom.textAlign) {\n case 'left':\n destLeft = viewportLeft\n break\n case 'right':\n destLeft = viewportRight - elWidth\n break\n case 'center':\n destLeft = (viewportLeft + viewportRight) / 2 - elWidth / 2 /// noooo, use half-width insteadddddddd\n break\n }\n\n destLeft = Math.min(destLeft, parentBound.right - elWidth)\n destLeft = Math.max(destLeft, parentBound.left)\n\n destTop = viewportTop\n destTop = Math.min(destTop, parentBound.bottom - elHeight)\n destTop = Math.max(destTop, naturalBound.top) // better to use natural top for upper bound\n\n return { left: destLeft, top: destTop }\n })\n }\n}\n\nfunction assignRelativePositions(\n els: HTMLElement[],\n elGeoms: ElementGeom[],\n elDestinations: Point[],\n viewportWidth: number,\n viewportHeight: number,\n) {\n els.forEach((el, i) => {\n let { naturalBound, parentBound } = elGeoms[i]\n let parentWidth = parentBound.right - parentBound.left\n let parentHeight = parentBound.bottom - parentBound.bottom\n let left: CssDimValue\n let top: CssDimValue\n\n if (\n parentWidth > viewportWidth ||\n parentHeight > viewportHeight\n ) {\n left = elDestinations[i].left - naturalBound.left\n top = elDestinations[i].top - naturalBound.top\n } else { // if parent container can be completely in view, we don't need stickiness\n left = ''\n top = ''\n }\n\n applyStyle(el, {\n position: 'relative',\n left,\n right: -left, // for rtl\n top,\n })\n })\n}\n\nfunction assignStickyPositions(els: HTMLElement[], elGeoms: ElementGeom[], viewportWidth: number) {\n els.forEach((el, i) => {\n let { textAlign, elWidth, parentBound } = elGeoms[i]\n let parentWidth = parentBound.right - parentBound.left\n let left: CssDimValue\n\n if (\n textAlign === 'center' &&\n parentWidth > viewportWidth\n ) {\n left = (viewportWidth - elWidth) / 2\n } else { // if parent container can be completely in view, we don't need stickiness\n left = ''\n }\n\n applyStyle(el, { // will already have fc-sticky class which makes it sticky\n left,\n right: left, // for when centered\n top: 0,\n })\n })\n}\n\nlet _isStickySupported\n\nfunction getStickySupported() {\n if (_isStickySupported == null) {\n _isStickySupported = computeStickySupported()\n }\n return _isStickySupported\n}\n\nfunction computeStickySupported() {\n let el = document.createElement('div')\n el.style.position = 'sticky'\n document.body.appendChild(el)\n let val = window.getComputedStyle(el).position\n removeElement(el)\n return val === 'sticky'\n}\n","import {\n createElement, ComponentChildren, createRef, Ref, BaseComponent, setRef,\n ScrollerLike,\n Scroller, OverflowValue,\n getIsRtlScrollbarOnLeft,\n isPropsEqual,\n} from '@fullcalendar/common'\n\nexport type ClippedOverflowValue = OverflowValue | 'scroll-hidden'\n\nexport interface ClippedScrollerProps {\n overflowX: ClippedOverflowValue\n overflowY: ClippedOverflowValue\n liquid: boolean\n maxHeight?: number // incompatible with liquid\n children?: ComponentChildren\n scrollerRef?: Ref<Scroller>\n scrollerElRef?: Ref<HTMLElement>\n}\n\ninterface ClippedScrollerState {\n yScrollbarWidth?: number\n xScrollbarWidth?: number\n}\n\nexport class ClippedScroller extends BaseComponent<ClippedScrollerProps, ClippedScrollerState> implements ScrollerLike {\n private elRef = createRef<HTMLDivElement>()\n private scroller: Scroller\n\n state = {\n xScrollbarWidth: 0,\n yScrollbarWidth: 0,\n }\n\n render() {\n let { props, state, context } = this\n let isScrollbarOnLeft = context.isRtl && getIsRtlScrollbarOnLeft()\n let overcomeLeft = 0\n let overcomeRight = 0\n let overcomeBottom = 0\n\n if (props.overflowX === 'scroll-hidden') {\n overcomeBottom = state.xScrollbarWidth\n }\n\n if (props.overflowY === 'scroll-hidden') {\n if (state.yScrollbarWidth != null) {\n if (isScrollbarOnLeft) {\n overcomeLeft = state.yScrollbarWidth\n } else {\n overcomeRight = state.yScrollbarWidth\n }\n }\n }\n\n return (\n <div\n ref={this.elRef}\n className={'fc-scroller-harness' + (props.liquid ? ' fc-scroller-harness-liquid' : '')}\n >\n <Scroller\n ref={this.handleScroller}\n elRef={this.props.scrollerElRef}\n overflowX={props.overflowX === 'scroll-hidden' ? 'scroll' : props.overflowX}\n overflowY={props.overflowY === 'scroll-hidden' ? 'scroll' : props.overflowY}\n overcomeLeft={overcomeLeft}\n overcomeRight={overcomeRight}\n overcomeBottom={overcomeBottom}\n maxHeight={\n typeof props.maxHeight === 'number'\n ? (props.maxHeight + (props.overflowX === 'scroll-hidden' ? state.xScrollbarWidth : 0))\n : ''\n }\n liquid={props.liquid}\n liquidIsAbsolute\n >\n {props.children}\n </Scroller>\n </div>\n )\n }\n\n handleScroller = (scroller: Scroller) => {\n this.scroller = scroller\n setRef(this.props.scrollerRef, scroller)\n }\n\n componentDidMount() {\n this.handleSizing()\n this.context.addResizeHandler(this.handleSizing)\n }\n\n componentDidUpdate(prevProps: ClippedScrollerProps) {\n if (!isPropsEqual(prevProps, this.props)) { // an external change?\n this.handleSizing()\n }\n }\n\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing)\n }\n\n handleSizing = () => {\n let { props } = this\n\n if (props.overflowY === 'scroll-hidden') {\n this.setState({ yScrollbarWidth: this.scroller.getYScrollbarWidth() })\n }\n\n if (props.overflowX === 'scroll-hidden') {\n this.setState({ xScrollbarWidth: this.scroller.getXScrollbarWidth() })\n }\n }\n\n needsXScrolling() {\n return this.scroller.needsXScrolling()\n }\n\n needsYScrolling() {\n return this.scroller.needsYScrolling()\n }\n}\n","import { ScrollListener } from './ScrollListener'\nimport { setScrollFromLeftEdge } from './scroll-left-norm'\n\nexport class ScrollSyncer {\n private masterEl: HTMLElement\n private scrollListeners: ScrollListener[]\n private isPaused: boolean = false\n\n constructor(\n private isVertical: boolean,\n private scrollEls: HTMLElement[],\n ) {\n this.scrollListeners = scrollEls.map((el) => this.bindScroller(el))\n }\n\n destroy() {\n for (let scrollListener of this.scrollListeners) {\n scrollListener.destroy()\n }\n }\n\n bindScroller(el: HTMLElement) {\n let { scrollEls, isVertical } = this\n let scrollListener = new ScrollListener(el)\n\n const onScroll = (isWheel, isTouch) => {\n if (!this.isPaused) {\n if (!this.masterEl || (this.masterEl !== el && (isWheel || isTouch))) {\n this.assignMaster(el)\n }\n\n if (this.masterEl === el) { // dealing with current\n for (let otherEl of scrollEls) {\n if (otherEl !== el) {\n if (isVertical) {\n otherEl.scrollTop = el.scrollTop\n } else {\n otherEl.scrollLeft = el.scrollLeft\n }\n }\n }\n }\n }\n }\n\n const onScrollEnd = () => {\n if (this.masterEl === el) {\n this.masterEl = null\n }\n }\n\n scrollListener.emitter.on('scroll', onScroll)\n scrollListener.emitter.on('scrollEnd', onScrollEnd)\n\n return scrollListener\n }\n\n assignMaster(el: HTMLElement) {\n this.masterEl = el\n\n for (let scrollListener of this.scrollListeners) {\n if (scrollListener.el !== el) {\n scrollListener.endScroll() // to prevent residual scrolls from reclaiming master\n }\n }\n }\n\n /*\n will normalize the scrollLeft value\n */\n forceScrollLeft(scrollLeft: number) {\n this.isPaused = true\n\n for (let listener of this.scrollListeners) {\n setScrollFromLeftEdge(listener.el, scrollLeft)\n }\n\n this.isPaused = false\n }\n\n forceScrollTop(top: number) {\n this.isPaused = true\n\n for (let listener of this.scrollListeners) {\n listener.el.scrollTop = top\n }\n\n this.isPaused = false\n }\n}\n","import {\n createElement, VNode, Fragment,\n BaseComponent,\n isArraysEqual,\n findElements,\n mapHash,\n RefMap,\n ColProps, CssDimValue, hasShrinkWidth, renderMicroColGroup,\n ScrollGridProps, ScrollGridSectionConfig, ColGroupConfig,\n getScrollGridClassNames, getSectionClassNames, getSectionHasLiquidHeight, getAllowYScrolling, renderChunkContent, computeShrinkWidth,\n getIsRtlScrollbarOnLeft,\n setRef,\n sanitizeShrinkWidth,\n isPropsEqual,\n compareObjs,\n isColPropsEqual,\n getScrollbarWidths,\n memoizeArraylike,\n collectFromHash,\n memoizeHashlike,\n ScrollGridChunkConfig,\n getCanVGrowWithinCell,\n config,\n} from '@fullcalendar/common'\nimport { StickyScrolling } from './StickyScrolling'\nimport { ClippedScroller, ClippedOverflowValue } from './ClippedScroller'\nimport { ScrollSyncer } from './ScrollSyncer'\n\ninterface ScrollGridState {\n shrinkWidths: number[] // for only one col within each vertical stack of chunks\n forceYScrollbars: boolean // null means not computed yet\n forceXScrollbars: boolean // \"\n scrollerClientWidths: { [index: string]: number } // why not use array?\n scrollerClientHeights: { [index: string]: number }\n sectionRowMaxHeights: number[][][]\n}\n\ninterface ColGroupStat {\n hasShrinkCol: boolean\n totalColWidth: number\n totalColMinWidth: number\n allowXScrolling: boolean\n width?: CssDimValue\n cols: ColProps[]\n}\n\n/*\nTODO: make <ScrollGridSection> subcomponent\nNOTE: doesn't support collapsibleWidth (which is sortof a hack anyway)\n*/\nexport class ScrollGrid extends BaseComponent<ScrollGridProps, ScrollGridState> {\n private compileColGroupStats = memoizeArraylike(compileColGroupStat, isColGroupStatsEqual)\n private renderMicroColGroups = memoizeArraylike(renderMicroColGroup) // yucky to memoize VNodes, but much more efficient for consumers\n private clippedScrollerRefs = new RefMap<ClippedScroller>()\n\n // doesn't hold non-scrolling els used just for padding\n private scrollerElRefs = new RefMap<HTMLElement>(this._handleScrollerEl.bind(this))\n\n private chunkElRefs = new RefMap<HTMLTableCellElement>(this._handleChunkEl.bind(this))\n private getStickyScrolling = memoizeArraylike(initStickyScrolling, null, destroyStickyScrolling)\n private getScrollSyncersBySection = memoizeHashlike(initScrollSyncer.bind(this, true), null, destroyScrollSyncer)\n private getScrollSyncersByColumn = memoizeHashlike(initScrollSyncer.bind(this, false), null, destroyScrollSyncer)\n private stickyScrollings: StickyScrolling[] = []\n private scrollSyncersBySection: { [sectionI: string]: ScrollSyncer } = {}\n private scrollSyncersByColumn: { [columnI: string]: ScrollSyncer } = {}\n\n // for row-height-syncing\n private rowUnstableMap = new Map<HTMLTableRowElement, boolean>() // no need to groom. always self-cancels\n private rowInnerMaxHeightMap = new Map<HTMLTableRowElement, number>()\n private anyRowHeightsChanged = false\n\n private lastSizingDate: Date\n private recentSizingCnt = 0\n\n state: ScrollGridState = {\n shrinkWidths: [],\n forceYScrollbars: false,\n forceXScrollbars: false,\n scrollerClientWidths: {},\n scrollerClientHeights: {},\n sectionRowMaxHeights: [],\n }\n\n render(): VNode {\n let { props, state, context } = this\n let { shrinkWidths } = state\n\n let colGroupStats = this.compileColGroupStats(props.colGroups.map((colGroup) => [colGroup]))\n let microColGroupNodes = this.renderMicroColGroups(colGroupStats.map((stat, i) => [stat.cols, shrinkWidths[i]]))\n let classNames = getScrollGridClassNames(props.liquid, context)\n\n // yuck\n let indices: [ number, number ][] = []\n let [sectionCnt, chunksPerSection] = this.getDims()\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n indices.push([sectionI, chunkI])\n }\n }\n\n // TODO: make DRY\n let sectionConfigs = props.sections\n let configCnt = sectionConfigs.length\n let configI = 0\n let currentConfig: ScrollGridSectionConfig\n let headSectionNodes: VNode[] = []\n let bodySectionNodes: VNode[] = []\n let footSectionNodes: VNode[] = []\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n headSectionNodes.push(this.renderSection(\n currentConfig,\n configI,\n colGroupStats,\n microColGroupNodes,\n state.sectionRowMaxHeights,\n true,\n ))\n configI += 1\n }\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(\n currentConfig,\n configI,\n colGroupStats,\n microColGroupNodes,\n state.sectionRowMaxHeights,\n false,\n ))\n configI += 1\n }\n\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(\n currentConfig,\n configI,\n colGroupStats,\n microColGroupNodes,\n state.sectionRowMaxHeights,\n true,\n ))\n configI += 1\n }\n\n const isBuggy = !getCanVGrowWithinCell() // see NOTE in SimpleScrollGrid\n const roleAttrs = { role: 'rowgroup' }\n\n return createElement(\n 'table',\n {\n ref: props.elRef,\n role: 'grid',\n className: classNames.join(' '),\n },\n renderMacroColGroup(colGroupStats, shrinkWidths),\n Boolean(!isBuggy && headSectionNodes.length) && createElement('thead', roleAttrs, ...headSectionNodes),\n Boolean(!isBuggy && bodySectionNodes.length) && createElement('tbody', roleAttrs, ...bodySectionNodes),\n Boolean(!isBuggy && footSectionNodes.length) && createElement('tfoot', roleAttrs, ...footSectionNodes),\n isBuggy && createElement('tbody', roleAttrs, ...headSectionNodes, ...bodySectionNodes, ...footSectionNodes),\n )\n }\n\n renderSection(\n sectionConfig: ScrollGridSectionConfig,\n sectionIndex: number,\n colGroupStats: ColGroupStat[],\n microColGroupNodes: VNode[],\n sectionRowMaxHeights: number[][][],\n isHeader: boolean,\n ): VNode {\n if ('outerContent' in sectionConfig) {\n return (\n <Fragment key={sectionConfig.key}>\n {sectionConfig.outerContent}\n </Fragment>\n )\n }\n\n return (\n <tr\n key={sectionConfig.key}\n role=\"presentation\"\n className={getSectionClassNames(sectionConfig, this.props.liquid).join(' ')}\n >\n {sectionConfig.chunks.map((chunkConfig, i) => this.renderChunk(\n sectionConfig,\n sectionIndex,\n colGroupStats[i],\n microColGroupNodes[i],\n chunkConfig,\n i,\n (sectionRowMaxHeights[sectionIndex] || [])[i] || [],\n isHeader,\n ))}\n </tr>\n )\n }\n\n renderChunk(\n sectionConfig: ScrollGridSectionConfig,\n sectionIndex: number,\n colGroupStat: ColGroupStat | undefined,\n microColGroupNode: VNode | undefined,\n chunkConfig: ScrollGridChunkConfig,\n chunkIndex: number,\n rowHeights: number[],\n isHeader: boolean,\n ): VNode {\n if ('outerContent' in chunkConfig) {\n return (\n <Fragment key={chunkConfig.key}>\n {chunkConfig.outerContent}\n </Fragment>\n )\n }\n\n let { state } = this\n let { scrollerClientWidths, scrollerClientHeights } = state\n\n let [sectionCnt, chunksPerSection] = this.getDims()\n let index = sectionIndex * chunksPerSection + chunkIndex\n let sideScrollIndex = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0\n let isVScrollSide = chunkIndex === sideScrollIndex\n let isLastSection = sectionIndex === sectionCnt - 1\n\n let forceXScrollbars = isLastSection && state.forceXScrollbars // NOOOO can result in `null`\n let forceYScrollbars = isVScrollSide && state.forceYScrollbars // NOOOO can result in `null`\n\n let allowXScrolling = colGroupStat && colGroupStat.allowXScrolling // rename?\n let allowYScrolling = getAllowYScrolling(this.props, sectionConfig) // rename? do in section func?\n\n let chunkVGrow = getSectionHasLiquidHeight(this.props, sectionConfig) // do in section func?\n let expandRows = sectionConfig.expandRows && chunkVGrow\n let tableMinWidth = (colGroupStat && colGroupStat.totalColMinWidth) || ''\n\n let content = renderChunkContent(sectionConfig, chunkConfig, {\n tableColGroupNode: microColGroupNode,\n tableMinWidth,\n clientWidth: scrollerClientWidths[index] !== undefined ? scrollerClientWidths[index] : null,\n clientHeight: scrollerClientHeights[index] !== undefined ? scrollerClientHeights[index] : null,\n expandRows,\n syncRowHeights: Boolean(sectionConfig.syncRowHeights),\n rowSyncHeights: rowHeights,\n reportRowHeightChange: this.handleRowHeightChange,\n }, isHeader)\n\n let overflowX: ClippedOverflowValue =\n forceXScrollbars ? (isLastSection ? 'scroll' : 'scroll-hidden') :\n !allowXScrolling ? 'hidden' :\n (isLastSection ? 'auto' : 'scroll-hidden')\n\n let overflowY: ClippedOverflowValue =\n forceYScrollbars ? (isVScrollSide ? 'scroll' : 'scroll-hidden') :\n !allowYScrolling ? 'hidden' :\n (isVScrollSide ? 'auto' : 'scroll-hidden')\n\n // it *could* be possible to reduce DOM wrappers by only doing a ClippedScroller when allowXScrolling or allowYScrolling,\n // but if these values were to change, the inner components would be unmounted/remounted because of the parent change.\n content = (\n <ClippedScroller\n ref={this.clippedScrollerRefs.createRef(index)}\n scrollerElRef={this.scrollerElRefs.createRef(index)}\n overflowX={overflowX}\n overflowY={overflowY}\n liquid={chunkVGrow}\n maxHeight={sectionConfig.maxHeight}\n >\n {content}\n </ClippedScroller>\n )\n\n return createElement(\n isHeader ? 'th' : 'td',\n {\n key: chunkConfig.key,\n ref: this.chunkElRefs.createRef(index) as any,\n role: 'presentation',\n },\n content,\n )\n }\n\n componentDidMount() {\n this.updateScrollSyncers()\n this.handleSizing(false)\n\n this.context.addResizeHandler(this.handleSizing)\n }\n\n componentDidUpdate(prevProps: ScrollGridProps, prevState: ScrollGridState) {\n this.updateScrollSyncers()\n\n // TODO: need better solution when state contains non-sizing things\n this.handleSizing(false, prevState.sectionRowMaxHeights !== this.state.sectionRowMaxHeights)\n }\n\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing)\n\n this.destroyStickyScrolling()\n this.destroyScrollSyncers()\n }\n\n handleSizing = (isForcedResize: boolean, sectionRowMaxHeightsChanged?: boolean) => {\n if (!this.allowSizing()) {\n return\n }\n\n if (!sectionRowMaxHeightsChanged) { // something else changed, probably external\n this.anyRowHeightsChanged = true\n }\n\n let otherState: Partial<ScrollGridState> = {}\n\n // if reacting to self-change of sectionRowMaxHeightsChanged, or not stable, don't do anything\n if (isForcedResize || (!sectionRowMaxHeightsChanged && !this.rowUnstableMap.size)) {\n otherState.sectionRowMaxHeights = this.computeSectionRowMaxHeights()\n }\n\n this.setState({\n shrinkWidths: this.computeShrinkWidths(),\n ...this.computeScrollerDims(),\n ...(otherState as any), // wtf\n }, () => {\n if (!this.rowUnstableMap.size) {\n this.updateStickyScrolling() // needs to happen AFTER final positioning committed to DOM\n }\n })\n }\n\n allowSizing() {\n let now = new Date()\n\n if (\n !this.lastSizingDate ||\n now.valueOf() > this.lastSizingDate.valueOf() + config.SCROLLGRID_RESIZE_INTERVAL\n ) {\n this.lastSizingDate = now\n this.recentSizingCnt = 0\n return true\n }\n\n return (this.recentSizingCnt += 1) <= 10\n }\n\n handleRowHeightChange = (rowEl: HTMLTableRowElement, isStable: boolean) => {\n let { rowUnstableMap, rowInnerMaxHeightMap } = this\n\n if (!isStable) {\n rowUnstableMap.set(rowEl, true)\n } else {\n rowUnstableMap.delete(rowEl)\n\n let innerMaxHeight = getRowInnerMaxHeight(rowEl)\n if (!rowInnerMaxHeightMap.has(rowEl) || rowInnerMaxHeightMap.get(rowEl) !== innerMaxHeight) {\n rowInnerMaxHeightMap.set(rowEl, innerMaxHeight)\n this.anyRowHeightsChanged = true\n }\n\n if (!rowUnstableMap.size && this.anyRowHeightsChanged) {\n this.anyRowHeightsChanged = false\n this.setState({\n sectionRowMaxHeights: this.computeSectionRowMaxHeights(),\n })\n }\n }\n }\n\n computeShrinkWidths() {\n let colGroupStats = this.compileColGroupStats(this.props.colGroups.map((colGroup) => [colGroup]))\n let [sectionCnt, chunksPerSection] = this.getDims()\n let cnt = sectionCnt * chunksPerSection\n let shrinkWidths: number[] = []\n\n colGroupStats.forEach((colGroupStat, i) => {\n if (colGroupStat.hasShrinkCol) {\n let chunkEls = this.chunkElRefs.collect(i, cnt, chunksPerSection) // in one col\n shrinkWidths[i] = computeShrinkWidth(chunkEls)\n }\n })\n\n return shrinkWidths\n }\n\n // has the side effect of grooming rowInnerMaxHeightMap\n // TODO: somehow short-circuit if there are no new height changes\n private computeSectionRowMaxHeights() {\n let newHeightMap = new Map<HTMLTableRowElement, number>()\n\n let [sectionCnt, chunksPerSection] = this.getDims()\n let sectionRowMaxHeights: number[][][] = []\n\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n let sectionConfig = this.props.sections[sectionI]\n let assignableHeights: number[][] = [] // chunk, row\n\n if (sectionConfig && sectionConfig.syncRowHeights) {\n let rowHeightsByChunk: number[][] = []\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let index = sectionI * chunksPerSection + chunkI\n let rowHeights: number[] = []\n\n let chunkEl = this.chunkElRefs.currentMap[index]\n if (chunkEl) {\n rowHeights = findElements(chunkEl, '.fc-scrollgrid-sync-table tr').map((rowEl: HTMLTableRowElement) => {\n let max = getRowInnerMaxHeight(rowEl)\n newHeightMap.set(rowEl, max)\n return max\n })\n } else {\n rowHeights = []\n }\n\n rowHeightsByChunk.push(rowHeights)\n }\n\n let rowCnt = rowHeightsByChunk[0].length\n let isEqualRowCnt = true\n\n for (let chunkI = 1; chunkI < chunksPerSection; chunkI += 1) {\n let isOuterContent = sectionConfig.chunks[chunkI] && sectionConfig.chunks[chunkI].outerContent !== undefined // can be null\n\n if (!isOuterContent && rowHeightsByChunk[chunkI].length !== rowCnt) { // skip outer content\n isEqualRowCnt = false\n break\n }\n }\n\n if (!isEqualRowCnt) {\n let chunkHeightSums: number[] = []\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n chunkHeightSums.push(\n sumNumbers(rowHeightsByChunk[chunkI]) + rowHeightsByChunk[chunkI].length, // add in border\n )\n }\n\n let maxTotalSum = Math.max(...chunkHeightSums)\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let rowInChunkCnt = rowHeightsByChunk[chunkI].length\n let rowInChunkTotalHeight = maxTotalSum - rowInChunkCnt // subtract border\n\n // height of non-first row. we do this to avoid rounding, because it's unreliable within a table\n let rowInChunkHeightOthers = Math.floor(rowInChunkTotalHeight / rowInChunkCnt)\n\n // whatever is leftover goes to the first row\n let rowInChunkHeightFirst = rowInChunkTotalHeight - rowInChunkHeightOthers * (rowInChunkCnt - 1)\n\n let rowInChunkHeights: number[] = []\n let row = 0\n\n if (row < rowInChunkCnt) {\n rowInChunkHeights.push(rowInChunkHeightFirst)\n row += 1\n }\n\n while (row < rowInChunkCnt) {\n rowInChunkHeights.push(rowInChunkHeightOthers)\n row += 1\n }\n\n assignableHeights.push(rowInChunkHeights)\n }\n } else {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n assignableHeights.push([])\n }\n\n for (let row = 0; row < rowCnt; row += 1) {\n let rowHeightsAcrossChunks: number[] = []\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let h = rowHeightsByChunk[chunkI][row]\n if (h != null) { // protect against outerContent\n rowHeightsAcrossChunks.push(h)\n }\n }\n\n let maxHeight = Math.max(...rowHeightsAcrossChunks)\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n assignableHeights[chunkI].push(maxHeight)\n }\n }\n }\n }\n\n sectionRowMaxHeights.push(assignableHeights)\n }\n\n this.rowInnerMaxHeightMap = newHeightMap\n\n return sectionRowMaxHeights\n }\n\n computeScrollerDims() {\n let scrollbarWidth = getScrollbarWidths()\n let [sectionCnt, chunksPerSection] = this.getDims()\n let sideScrollI = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0\n let lastSectionI = sectionCnt - 1\n let currentScrollers = this.clippedScrollerRefs.currentMap\n let scrollerEls = this.scrollerElRefs.currentMap\n let forceYScrollbars = false\n let forceXScrollbars = false\n let scrollerClientWidths: { [index: string]: number } = {}\n let scrollerClientHeights: { [index: string]: number } = {}\n\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) { // along edge\n let index = sectionI * chunksPerSection + sideScrollI\n let scroller = currentScrollers[index]\n\n if (scroller && scroller.needsYScrolling()) {\n forceYScrollbars = true\n break\n }\n }\n\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) { // along last row\n let index = lastSectionI * chunksPerSection + chunkI\n let scroller = currentScrollers[index]\n\n if (scroller && scroller.needsXScrolling()) {\n forceXScrollbars = true\n break\n }\n }\n\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let index = sectionI * chunksPerSection + chunkI\n let scrollerEl = scrollerEls[index]\n\n if (scrollerEl) {\n // TODO: weird way to get this. need harness b/c doesn't include table borders\n let harnessEl = scrollerEl.parentNode as HTMLElement\n\n scrollerClientWidths[index] = Math.floor(\n harnessEl.getBoundingClientRect().width - (\n (chunkI === sideScrollI && forceYScrollbars)\n ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n : 0\n ),\n )\n\n scrollerClientHeights[index] = Math.floor(\n harnessEl.getBoundingClientRect().height - (\n (sectionI === lastSectionI && forceXScrollbars)\n ? scrollbarWidth.x // use global because scroller might not have scrollbars yet but will need them in future\n : 0\n ),\n )\n }\n }\n }\n\n return { forceYScrollbars, forceXScrollbars, scrollerClientWidths, scrollerClientHeights }\n }\n\n updateStickyScrolling() {\n let { isRtl } = this.context\n let argsByKey = this.scrollerElRefs.getAll().map(\n (scrollEl) => [scrollEl, isRtl] as [ HTMLElement, boolean ],\n )\n\n let stickyScrollings = this.getStickyScrolling(argsByKey)\n\n stickyScrollings.forEach((stickyScrolling) => stickyScrolling.updateSize())\n\n this.stickyScrollings = stickyScrollings\n }\n\n destroyStickyScrolling() {\n this.stickyScrollings.forEach(destroyStickyScrolling)\n }\n\n updateScrollSyncers() {\n let [sectionCnt, chunksPerSection] = this.getDims()\n let cnt = sectionCnt * chunksPerSection\n let scrollElsBySection: { [sectionI: string]: HTMLElement[] } = {}\n let scrollElsByColumn: { [colI: string]: HTMLElement[] } = {}\n let scrollElMap = this.scrollerElRefs.currentMap\n\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n let startIndex = sectionI * chunksPerSection\n let endIndex = startIndex + chunksPerSection\n\n scrollElsBySection[sectionI] = collectFromHash(scrollElMap, startIndex, endIndex, 1) // use the filtered\n }\n\n for (let col = 0; col < chunksPerSection; col += 1) {\n scrollElsByColumn[col] = this.scrollerElRefs.collect(col, cnt, chunksPerSection) // DON'T use the filtered\n }\n\n this.scrollSyncersBySection = this.getScrollSyncersBySection(scrollElsBySection)\n this.scrollSyncersByColumn = this.getScrollSyncersByColumn(scrollElsByColumn)\n }\n\n destroyScrollSyncers() {\n mapHash(this.scrollSyncersBySection, destroyScrollSyncer)\n mapHash(this.scrollSyncersByColumn, destroyScrollSyncer)\n }\n\n getChunkConfigByIndex(index: number) { // somewhat expensive for something so simple\n let chunksPerSection = this.getDims()[1]\n let sectionI = Math.floor(index / chunksPerSection)\n let chunkI = index % chunksPerSection\n let sectionConfig = this.props.sections[sectionI]\n\n return sectionConfig && sectionConfig.chunks[chunkI]\n }\n\n forceScrollLeft(col: number, scrollLeft: number) {\n let scrollSyncer = this.scrollSyncersByColumn[col]\n\n if (scrollSyncer) {\n scrollSyncer.forceScrollLeft(scrollLeft)\n }\n }\n\n forceScrollTop(sectionI: number, scrollTop: number) {\n let scrollSyncer = this.scrollSyncersBySection[sectionI]\n\n if (scrollSyncer) {\n scrollSyncer.forceScrollTop(scrollTop)\n }\n }\n\n _handleChunkEl(chunkEl: HTMLTableCellElement | null, key: string) {\n let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10))\n\n if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n setRef(chunkConfig.elRef, chunkEl)\n }\n }\n\n _handleScrollerEl(scrollerEl: HTMLElement | null, key: string) {\n let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10))\n\n if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n setRef(chunkConfig.scrollerElRef, scrollerEl)\n }\n }\n\n getDims() {\n let sectionCnt = this.props.sections.length\n let chunksPerSection = sectionCnt ? this.props.sections[0].chunks.length : 0\n\n return [sectionCnt, chunksPerSection]\n }\n}\n\nScrollGrid.addStateEquality({\n shrinkWidths: isArraysEqual,\n scrollerClientWidths: isPropsEqual,\n scrollerClientHeights: isPropsEqual,\n})\n\nfunction sumNumbers(numbers: number[]) { // TODO: general util\n let sum = 0\n\n for (let n of numbers) {\n sum += n\n }\n\n return sum\n}\n\nfunction getRowInnerMaxHeight(rowEl: HTMLElement) {\n let innerHeights = findElements(rowEl, '.fc-scrollgrid-sync-inner').map(getElHeight)\n\n if (innerHeights.length) {\n return Math.max(...innerHeights)\n }\n\n return 0\n}\n\nfunction getElHeight(el: HTMLElement) {\n return el.offsetHeight // better to deal with integers, for rounding, for PureComponent\n}\n\nfunction renderMacroColGroup(colGroupStats: ColGroupStat[], shrinkWidths: number[]) {\n let children = colGroupStats.map((colGroupStat, i) => {\n let width = colGroupStat.width\n\n if (width === 'shrink') {\n width = colGroupStat.totalColWidth + sanitizeShrinkWidth(shrinkWidths[i]) + 1 // +1 for border :(\n }\n\n return ( // eslint-disable-next-line react/jsx-key\n <col style={{ width }} />\n )\n })\n\n return createElement('colgroup', {}, ...children)\n}\n\nfunction compileColGroupStat(colGroupConfig: ColGroupConfig): ColGroupStat {\n let totalColWidth = sumColProp(colGroupConfig.cols, 'width') // excludes \"shrink\"\n let totalColMinWidth = sumColProp(colGroupConfig.cols, 'minWidth')\n let hasShrinkCol = hasShrinkWidth(colGroupConfig.cols)\n let allowXScrolling = colGroupConfig.width !== 'shrink' && Boolean(totalColWidth || totalColMinWidth || hasShrinkCol)\n\n return {\n hasShrinkCol,\n totalColWidth,\n totalColMinWidth,\n allowXScrolling,\n cols: colGroupConfig.cols,\n width: colGroupConfig.width,\n }\n}\n\nfunction sumColProp(cols: ColProps[], propName: string) {\n let total = 0\n\n for (let col of cols) {\n let val = col[propName]\n\n if (typeof val === 'number') {\n total += val * (col.span || 1)\n }\n }\n\n return total\n}\n\nconst COL_GROUP_STAT_EQUALITY = {\n cols: isColPropsEqual,\n}\n\nfunction isColGroupStatsEqual(stat0: ColGroupStat, stat1: ColGroupStat): boolean {\n return compareObjs(stat0, stat1, COL_GROUP_STAT_EQUALITY)\n}\n\n// for memoizers...\n\nfunction initScrollSyncer(isVertical: boolean, ...scrollEls: HTMLElement[]) {\n return new ScrollSyncer(isVertical, scrollEls)\n}\n\nfunction destroyScrollSyncer(scrollSyncer: ScrollSyncer) {\n scrollSyncer.destroy()\n}\n\nfunction initStickyScrolling(scrollEl: HTMLElement, isRtl: boolean) {\n return new StickyScrolling(scrollEl, isRtl)\n}\n\nfunction destroyStickyScrolling(stickyScrolling: StickyScrolling) {\n stickyScrolling.destroy()\n}\n","import { createPlugin, config } from '@fullcalendar/common'\n\nimport premiumCommonPlugin from '@fullcalendar/premium-common' // eslint-disable-line import/no-duplicates\n// ensure ambient declarations\nimport '@fullcalendar/premium-common' // eslint-disable-line import/no-duplicates\n\nimport { ScrollGrid } from './ScrollGrid'\n\nexport { ScrollGrid }\nexport { setScrollFromLeftEdge } from './scroll-left-norm'\n\nexport default createPlugin({\n deps: [\n premiumCommonPlugin,\n ],\n scrollGridImpl: ScrollGrid,\n})\n\nconfig.SCROLLGRID_RESIZE_INTERVAL = 500\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@fullcalendar/scrollgrid",
3
- "version": "5.9.0",
3
+ "version": "5.11.0",
4
4
  "title": "FullCalendar ScrollGrid Plugin",
5
5
  "description": "Tabular data chunked into scrollable panes",
6
6
  "docs": "https://fullcalendar.io/docs/scheduler",
7
7
  "dependencies": {
8
- "@fullcalendar/common": "~5.9.0",
9
- "@fullcalendar/premium-common": "~5.9.0",
8
+ "@fullcalendar/common": "~5.11.0",
9
+ "@fullcalendar/premium-common": "~5.11.0",
10
10
  "tslib": "^2.1.0"
11
11
  },
12
12
  "main": "main.cjs.js",
@@ -28,6 +28,6 @@
28
28
  "url": "http://arshaw.com/"
29
29
  },
30
30
  "devDependencies": {
31
- "@fullcalendar/core-preact": "5.9.0"
31
+ "@fullcalendar/core-preact": "5.11.0"
32
32
  }
33
33
  }