@fullcalendar/timeline 6.0.0-beta.4 → 6.0.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/LICENSE.md +2 -2
- package/README.md +26 -2
- package/index.cjs +2 -2
- package/index.global.js +13 -4
- package/index.global.min.js +3 -3
- package/index.js +2 -2
- package/internal.cjs +9 -0
- package/internal.d.ts +2 -0
- package/internal.js +9 -0
- package/package.json +18 -17
package/LICENSE.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
|
|
2
2
|
For complete licensing information, visit:
|
|
3
|
-
https://fullcalendar.io/
|
|
3
|
+
https://fullcalendar.io/license
|
|
4
4
|
|
|
5
5
|
FullCalendar Scheduler is tri-licensed, meaning you must choose
|
|
6
6
|
one of three licenses to use. Here is a summary of those licenses:
|
|
7
7
|
|
|
8
8
|
- Commercial License
|
|
9
9
|
(a paid license, intended for commercial use)
|
|
10
|
-
https://fullcalendar.io/
|
|
10
|
+
https://fullcalendar.io/commercial-license
|
|
11
11
|
|
|
12
12
|
- Creative Commons Non-Commercial No-Derivatives
|
|
13
13
|
(intended for trial and non-commercial use)
|
package/README.md
CHANGED
|
@@ -3,6 +3,30 @@
|
|
|
3
3
|
|
|
4
4
|
Display events on a horizontal time axis (without resources)
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
## Installation
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Install the necessary packages:
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
npm install @fullcalendar/core @fullcalendar/timeline
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
Instantiate a Calendar with the necessary plugin:
|
|
17
|
+
|
|
18
|
+
```js
|
|
19
|
+
import { Calendar } from '@fullcalendar/core'
|
|
20
|
+
import timelinePlugin from '@fullcalendar/timeline'
|
|
21
|
+
|
|
22
|
+
const calendarEl = document.getElementById('calendar')
|
|
23
|
+
const calendar = new Calendar(calendarEl, {
|
|
24
|
+
plugins: [timelinePlugin],
|
|
25
|
+
initialView: 'timelineWeek',
|
|
26
|
+
events: [
|
|
27
|
+
{ title: 'Meeting', start: new Date() }
|
|
28
|
+
]
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
calendar.render()
|
|
32
|
+
```
|
package/index.cjs
CHANGED
|
@@ -13,12 +13,12 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
13
13
|
|
|
14
14
|
var premiumCommonPlugin__default = /*#__PURE__*/_interopDefaultLegacy(premiumCommonPlugin);
|
|
15
15
|
|
|
16
|
-
var css_248z = "
|
|
16
|
+
var css_248z = ".fc .fc-timeline-body{min-height:100%;position:relative;z-index:1}.fc .fc-timeline-slots{bottom:0;position:absolute;top:0;z-index:1}.fc .fc-timeline-slots>table{height:100%}.fc .fc-timeline-slot-minor{border-style:dotted}.fc .fc-timeline-slot-frame{align-items:center;display:flex;justify-content:center}.fc .fc-timeline-header-row-chrono .fc-timeline-slot-frame{justify-content:flex-start}.fc .fc-timeline-header-row:last-child .fc-timeline-slot-frame{overflow:hidden}.fc .fc-timeline-slot-cushion{padding:4px 5px;white-space:nowrap}.fc-direction-ltr .fc-timeline-slot{border-right:0!important}.fc-direction-rtl .fc-timeline-slot{border-left:0!important}.fc .fc-timeline-now-indicator-container{bottom:0;left:0;position:absolute;right:0;top:0;width:0;z-index:4}.fc .fc-timeline-now-indicator-arrow,.fc .fc-timeline-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;position:absolute;top:0}.fc .fc-timeline-now-indicator-arrow{border-left-color:transparent;border-right-color:transparent;border-width:6px 5px 0;margin:0 -6px}.fc .fc-timeline-now-indicator-line{border-width:0 0 0 1px;bottom:0;margin:0 -1px}.fc .fc-timeline-events{position:relative;width:0;z-index:3}.fc .fc-timeline-event-harness,.fc .fc-timeline-more-link{position:absolute;top:0}.fc-timeline-event{z-index:1}.fc-timeline-event.fc-event-mirror{z-index:2}.fc-timeline-event{align-items:center;border-radius:0;display:flex;font-size:var(--fc-small-font-size);margin-bottom:1px;padding:2px 1px;position:relative}.fc-timeline-event .fc-event-main{flex-grow:1;flex-shrink:1;min-width:0}.fc-timeline-event .fc-event-time{font-weight:700}.fc-timeline-event .fc-event-time,.fc-timeline-event .fc-event-title{padding:0 2px;white-space:nowrap}.fc-direction-ltr .fc-timeline-event.fc-event-end,.fc-direction-ltr .fc-timeline-more-link{margin-right:1px}.fc-direction-rtl .fc-timeline-event.fc-event-end,.fc-direction-rtl .fc-timeline-more-link{margin-left:1px}.fc-timeline-overlap-disabled .fc-timeline-event{margin-bottom:0;padding-bottom:5px;padding-top:5px}.fc-timeline-event:not(.fc-event-end):after,.fc-timeline-event:not(.fc-event-start):before{border-color:transparent #000;border-style:solid;border-width:5px;content:\"\";flex-grow:0;flex-shrink:0;height:0;margin:0 1px;opacity:.5;width:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-start):before,.fc-direction-rtl .fc-timeline-event:not(.fc-event-end):after{border-left:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-end):after,.fc-direction-rtl .fc-timeline-event:not(.fc-event-start):before{border-right:0}.fc-timeline-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;font-size:var(--fc-small-font-size);padding:1px}.fc-timeline-more-link-inner{display:inline-block;left:0;padding:2px;right:0}.fc .fc-timeline-bg{bottom:0;left:0;position:absolute;right:0;top:0;width:0;z-index:2}.fc .fc-timeline-bg .fc-non-business{z-index:1}.fc .fc-timeline-bg .fc-bg-event{z-index:2}.fc .fc-timeline-bg .fc-highlight{z-index:3}.fc .fc-timeline-bg-harness{bottom:0;position:absolute;top:0}";
|
|
17
17
|
internal_cjs.injectStyles(css_248z);
|
|
18
18
|
|
|
19
19
|
var index = index_cjs.createPlugin({
|
|
20
20
|
name: '@fullcalendar/timeline',
|
|
21
|
-
premiumReleaseDate: '2022-12-
|
|
21
|
+
premiumReleaseDate: '2022-12-14',
|
|
22
22
|
deps: [premiumCommonPlugin__default["default"]],
|
|
23
23
|
initialView: 'timelineDay',
|
|
24
24
|
views: {
|
package/index.global.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
FullCalendar Timeline Plugin v6.0.0
|
|
3
|
-
Docs & License: https://fullcalendar.io/
|
|
2
|
+
FullCalendar Timeline Plugin v6.0.0
|
|
3
|
+
Docs & License: https://fullcalendar.io/docs/timeline-view-no-resources
|
|
4
4
|
(c) 2022 Adam Shaw
|
|
5
5
|
*/
|
|
6
6
|
FullCalendar.Timeline = (function (exports, internal$1, core, premiumCommonPlugin, preact, internal$2) {
|
|
@@ -994,6 +994,11 @@ FullCalendar.Timeline = (function (exports, internal$1, core, premiumCommonPlugi
|
|
|
994
994
|
eventInstanceHeights: {},
|
|
995
995
|
moreLinkHeights: {},
|
|
996
996
|
};
|
|
997
|
+
this.handleResize = (isForced) => {
|
|
998
|
+
if (isForced) {
|
|
999
|
+
this.updateSize();
|
|
1000
|
+
}
|
|
1001
|
+
};
|
|
997
1002
|
}
|
|
998
1003
|
render() {
|
|
999
1004
|
let { props, state, context } = this;
|
|
@@ -1019,6 +1024,7 @@ FullCalendar.Timeline = (function (exports, internal$1, core, premiumCommonPlugi
|
|
|
1019
1024
|
}
|
|
1020
1025
|
componentDidMount() {
|
|
1021
1026
|
this.updateSize();
|
|
1027
|
+
this.context.addResizeHandler(this.handleResize);
|
|
1022
1028
|
}
|
|
1023
1029
|
componentDidUpdate(prevProps, prevState) {
|
|
1024
1030
|
if (prevProps.eventStore !== this.props.eventStore || // external thing changed?
|
|
@@ -1028,6 +1034,9 @@ FullCalendar.Timeline = (function (exports, internal$1, core, premiumCommonPlugi
|
|
|
1028
1034
|
this.updateSize();
|
|
1029
1035
|
}
|
|
1030
1036
|
}
|
|
1037
|
+
componentWillUnmount() {
|
|
1038
|
+
this.context.removeResizeHandler(this.handleResize);
|
|
1039
|
+
}
|
|
1031
1040
|
updateSize() {
|
|
1032
1041
|
let { props } = this;
|
|
1033
1042
|
let { timelineCoords } = props;
|
|
@@ -1236,12 +1245,12 @@ FullCalendar.Timeline = (function (exports, internal$1, core, premiumCommonPlugi
|
|
|
1236
1245
|
}];
|
|
1237
1246
|
}
|
|
1238
1247
|
|
|
1239
|
-
var css_248z = "
|
|
1248
|
+
var css_248z = ".fc .fc-timeline-body{min-height:100%;position:relative;z-index:1}.fc .fc-timeline-slots{bottom:0;position:absolute;top:0;z-index:1}.fc .fc-timeline-slots>table{height:100%}.fc .fc-timeline-slot-minor{border-style:dotted}.fc .fc-timeline-slot-frame{align-items:center;display:flex;justify-content:center}.fc .fc-timeline-header-row-chrono .fc-timeline-slot-frame{justify-content:flex-start}.fc .fc-timeline-header-row:last-child .fc-timeline-slot-frame{overflow:hidden}.fc .fc-timeline-slot-cushion{padding:4px 5px;white-space:nowrap}.fc-direction-ltr .fc-timeline-slot{border-right:0!important}.fc-direction-rtl .fc-timeline-slot{border-left:0!important}.fc .fc-timeline-now-indicator-container{bottom:0;left:0;position:absolute;right:0;top:0;width:0;z-index:4}.fc .fc-timeline-now-indicator-arrow,.fc .fc-timeline-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;position:absolute;top:0}.fc .fc-timeline-now-indicator-arrow{border-left-color:transparent;border-right-color:transparent;border-width:6px 5px 0;margin:0 -6px}.fc .fc-timeline-now-indicator-line{border-width:0 0 0 1px;bottom:0;margin:0 -1px}.fc .fc-timeline-events{position:relative;width:0;z-index:3}.fc .fc-timeline-event-harness,.fc .fc-timeline-more-link{position:absolute;top:0}.fc-timeline-event{z-index:1}.fc-timeline-event.fc-event-mirror{z-index:2}.fc-timeline-event{align-items:center;border-radius:0;display:flex;font-size:var(--fc-small-font-size);margin-bottom:1px;padding:2px 1px;position:relative}.fc-timeline-event .fc-event-main{flex-grow:1;flex-shrink:1;min-width:0}.fc-timeline-event .fc-event-time{font-weight:700}.fc-timeline-event .fc-event-time,.fc-timeline-event .fc-event-title{padding:0 2px;white-space:nowrap}.fc-direction-ltr .fc-timeline-event.fc-event-end,.fc-direction-ltr .fc-timeline-more-link{margin-right:1px}.fc-direction-rtl .fc-timeline-event.fc-event-end,.fc-direction-rtl .fc-timeline-more-link{margin-left:1px}.fc-timeline-overlap-disabled .fc-timeline-event{margin-bottom:0;padding-bottom:5px;padding-top:5px}.fc-timeline-event:not(.fc-event-end):after,.fc-timeline-event:not(.fc-event-start):before{border-color:transparent #000;border-style:solid;border-width:5px;content:\"\";flex-grow:0;flex-shrink:0;height:0;margin:0 1px;opacity:.5;width:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-start):before,.fc-direction-rtl .fc-timeline-event:not(.fc-event-end):after{border-left:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-end):after,.fc-direction-rtl .fc-timeline-event:not(.fc-event-start):before{border-right:0}.fc-timeline-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;font-size:var(--fc-small-font-size);padding:1px}.fc-timeline-more-link-inner{display:inline-block;left:0;padding:2px;right:0}.fc .fc-timeline-bg{bottom:0;left:0;position:absolute;right:0;top:0;width:0;z-index:2}.fc .fc-timeline-bg .fc-non-business{z-index:1}.fc .fc-timeline-bg .fc-bg-event{z-index:2}.fc .fc-timeline-bg .fc-highlight{z-index:3}.fc .fc-timeline-bg-harness{bottom:0;position:absolute;top:0}";
|
|
1240
1249
|
internal$1.injectStyles(css_248z);
|
|
1241
1250
|
|
|
1242
1251
|
var plugin = core.createPlugin({
|
|
1243
1252
|
name: '@fullcalendar/timeline',
|
|
1244
|
-
premiumReleaseDate: '2022-12-
|
|
1253
|
+
premiumReleaseDate: '2022-12-14',
|
|
1245
1254
|
deps: [premiumCommonPlugin__default["default"]],
|
|
1246
1255
|
initialView: 'timelineDay',
|
|
1247
1256
|
views: {
|
package/index.global.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
FullCalendar Timeline Plugin v6.0.0
|
|
3
|
-
Docs & License: https://fullcalendar.io/
|
|
2
|
+
FullCalendar Timeline Plugin v6.0.0
|
|
3
|
+
Docs & License: https://fullcalendar.io/docs/timeline-view-no-resources
|
|
4
4
|
(c) 2022 Adam Shaw
|
|
5
5
|
*/
|
|
6
|
-
FullCalendar.Timeline=function(e,t,n,i,o,r){"use strict";function l(e){return e&&e.__esModule?e:{default:e}}var a=l(i);t.config.MAX_TIMELINE_SLOTS=1e3;const s=[{years:1},{months:1},{days:1},{hours:1},{minutes:30},{minutes:15},{minutes:10},{minutes:5},{minutes:1},{seconds:30},{seconds:15},{seconds:10},{seconds:5},{seconds:1},{milliseconds:500},{milliseconds:100},{milliseconds:10},{milliseconds:1}];function c(e,n,i,o){let r={labelInterval:i.slotLabelInterval,slotDuration:i.slotDuration};!function(e,n,i){const{currentRange:o}=n;if(e.labelInterval){i.countDurationsBetween(o.start,o.end,e.labelInterval)>t.config.MAX_TIMELINE_SLOTS&&(console.warn("slotLabelInterval results in too many cells"),e.labelInterval=null)}if(e.slotDuration){i.countDurationsBetween(o.start,o.end,e.slotDuration)>t.config.MAX_TIMELINE_SLOTS&&(console.warn("slotDuration results in too many cells"),e.slotDuration=null)}if(e.labelInterval&&e.slotDuration){const n=t.wholeDivideDurations(e.labelInterval,e.slotDuration);(null===n||n<1)&&(console.warn("slotLabelInterval must be a multiple of slotDuration"),e.slotDuration=null)}}(r,e,n),h(r,e,n),function(e,n,i){const{currentRange:o}=n;let{slotDuration:r}=e;if(!r){const l=h(e,n,i);for(let e of s){const n=t.createDuration(e),i=t.wholeDivideDurations(l,n);if(null!==i&&i>1&&i<=6){r=n;break}}if(r){i.countDurationsBetween(o.start,o.end,r)>200&&(r=null)}r||(r=l),e.slotDuration=r}}(r,e,n);let l=i.slotLabelFormat,a=Array.isArray(l)?l:null!=l?[l]:function(e,n,i,o){let r,l;const{labelInterval:a}=e;let s=t.greatestDurationDenominator(a).unit;const c=o.weekNumbers;let d=r=l=null;"week"!==s||c||(s="day");switch(s){case"year":d={year:"numeric"};break;case"month":f("years",n,i)>1&&(d={year:"numeric"}),r={month:"short"};break;case"week":f("years",n,i)>1&&(d={year:"numeric"}),r={week:"narrow"};break;case"day":f("years",n,i)>1?d={year:"numeric",month:"long"}:f("months",n,i)>1&&(d={month:"long"}),c&&(r={week:"short"}),l={weekday:"narrow",day:"numeric"};break;case"hour":c&&(d={week:"short"}),f("days",n,i)>1&&(r={weekday:"short",day:"numeric",month:"numeric",omitCommas:!0}),l={hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"};break;case"minute":t.asRoughMinutes(a)/60>=6?(d={hour:"numeric",meridiem:"short"},r=e=>":"+t.padStart(e.date.minute,2)):d={hour:"numeric",minute:"numeric",meridiem:"short"};break;case"second":t.asRoughSeconds(a)/60>=6?(d={hour:"numeric",minute:"2-digit",meridiem:"lowercase"},r=e=>":"+t.padStart(e.date.second,2)):d={hour:"numeric",minute:"2-digit",second:"2-digit",meridiem:"lowercase"};break;case"millisecond":d={hour:"numeric",minute:"2-digit",second:"2-digit",meridiem:"lowercase"},r=e=>"."+t.padStart(e.millisecond,3)}return[].concat(d||[],r||[],l||[])}(r,e,n,i);r.headerFormats=a.map(e=>t.createFormatter(e)),r.isTimeScale=Boolean(r.slotDuration.milliseconds);let c=null;if(!r.isTimeScale){const e=t.greatestDurationDenominator(r.slotDuration).unit;/year|month|week/.test(e)&&(c=e)}r.largeUnit=c,r.emphasizeWeeks=1===t.asCleanDays(r.slotDuration)&&f("weeks",e,n)>=2&&!i.businessHours;let g,p,v=i.snapDuration;v&&(g=t.createDuration(v),p=t.wholeDivideDurations(r.slotDuration,g)),null==p&&(g=r.slotDuration,p=1),r.snapDuration=g,r.snapsPerSlot=p;let D=t.asRoughMs(e.slotMaxTime)-t.asRoughMs(e.slotMinTime),S=d(e.renderRange.start,r,n),b=d(e.renderRange.end,r,n);r.isTimeScale&&(S=n.add(S,e.slotMinTime),b=n.add(t.addDays(b,-1),e.slotMaxTime)),r.timeWindowMs=D,r.normalizedRange={start:S,end:b};let w=[],y=S;for(;y<b;)m(y,r,e,o)&&w.push(y),y=n.add(y,r.slotDuration);r.slotDates=w;let C=-1,R=0;const E=[],x=[];for(y=S;y<b;)m(y,r,e,o)?(C+=1,E.push(C),x.push(R)):E.push(C+.5),y=n.add(y,r.snapDuration),R+=1;return r.snapDiffToIndex=E,r.snapIndexToDiff=x,r.snapCnt=C+1,r.slotCnt=r.snapCnt/r.snapsPerSlot,r.isWeekStarts=function(e,t){let{slotDates:n,emphasizeWeeks:i}=e,o=null,r=[];for(let e of n){let n=t.computeWeekNumber(e),l=i&&null!==o&&o!==n;o=n,r.push(l)}return r}(r,n),r.cellRows=function(e,n){let i=e.slotDates,o=e.headerFormats,r=o.map(()=>[]),l=t.asCleanDays(e.slotDuration),a=7===l?"week":1===l?"day":null,s=o.map(e=>e.getLargestUnit?e.getLargestUnit():null);for(let l=0;l<i.length;l+=1){let c=i[l],d=e.isWeekStarts[l];for(let i=0;i<o.length;i+=1){let l=o[i],m=r[i],h=m[m.length-1],f=i===o.length-1,g=o.length>1&&!f,p=null,v=s[i]||(f?a:null);if(g){let e=n.format(c,l);h&&h.text===e?h.colspan+=1:p=u(c,e,v)}else if(!h||t.isInt(n.countDurationsBetween(e.normalizedRange.start,c,e.labelInterval))){let e=n.format(c,l);p=u(c,e,v)}else h.colspan+=1;p&&(p.weekStart=d,m.push(p))}}return r}(r,n),r.slotsPerLabel=t.wholeDivideDurations(r.labelInterval,r.slotDuration),r}function d(e,n,i){let o=e;return n.isTimeScale||(o=t.startOfDay(o),n.largeUnit&&(o=i.startOf(o,n.largeUnit))),o}function m(e,n,i,o){if(o.isHiddenDay(e))return!1;if(n.isTimeScale){let o=t.startOfDay(e),r=e.valueOf()-o.valueOf()-t.asRoughMs(i.slotMinTime);return r=(r%864e5+864e5)%864e5,r<n.timeWindowMs}return!0}function h(e,n,i){const{currentRange:o}=n;let{labelInterval:r}=e;if(!r){let n;if(e.slotDuration){for(n of s){const i=t.createDuration(n),o=t.wholeDivideDurations(i,e.slotDuration);if(null!==o&&o<=6){r=i;break}}r||(r=e.slotDuration)}else for(n of s){r=t.createDuration(n);if(i.countDurationsBetween(o.start,o.end,r)>=18)break}e.labelInterval=r}return r}function f(e,n,i){let o=n.currentRange,r=null;return"years"===e?r=i.diffWholeYears(o.start,o.end):"months"===e||"weeks"===e?r=i.diffWholeMonths(o.start,o.end):"days"===e&&(r=t.diffWholeDays(o.start,o.end)),r||0}function u(e,t,n){return{date:e,text:t,rowUnit:n,colspan:1,isWeekStart:!1}}class g extends t.BaseComponent{constructor(){super(...arguments),this.refineRenderProps=t.memoizeObjArg(D),this.buildCellNavLinkAttrs=t.memoize(p)}render(){let{props:e,context:n}=this,{dateEnv:i,options:r}=n,{cell:l,dateProfile:a,tDateProfile:s}=e,c=t.getDateMeta(l.date,e.todayRange,e.nowDate,a),d=this.refineRenderProps({level:e.rowLevel,dateMarker:l.date,text:l.text,dateEnv:n.dateEnv,viewApi:n.viewApi});return o.createElement(t.ContentContainer,{elTag:"th",elClasses:["fc-timeline-slot","fc-timeline-slot-label",l.isWeekStart&&"fc-timeline-slot-em",..."time"===l.rowUnit?t.getSlotClassNames(c,n.theme):t.getDayClassNames(c,n.theme)],elAttrs:{colSpan:l.colspan,"data-date":i.formatIso(l.date,{omitTime:!s.isTimeScale,omitTimeZoneOffset:!0})},renderProps:d,generatorName:"slotLabelContent",generator:r.slotLabelContent||v,classNameGenerator:r.slotLabelClassNames,didMount:r.slotLabelDidMount,willUnmount:r.slotLabelWillUnmount},t=>o.createElement("div",{className:"fc-timeline-slot-frame",style:{height:e.rowInnerHeight}},o.createElement(t,{elTag:"a",elClasses:["fc-timeline-slot-cushion","fc-scrollgrid-sync-inner",e.isSticky&&"fc-sticky"],elAttrs:this.buildCellNavLinkAttrs(n,l.date,l.rowUnit)})))}}function p(e,n,i){return i&&"time"!==i?t.buildNavLinkAttrs(e,n,i):{}}function v(e){return e.text}function D(e){return{level:e.level,date:e.dateEnv.toDate(e.dateMarker),view:e.viewApi,text:e.text}}class S extends t.BaseComponent{render(){let{dateProfile:e,tDateProfile:t,rowInnerHeights:n,todayRange:i,nowDate:r}=this.props,{cellRows:l}=t;return o.createElement(o.Fragment,null,l.map((a,s)=>{let c=s===l.length-1,d=["fc-timeline-header-row",t.isTimeScale&&c?"fc-timeline-header-row-chrono":""];return o.createElement("tr",{key:s,className:d.join(" ")},a.map(l=>o.createElement(g,{key:l.date.toISOString(),cell:l,rowLevel:s,dateProfile:e,tDateProfile:t,todayRange:i,nowDate:r,rowInnerHeight:n&&n[s],isSticky:!c})))}))}}class b{constructor(e,n,i,o,r,l){this.slatRootEl=e,this.dateProfile=i,this.tDateProfile=o,this.dateEnv=r,this.isRtl=l,this.outerCoordCache=new t.PositionCache(e,n,!0,!1),this.innerCoordCache=new t.PositionCache(e,t.findDirectChildren(n,"div"),!0,!1)}isDateInRange(e){return t.rangeContainsMarker(this.dateProfile.currentRange,e)}dateToCoord(e){let{tDateProfile:t}=this,n=this.computeDateSnapCoverage(e)/t.snapsPerSlot,i=Math.floor(n);i=Math.min(i,t.slotCnt-1);let o=n-i,{innerCoordCache:r,outerCoordCache:l}=this;return this.isRtl?l.originClientRect.width-(l.rights[i]-r.getWidth(i)*o):l.lefts[i]+r.getWidth(i)*o}rangeToCoords(e){return{start:this.dateToCoord(e.start),end:this.dateToCoord(e.end)}}durationToCoord(e){let{dateProfile:n,tDateProfile:i,dateEnv:o,isRtl:r}=this,l=0;if(n){let a=o.add(n.activeRange.start,e);i.isTimeScale||(a=t.startOfDay(a)),l=this.dateToCoord(a),!r&&l&&(l+=1)}return l}coordFromLeft(e){return this.isRtl?this.outerCoordCache.originClientRect.width-e:e}computeDateSnapCoverage(e){return w(e,this.tDateProfile,this.dateEnv)}}function w(e,n,i){let o=i.countDurationsBetween(n.normalizedRange.start,e,n.snapDuration);if(o<0)return 0;if(o>=n.snapDiffToIndex.length)return n.snapCnt;let r=Math.floor(o),l=n.snapDiffToIndex[r];return t.isInt(l)?l+=o-r:l=Math.ceil(l),l}function y(e,t){return null===e?{left:"",right:""}:t?{right:e,left:""}:{left:e,right:""}}function C(e,t){return e?t?{right:e.start,left:-e.end}:{left:e.start,right:-e.end}:{left:"",right:""}}class R extends t.BaseComponent{constructor(){super(...arguments),this.rootElRef=o.createRef()}render(){let{props:e,context:n}=this,i=t.greatestDurationDenominator(e.tDateProfile.slotDuration).unit,r=e.slatCoords&&e.slatCoords.dateProfile===e.dateProfile?e.slatCoords:null;return o.createElement(t.NowTimer,{unit:i},(i,l)=>o.createElement("div",{className:"fc-timeline-header",ref:this.rootElRef},o.createElement("table",{"aria-hidden":!0,className:"fc-scrollgrid-sync-table",style:{minWidth:e.tableMinWidth,width:e.clientWidth}},e.tableColGroupNode,o.createElement("tbody",null,o.createElement(S,{dateProfile:e.dateProfile,tDateProfile:e.tDateProfile,nowDate:i,todayRange:l,rowInnerHeights:e.rowInnerHeights}))),n.options.nowIndicator&&o.createElement("div",{className:"fc-timeline-now-indicator-container"},r&&r.isDateInRange(i)&&o.createElement(t.NowIndicatorContainer,{elClasses:["fc-timeline-now-indicator-arrow"],elStyle:y(r.dateToCoord(i),n.isRtl),isAxis:!0,date:i}))))}componentDidMount(){this.updateSize()}componentDidUpdate(){this.updateSize()}updateSize(){this.props.onMaxCushionWidth&&this.props.onMaxCushionWidth(this.computeMaxCushionWidth())}computeMaxCushionWidth(){return Math.max(...t.findElements(this.rootElRef.current,".fc-timeline-header-row:last-child .fc-timeline-slot-cushion").map(e=>e.getBoundingClientRect().width))}}class E extends t.BaseComponent{render(){let{props:e,context:n}=this,{dateEnv:i,options:r,theme:l}=n,{date:a,tDateProfile:s,isEm:c}=e,d=t.getDateMeta(e.date,e.todayRange,e.nowDate,e.dateProfile),m=Object.assign(Object.assign({date:i.toDate(e.date)},d),{view:n.viewApi});return o.createElement(t.ContentContainer,{elTag:"td",elRef:e.elRef,elClasses:["fc-timeline-slot","fc-timeline-slot-lane",c&&"fc-timeline-slot-em",s.isTimeScale?t.isInt(i.countDurationsBetween(s.normalizedRange.start,e.date,s.labelInterval))?"fc-timeline-slot-major":"fc-timeline-slot-minor":"",...e.isDay?t.getDayClassNames(d,l):t.getSlotClassNames(d,l)],elAttrs:{"data-date":i.formatIso(a,{omitTimeZoneOffset:!0,omitTime:!s.isTimeScale})},renderProps:m,generatorName:"slotLaneContent",generator:r.slotLaneContent,classNameGenerator:r.slotLaneClassNames,didMount:r.slotLaneDidMount,willUnmount:r.slotLaneWillUnmount},e=>o.createElement(e,{elTag:"div"}))}}class x extends t.BaseComponent{render(){let{props:e}=this,{tDateProfile:t,cellElRefs:n}=e,{slotDates:i,isWeekStarts:r}=t,l=!t.isTimeScale&&!t.largeUnit;return o.createElement("tbody",null,o.createElement("tr",null,i.map((i,a)=>{let s=i.toISOString();return o.createElement(E,{key:s,elRef:n.createRef(s),date:i,dateProfile:e.dateProfile,tDateProfile:t,nowDate:e.nowDate,todayRange:e.todayRange,isEm:r[a],isDay:l})})))}}class k extends t.BaseComponent{constructor(){super(...arguments),this.rootElRef=o.createRef(),this.cellElRefs=new t.RefMap,this.handleScrollRequest=e=>{let{onScrollLeftRequest:t}=this.props,{coords:n}=this;if(t&&n){if(e.time){t(n.coordFromLeft(n.durationToCoord(e.time)))}return!0}return null}}render(){let{props:e,context:t}=this;return o.createElement("div",{className:"fc-timeline-slots",ref:this.rootElRef},o.createElement("table",{"aria-hidden":!0,className:t.theme.getClass("table"),style:{minWidth:e.tableMinWidth,width:e.clientWidth}},e.tableColGroupNode,o.createElement(x,{cellElRefs:this.cellElRefs,dateProfile:e.dateProfile,tDateProfile:e.tDateProfile,nowDate:e.nowDate,todayRange:e.todayRange})))}componentDidMount(){this.updateSizing(),this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)}componentDidUpdate(e){this.updateSizing(),this.scrollResponder.update(e.dateProfile!==this.props.dateProfile)}componentWillUnmount(){this.scrollResponder.detach(),this.props.onCoords&&this.props.onCoords(null)}updateSizing(){let{props:e,context:t}=this;if(null!==e.clientWidth&&this.scrollResponder){this.rootElRef.current.offsetWidth&&(this.coords=new b(this.rootElRef.current,(n=this.cellElRefs.currentMap,e.tDateProfile.slotDates.map(e=>{let t=e.toISOString();return n[t]})),e.dateProfile,e.tDateProfile,t.dateEnv,t.isRtl),e.onCoords&&e.onCoords(this.coords),this.scrollResponder.update(!1))}var n}positionToHit(e){let{outerCoordCache:n}=this.coords,{dateEnv:i,isRtl:o}=this.context,{tDateProfile:r}=this.props,l=n.leftToIndex(e);if(null!=l){let a=n.getWidth(l),s=o?(n.rights[l]-e)/a:(e-n.lefts[l])/a,c=Math.floor(s*r.snapsPerSlot),d=i.add(r.slotDates[l],t.multiplyDuration(r.snapDuration,c));return{dateSpan:{range:{start:d,end:i.add(d,r.snapDuration)},allDay:!this.props.tDateProfile.isTimeScale},dayEl:this.cellElRefs.currentMap[l],left:n.lefts[l],right:n.rights[l]}}return null}}function T(e,t,n){let i=[];if(n)for(let o of e){let e=n.rangeToCoords(o),r=Math.round(e.start),l=Math.round(e.end);l-r<t&&(l=r+t),i.push({start:r,end:l})}return i}class P extends t.BaseComponent{render(){let{props:e}=this,t=[].concat(e.eventResizeSegs,e.dateSelectionSegs);return e.timelineCoords&&o.createElement("div",{className:"fc-timeline-bg"},this.renderSegs(e.businessHourSegs||[],e.timelineCoords,"non-business"),this.renderSegs(e.bgEventSegs||[],e.timelineCoords,"bg-event"),this.renderSegs(t,e.timelineCoords,"highlight"))}renderSegs(e,n,i){let{todayRange:r,nowDate:l}=this.props,{isRtl:a}=this.context,s=T(e,0,n),c=e.map((e,n)=>{let c=C(s[n],a);return o.createElement("div",{key:t.buildEventRangeKey(e.eventRange),className:"fc-timeline-bg-harness",style:c},"bg-event"===i?o.createElement(t.BgEvent,Object.assign({seg:e},t.getSegMeta(e,r,l))):t.renderFill(i))});return o.createElement(o.Fragment,null,c)}}class M extends t.Slicer{sliceRange(e,n,i,o,r){let l=function(e,n,i){if(!n.isTimeScale&&(e=t.computeVisibleDayRange(e),n.largeUnit)){let t=e;((e={start:i.startOf(e.start,n.largeUnit),end:i.startOf(e.end,n.largeUnit)}).end.valueOf()!==t.end.valueOf()||e.end<=e.start)&&(e={start:e.start,end:i.add(e.end,n.slotDuration)})}return e}(e,o,r),a=[];if(w(l.start,o,r)<w(l.end,o,r)){let e=t.intersectRanges(l,o.normalizedRange);e&&a.push({start:e.start,end:e.end,isStart:e.start.valueOf()===l.start.valueOf()&&m(e.start,o,n,i),isEnd:e.end.valueOf()===l.end.valueOf()&&m(t.addMs(e.end,-1),o,n,i)})}return a}}const I=t.createFormatter({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"narrow"});class W extends t.BaseComponent{render(){let{props:e}=this;return o.createElement(t.StandardEvent,Object.assign({},e,{elClasses:["fc-timeline-event","fc-h-event"],defaultTimeFormat:I,defaultDisplayEventTime:!e.isTimeScale}))}}class O extends t.BaseComponent{render(){let{props:e,context:n}=this,{hiddenSegs:i,placement:r,resourceId:l}=e,{top:a,hcoords:s}=r,c=s&&null!==a,d=C(s,n.isRtl),m=l?{resourceId:l}:{};return o.createElement(t.MoreLinkContainer,{elRef:e.elRef,elClasses:["fc-timeline-more-link"],elStyle:Object.assign({visibility:c?"":"hidden",top:a||0},d),allDayDate:null,moreCnt:i.length,allSegs:i,hiddenSegs:i,dateProfile:e.dateProfile,todayRange:e.todayRange,extraDateSpan:m,popoverContent:()=>o.createElement(o.Fragment,null,i.map(n=>{let i=n.eventRange.instance.instanceId;return o.createElement("div",{key:i,style:{visibility:e.isForcedInvisible[i]?"hidden":""}},o.createElement(W,Object.assign({isTimeScale:e.isTimeScale,seg:n,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:i===e.eventSelection},t.getSegMeta(n,e.todayRange,e.nowDate))))}))},e=>o.createElement(e,{elTag:"div",elClasses:["fc-timeline-more-link-inner","fc-sticky"]}))}}class z extends t.BaseComponent{constructor(){super(...arguments),this.slicer=new M,this.sortEventSegs=t.memoize(t.sortEventSegs),this.harnessElRefs=new t.RefMap,this.moreElRefs=new t.RefMap,this.innerElRef=o.createRef(),this.state={eventInstanceHeights:{},moreLinkHeights:{}}}render(){let{props:e,state:n,context:i}=this,{options:r}=i,{dateProfile:l,tDateProfile:a}=e,s=this.slicer.sliceProps(e,l,a.isTimeScale?null:e.nextDayThreshold,i,l,i.dateProfileGenerator,a,i.dateEnv),c=(s.eventDrag?s.eventDrag.segs:null)||(s.eventResize?s.eventResize.segs:null)||[],d=this.sortEventSegs(s.fgEventSegs,r.eventOrder),m=T(d,r.eventMinWidth,e.timelineCoords),[h,f]=function(e,n,i,o,r,l){let a=[],s=[];for(let t=0;t<e.length;t+=1){let o=e[t],r=i[o.eventRange.instance.instanceId],l=n[t];r&&l?a.push({index:t,span:l,thickness:r}):s.push({seg:o,hcoords:l,top:null})}let c=new t.SegHierarchy;null!=r&&(c.strictOrder=r),null!=l&&(c.maxStackCnt=l);let d=c.addSegs(a),m=d.map(t=>({seg:e[t.index],hcoords:t.span,top:null})),h=t.groupIntersectingEntries(d),f=[],u=[];const g=t=>e[t.index];for(let n=0;n<h.length;n+=1){let i=h[n],r=i.entries.map(g),l=o[t.buildIsoString(t.computeEarliestSegStart(r))];null!=l?f.push({index:e.length+n,thickness:l,span:i.span}):u.push({seg:r,hcoords:i.span,top:null})}c.maxStackCnt=-1,c.addSegs(f);let p=c.toRects(),v=[],D=0;for(let t of p){let n=t.index;v.push({seg:n<e.length?e[n]:h[n-e.length].entries.map(g),hcoords:t.span,top:t.levelCoord}),D=Math.max(D,t.levelCoord+t.thickness)}return[v.concat(s,m,u),D]}(d,m,n.eventInstanceHeights,n.moreLinkHeights,r.eventOrderStrict,r.eventMaxStack),u=(s.eventDrag?s.eventDrag.affectedInstances:null)||(s.eventResize?s.eventResize.affectedInstances:null)||{};return o.createElement(o.Fragment,null,o.createElement(P,{businessHourSegs:s.businessHourSegs,bgEventSegs:s.bgEventSegs,timelineCoords:e.timelineCoords,eventResizeSegs:s.eventResize?s.eventResize.segs:[],dateSelectionSegs:s.dateSelectionSegs,nowDate:e.nowDate,todayRange:e.todayRange}),o.createElement("div",{className:"fc-timeline-events fc-scrollgrid-sync-inner",ref:this.innerElRef,style:{height:f}},this.renderFgSegs(h,u,!1,!1,!1),this.renderFgSegs(function(e,t,n){if(!e.length||!t)return[];let i=function(e){let t={};for(let n of e){let{seg:e}=n;Array.isArray(e)||(t[e.eventRange.instance.instanceId]=n.top)}return t}(n);return e.map(e=>({seg:e,hcoords:t.rangeToCoords(e),top:i[e.eventRange.instance.instanceId]}))}(c,e.timelineCoords,h),{},Boolean(s.eventDrag),Boolean(s.eventResize),!1)))}componentDidMount(){this.updateSize()}componentDidUpdate(e,t){e.eventStore===this.props.eventStore&&e.timelineCoords===this.props.timelineCoords&&t.moreLinkHeights===this.state.moreLinkHeights||this.updateSize()}updateSize(){let{props:e}=this,{timelineCoords:n}=e;const i=this.innerElRef.current;e.onHeightChange&&e.onHeightChange(i,!1),n&&this.setState({eventInstanceHeights:t.mapHash(this.harnessElRefs.currentMap,e=>Math.round(e.getBoundingClientRect().height)),moreLinkHeights:t.mapHash(this.moreElRefs.currentMap,e=>Math.round(e.getBoundingClientRect().height))},()=>{e.onHeightChange&&e.onHeightChange(i,!0)}),e.syncParentMinHeight&&(i.parentElement.style.minHeight=i.style.height)}renderFgSegs(e,n,i,r,l){let{harnessElRefs:a,moreElRefs:s,props:c,context:d}=this,m=i||r||l;return o.createElement(o.Fragment,null,e.map(e=>{let{seg:h,hcoords:f,top:u}=e;if(Array.isArray(h)){let i=t.buildIsoString(t.computeEarliestSegStart(h));return o.createElement(O,{key:"m:"+i,elRef:s.createRef(i),hiddenSegs:h,placement:e,dateProfile:c.dateProfile,nowDate:c.nowDate,todayRange:c.todayRange,isTimeScale:c.tDateProfile.isTimeScale,eventSelection:c.eventSelection,resourceId:c.resourceId,isForcedInvisible:n})}let g=h.eventRange.instance.instanceId,p=m||Boolean(!n[g]&&f&&null!==u),v=C(f,d.isRtl);return o.createElement("div",{key:"e:"+g,ref:m?null:a.createRef(g),className:"fc-timeline-event-harness",style:Object.assign({visibility:p?"":"hidden",top:u||0},v)},o.createElement(W,Object.assign({isTimeScale:c.tDateProfile.isTimeScale,seg:h,isDragging:i,isResizing:r,isDateSelecting:l,isSelected:g===c.eventSelection},t.getSegMeta(h,c.todayRange,c.nowDate))))}))}}z.addStateEquality({eventInstanceHeights:t.isPropsEqual,moreLinkHeights:t.isPropsEqual});class L extends t.DateComponent{constructor(){super(...arguments),this.slatsRef=o.createRef(),this.state={coords:null},this.handeEl=e=>{e?this.context.registerInteractiveComponent(this,{el:e}):this.context.unregisterInteractiveComponent(this)},this.handleCoords=e=>{this.setState({coords:e}),this.props.onSlatCoords&&this.props.onSlatCoords(e)}}render(){let{props:e,state:n,context:i}=this,{options:r}=i,{dateProfile:l,tDateProfile:a}=e,s=t.greatestDurationDenominator(a.slotDuration).unit;return o.createElement("div",{className:"fc-timeline-body",ref:this.handeEl,style:{minWidth:e.tableMinWidth,height:e.clientHeight,width:e.clientWidth}},o.createElement(t.NowTimer,{unit:s},(s,c)=>o.createElement(o.Fragment,null,o.createElement(k,{ref:this.slatsRef,dateProfile:l,tDateProfile:a,nowDate:s,todayRange:c,clientWidth:e.clientWidth,tableColGroupNode:e.tableColGroupNode,tableMinWidth:e.tableMinWidth,onCoords:this.handleCoords,onScrollLeftRequest:e.onScrollLeftRequest}),o.createElement(z,{dateProfile:l,tDateProfile:e.tDateProfile,nowDate:s,todayRange:c,nextDayThreshold:r.nextDayThreshold,businessHours:e.businessHours,eventStore:e.eventStore,eventUiBases:e.eventUiBases,dateSelection:e.dateSelection,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,timelineCoords:n.coords,syncParentMinHeight:!0}),r.nowIndicator&&n.coords&&n.coords.isDateInRange(s)&&o.createElement("div",{className:"fc-timeline-now-indicator-container"},o.createElement(t.NowIndicatorContainer,{elClasses:["fc-timeline-now-indicator-line"],elStyle:y(n.coords.dateToCoord(s),i.isRtl),isAxis:!1,date:s})))))}queryHit(e,t,n,i){let o=this.slatsRef.current.positionToHit(e);return o?{dateProfile:this.props.dateProfile,dateSpan:o.dateSpan,rect:{left:o.left,right:o.right,top:0,bottom:i},dayEl:o.dayEl,layer:0}:null}}class N extends t.DateComponent{constructor(){super(...arguments),this.buildTimelineDateProfile=t.memoize(c),this.scrollGridRef=o.createRef(),this.state={slatCoords:null,slotCushionMaxWidth:null},this.handleSlatCoords=e=>{this.setState({slatCoords:e})},this.handleScrollLeftRequest=e=>{this.scrollGridRef.current.forceScrollLeft(0,e)},this.handleMaxCushionWidth=e=>{this.setState({slotCushionMaxWidth:Math.ceil(e)})}}render(){let{props:e,state:n,context:i}=this,{options:l}=i,a=!e.forPrint&&t.getStickyHeaderDates(l),s=!e.forPrint&&t.getStickyFooterScrollbar(l),c=this.buildTimelineDateProfile(e.dateProfile,i.dateEnv,l,i.dateProfileGenerator),{slotMinWidth:d}=l,m=H(c,d||this.computeFallbackSlotMinWidth(c)),h=[{type:"header",key:"header",isSticky:a,chunks:[{key:"timeline",content:t=>o.createElement(R,{dateProfile:e.dateProfile,clientWidth:t.clientWidth,clientHeight:t.clientHeight,tableMinWidth:t.tableMinWidth,tableColGroupNode:t.tableColGroupNode,tDateProfile:c,slatCoords:n.slatCoords,onMaxCushionWidth:d?null:this.handleMaxCushionWidth})}]},{type:"body",key:"body",liquid:!0,chunks:[{key:"timeline",content:t=>o.createElement(L,Object.assign({},e,{clientWidth:t.clientWidth,clientHeight:t.clientHeight,tableMinWidth:t.tableMinWidth,tableColGroupNode:t.tableColGroupNode,tDateProfile:c,onSlatCoords:this.handleSlatCoords,onScrollLeftRequest:this.handleScrollLeftRequest}))}]}];return s&&h.push({type:"footer",key:"footer",isSticky:!0,chunks:[{key:"timeline",content:t.renderScrollShim}]}),o.createElement(t.ViewContainer,{elClasses:["fc-timeline",!1===l.eventOverlap?"fc-timeline-overlap-disabled":""],viewSpec:i.viewSpec},o.createElement(r.ScrollGrid,{ref:this.scrollGridRef,liquid:!e.isHeightAuto&&!e.forPrint,collapsibleWidth:!1,colGroups:[{cols:m}],sections:h}))}computeFallbackSlotMinWidth(e){return Math.max(30,(this.state.slotCushionMaxWidth||0)/e.slotsPerLabel)}}function H(e,t){return[{span:e.slotCnt,minWidth:t||1}]}t.injectStyles("\n\n .fc .fc-timeline-body {\n min-height: 100%;\n position: relative;\n z-index: 1; /* scope slots, bg, etc */\n }\n/*\nvertical slots in both the header AND the body\n*/\n.fc .fc-timeline-slots {\n position: absolute;\n z-index: 1;\n top: 0;\n bottom: 0\n }\n.fc .fc-timeline-slots > table {\n height: 100%;\n }\n.fc {\n\n /* border for both header AND body cells */\n\n}\n.fc .fc-timeline-slot-minor {\n border-style: dotted;\n }\n.fc {\n\n /* header cells (aka \"label\") */\n\n}\n.fc .fc-timeline-slot-frame {\n display: flex;\n align-items: center; /* vertical align */\n justify-content: center; /* horizontal align */\n }\n.fc .fc-timeline-header-row-chrono { /* a row of times */\n }\n.fc .fc-timeline-header-row-chrono .fc-timeline-slot-frame {\n justify-content: flex-start; /* horizontal align left or right */\n }\n.fc .fc-timeline-header-row:last-child { /* guaranteed NOT to have sticky elements */\n }\n.fc .fc-timeline-header-row:last-child .fc-timeline-slot-frame {\n /* so text doesn't bleed out and cause extra scroll */\n /* (won't work with sticky elements) */\n overflow: hidden;\n }\n.fc .fc-timeline-slot-cushion {\n padding: 4px 5px; /* TODO: unify with fc-col-header? */\n white-space: nowrap;\n }\n.fc {\n\n /* NOTE: how does the top row of cells get horizontally centered? */\n /* for the non-chrono-row, the fc-sticky system looks for text-align center, */\n /* and it's a fluke that the default browser stylesheet already does this for <th> */\n /* TODO: have StickyScrolling look at natural left coord to detect centeredness. */\n\n}\n/* only owns one side, so can do dotted */\n.fc-direction-ltr .fc-timeline-slot { border-right: 0 !important }\n.fc-direction-rtl .fc-timeline-slot { border-left: 0 !important }\n.fc .fc-timeline-now-indicator-container {\n position: absolute;\n z-index: 4;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 0;\n }\n.fc .fc-timeline-now-indicator-arrow,\n .fc .fc-timeline-now-indicator-line {\n position: absolute;\n top: 0;\n border-style: solid;\n border-color: var(--fc-now-indicator-color);\n }\n.fc .fc-timeline-now-indicator-arrow {\n margin: 0 -6px; /* 5, then one more to counteract scroller's negative margins */\n\n /* triangle pointing down. TODO: mixin */\n border-width: 6px 5px 0 5px;\n border-left-color: transparent;\n border-right-color: transparent;\n }\n.fc .fc-timeline-now-indicator-line {\n margin: 0 -1px; /* counteract scroller's negative margins */\n bottom: 0;\n border-width: 0 0 0 1px;\n }\n.fc {\n\n /* container */\n\n}\n.fc .fc-timeline-events {\n position: relative;\n z-index: 3;\n width: 0; /* for event positioning. will end up on correct side based on dir */\n }\n.fc {\n\n /* harness */\n\n}\n.fc .fc-timeline-event-harness,\n .fc .fc-timeline-more-link {\n position: absolute;\n top: 0; /* for when when top can't be computed yet */\n /* JS will set tht left/right */\n }\n/* z-index, scoped within fc-timeline-events */\n.fc-timeline-event { z-index: 1 }\n.fc-timeline-event.fc-event-mirror { z-index: 2 }\n.fc-timeline-event {\n position: relative; /* contains things. TODO: make part of fc-h-event and fc-v-event */\n display: flex; /* for v-aligning start/end arrows and making fc-event-main stretch all the way */\n align-items: center;\n border-radius: 0;\n padding: 2px 1px;\n margin-bottom: 1px;\n font-size: var(--fc-small-font-size)\n\n /* time and title spacing */\n /* ---------------------------------------------------------------------------------------------------- */\n}\n.fc-timeline-event .fc-event-main {\n flex-grow: 1;\n flex-shrink: 1;\n min-width: 0; /* important for allowing to shrink all the way */\n }\n.fc-timeline-event .fc-event-time {\n font-weight: bold;\n }\n.fc-timeline-event .fc-event-time,\n .fc-timeline-event .fc-event-title {\n white-space: nowrap;\n padding: 0 2px;\n }\n/* move 1px away from slot line */\n.fc-direction-ltr .fc-timeline-event.fc-event-end,\n .fc-direction-ltr .fc-timeline-more-link {\n margin-right: 1px;\n }\n.fc-direction-rtl .fc-timeline-event.fc-event-end,\n .fc-direction-rtl .fc-timeline-more-link {\n margin-left: 1px;\n }\n/* make event beefier when overlap not allowed */\n.fc-timeline-overlap-disabled .fc-timeline-event {\n padding-top: 5px;\n padding-bottom: 5px;\n margin-bottom: 0;\n}\n/* arrows indicating the event continues into past/future */\n/* ---------------------------------------------------------------------------------------------------- */\n/* part of the flexbox flow */\n.fc-timeline-event:not(.fc-event-start):before,\n.fc-timeline-event:not(.fc-event-end):after {\n content: \"\";\n flex-grow: 0;\n flex-shrink: 0;\n opacity: .5;\n\n /* triangle. TODO: mixin */\n width: 0;\n height: 0;\n margin: 0 1px;\n border: 5px solid #000; /* TODO: var */\n border-top-color: transparent;\n border-bottom-color: transparent;\n}\n/* pointing left */\n.fc-direction-ltr .fc-timeline-event:not(.fc-event-start):before,\n.fc-direction-rtl .fc-timeline-event:not(.fc-event-end):after {\n border-left: 0;\n}\n/* pointing right */\n.fc-direction-ltr .fc-timeline-event:not(.fc-event-end):after,\n.fc-direction-rtl .fc-timeline-event:not(.fc-event-start):before {\n border-right: 0;\n}\n/* +more events indicator */\n/* ---------------------------------------------------------------------------------------------------- */\n.fc-timeline-more-link {\n font-size: var(--fc-small-font-size);\n color: var(--fc-more-link-text-color);\n background: var(--fc-more-link-bg-color);\n padding: 1px;\n cursor: pointer;\n}\n.fc-timeline-more-link-inner { /* has fc-sticky */\n display: inline-block;\n left: 0;\n right: 0;\n padding: 2px;\n}\n.fc .fc-timeline-bg { /* a container for bg content */\n position: absolute;\n z-index: 2;\n top: 0;\n bottom: 0;\n width: 0;\n left: 0; /* will take precedence when LTR */\n right: 0; /* will take precedence when RTL */ /* TODO: kill */\n }\n.fc .fc-timeline-bg .fc-non-business { z-index: 1 }\n.fc .fc-timeline-bg .fc-bg-event { z-index: 2 }\n.fc .fc-timeline-bg .fc-highlight { z-index: 3 }\n.fc .fc-timeline-bg-harness {\n position: absolute;\n top: 0;\n bottom: 0;\n }\n\n");var F=n.createPlugin({name:"@fullcalendar/timeline",premiumReleaseDate:"2022-12-07",deps:[a.default],initialView:"timelineDay",views:{timeline:{component:N,usesMinMaxTime:!0,eventResizableFromStart:!0},timelineDay:{type:"timeline",duration:{days:1}},timelineWeek:{type:"timeline",duration:{weeks:1}},timelineMonth:{type:"timeline",duration:{months:1}},timelineYear:{type:"timeline",duration:{years:1}}}}),B={__proto__:null,TimelineView:N,buildSlatCols:H,TimelineLane:z,TimelineLaneBg:P,TimelineHeader:R,TimelineSlats:k,buildTimelineDateProfile:c,TimelineCoords:b,coordToCss:y,coordsToCss:C,TimelineLaneSlicer:M,TimelineHeaderRows:S};return t.globalPlugins.push(F),e.Internal=B,e.default=F,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar.Internal,FullCalendar,FullCalendar.PremiumCommon,FullCalendar.Preact,FullCalendar.ScrollGrid.Internal);
|
|
6
|
+
FullCalendar.Timeline=function(e,t,n,i,o,r){"use strict";function l(e){return e&&e.__esModule?e:{default:e}}var s=l(i);t.config.MAX_TIMELINE_SLOTS=1e3;const a=[{years:1},{months:1},{days:1},{hours:1},{minutes:30},{minutes:15},{minutes:10},{minutes:5},{minutes:1},{seconds:30},{seconds:15},{seconds:10},{seconds:5},{seconds:1},{milliseconds:500},{milliseconds:100},{milliseconds:10},{milliseconds:1}];function d(e,n,i,o){let r={labelInterval:i.slotLabelInterval,slotDuration:i.slotDuration};!function(e,n,i){const{currentRange:o}=n;if(e.labelInterval){i.countDurationsBetween(o.start,o.end,e.labelInterval)>t.config.MAX_TIMELINE_SLOTS&&(console.warn("slotLabelInterval results in too many cells"),e.labelInterval=null)}if(e.slotDuration){i.countDurationsBetween(o.start,o.end,e.slotDuration)>t.config.MAX_TIMELINE_SLOTS&&(console.warn("slotDuration results in too many cells"),e.slotDuration=null)}if(e.labelInterval&&e.slotDuration){const n=t.wholeDivideDurations(e.labelInterval,e.slotDuration);(null===n||n<1)&&(console.warn("slotLabelInterval must be a multiple of slotDuration"),e.slotDuration=null)}}(r,e,n),u(r,e,n),function(e,n,i){const{currentRange:o}=n;let{slotDuration:r}=e;if(!r){const l=u(e,n,i);for(let e of a){const n=t.createDuration(e),i=t.wholeDivideDurations(l,n);if(null!==i&&i>1&&i<=6){r=n;break}}if(r){i.countDurationsBetween(o.start,o.end,r)>200&&(r=null)}r||(r=l),e.slotDuration=r}}(r,e,n);let l=i.slotLabelFormat,s=Array.isArray(l)?l:null!=l?[l]:function(e,n,i,o){let r,l;const{labelInterval:s}=e;let a=t.greatestDurationDenominator(s).unit;const d=o.weekNumbers;let c=r=l=null;"week"!==a||d||(a="day");switch(a){case"year":c={year:"numeric"};break;case"month":h("years",n,i)>1&&(c={year:"numeric"}),r={month:"short"};break;case"week":h("years",n,i)>1&&(c={year:"numeric"}),r={week:"narrow"};break;case"day":h("years",n,i)>1?c={year:"numeric",month:"long"}:h("months",n,i)>1&&(c={month:"long"}),d&&(r={week:"short"}),l={weekday:"narrow",day:"numeric"};break;case"hour":d&&(c={week:"short"}),h("days",n,i)>1&&(r={weekday:"short",day:"numeric",month:"numeric",omitCommas:!0}),l={hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"};break;case"minute":t.asRoughMinutes(s)/60>=6?(c={hour:"numeric",meridiem:"short"},r=e=>":"+t.padStart(e.date.minute,2)):c={hour:"numeric",minute:"numeric",meridiem:"short"};break;case"second":t.asRoughSeconds(s)/60>=6?(c={hour:"numeric",minute:"2-digit",meridiem:"lowercase"},r=e=>":"+t.padStart(e.date.second,2)):c={hour:"numeric",minute:"2-digit",second:"2-digit",meridiem:"lowercase"};break;case"millisecond":c={hour:"numeric",minute:"2-digit",second:"2-digit",meridiem:"lowercase"},r=e=>"."+t.padStart(e.millisecond,3)}return[].concat(c||[],r||[],l||[])}(r,e,n,i);r.headerFormats=s.map(e=>t.createFormatter(e)),r.isTimeScale=Boolean(r.slotDuration.milliseconds);let d=null;if(!r.isTimeScale){const e=t.greatestDurationDenominator(r.slotDuration).unit;/year|month|week/.test(e)&&(d=e)}r.largeUnit=d,r.emphasizeWeeks=1===t.asCleanDays(r.slotDuration)&&h("weeks",e,n)>=2&&!i.businessHours;let g,p,v=i.snapDuration;v&&(g=t.createDuration(v),p=t.wholeDivideDurations(r.slotDuration,g)),null==p&&(g=r.slotDuration,p=1),r.snapDuration=g,r.snapsPerSlot=p;let D=t.asRoughMs(e.slotMaxTime)-t.asRoughMs(e.slotMinTime),S=c(e.renderRange.start,r,n),b=c(e.renderRange.end,r,n);r.isTimeScale&&(S=n.add(S,e.slotMinTime),b=n.add(t.addDays(b,-1),e.slotMaxTime)),r.timeWindowMs=D,r.normalizedRange={start:S,end:b};let C=[],R=S;for(;R<b;)m(R,r,e,o)&&C.push(R),R=n.add(R,r.slotDuration);r.slotDates=C;let y=-1,w=0;const E=[],x=[];for(R=S;R<b;)m(R,r,e,o)?(y+=1,E.push(y),x.push(w)):E.push(y+.5),R=n.add(R,r.snapDuration),w+=1;return r.snapDiffToIndex=E,r.snapIndexToDiff=x,r.snapCnt=y+1,r.slotCnt=r.snapCnt/r.snapsPerSlot,r.isWeekStarts=function(e,t){let{slotDates:n,emphasizeWeeks:i}=e,o=null,r=[];for(let e of n){let n=t.computeWeekNumber(e),l=i&&null!==o&&o!==n;o=n,r.push(l)}return r}(r,n),r.cellRows=function(e,n){let i=e.slotDates,o=e.headerFormats,r=o.map(()=>[]),l=t.asCleanDays(e.slotDuration),s=7===l?"week":1===l?"day":null,a=o.map(e=>e.getLargestUnit?e.getLargestUnit():null);for(let l=0;l<i.length;l+=1){let d=i[l],c=e.isWeekStarts[l];for(let i=0;i<o.length;i+=1){let l=o[i],m=r[i],u=m[m.length-1],h=i===o.length-1,g=o.length>1&&!h,p=null,v=a[i]||(h?s:null);if(g){let e=n.format(d,l);u&&u.text===e?u.colspan+=1:p=f(d,e,v)}else if(!u||t.isInt(n.countDurationsBetween(e.normalizedRange.start,d,e.labelInterval))){let e=n.format(d,l);p=f(d,e,v)}else u.colspan+=1;p&&(p.weekStart=c,m.push(p))}}return r}(r,n),r.slotsPerLabel=t.wholeDivideDurations(r.labelInterval,r.slotDuration),r}function c(e,n,i){let o=e;return n.isTimeScale||(o=t.startOfDay(o),n.largeUnit&&(o=i.startOf(o,n.largeUnit))),o}function m(e,n,i,o){if(o.isHiddenDay(e))return!1;if(n.isTimeScale){let o=t.startOfDay(e),r=e.valueOf()-o.valueOf()-t.asRoughMs(i.slotMinTime);return r=(r%864e5+864e5)%864e5,r<n.timeWindowMs}return!0}function u(e,n,i){const{currentRange:o}=n;let{labelInterval:r}=e;if(!r){let n;if(e.slotDuration){for(n of a){const i=t.createDuration(n),o=t.wholeDivideDurations(i,e.slotDuration);if(null!==o&&o<=6){r=i;break}}r||(r=e.slotDuration)}else for(n of a){r=t.createDuration(n);if(i.countDurationsBetween(o.start,o.end,r)>=18)break}e.labelInterval=r}return r}function h(e,n,i){let o=n.currentRange,r=null;return"years"===e?r=i.diffWholeYears(o.start,o.end):"months"===e||"weeks"===e?r=i.diffWholeMonths(o.start,o.end):"days"===e&&(r=t.diffWholeDays(o.start,o.end)),r||0}function f(e,t,n){return{date:e,text:t,rowUnit:n,colspan:1,isWeekStart:!1}}class g extends t.BaseComponent{constructor(){super(...arguments),this.refineRenderProps=t.memoizeObjArg(D),this.buildCellNavLinkAttrs=t.memoize(p)}render(){let{props:e,context:n}=this,{dateEnv:i,options:r}=n,{cell:l,dateProfile:s,tDateProfile:a}=e,d=t.getDateMeta(l.date,e.todayRange,e.nowDate,s),c=this.refineRenderProps({level:e.rowLevel,dateMarker:l.date,text:l.text,dateEnv:n.dateEnv,viewApi:n.viewApi});return o.createElement(t.ContentContainer,{elTag:"th",elClasses:["fc-timeline-slot","fc-timeline-slot-label",l.isWeekStart&&"fc-timeline-slot-em",..."time"===l.rowUnit?t.getSlotClassNames(d,n.theme):t.getDayClassNames(d,n.theme)],elAttrs:{colSpan:l.colspan,"data-date":i.formatIso(l.date,{omitTime:!a.isTimeScale,omitTimeZoneOffset:!0})},renderProps:c,generatorName:"slotLabelContent",generator:r.slotLabelContent||v,classNameGenerator:r.slotLabelClassNames,didMount:r.slotLabelDidMount,willUnmount:r.slotLabelWillUnmount},t=>o.createElement("div",{className:"fc-timeline-slot-frame",style:{height:e.rowInnerHeight}},o.createElement(t,{elTag:"a",elClasses:["fc-timeline-slot-cushion","fc-scrollgrid-sync-inner",e.isSticky&&"fc-sticky"],elAttrs:this.buildCellNavLinkAttrs(n,l.date,l.rowUnit)})))}}function p(e,n,i){return i&&"time"!==i?t.buildNavLinkAttrs(e,n,i):{}}function v(e){return e.text}function D(e){return{level:e.level,date:e.dateEnv.toDate(e.dateMarker),view:e.viewApi,text:e.text}}class S extends t.BaseComponent{render(){let{dateProfile:e,tDateProfile:t,rowInnerHeights:n,todayRange:i,nowDate:r}=this.props,{cellRows:l}=t;return o.createElement(o.Fragment,null,l.map((s,a)=>{let d=a===l.length-1,c=["fc-timeline-header-row",t.isTimeScale&&d?"fc-timeline-header-row-chrono":""];return o.createElement("tr",{key:a,className:c.join(" ")},s.map(l=>o.createElement(g,{key:l.date.toISOString(),cell:l,rowLevel:a,dateProfile:e,tDateProfile:t,todayRange:i,nowDate:r,rowInnerHeight:n&&n[a],isSticky:!d})))}))}}class b{constructor(e,n,i,o,r,l){this.slatRootEl=e,this.dateProfile=i,this.tDateProfile=o,this.dateEnv=r,this.isRtl=l,this.outerCoordCache=new t.PositionCache(e,n,!0,!1),this.innerCoordCache=new t.PositionCache(e,t.findDirectChildren(n,"div"),!0,!1)}isDateInRange(e){return t.rangeContainsMarker(this.dateProfile.currentRange,e)}dateToCoord(e){let{tDateProfile:t}=this,n=this.computeDateSnapCoverage(e)/t.snapsPerSlot,i=Math.floor(n);i=Math.min(i,t.slotCnt-1);let o=n-i,{innerCoordCache:r,outerCoordCache:l}=this;return this.isRtl?l.originClientRect.width-(l.rights[i]-r.getWidth(i)*o):l.lefts[i]+r.getWidth(i)*o}rangeToCoords(e){return{start:this.dateToCoord(e.start),end:this.dateToCoord(e.end)}}durationToCoord(e){let{dateProfile:n,tDateProfile:i,dateEnv:o,isRtl:r}=this,l=0;if(n){let s=o.add(n.activeRange.start,e);i.isTimeScale||(s=t.startOfDay(s)),l=this.dateToCoord(s),!r&&l&&(l+=1)}return l}coordFromLeft(e){return this.isRtl?this.outerCoordCache.originClientRect.width-e:e}computeDateSnapCoverage(e){return C(e,this.tDateProfile,this.dateEnv)}}function C(e,n,i){let o=i.countDurationsBetween(n.normalizedRange.start,e,n.snapDuration);if(o<0)return 0;if(o>=n.snapDiffToIndex.length)return n.snapCnt;let r=Math.floor(o),l=n.snapDiffToIndex[r];return t.isInt(l)?l+=o-r:l=Math.ceil(l),l}function R(e,t){return null===e?{left:"",right:""}:t?{right:e,left:""}:{left:e,right:""}}function y(e,t){return e?t?{right:e.start,left:-e.end}:{left:e.start,right:-e.end}:{left:"",right:""}}class w extends t.BaseComponent{constructor(){super(...arguments),this.rootElRef=o.createRef()}render(){let{props:e,context:n}=this,i=t.greatestDurationDenominator(e.tDateProfile.slotDuration).unit,r=e.slatCoords&&e.slatCoords.dateProfile===e.dateProfile?e.slatCoords:null;return o.createElement(t.NowTimer,{unit:i},(i,l)=>o.createElement("div",{className:"fc-timeline-header",ref:this.rootElRef},o.createElement("table",{"aria-hidden":!0,className:"fc-scrollgrid-sync-table",style:{minWidth:e.tableMinWidth,width:e.clientWidth}},e.tableColGroupNode,o.createElement("tbody",null,o.createElement(S,{dateProfile:e.dateProfile,tDateProfile:e.tDateProfile,nowDate:i,todayRange:l,rowInnerHeights:e.rowInnerHeights}))),n.options.nowIndicator&&o.createElement("div",{className:"fc-timeline-now-indicator-container"},r&&r.isDateInRange(i)&&o.createElement(t.NowIndicatorContainer,{elClasses:["fc-timeline-now-indicator-arrow"],elStyle:R(r.dateToCoord(i),n.isRtl),isAxis:!0,date:i}))))}componentDidMount(){this.updateSize()}componentDidUpdate(){this.updateSize()}updateSize(){this.props.onMaxCushionWidth&&this.props.onMaxCushionWidth(this.computeMaxCushionWidth())}computeMaxCushionWidth(){return Math.max(...t.findElements(this.rootElRef.current,".fc-timeline-header-row:last-child .fc-timeline-slot-cushion").map(e=>e.getBoundingClientRect().width))}}class E extends t.BaseComponent{render(){let{props:e,context:n}=this,{dateEnv:i,options:r,theme:l}=n,{date:s,tDateProfile:a,isEm:d}=e,c=t.getDateMeta(e.date,e.todayRange,e.nowDate,e.dateProfile),m=Object.assign(Object.assign({date:i.toDate(e.date)},c),{view:n.viewApi});return o.createElement(t.ContentContainer,{elTag:"td",elRef:e.elRef,elClasses:["fc-timeline-slot","fc-timeline-slot-lane",d&&"fc-timeline-slot-em",a.isTimeScale?t.isInt(i.countDurationsBetween(a.normalizedRange.start,e.date,a.labelInterval))?"fc-timeline-slot-major":"fc-timeline-slot-minor":"",...e.isDay?t.getDayClassNames(c,l):t.getSlotClassNames(c,l)],elAttrs:{"data-date":i.formatIso(s,{omitTimeZoneOffset:!0,omitTime:!a.isTimeScale})},renderProps:m,generatorName:"slotLaneContent",generator:r.slotLaneContent,classNameGenerator:r.slotLaneClassNames,didMount:r.slotLaneDidMount,willUnmount:r.slotLaneWillUnmount},e=>o.createElement(e,{elTag:"div"}))}}class x extends t.BaseComponent{render(){let{props:e}=this,{tDateProfile:t,cellElRefs:n}=e,{slotDates:i,isWeekStarts:r}=t,l=!t.isTimeScale&&!t.largeUnit;return o.createElement("tbody",null,o.createElement("tr",null,i.map((i,s)=>{let a=i.toISOString();return o.createElement(E,{key:a,elRef:n.createRef(a),date:i,dateProfile:e.dateProfile,tDateProfile:t,nowDate:e.nowDate,todayRange:e.todayRange,isEm:r[s],isDay:l})})))}}class k extends t.BaseComponent{constructor(){super(...arguments),this.rootElRef=o.createRef(),this.cellElRefs=new t.RefMap,this.handleScrollRequest=e=>{let{onScrollLeftRequest:t}=this.props,{coords:n}=this;if(t&&n){if(e.time){t(n.coordFromLeft(n.durationToCoord(e.time)))}return!0}return null}}render(){let{props:e,context:t}=this;return o.createElement("div",{className:"fc-timeline-slots",ref:this.rootElRef},o.createElement("table",{"aria-hidden":!0,className:t.theme.getClass("table"),style:{minWidth:e.tableMinWidth,width:e.clientWidth}},e.tableColGroupNode,o.createElement(x,{cellElRefs:this.cellElRefs,dateProfile:e.dateProfile,tDateProfile:e.tDateProfile,nowDate:e.nowDate,todayRange:e.todayRange})))}componentDidMount(){this.updateSizing(),this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)}componentDidUpdate(e){this.updateSizing(),this.scrollResponder.update(e.dateProfile!==this.props.dateProfile)}componentWillUnmount(){this.scrollResponder.detach(),this.props.onCoords&&this.props.onCoords(null)}updateSizing(){let{props:e,context:t}=this;if(null!==e.clientWidth&&this.scrollResponder){this.rootElRef.current.offsetWidth&&(this.coords=new b(this.rootElRef.current,(n=this.cellElRefs.currentMap,e.tDateProfile.slotDates.map(e=>{let t=e.toISOString();return n[t]})),e.dateProfile,e.tDateProfile,t.dateEnv,t.isRtl),e.onCoords&&e.onCoords(this.coords),this.scrollResponder.update(!1))}var n}positionToHit(e){let{outerCoordCache:n}=this.coords,{dateEnv:i,isRtl:o}=this.context,{tDateProfile:r}=this.props,l=n.leftToIndex(e);if(null!=l){let s=n.getWidth(l),a=o?(n.rights[l]-e)/s:(e-n.lefts[l])/s,d=Math.floor(a*r.snapsPerSlot),c=i.add(r.slotDates[l],t.multiplyDuration(r.snapDuration,d));return{dateSpan:{range:{start:c,end:i.add(c,r.snapDuration)},allDay:!this.props.tDateProfile.isTimeScale},dayEl:this.cellElRefs.currentMap[l],left:n.lefts[l],right:n.rights[l]}}return null}}function P(e,t,n){let i=[];if(n)for(let o of e){let e=n.rangeToCoords(o),r=Math.round(e.start),l=Math.round(e.end);l-r<t&&(l=r+t),i.push({start:r,end:l})}return i}class M extends t.BaseComponent{render(){let{props:e}=this,t=[].concat(e.eventResizeSegs,e.dateSelectionSegs);return e.timelineCoords&&o.createElement("div",{className:"fc-timeline-bg"},this.renderSegs(e.businessHourSegs||[],e.timelineCoords,"non-business"),this.renderSegs(e.bgEventSegs||[],e.timelineCoords,"bg-event"),this.renderSegs(t,e.timelineCoords,"highlight"))}renderSegs(e,n,i){let{todayRange:r,nowDate:l}=this.props,{isRtl:s}=this.context,a=P(e,0,n),d=e.map((e,n)=>{let d=y(a[n],s);return o.createElement("div",{key:t.buildEventRangeKey(e.eventRange),className:"fc-timeline-bg-harness",style:d},"bg-event"===i?o.createElement(t.BgEvent,Object.assign({seg:e},t.getSegMeta(e,r,l))):t.renderFill(i))});return o.createElement(o.Fragment,null,d)}}class T extends t.Slicer{sliceRange(e,n,i,o,r){let l=function(e,n,i){if(!n.isTimeScale&&(e=t.computeVisibleDayRange(e),n.largeUnit)){let t=e;((e={start:i.startOf(e.start,n.largeUnit),end:i.startOf(e.end,n.largeUnit)}).end.valueOf()!==t.end.valueOf()||e.end<=e.start)&&(e={start:e.start,end:i.add(e.end,n.slotDuration)})}return e}(e,o,r),s=[];if(C(l.start,o,r)<C(l.end,o,r)){let e=t.intersectRanges(l,o.normalizedRange);e&&s.push({start:e.start,end:e.end,isStart:e.start.valueOf()===l.start.valueOf()&&m(e.start,o,n,i),isEnd:e.end.valueOf()===l.end.valueOf()&&m(t.addMs(e.end,-1),o,n,i)})}return s}}const I=t.createFormatter({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"narrow"});class W extends t.BaseComponent{render(){let{props:e}=this;return o.createElement(t.StandardEvent,Object.assign({},e,{elClasses:["fc-timeline-event","fc-h-event"],defaultTimeFormat:I,defaultDisplayEventTime:!e.isTimeScale}))}}class z extends t.BaseComponent{render(){let{props:e,context:n}=this,{hiddenSegs:i,placement:r,resourceId:l}=e,{top:s,hcoords:a}=r,d=a&&null!==s,c=y(a,n.isRtl),m=l?{resourceId:l}:{};return o.createElement(t.MoreLinkContainer,{elRef:e.elRef,elClasses:["fc-timeline-more-link"],elStyle:Object.assign({visibility:d?"":"hidden",top:s||0},c),allDayDate:null,moreCnt:i.length,allSegs:i,hiddenSegs:i,dateProfile:e.dateProfile,todayRange:e.todayRange,extraDateSpan:m,popoverContent:()=>o.createElement(o.Fragment,null,i.map(n=>{let i=n.eventRange.instance.instanceId;return o.createElement("div",{key:i,style:{visibility:e.isForcedInvisible[i]?"hidden":""}},o.createElement(W,Object.assign({isTimeScale:e.isTimeScale,seg:n,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:i===e.eventSelection},t.getSegMeta(n,e.todayRange,e.nowDate))))}))},e=>o.createElement(e,{elTag:"div",elClasses:["fc-timeline-more-link-inner","fc-sticky"]}))}}class L extends t.BaseComponent{constructor(){super(...arguments),this.slicer=new T,this.sortEventSegs=t.memoize(t.sortEventSegs),this.harnessElRefs=new t.RefMap,this.moreElRefs=new t.RefMap,this.innerElRef=o.createRef(),this.state={eventInstanceHeights:{},moreLinkHeights:{}},this.handleResize=e=>{e&&this.updateSize()}}render(){let{props:e,state:n,context:i}=this,{options:r}=i,{dateProfile:l,tDateProfile:s}=e,a=this.slicer.sliceProps(e,l,s.isTimeScale?null:e.nextDayThreshold,i,l,i.dateProfileGenerator,s,i.dateEnv),d=(a.eventDrag?a.eventDrag.segs:null)||(a.eventResize?a.eventResize.segs:null)||[],c=this.sortEventSegs(a.fgEventSegs,r.eventOrder),m=P(c,r.eventMinWidth,e.timelineCoords),[u,h]=function(e,n,i,o,r,l){let s=[],a=[];for(let t=0;t<e.length;t+=1){let o=e[t],r=i[o.eventRange.instance.instanceId],l=n[t];r&&l?s.push({index:t,span:l,thickness:r}):a.push({seg:o,hcoords:l,top:null})}let d=new t.SegHierarchy;null!=r&&(d.strictOrder=r),null!=l&&(d.maxStackCnt=l);let c=d.addSegs(s),m=c.map(t=>({seg:e[t.index],hcoords:t.span,top:null})),u=t.groupIntersectingEntries(c),h=[],f=[];const g=t=>e[t.index];for(let n=0;n<u.length;n+=1){let i=u[n],r=i.entries.map(g),l=o[t.buildIsoString(t.computeEarliestSegStart(r))];null!=l?h.push({index:e.length+n,thickness:l,span:i.span}):f.push({seg:r,hcoords:i.span,top:null})}d.maxStackCnt=-1,d.addSegs(h);let p=d.toRects(),v=[],D=0;for(let t of p){let n=t.index;v.push({seg:n<e.length?e[n]:u[n-e.length].entries.map(g),hcoords:t.span,top:t.levelCoord}),D=Math.max(D,t.levelCoord+t.thickness)}return[v.concat(a,m,f),D]}(c,m,n.eventInstanceHeights,n.moreLinkHeights,r.eventOrderStrict,r.eventMaxStack),f=(a.eventDrag?a.eventDrag.affectedInstances:null)||(a.eventResize?a.eventResize.affectedInstances:null)||{};return o.createElement(o.Fragment,null,o.createElement(M,{businessHourSegs:a.businessHourSegs,bgEventSegs:a.bgEventSegs,timelineCoords:e.timelineCoords,eventResizeSegs:a.eventResize?a.eventResize.segs:[],dateSelectionSegs:a.dateSelectionSegs,nowDate:e.nowDate,todayRange:e.todayRange}),o.createElement("div",{className:"fc-timeline-events fc-scrollgrid-sync-inner",ref:this.innerElRef,style:{height:h}},this.renderFgSegs(u,f,!1,!1,!1),this.renderFgSegs(function(e,t,n){if(!e.length||!t)return[];let i=function(e){let t={};for(let n of e){let{seg:e}=n;Array.isArray(e)||(t[e.eventRange.instance.instanceId]=n.top)}return t}(n);return e.map(e=>({seg:e,hcoords:t.rangeToCoords(e),top:i[e.eventRange.instance.instanceId]}))}(d,e.timelineCoords,u),{},Boolean(a.eventDrag),Boolean(a.eventResize),!1)))}componentDidMount(){this.updateSize(),this.context.addResizeHandler(this.handleResize)}componentDidUpdate(e,t){e.eventStore===this.props.eventStore&&e.timelineCoords===this.props.timelineCoords&&t.moreLinkHeights===this.state.moreLinkHeights||this.updateSize()}componentWillUnmount(){this.context.removeResizeHandler(this.handleResize)}updateSize(){let{props:e}=this,{timelineCoords:n}=e;const i=this.innerElRef.current;e.onHeightChange&&e.onHeightChange(i,!1),n&&this.setState({eventInstanceHeights:t.mapHash(this.harnessElRefs.currentMap,e=>Math.round(e.getBoundingClientRect().height)),moreLinkHeights:t.mapHash(this.moreElRefs.currentMap,e=>Math.round(e.getBoundingClientRect().height))},()=>{e.onHeightChange&&e.onHeightChange(i,!0)}),e.syncParentMinHeight&&(i.parentElement.style.minHeight=i.style.height)}renderFgSegs(e,n,i,r,l){let{harnessElRefs:s,moreElRefs:a,props:d,context:c}=this,m=i||r||l;return o.createElement(o.Fragment,null,e.map(e=>{let{seg:u,hcoords:h,top:f}=e;if(Array.isArray(u)){let i=t.buildIsoString(t.computeEarliestSegStart(u));return o.createElement(z,{key:"m:"+i,elRef:a.createRef(i),hiddenSegs:u,placement:e,dateProfile:d.dateProfile,nowDate:d.nowDate,todayRange:d.todayRange,isTimeScale:d.tDateProfile.isTimeScale,eventSelection:d.eventSelection,resourceId:d.resourceId,isForcedInvisible:n})}let g=u.eventRange.instance.instanceId,p=m||Boolean(!n[g]&&h&&null!==f),v=y(h,c.isRtl);return o.createElement("div",{key:"e:"+g,ref:m?null:s.createRef(g),className:"fc-timeline-event-harness",style:Object.assign({visibility:p?"":"hidden",top:f||0},v)},o.createElement(W,Object.assign({isTimeScale:d.tDateProfile.isTimeScale,seg:u,isDragging:i,isResizing:r,isDateSelecting:l,isSelected:g===d.eventSelection},t.getSegMeta(u,d.todayRange,d.nowDate))))}))}}L.addStateEquality({eventInstanceHeights:t.isPropsEqual,moreLinkHeights:t.isPropsEqual});class H extends t.DateComponent{constructor(){super(...arguments),this.slatsRef=o.createRef(),this.state={coords:null},this.handeEl=e=>{e?this.context.registerInteractiveComponent(this,{el:e}):this.context.unregisterInteractiveComponent(this)},this.handleCoords=e=>{this.setState({coords:e}),this.props.onSlatCoords&&this.props.onSlatCoords(e)}}render(){let{props:e,state:n,context:i}=this,{options:r}=i,{dateProfile:l,tDateProfile:s}=e,a=t.greatestDurationDenominator(s.slotDuration).unit;return o.createElement("div",{className:"fc-timeline-body",ref:this.handeEl,style:{minWidth:e.tableMinWidth,height:e.clientHeight,width:e.clientWidth}},o.createElement(t.NowTimer,{unit:a},(a,d)=>o.createElement(o.Fragment,null,o.createElement(k,{ref:this.slatsRef,dateProfile:l,tDateProfile:s,nowDate:a,todayRange:d,clientWidth:e.clientWidth,tableColGroupNode:e.tableColGroupNode,tableMinWidth:e.tableMinWidth,onCoords:this.handleCoords,onScrollLeftRequest:e.onScrollLeftRequest}),o.createElement(L,{dateProfile:l,tDateProfile:e.tDateProfile,nowDate:a,todayRange:d,nextDayThreshold:r.nextDayThreshold,businessHours:e.businessHours,eventStore:e.eventStore,eventUiBases:e.eventUiBases,dateSelection:e.dateSelection,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,timelineCoords:n.coords,syncParentMinHeight:!0}),r.nowIndicator&&n.coords&&n.coords.isDateInRange(a)&&o.createElement("div",{className:"fc-timeline-now-indicator-container"},o.createElement(t.NowIndicatorContainer,{elClasses:["fc-timeline-now-indicator-line"],elStyle:R(n.coords.dateToCoord(a),i.isRtl),isAxis:!1,date:a})))))}queryHit(e,t,n,i){let o=this.slatsRef.current.positionToHit(e);return o?{dateProfile:this.props.dateProfile,dateSpan:o.dateSpan,rect:{left:o.left,right:o.right,top:0,bottom:i},dayEl:o.dayEl,layer:0}:null}}class N extends t.DateComponent{constructor(){super(...arguments),this.buildTimelineDateProfile=t.memoize(d),this.scrollGridRef=o.createRef(),this.state={slatCoords:null,slotCushionMaxWidth:null},this.handleSlatCoords=e=>{this.setState({slatCoords:e})},this.handleScrollLeftRequest=e=>{this.scrollGridRef.current.forceScrollLeft(0,e)},this.handleMaxCushionWidth=e=>{this.setState({slotCushionMaxWidth:Math.ceil(e)})}}render(){let{props:e,state:n,context:i}=this,{options:l}=i,s=!e.forPrint&&t.getStickyHeaderDates(l),a=!e.forPrint&&t.getStickyFooterScrollbar(l),d=this.buildTimelineDateProfile(e.dateProfile,i.dateEnv,l,i.dateProfileGenerator),{slotMinWidth:c}=l,m=O(d,c||this.computeFallbackSlotMinWidth(d)),u=[{type:"header",key:"header",isSticky:s,chunks:[{key:"timeline",content:t=>o.createElement(w,{dateProfile:e.dateProfile,clientWidth:t.clientWidth,clientHeight:t.clientHeight,tableMinWidth:t.tableMinWidth,tableColGroupNode:t.tableColGroupNode,tDateProfile:d,slatCoords:n.slatCoords,onMaxCushionWidth:c?null:this.handleMaxCushionWidth})}]},{type:"body",key:"body",liquid:!0,chunks:[{key:"timeline",content:t=>o.createElement(H,Object.assign({},e,{clientWidth:t.clientWidth,clientHeight:t.clientHeight,tableMinWidth:t.tableMinWidth,tableColGroupNode:t.tableColGroupNode,tDateProfile:d,onSlatCoords:this.handleSlatCoords,onScrollLeftRequest:this.handleScrollLeftRequest}))}]}];return a&&u.push({type:"footer",key:"footer",isSticky:!0,chunks:[{key:"timeline",content:t.renderScrollShim}]}),o.createElement(t.ViewContainer,{elClasses:["fc-timeline",!1===l.eventOverlap?"fc-timeline-overlap-disabled":""],viewSpec:i.viewSpec},o.createElement(r.ScrollGrid,{ref:this.scrollGridRef,liquid:!e.isHeightAuto&&!e.forPrint,collapsibleWidth:!1,colGroups:[{cols:m}],sections:u}))}computeFallbackSlotMinWidth(e){return Math.max(30,(this.state.slotCushionMaxWidth||0)/e.slotsPerLabel)}}function O(e,t){return[{span:e.slotCnt,minWidth:t||1}]}t.injectStyles('.fc .fc-timeline-body{min-height:100%;position:relative;z-index:1}.fc .fc-timeline-slots{bottom:0;position:absolute;top:0;z-index:1}.fc .fc-timeline-slots>table{height:100%}.fc .fc-timeline-slot-minor{border-style:dotted}.fc .fc-timeline-slot-frame{align-items:center;display:flex;justify-content:center}.fc .fc-timeline-header-row-chrono .fc-timeline-slot-frame{justify-content:flex-start}.fc .fc-timeline-header-row:last-child .fc-timeline-slot-frame{overflow:hidden}.fc .fc-timeline-slot-cushion{padding:4px 5px;white-space:nowrap}.fc-direction-ltr .fc-timeline-slot{border-right:0!important}.fc-direction-rtl .fc-timeline-slot{border-left:0!important}.fc .fc-timeline-now-indicator-container{bottom:0;left:0;position:absolute;right:0;top:0;width:0;z-index:4}.fc .fc-timeline-now-indicator-arrow,.fc .fc-timeline-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;position:absolute;top:0}.fc .fc-timeline-now-indicator-arrow{border-left-color:transparent;border-right-color:transparent;border-width:6px 5px 0;margin:0 -6px}.fc .fc-timeline-now-indicator-line{border-width:0 0 0 1px;bottom:0;margin:0 -1px}.fc .fc-timeline-events{position:relative;width:0;z-index:3}.fc .fc-timeline-event-harness,.fc .fc-timeline-more-link{position:absolute;top:0}.fc-timeline-event{z-index:1}.fc-timeline-event.fc-event-mirror{z-index:2}.fc-timeline-event{align-items:center;border-radius:0;display:flex;font-size:var(--fc-small-font-size);margin-bottom:1px;padding:2px 1px;position:relative}.fc-timeline-event .fc-event-main{flex-grow:1;flex-shrink:1;min-width:0}.fc-timeline-event .fc-event-time{font-weight:700}.fc-timeline-event .fc-event-time,.fc-timeline-event .fc-event-title{padding:0 2px;white-space:nowrap}.fc-direction-ltr .fc-timeline-event.fc-event-end,.fc-direction-ltr .fc-timeline-more-link{margin-right:1px}.fc-direction-rtl .fc-timeline-event.fc-event-end,.fc-direction-rtl .fc-timeline-more-link{margin-left:1px}.fc-timeline-overlap-disabled .fc-timeline-event{margin-bottom:0;padding-bottom:5px;padding-top:5px}.fc-timeline-event:not(.fc-event-end):after,.fc-timeline-event:not(.fc-event-start):before{border-color:transparent #000;border-style:solid;border-width:5px;content:"";flex-grow:0;flex-shrink:0;height:0;margin:0 1px;opacity:.5;width:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-start):before,.fc-direction-rtl .fc-timeline-event:not(.fc-event-end):after{border-left:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-end):after,.fc-direction-rtl .fc-timeline-event:not(.fc-event-start):before{border-right:0}.fc-timeline-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;font-size:var(--fc-small-font-size);padding:1px}.fc-timeline-more-link-inner{display:inline-block;left:0;padding:2px;right:0}.fc .fc-timeline-bg{bottom:0;left:0;position:absolute;right:0;top:0;width:0;z-index:2}.fc .fc-timeline-bg .fc-non-business{z-index:1}.fc .fc-timeline-bg .fc-bg-event{z-index:2}.fc .fc-timeline-bg .fc-highlight{z-index:3}.fc .fc-timeline-bg-harness{bottom:0;position:absolute;top:0}');var F=n.createPlugin({name:"@fullcalendar/timeline",premiumReleaseDate:"2022-12-14",deps:[s.default],initialView:"timelineDay",views:{timeline:{component:N,usesMinMaxTime:!0,eventResizableFromStart:!0},timelineDay:{type:"timeline",duration:{days:1}},timelineWeek:{type:"timeline",duration:{weeks:1}},timelineMonth:{type:"timeline",duration:{months:1}},timelineYear:{type:"timeline",duration:{years:1}}}}),B={__proto__:null,TimelineView:N,buildSlatCols:O,TimelineLane:L,TimelineLaneBg:M,TimelineHeader:w,TimelineSlats:k,buildTimelineDateProfile:d,TimelineCoords:b,coordToCss:R,coordsToCss:y,TimelineLaneSlicer:T,TimelineHeaderRows:S};return t.globalPlugins.push(F),e.Internal=B,e.default=F,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar.Internal,FullCalendar,FullCalendar.PremiumCommon,FullCalendar.Preact,FullCalendar.ScrollGrid.Internal);
|
package/index.js
CHANGED
|
@@ -5,12 +5,12 @@ import { injectStyles } from '@fullcalendar/core/internal.js';
|
|
|
5
5
|
import '@fullcalendar/core/preact.js';
|
|
6
6
|
import '@fullcalendar/scrollgrid/internal.js';
|
|
7
7
|
|
|
8
|
-
var css_248z = "
|
|
8
|
+
var css_248z = ".fc .fc-timeline-body{min-height:100%;position:relative;z-index:1}.fc .fc-timeline-slots{bottom:0;position:absolute;top:0;z-index:1}.fc .fc-timeline-slots>table{height:100%}.fc .fc-timeline-slot-minor{border-style:dotted}.fc .fc-timeline-slot-frame{align-items:center;display:flex;justify-content:center}.fc .fc-timeline-header-row-chrono .fc-timeline-slot-frame{justify-content:flex-start}.fc .fc-timeline-header-row:last-child .fc-timeline-slot-frame{overflow:hidden}.fc .fc-timeline-slot-cushion{padding:4px 5px;white-space:nowrap}.fc-direction-ltr .fc-timeline-slot{border-right:0!important}.fc-direction-rtl .fc-timeline-slot{border-left:0!important}.fc .fc-timeline-now-indicator-container{bottom:0;left:0;position:absolute;right:0;top:0;width:0;z-index:4}.fc .fc-timeline-now-indicator-arrow,.fc .fc-timeline-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;position:absolute;top:0}.fc .fc-timeline-now-indicator-arrow{border-left-color:transparent;border-right-color:transparent;border-width:6px 5px 0;margin:0 -6px}.fc .fc-timeline-now-indicator-line{border-width:0 0 0 1px;bottom:0;margin:0 -1px}.fc .fc-timeline-events{position:relative;width:0;z-index:3}.fc .fc-timeline-event-harness,.fc .fc-timeline-more-link{position:absolute;top:0}.fc-timeline-event{z-index:1}.fc-timeline-event.fc-event-mirror{z-index:2}.fc-timeline-event{align-items:center;border-radius:0;display:flex;font-size:var(--fc-small-font-size);margin-bottom:1px;padding:2px 1px;position:relative}.fc-timeline-event .fc-event-main{flex-grow:1;flex-shrink:1;min-width:0}.fc-timeline-event .fc-event-time{font-weight:700}.fc-timeline-event .fc-event-time,.fc-timeline-event .fc-event-title{padding:0 2px;white-space:nowrap}.fc-direction-ltr .fc-timeline-event.fc-event-end,.fc-direction-ltr .fc-timeline-more-link{margin-right:1px}.fc-direction-rtl .fc-timeline-event.fc-event-end,.fc-direction-rtl .fc-timeline-more-link{margin-left:1px}.fc-timeline-overlap-disabled .fc-timeline-event{margin-bottom:0;padding-bottom:5px;padding-top:5px}.fc-timeline-event:not(.fc-event-end):after,.fc-timeline-event:not(.fc-event-start):before{border-color:transparent #000;border-style:solid;border-width:5px;content:\"\";flex-grow:0;flex-shrink:0;height:0;margin:0 1px;opacity:.5;width:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-start):before,.fc-direction-rtl .fc-timeline-event:not(.fc-event-end):after{border-left:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-end):after,.fc-direction-rtl .fc-timeline-event:not(.fc-event-start):before{border-right:0}.fc-timeline-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;font-size:var(--fc-small-font-size);padding:1px}.fc-timeline-more-link-inner{display:inline-block;left:0;padding:2px;right:0}.fc .fc-timeline-bg{bottom:0;left:0;position:absolute;right:0;top:0;width:0;z-index:2}.fc .fc-timeline-bg .fc-non-business{z-index:1}.fc .fc-timeline-bg .fc-bg-event{z-index:2}.fc .fc-timeline-bg .fc-highlight{z-index:3}.fc .fc-timeline-bg-harness{bottom:0;position:absolute;top:0}";
|
|
9
9
|
injectStyles(css_248z);
|
|
10
10
|
|
|
11
11
|
var index = createPlugin({
|
|
12
12
|
name: '@fullcalendar/timeline',
|
|
13
|
-
premiumReleaseDate: '2022-12-
|
|
13
|
+
premiumReleaseDate: '2022-12-14',
|
|
14
14
|
deps: [premiumCommonPlugin],
|
|
15
15
|
initialView: 'timelineDay',
|
|
16
16
|
views: {
|
package/internal.cjs
CHANGED
|
@@ -990,6 +990,11 @@ class TimelineLane extends internal_cjs.BaseComponent {
|
|
|
990
990
|
eventInstanceHeights: {},
|
|
991
991
|
moreLinkHeights: {},
|
|
992
992
|
};
|
|
993
|
+
this.handleResize = (isForced) => {
|
|
994
|
+
if (isForced) {
|
|
995
|
+
this.updateSize();
|
|
996
|
+
}
|
|
997
|
+
};
|
|
993
998
|
}
|
|
994
999
|
render() {
|
|
995
1000
|
let { props, state, context } = this;
|
|
@@ -1015,6 +1020,7 @@ class TimelineLane extends internal_cjs.BaseComponent {
|
|
|
1015
1020
|
}
|
|
1016
1021
|
componentDidMount() {
|
|
1017
1022
|
this.updateSize();
|
|
1023
|
+
this.context.addResizeHandler(this.handleResize);
|
|
1018
1024
|
}
|
|
1019
1025
|
componentDidUpdate(prevProps, prevState) {
|
|
1020
1026
|
if (prevProps.eventStore !== this.props.eventStore || // external thing changed?
|
|
@@ -1024,6 +1030,9 @@ class TimelineLane extends internal_cjs.BaseComponent {
|
|
|
1024
1030
|
this.updateSize();
|
|
1025
1031
|
}
|
|
1026
1032
|
}
|
|
1033
|
+
componentWillUnmount() {
|
|
1034
|
+
this.context.removeResizeHandler(this.handleResize);
|
|
1035
|
+
}
|
|
1027
1036
|
updateSize() {
|
|
1028
1037
|
let { props } = this;
|
|
1029
1038
|
let { timelineCoords } = props;
|
package/internal.d.ts
CHANGED
|
@@ -136,6 +136,8 @@ declare class TimelineLane extends BaseComponent<TimelineLaneProps, TimelineLane
|
|
|
136
136
|
render(): createElement.JSX.Element;
|
|
137
137
|
componentDidMount(): void;
|
|
138
138
|
componentDidUpdate(prevProps: TimelineLaneProps, prevState: TimelineLaneState): void;
|
|
139
|
+
componentWillUnmount(): void;
|
|
140
|
+
handleResize: (isForced: boolean) => void;
|
|
139
141
|
updateSize(): void;
|
|
140
142
|
renderFgSegs(segPlacements: TimelineSegPlacement[], isForcedInvisible: {
|
|
141
143
|
[instanceId: string]: any;
|
package/internal.js
CHANGED
|
@@ -986,6 +986,11 @@ class TimelineLane extends BaseComponent {
|
|
|
986
986
|
eventInstanceHeights: {},
|
|
987
987
|
moreLinkHeights: {},
|
|
988
988
|
};
|
|
989
|
+
this.handleResize = (isForced) => {
|
|
990
|
+
if (isForced) {
|
|
991
|
+
this.updateSize();
|
|
992
|
+
}
|
|
993
|
+
};
|
|
989
994
|
}
|
|
990
995
|
render() {
|
|
991
996
|
let { props, state, context } = this;
|
|
@@ -1011,6 +1016,7 @@ class TimelineLane extends BaseComponent {
|
|
|
1011
1016
|
}
|
|
1012
1017
|
componentDidMount() {
|
|
1013
1018
|
this.updateSize();
|
|
1019
|
+
this.context.addResizeHandler(this.handleResize);
|
|
1014
1020
|
}
|
|
1015
1021
|
componentDidUpdate(prevProps, prevState) {
|
|
1016
1022
|
if (prevProps.eventStore !== this.props.eventStore || // external thing changed?
|
|
@@ -1020,6 +1026,9 @@ class TimelineLane extends BaseComponent {
|
|
|
1020
1026
|
this.updateSize();
|
|
1021
1027
|
}
|
|
1022
1028
|
}
|
|
1029
|
+
componentWillUnmount() {
|
|
1030
|
+
this.context.removeResizeHandler(this.handleResize);
|
|
1031
|
+
}
|
|
1023
1032
|
updateSize() {
|
|
1024
1033
|
let { props } = this;
|
|
1025
1034
|
let { timelineCoords } = props;
|
package/package.json
CHANGED
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fullcalendar/timeline",
|
|
3
|
-
"version": "6.0.0
|
|
3
|
+
"version": "6.0.0",
|
|
4
|
+
"title": "FullCalendar Timeline Plugin",
|
|
5
|
+
"description": "Display events on a horizontal time axis (without resources)",
|
|
4
6
|
"keywords": [
|
|
5
7
|
"calendar",
|
|
6
8
|
"event",
|
|
7
|
-
"full-sized"
|
|
9
|
+
"full-sized",
|
|
10
|
+
"fullcalendar",
|
|
11
|
+
"scheduler",
|
|
12
|
+
"timeline"
|
|
8
13
|
],
|
|
9
|
-
"homepage": "https://fullcalendar.io/
|
|
10
|
-
"
|
|
14
|
+
"homepage": "https://fullcalendar.io/docs/timeline-view-no-resources",
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@fullcalendar/premium-common": "~6.0.0",
|
|
17
|
+
"@fullcalendar/scrollgrid": "~6.0.0"
|
|
18
|
+
},
|
|
19
|
+
"peerDependencies": {
|
|
20
|
+
"@fullcalendar/core": "~6.0.0"
|
|
21
|
+
},
|
|
22
|
+
"type": "module",
|
|
11
23
|
"bugs": "https://fullcalendar.io/reporting-bugs",
|
|
12
24
|
"repository": {
|
|
13
25
|
"type": "git",
|
|
14
|
-
"url": "https://github.com/fullcalendar/fullcalendar-
|
|
15
|
-
"
|
|
16
|
-
"directory": "packages/timeline"
|
|
26
|
+
"url": "https://github.com/fullcalendar/fullcalendar-workspace.git",
|
|
27
|
+
"directory": "premium/packages/timeline"
|
|
17
28
|
},
|
|
18
29
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
19
30
|
"author": {
|
|
@@ -22,16 +33,6 @@
|
|
|
22
33
|
"url": "http://arshaw.com/"
|
|
23
34
|
},
|
|
24
35
|
"copyright": "2022 Adam Shaw",
|
|
25
|
-
"title": "FullCalendar Timeline Plugin",
|
|
26
|
-
"description": "Display events on a horizontal time axis (without resources)",
|
|
27
|
-
"dependencies": {
|
|
28
|
-
"@fullcalendar/premium-common": "6.0.0-beta.4",
|
|
29
|
-
"@fullcalendar/scrollgrid": "6.0.0-beta.4"
|
|
30
|
-
},
|
|
31
|
-
"peerDependencies": {
|
|
32
|
-
"@fullcalendar/core": "6.0.0-beta.4"
|
|
33
|
-
},
|
|
34
|
-
"type": "module",
|
|
35
36
|
"main": "./index.cjs",
|
|
36
37
|
"module": "./index.js",
|
|
37
38
|
"types": "./index.d.ts",
|