serves as a min-height
- }
- }, t.tableColGroupNode, me(n ? "thead" : "tbody", {
- role: "presentation"
- }, typeof e.rowContent == "function" ? e.rowContent(t) : e.rowContent));
-}
-function Lxe(r, e) {
- return _c(r, e, El);
-}
-function Pxe(r, e) {
- let t = [];
- for (let n of r) {
- let i = n.span || 1;
- for (let a = 0; a < i; a += 1)
- t.push(me("col", { style: {
- width: n.width === "shrink" ? Rxe(e) : n.width || "",
- minWidth: n.minWidth || ""
- } }));
- }
- return me("colgroup", {}, ...t);
-}
-function Rxe(r) {
- return r == null ? 4 : r;
-}
-function Nxe(r) {
- for (let e of r)
- if (e.width === "shrink")
- return !0;
- return !1;
-}
-function zxe(r, e) {
- let t = [
- "fc-scrollgrid",
- e.theme.getClass("table")
- ];
- return r && t.push("fc-scrollgrid-liquid"), t;
-}
-function Bxe(r, e) {
- let t = [
- "fc-scrollgrid-section",
- `fc-scrollgrid-section-${r.type}`,
- r.className
- // used?
- ];
- return e && r.liquid && r.maxHeight == null && t.push("fc-scrollgrid-section-liquid"), r.isSticky && t.push("fc-scrollgrid-section-sticky"), t;
-}
-function aI(r) {
- return me("div", { className: "fc-scrollgrid-sticky-shim", style: {
- width: r.clientWidth,
- minWidth: r.tableMinWidth
- } });
-}
-function pb(r) {
- let { stickyHeaderDates: e } = r;
- return (e == null || e === "auto") && (e = r.height === "auto" || r.viewHeight === "auto"), e;
-}
-function KG(r) {
- let { stickyFooterScrollbar: e } = r;
- return (e == null || e === "auto") && (e = r.height === "auto" || r.viewHeight === "auto"), e;
-}
-class xM extends un {
- constructor() {
- super(...arguments), this.processCols = rr((e) => e, Lxe), this.renderMicroColGroup = rr(Pxe), this.scrollerRefs = new Zl(), this.scrollerElRefs = new Zl(this._handleScrollerEl.bind(this)), this.state = {
- shrinkWidth: null,
- forceYScrollbars: !1,
- scrollerClientWidths: {},
- scrollerClientHeights: {}
- }, this.handleSizing = () => {
- this.safeSetState(Object.assign({ shrinkWidth: this.computeShrinkWidth() }, this.computeScrollerDims()));
- };
- }
- render() {
- let { props: e, state: t, context: n } = this, i = e.sections || [], a = this.processCols(e.cols), o = this.renderMicroColGroup(a, t.shrinkWidth), s = zxe(e.liquid, n);
- e.collapsibleWidth && s.push("fc-scrollgrid-collapsible");
- let l = i.length, u = 0, c, h = [], f = [], v = [];
- for (; u < l && (c = i[u]).type === "header"; )
- h.push(this.renderSection(c, o, !0)), u += 1;
- for (; u < l && (c = i[u]).type === "body"; )
- f.push(this.renderSection(c, o, !1)), u += 1;
- for (; u < l && (c = i[u]).type === "footer"; )
- v.push(this.renderSection(c, o, !0)), u += 1;
- let b = !SG();
- const w = { role: "rowgroup" };
- return me("table", {
- role: "grid",
- className: s.join(" "),
- style: { height: e.height }
- }, !!(!b && h.length) && me("thead", w, ...h), !!(!b && f.length) && me("tbody", w, ...f), !!(!b && v.length) && me("tfoot", w, ...v), b && me("tbody", w, ...h, ...f, ...v));
- }
- renderSection(e, t, n) {
- return "outerContent" in e ? me(Dn, { key: e.key }, e.outerContent) : me("tr", { key: e.key, role: "presentation", className: Bxe(e, this.props.liquid).join(" ") }, this.renderChunkTd(e, t, e.chunk, n));
- }
- renderChunkTd(e, t, n, i) {
- if ("outerContent" in n)
- return n.outerContent;
- let { props: a } = this, { forceYScrollbars: o, scrollerClientWidths: s, scrollerClientHeights: l } = this.state, u = kxe(a, e), c = JG(a, e), h = a.liquid ? o ? "scroll" : u ? "auto" : "hidden" : "visible", f = e.key, v = Oxe(e, n, {
- tableColGroupNode: t,
- tableMinWidth: "",
- clientWidth: !a.collapsibleWidth && s[f] !== void 0 ? s[f] : null,
- clientHeight: l[f] !== void 0 ? l[f] : null,
- expandRows: e.expandRows,
- syncRowHeights: !1,
- rowSyncHeights: [],
- reportRowHeightChange: () => {
- }
- }, i);
- return me(i ? "th" : "td", {
- ref: n.elRef,
- role: "presentation"
- }, me(
- "div",
- { className: `fc-scroller-harness${c ? " fc-scroller-harness-liquid" : ""}` },
- me(ZG, { ref: this.scrollerRefs.createRef(f), elRef: this.scrollerElRefs.createRef(f), overflowY: h, overflowX: a.liquid ? "hidden" : "visible", maxHeight: e.maxHeight, liquid: c, liquidIsAbsolute: !0 }, v)
- ));
- }
- _handleScrollerEl(e, t) {
- let n = jxe(this.props.sections, t);
- n && lu(n.chunk.scrollerElRef, e);
- }
- componentDidMount() {
- this.handleSizing(), this.context.addResizeHandler(this.handleSizing);
- }
- componentDidUpdate() {
- this.handleSizing();
- }
- componentWillUnmount() {
- this.context.removeResizeHandler(this.handleSizing);
- }
- computeShrinkWidth() {
- return Nxe(this.props.cols) ? Dxe(this.scrollerElRefs.getAll()) : 0;
- }
- computeScrollerDims() {
- let e = _be(), { scrollerRefs: t, scrollerElRefs: n } = this, i = !1, a = {}, o = {};
- for (let s in t.currentMap) {
- let l = t.currentMap[s];
- if (l && l.needsYScrolling()) {
- i = !0;
- break;
- }
- }
- for (let s of this.props.sections) {
- let l = s.key, u = n.currentMap[l];
- if (u) {
- let c = u.parentNode;
- a[l] = Math.floor(c.getBoundingClientRect().width - (i ? e.y : 0)), o[l] = Math.floor(c.getBoundingClientRect().height);
- }
- }
- return { forceYScrollbars: i, scrollerClientWidths: a, scrollerClientHeights: o };
- }
-}
-xM.addStateEquality({
- scrollerClientWidths: El,
- scrollerClientHeights: El
-});
-function jxe(r, e) {
- for (let t of r)
- if (t.key === e)
- return t;
- return null;
-}
-class Tx extends un {
- constructor() {
- super(...arguments), this.handleEl = (e) => {
- this.el = e, e && Mz(e, this.props.seg);
- };
- }
- render() {
- const { props: e, context: t } = this, { options: n } = t, { seg: i } = e, { eventRange: a } = i, { ui: o } = a, s = {
- event: new Gn(t, a.def, a.instance),
- view: t.viewApi,
- timeText: e.timeText,
- textColor: o.textColor,
- backgroundColor: o.backgroundColor,
- borderColor: o.borderColor,
- isDraggable: !e.disableDragging && $be(i, t),
- isStartResizable: !e.disableResizing && Hbe(i, t),
- isEndResizable: !e.disableResizing && Vbe(i),
- isMirror: !!(e.isDragging || e.isResizing || e.isDateSelecting),
- isStart: !!i.isStart,
- isEnd: !!i.isEnd,
- isPast: !!e.isPast,
- isFuture: !!e.isFuture,
- isToday: !!e.isToday,
- isSelected: !!e.isSelected,
- isDragging: !!e.isDragging,
- isResizing: !!e.isResizing
- };
- return me(ma, Object.assign({}, e, { elRef: this.handleEl, elClasses: [
- ...Gbe(s),
- ...i.eventRange.ui.classNames,
- ...e.elClasses || []
- ], renderProps: s, generatorName: "eventContent", customGenerator: n.eventContent, defaultGenerator: e.defaultGenerator, classNameGenerator: n.eventClassNames, didMount: n.eventDidMount, willUnmount: n.eventWillUnmount }));
- }
- componentDidUpdate(e) {
- this.el && this.props.seg !== e.seg && Mz(this.el, this.props.seg);
- }
-}
-class QG extends un {
- render() {
- let { props: e, context: t } = this, { options: n } = t, { seg: i } = e, { ui: a } = i.eventRange, o = n.eventTimeFormat || e.defaultTimeFormat, s = rg(i, o, t, e.defaultDisplayEventTime, e.defaultDisplayEventEnd);
- return me(Tx, Object.assign({}, e, { elTag: "a", elStyle: {
- borderColor: a.borderColor,
- backgroundColor: a.backgroundColor
- }, elAttrs: pM(i, t), defaultGenerator: Fxe, timeText: s }), (l, u) => me(
- Dn,
- null,
- me(l, { elTag: "div", elClasses: ["fc-event-main"], elStyle: { color: u.textColor } }),
- !!u.isStartResizable && me("div", { className: "fc-event-resizer fc-event-resizer-start" }),
- !!u.isEndResizable && me("div", { className: "fc-event-resizer fc-event-resizer-end" })
- ));
- }
-}
-function Fxe(r) {
- return me(
- "div",
- { className: "fc-event-main-frame" },
- r.timeText && me("div", { className: "fc-event-time" }, r.timeText),
- me(
- "div",
- { className: "fc-event-title-container" },
- me("div", { className: "fc-event-title fc-sticky" }, r.event.title || me(Dn, null, " "))
- )
- );
-}
-const SM = (r) => me(fu.Consumer, null, (e) => {
- let { options: t } = e, n = {
- isAxis: r.isAxis,
- date: e.dateEnv.toDate(r.date),
- view: e.viewApi
- };
- return me(ma, Object.assign({}, r, { elTag: r.elTag || "div", renderProps: n, generatorName: "nowIndicatorContent", customGenerator: t.nowIndicatorContent, classNameGenerator: t.nowIndicatorClassNames, didMount: t.nowIndicatorDidMount, willUnmount: t.nowIndicatorWillUnmount }));
-}), $xe = jn({ day: "numeric" });
-class wM extends un {
- constructor() {
- super(...arguments), this.refineRenderProps = q0(Hxe);
- }
- render() {
- let { props: e, context: t } = this, { options: n } = t, i = this.refineRenderProps({
- date: e.date,
- dateProfile: e.dateProfile,
- todayRange: e.todayRange,
- isMonthStart: e.isMonthStart || !1,
- showDayNumber: e.showDayNumber,
- extraRenderProps: e.extraRenderProps,
- viewApi: t.viewApi,
- dateEnv: t.dateEnv,
- monthStartFormat: n.monthStartFormat
- });
- return me(ma, Object.assign({}, e, { elClasses: [
- ...Sx(i, t.theme),
- ...e.elClasses || []
- ], elAttrs: Object.assign(Object.assign({}, e.elAttrs), i.isDisabled ? {} : { "data-date": ym(e.date) }), renderProps: i, generatorName: "dayCellContent", customGenerator: n.dayCellContent, defaultGenerator: e.defaultGenerator, classNameGenerator: (
- // don't use custom classNames if disabled
- i.isDisabled ? void 0 : n.dayCellClassNames
- ), didMount: n.dayCellDidMount, willUnmount: n.dayCellWillUnmount }));
- }
-}
-function CM(r) {
- return !!(r.dayCellContent || zG("dayCellContent", r));
-}
-function Hxe(r) {
- let { date: e, dateEnv: t, dateProfile: n, isMonthStart: i } = r, a = uM(e, r.todayRange, null, n), o = r.showDayNumber ? t.format(e, i ? r.monthStartFormat : $xe) : "";
- return Object.assign(Object.assign(Object.assign({ date: t.toDate(e), view: r.viewApi }, a), {
- isMonthStart: i,
- dayNumberText: o
- }), r.extraRenderProps);
-}
-class qG extends un {
- render() {
- let { props: e } = this, { seg: t } = e;
- return me(Tx, { elTag: "div", elClasses: ["fc-bg-event"], elStyle: { backgroundColor: t.eventRange.ui.backgroundColor }, defaultGenerator: Vxe, seg: t, timeText: "", isDragging: !1, isResizing: !1, isDateSelecting: !1, isSelected: !1, isPast: e.isPast, isFuture: e.isFuture, isToday: e.isToday, disableDragging: !0, disableResizing: !0 });
- }
-}
-function Vxe(r) {
- let { title: e } = r.event;
- return e && me("div", { className: "fc-event-title" }, r.event.title);
-}
-function eU(r) {
- return me("div", { className: `fc-${r}` });
-}
-const tU = (r) => me(fu.Consumer, null, (e) => {
- let { dateEnv: t, options: n } = e, { date: i } = r, a = n.weekNumberFormat || r.defaultFormat, o = t.computeWeekNumber(i), s = t.format(i, a);
- return me(
- ma,
- Object.assign({}, r, { renderProps: { num: o, text: s, date: i }, generatorName: "weekNumberContent", customGenerator: n.weekNumberContent, defaultGenerator: Gxe, classNameGenerator: n.weekNumberClassNames, didMount: n.weekNumberDidMount, willUnmount: n.weekNumberWillUnmount })
- );
-});
-function Gxe(r) {
- return r.text;
-}
-const FC = 10;
-class Uxe extends un {
- constructor() {
- super(...arguments), this.state = {
- titleId: cc()
- }, this.handleRootEl = (e) => {
- this.rootEl = e, this.props.elRef && lu(this.props.elRef, e);
- }, this.handleDocumentMouseDown = (e) => {
- const t = uG(e);
- this.rootEl.contains(t) || this.handleCloseClick();
- }, this.handleDocumentKeyDown = (e) => {
- e.key === "Escape" && this.handleCloseClick();
- }, this.handleCloseClick = () => {
- let { onClose: e } = this.props;
- e && e();
- };
- }
- render() {
- let { theme: e, options: t } = this.context, { props: n, state: i } = this, a = [
- "fc-popover",
- e.getClass("popover")
- ].concat(n.extraClassNames || []);
- return E0e(me(
- "div",
- Object.assign({}, n.extraAttrs, { id: n.id, className: a.join(" "), "aria-labelledby": i.titleId, ref: this.handleRootEl }),
- me(
- "div",
- { className: "fc-popover-header " + e.getClass("popoverHeader") },
- me("span", { className: "fc-popover-title", id: i.titleId }, n.title),
- me("span", { className: "fc-popover-close " + e.getIconClass("close"), title: t.closeHint, onClick: this.handleCloseClick })
- ),
- me("div", { className: "fc-popover-body " + e.getClass("popoverContent") }, n.children)
- ), n.parentEl);
- }
- componentDidMount() {
- document.addEventListener("mousedown", this.handleDocumentMouseDown), document.addEventListener("keydown", this.handleDocumentKeyDown), this.updateSize();
- }
- componentWillUnmount() {
- document.removeEventListener("mousedown", this.handleDocumentMouseDown), document.removeEventListener("keydown", this.handleDocumentKeyDown);
- }
- updateSize() {
- let { isRtl: e } = this.context, { alignmentEl: t, alignGridTop: n } = this.props, { rootEl: i } = this, a = wbe(t);
- if (a) {
- let o = i.getBoundingClientRect(), s = n ? da(t, ".fc-scrollgrid").getBoundingClientRect().top : a.top, l = e ? a.right - o.width : a.left;
- s = Math.max(s, FC), l = Math.min(l, document.documentElement.clientWidth - FC - o.width), l = Math.max(l, FC);
- let u = i.offsetParent.getBoundingClientRect();
- qp(i, {
- top: s - u.top,
- left: l - u.left
- });
- }
- }
-}
-class Wxe extends Vs {
- constructor() {
- super(...arguments), this.handleRootEl = (e) => {
- this.rootEl = e, e ? this.context.registerInteractiveComponent(this, {
- el: e,
- useEventCenter: !1
- }) : this.context.unregisterInteractiveComponent(this);
- };
- }
- render() {
- let { options: e, dateEnv: t } = this.context, { props: n } = this, { startDate: i, todayRange: a, dateProfile: o } = n, s = t.format(i, e.dayPopoverFormat);
- return me(wM, { elRef: this.handleRootEl, date: i, dateProfile: o, todayRange: a }, (l, u, c) => me(
- Uxe,
- { elRef: c.ref, id: n.id, title: s, extraClassNames: ["fc-more-popover"].concat(c.className || []), extraAttrs: c, parentEl: n.parentEl, alignmentEl: n.alignmentEl, alignGridTop: n.alignGridTop, onClose: n.onClose },
- CM(e) && me(l, { elTag: "div", elClasses: ["fc-more-popover-misc"] }),
- n.children
- ));
- }
- queryHit(e, t, n, i) {
- let { rootEl: a, props: o } = this;
- return e >= 0 && e < n && t >= 0 && t < i ? {
- dateProfile: o.dateProfile,
- dateSpan: Object.assign({ allDay: !o.forceTimed, range: {
- start: o.startDate,
- end: o.endDate
- } }, o.extraDateSpan),
- dayEl: a,
- rect: {
- left: 0,
- top: 0,
- right: n,
- bottom: i
- },
- layer: 1
- // important when comparing with hits from other components
- } : null;
- }
-}
-class rU extends un {
- constructor() {
- super(...arguments), this.state = {
- isPopoverOpen: !1,
- popoverId: cc()
- }, this.handleLinkEl = (e) => {
- this.linkEl = e, this.props.elRef && lu(this.props.elRef, e);
- }, this.handleClick = (e) => {
- let { props: t, context: n } = this, { moreLinkClick: i } = n.options, a = Pz(t).start;
- function o(s) {
- let { def: l, instance: u, range: c } = s.eventRange;
- return {
- event: new Gn(n, l, u),
- start: n.dateEnv.toDate(c.start),
- end: n.dateEnv.toDate(c.end),
- isStart: s.isStart,
- isEnd: s.isEnd
- };
- }
- typeof i == "function" && (i = i({
- date: a,
- allDay: !!t.allDayDate,
- allSegs: t.allSegs.map(o),
- hiddenSegs: t.hiddenSegs.map(o),
- jsEvent: e,
- view: n.viewApi
- })), !i || i === "popover" ? this.setState({ isPopoverOpen: !0 }) : typeof i == "string" && n.calendarApi.zoomTo(a, i);
- }, this.handlePopoverClose = () => {
- this.setState({ isPopoverOpen: !1 });
- };
- }
- render() {
- let { props: e, state: t } = this;
- return me(fu.Consumer, null, (n) => {
- let { viewApi: i, options: a, calendarApi: o } = n, { moreLinkText: s } = a, { moreCnt: l } = e, u = Pz(e), c = typeof s == "function" ? s.call(o, l) : `+${l} ${s}`, h = eg(a.moreLinkHint, [l], c), f = {
- num: l,
- shortText: `+${l}`,
- text: c,
- view: i
- };
- return me(
- Dn,
- null,
- !!e.moreCnt && me(ma, { elTag: e.elTag || "a", elRef: this.handleLinkEl, elClasses: [
- ...e.elClasses || [],
- "fc-more-link"
- ], elStyle: e.elStyle, elAttrs: Object.assign(Object.assign(Object.assign({}, e.elAttrs), hG(this.handleClick)), { title: h, "aria-expanded": t.isPopoverOpen, "aria-controls": t.isPopoverOpen ? t.popoverId : "" }), renderProps: f, generatorName: "moreLinkContent", customGenerator: a.moreLinkContent, defaultGenerator: e.defaultGenerator || Yxe, classNameGenerator: a.moreLinkClassNames, didMount: a.moreLinkDidMount, willUnmount: a.moreLinkWillUnmount }, e.children),
- t.isPopoverOpen && me(Wxe, { id: t.popoverId, startDate: u.start, endDate: u.end, dateProfile: e.dateProfile, todayRange: e.todayRange, extraDateSpan: e.extraDateSpan, parentEl: this.parentEl, alignmentEl: e.alignmentElRef ? e.alignmentElRef.current : this.linkEl, alignGridTop: e.alignGridTop, forceTimed: e.forceTimed, onClose: this.handlePopoverClose }, e.popoverContent())
- );
- });
- }
- componentDidMount() {
- this.updateParentEl();
- }
- componentDidUpdate() {
- this.updateParentEl();
- }
- updateParentEl() {
- this.linkEl && (this.parentEl = da(this.linkEl, ".fc-view-harness"));
- }
-}
-function Yxe(r) {
- return r.text;
-}
-function Pz(r) {
- if (r.allDayDate)
- return {
- start: r.allDayDate,
- end: Bi(r.allDayDate, 1)
- };
- let { hiddenSegs: e } = r;
- return {
- start: nU(e),
- end: Zxe(e)
- };
-}
-function nU(r) {
- return r.reduce(Xxe).eventRange.range.start;
-}
-function Xxe(r, e) {
- return r.eventRange.range.start < e.eventRange.range.start ? r : e;
-}
-function Zxe(r) {
- return r.reduce(Jxe).eventRange.range.end;
-}
-function Jxe(r, e) {
- return r.eventRange.range.end > e.eventRange.range.end ? r : e;
-}
-class Hg extends un {
- render() {
- let { props: e, context: t } = this, { options: n } = t, i = { view: t.viewApi };
- return me(ma, Object.assign({}, e, { elTag: e.elTag || "div", elClasses: [
- ...iU(e.viewSpec),
- ...e.elClasses || []
- ], renderProps: i, classNameGenerator: n.viewClassNames, generatorName: void 0, didMount: n.viewDidMount, willUnmount: n.viewWillUnmount }), () => e.children);
- }
-}
-function iU(r) {
- return [
- `fc-${r.type}-view`,
- "fc-view"
- ];
-}
-const Kxe = {
- id: String,
- defaultAllDay: Boolean,
- url: String,
- format: String,
- events: $e,
- eventDataTransform: $e,
- // for any network-related sources
- success: $e,
- failure: $e
-};
-function aU(r, e, t = oU(e)) {
- let n;
- if (typeof r == "string" ? n = { url: r } : typeof r == "function" || Array.isArray(r) ? n = { events: r } : typeof r == "object" && r && (n = r), n) {
- let { refined: i, extra: a } = rM(n, t), o = Qxe(i, e);
- if (o)
- return {
- _raw: r,
- isFetching: !1,
- latestFetchId: "",
- fetchRange: null,
- defaultAllDay: i.defaultAllDay,
- eventDataTransform: i.eventDataTransform,
- success: i.success,
- failure: i.failure,
- publicId: i.id || "",
- sourceId: df(),
- sourceDefId: o.sourceDefId,
- meta: o.meta,
- ui: db(i, e),
- extendedProps: a
- };
- }
- return null;
-}
-function oU(r) {
- return Object.assign(Object.assign(Object.assign({}, fb), Kxe), r.pluginHooks.eventSourceRefiners);
-}
-function Qxe(r, e) {
- let t = e.pluginHooks.eventSourceDefs;
- for (let n = t.length - 1; n >= 0; n -= 1) {
- let a = t[n].parseMeta(r);
- if (a)
- return { sourceDefId: n, meta: a };
- }
- return null;
-}
-class qxe {
- getCurrentData() {
- return this.currentDataManager.getCurrentData();
- }
- dispatch(e) {
- this.currentDataManager.dispatch(e);
- }
- get view() {
- return this.getCurrentData().viewApi;
- }
- batchRendering(e) {
- e();
- }
- updateSize() {
- this.trigger("_resize", !0);
- }
- // Options
- // -----------------------------------------------------------------------------------------------------------------
- setOption(e, t) {
- this.dispatch({
- type: "SET_OPTION",
- optionName: e,
- rawOptionValue: t
- });
- }
- getOption(e) {
- return this.currentDataManager.currentCalendarOptionsInput[e];
- }
- getAvailableLocaleCodes() {
- return Object.keys(this.getCurrentData().availableRawLocales);
- }
- // Trigger
- // -----------------------------------------------------------------------------------------------------------------
- on(e, t) {
- let { currentDataManager: n } = this;
- n.currentCalendarOptionsRefiners[e] ? n.emitter.on(e, t) : console.warn(`Unknown listener name '${e}'`);
- }
- off(e, t) {
- this.currentDataManager.emitter.off(e, t);
- }
- // not meant for public use
- trigger(e, ...t) {
- this.currentDataManager.emitter.trigger(e, ...t);
- }
- // View
- // -----------------------------------------------------------------------------------------------------------------
- changeView(e, t) {
- this.batchRendering(() => {
- if (this.unselect(), t)
- if (t.start && t.end)
- this.dispatch({
- type: "CHANGE_VIEW_TYPE",
- viewType: e
- }), this.dispatch({
- type: "SET_OPTION",
- optionName: "visibleRange",
- rawOptionValue: t
- });
- else {
- let { dateEnv: n } = this.getCurrentData();
- this.dispatch({
- type: "CHANGE_VIEW_TYPE",
- viewType: e,
- dateMarker: n.createMarker(t)
- });
- }
- else
- this.dispatch({
- type: "CHANGE_VIEW_TYPE",
- viewType: e
- });
- });
- }
- // Forces navigation to a view for the given date.
- // `viewType` can be a specific view name or a generic one like "week" or "day".
- // needs to change
- zoomTo(e, t) {
- let n = this.getCurrentData(), i;
- t = t || "day", i = n.viewSpecs[t] || this.getUnitViewSpec(t), this.unselect(), i ? this.dispatch({
- type: "CHANGE_VIEW_TYPE",
- viewType: i.type,
- dateMarker: e
- }) : this.dispatch({
- type: "CHANGE_DATE",
- dateMarker: e
- });
- }
- // Given a duration singular unit, like "week" or "day", finds a matching view spec.
- // Preference is given to views that have corresponding buttons.
- getUnitViewSpec(e) {
- let { viewSpecs: t, toolbarConfig: n } = this.getCurrentData(), i = [].concat(n.header ? n.header.viewsWithButtons : [], n.footer ? n.footer.viewsWithButtons : []), a, o;
- for (let s in t)
- i.push(s);
- for (a = 0; a < i.length; a += 1)
- if (o = t[i[a]], o && o.singleUnit === e)
- return o;
- return null;
- }
- // Current Date
- // -----------------------------------------------------------------------------------------------------------------
- prev() {
- this.unselect(), this.dispatch({ type: "PREV" });
- }
- next() {
- this.unselect(), this.dispatch({ type: "NEXT" });
- }
- prevYear() {
- let e = this.getCurrentData();
- this.unselect(), this.dispatch({
- type: "CHANGE_DATE",
- dateMarker: e.dateEnv.addYears(e.currentDate, -1)
- });
- }
- nextYear() {
- let e = this.getCurrentData();
- this.unselect(), this.dispatch({
- type: "CHANGE_DATE",
- dateMarker: e.dateEnv.addYears(e.currentDate, 1)
- });
- }
- today() {
- let e = this.getCurrentData();
- this.unselect(), this.dispatch({
- type: "CHANGE_DATE",
- dateMarker: bm(e.calendarOptions.now, e.dateEnv)
- });
- }
- gotoDate(e) {
- let t = this.getCurrentData();
- this.unselect(), this.dispatch({
- type: "CHANGE_DATE",
- dateMarker: t.dateEnv.createMarker(e)
- });
- }
- incrementDate(e) {
- let t = this.getCurrentData(), n = Xr(e);
- n && (this.unselect(), this.dispatch({
- type: "CHANGE_DATE",
- dateMarker: t.dateEnv.add(t.currentDate, n)
- }));
- }
- getDate() {
- let e = this.getCurrentData();
- return e.dateEnv.toDate(e.currentDate);
- }
- // Date Formatting Utils
- // -----------------------------------------------------------------------------------------------------------------
- formatDate(e, t) {
- let { dateEnv: n } = this.getCurrentData();
- return n.format(n.createMarker(e), jn(t));
- }
- // `settings` is for formatter AND isEndExclusive
- formatRange(e, t, n) {
- let { dateEnv: i } = this.getCurrentData();
- return i.formatRange(i.createMarker(e), i.createMarker(t), jn(n), n);
- }
- formatIso(e, t) {
- let { dateEnv: n } = this.getCurrentData();
- return n.formatIso(n.createMarker(e), { omitTime: t });
- }
- // Date Selection / Event Selection / DayClick
- // -----------------------------------------------------------------------------------------------------------------
- select(e, t) {
- let n;
- t == null ? e.start != null ? n = e : n = {
- start: e,
- end: null
- } : n = {
- start: e,
- end: t
- };
- let i = this.getCurrentData(), a = Wbe(n, i.dateEnv, Xr({ days: 1 }));
- a && (this.dispatch({ type: "SELECT_DATES", selection: a }), AG(a, null, i));
- }
- unselect(e) {
- let t = this.getCurrentData();
- t.dateSelection && (this.dispatch({ type: "UNSELECT_DATES" }), Nbe(e, t));
- }
- // Public Events API
- // -----------------------------------------------------------------------------------------------------------------
- addEvent(e, t) {
- if (e instanceof Gn) {
- let o = e._def, s = e._instance;
- return this.getCurrentData().eventStore.defs[o.defId] || (this.dispatch({
- type: "ADD_EVENTS",
- eventStore: qT({ def: o, instance: s })
- // TODO: better util for two args?
- }), this.triggerEventAdd(e)), e;
- }
- let n = this.getCurrentData(), i;
- if (t instanceof cd)
- i = t.internalEventSource;
- else if (typeof t == "boolean")
- t && ([i] = eM(n.eventSources));
- else if (t != null) {
- let o = this.getEventSourceById(t);
- if (!o)
- return console.warn(`Could not find an event source with ID "${t}"`), null;
- i = o.internalEventSource;
- }
- let a = yG(e, i, n, !1);
- if (a) {
- let o = new Gn(n, a.def, a.def.recurringDef ? null : a.instance);
- return this.dispatch({
- type: "ADD_EVENTS",
- eventStore: qT(a)
- }), this.triggerEventAdd(o), o;
- }
- return null;
- }
- triggerEventAdd(e) {
- let { emitter: t } = this.getCurrentData();
- t.trigger("eventAdd", {
- event: e,
- relatedEvents: [],
- revert: () => {
- this.dispatch({
- type: "REMOVE_EVENTS",
- eventStore: EG(e)
- });
- }
- });
- }
- // TODO: optimize
- getEventById(e) {
- let t = this.getCurrentData(), { defs: n, instances: i } = t.eventStore;
- e = String(e);
- for (let a in n) {
- let o = n[a];
- if (o.publicId === e) {
- if (o.recurringDef)
- return new Gn(t, o, null);
- for (let s in i) {
- let l = i[s];
- if (l.defId === o.defId)
- return new Gn(t, o, l);
- }
- }
- }
- return null;
- }
- getEvents() {
- let e = this.getCurrentData();
- return $h(e.eventStore, e);
- }
- removeAllEvents() {
- this.dispatch({ type: "REMOVE_ALL_EVENTS" });
- }
- // Public Event Sources API
- // -----------------------------------------------------------------------------------------------------------------
- getEventSources() {
- let e = this.getCurrentData(), t = e.eventSources, n = [];
- for (let i in t)
- n.push(new cd(e, t[i]));
- return n;
- }
- getEventSourceById(e) {
- let t = this.getCurrentData(), n = t.eventSources;
- e = String(e);
- for (let i in n)
- if (n[i].publicId === e)
- return new cd(t, n[i]);
- return null;
- }
- addEventSource(e) {
- let t = this.getCurrentData();
- if (e instanceof cd)
- return t.eventSources[e.internalEventSource.sourceId] || this.dispatch({
- type: "ADD_EVENT_SOURCES",
- sources: [e.internalEventSource]
- }), e;
- let n = aU(e, t);
- return n ? (this.dispatch({ type: "ADD_EVENT_SOURCES", sources: [n] }), new cd(t, n)) : null;
- }
- removeAllEventSources() {
- this.dispatch({ type: "REMOVE_ALL_EVENT_SOURCES" });
- }
- refetchEvents() {
- this.dispatch({ type: "FETCH_EVENT_SOURCES", isRefetch: !0 });
- }
- // Scroll
- // -----------------------------------------------------------------------------------------------------------------
- scrollToTime(e) {
- let t = Xr(e);
- t && this.trigger("_scrollRequest", { time: t });
- }
-}
-class eSe {
- constructor() {
- this.handlers = [];
- }
- set(e) {
- this.currentValue = e;
- for (let t of this.handlers)
- t(e);
- }
- subscribe(e) {
- this.handlers.push(e), this.currentValue !== void 0 && e(this.currentValue);
- }
-}
-class tSe extends eSe {
- constructor() {
- super(...arguments), this.map = /* @__PURE__ */ new Map();
- }
- // for consistent order
- handle(e) {
- const { map: t } = this;
- let n = !1;
- e.isActive ? (t.set(e.id, e), n = !0) : t.has(e.id) && (t.delete(e.id), n = !0), n && this.set(t);
- }
-}
-const rSe = [], sU = {
- code: "en",
- week: {
- dow: 0,
- doy: 4
- // 4 days need to be within the year to be considered the first week
- },
- direction: "ltr",
- buttonText: {
- prev: "prev",
- next: "next",
- prevYear: "prev year",
- nextYear: "next year",
- year: "year",
- today: "today",
- month: "month",
- week: "week",
- day: "day",
- list: "list"
- },
- weekText: "W",
- weekTextLong: "Week",
- closeHint: "Close",
- timeHint: "Time",
- eventHint: "Event",
- allDayText: "all-day",
- moreLinkText: "more",
- noEventsText: "No events to display"
-}, lU = Object.assign(Object.assign({}, sU), {
- // Includes things we don't want other locales to inherit,
- // things that derive from other translatable strings.
- buttonHints: {
- prev: "Previous $0",
- next: "Next $0",
- today(r, e) {
- return e === "day" ? "Today" : `This ${r}`;
- }
- },
- viewHint: "$0 view",
- navLinkHint: "Go to $0",
- moreLinkHint(r) {
- return `Show ${r} more event${r === 1 ? "" : "s"}`;
- }
-});
-function nSe(r) {
- let e = r.length > 0 ? r[0].code : "en", t = rSe.concat(r), n = {
- en: lU
- };
- for (let i of t)
- n[i.code] = i;
- return {
- map: n,
- defaultCode: e
- };
-}
-function uU(r, e) {
- return typeof r == "object" && !Array.isArray(r) ? cU(r.code, [r.code], r) : iSe(r, e);
-}
-function iSe(r, e) {
- let t = [].concat(r || []), n = aSe(t, e) || lU;
- return cU(r, t, n);
-}
-function aSe(r, e) {
- for (let t = 0; t < r.length; t += 1) {
- let n = r[t].toLocaleLowerCase().split("-");
- for (let i = n.length; i > 0; i -= 1) {
- let a = n.slice(0, i).join("-");
- if (e[a])
- return e[a];
- }
- }
- return null;
-}
-function cU(r, e, t) {
- let n = qE([sU, t], ["buttonText"]);
- delete n.code;
- let { week: i } = n;
- return delete n.week, {
- codeArg: r,
- codes: e,
- week: i,
- simpleNumberFormat: new Intl.NumberFormat(r),
- options: n
- };
-}
-function Gs(r) {
- return {
- id: df(),
- name: r.name,
- premiumReleaseDate: r.premiumReleaseDate ? new Date(r.premiumReleaseDate) : void 0,
- deps: r.deps || [],
- reducers: r.reducers || [],
- isLoadingFuncs: r.isLoadingFuncs || [],
- contextInit: [].concat(r.contextInit || []),
- eventRefiners: r.eventRefiners || {},
- eventDefMemberAdders: r.eventDefMemberAdders || [],
- eventSourceRefiners: r.eventSourceRefiners || {},
- isDraggableTransformers: r.isDraggableTransformers || [],
- eventDragMutationMassagers: r.eventDragMutationMassagers || [],
- eventDefMutationAppliers: r.eventDefMutationAppliers || [],
- dateSelectionTransformers: r.dateSelectionTransformers || [],
- datePointTransforms: r.datePointTransforms || [],
- dateSpanTransforms: r.dateSpanTransforms || [],
- views: r.views || {},
- viewPropsTransformers: r.viewPropsTransformers || [],
- isPropsValid: r.isPropsValid || null,
- externalDefTransforms: r.externalDefTransforms || [],
- viewContainerAppends: r.viewContainerAppends || [],
- eventDropTransformers: r.eventDropTransformers || [],
- componentInteractions: r.componentInteractions || [],
- calendarInteractions: r.calendarInteractions || [],
- themeClasses: r.themeClasses || {},
- eventSourceDefs: r.eventSourceDefs || [],
- cmdFormatter: r.cmdFormatter,
- recurringTypes: r.recurringTypes || [],
- namedTimeZonedImpl: r.namedTimeZonedImpl,
- initialView: r.initialView || "",
- elementDraggingImpl: r.elementDraggingImpl,
- optionChangeHandlers: r.optionChangeHandlers || {},
- scrollGridImpl: r.scrollGridImpl || null,
- listenerRefiners: r.listenerRefiners || {},
- optionRefiners: r.optionRefiners || {},
- propSetHandlers: r.propSetHandlers || {}
- };
-}
-function oSe(r, e) {
- let t = {}, n = {
- premiumReleaseDate: void 0,
- reducers: [],
- isLoadingFuncs: [],
- contextInit: [],
- eventRefiners: {},
- eventDefMemberAdders: [],
- eventSourceRefiners: {},
- isDraggableTransformers: [],
- eventDragMutationMassagers: [],
- eventDefMutationAppliers: [],
- dateSelectionTransformers: [],
- datePointTransforms: [],
- dateSpanTransforms: [],
- views: {},
- viewPropsTransformers: [],
- isPropsValid: null,
- externalDefTransforms: [],
- viewContainerAppends: [],
- eventDropTransformers: [],
- componentInteractions: [],
- calendarInteractions: [],
- themeClasses: {},
- eventSourceDefs: [],
- cmdFormatter: null,
- recurringTypes: [],
- namedTimeZonedImpl: null,
- initialView: "",
- elementDraggingImpl: null,
- optionChangeHandlers: {},
- scrollGridImpl: null,
- listenerRefiners: {},
- optionRefiners: {},
- propSetHandlers: {}
- };
- function i(a) {
- for (let o of a) {
- const s = o.name, l = t[s];
- l === void 0 ? (t[s] = o.id, i(o.deps), n = lSe(n, o)) : l !== o.id && console.warn(`Duplicate plugin '${s}'`);
- }
- }
- return r && i(r), i(e), n;
-}
-function sSe() {
- let r = [], e = [], t;
- return (n, i) => ((!t || !_c(n, r) || !_c(i, e)) && (t = oSe(n, i)), r = n, e = i, t);
-}
-function lSe(r, e) {
- return {
- premiumReleaseDate: uSe(r.premiumReleaseDate, e.premiumReleaseDate),
- reducers: r.reducers.concat(e.reducers),
- isLoadingFuncs: r.isLoadingFuncs.concat(e.isLoadingFuncs),
- contextInit: r.contextInit.concat(e.contextInit),
- eventRefiners: Object.assign(Object.assign({}, r.eventRefiners), e.eventRefiners),
- eventDefMemberAdders: r.eventDefMemberAdders.concat(e.eventDefMemberAdders),
- eventSourceRefiners: Object.assign(Object.assign({}, r.eventSourceRefiners), e.eventSourceRefiners),
- isDraggableTransformers: r.isDraggableTransformers.concat(e.isDraggableTransformers),
- eventDragMutationMassagers: r.eventDragMutationMassagers.concat(e.eventDragMutationMassagers),
- eventDefMutationAppliers: r.eventDefMutationAppliers.concat(e.eventDefMutationAppliers),
- dateSelectionTransformers: r.dateSelectionTransformers.concat(e.dateSelectionTransformers),
- datePointTransforms: r.datePointTransforms.concat(e.datePointTransforms),
- dateSpanTransforms: r.dateSpanTransforms.concat(e.dateSpanTransforms),
- views: Object.assign(Object.assign({}, r.views), e.views),
- viewPropsTransformers: r.viewPropsTransformers.concat(e.viewPropsTransformers),
- isPropsValid: e.isPropsValid || r.isPropsValid,
- externalDefTransforms: r.externalDefTransforms.concat(e.externalDefTransforms),
- viewContainerAppends: r.viewContainerAppends.concat(e.viewContainerAppends),
- eventDropTransformers: r.eventDropTransformers.concat(e.eventDropTransformers),
- calendarInteractions: r.calendarInteractions.concat(e.calendarInteractions),
- componentInteractions: r.componentInteractions.concat(e.componentInteractions),
- themeClasses: Object.assign(Object.assign({}, r.themeClasses), e.themeClasses),
- eventSourceDefs: r.eventSourceDefs.concat(e.eventSourceDefs),
- cmdFormatter: e.cmdFormatter || r.cmdFormatter,
- recurringTypes: r.recurringTypes.concat(e.recurringTypes),
- namedTimeZonedImpl: e.namedTimeZonedImpl || r.namedTimeZonedImpl,
- initialView: r.initialView || e.initialView,
- elementDraggingImpl: r.elementDraggingImpl || e.elementDraggingImpl,
- optionChangeHandlers: Object.assign(Object.assign({}, r.optionChangeHandlers), e.optionChangeHandlers),
- scrollGridImpl: e.scrollGridImpl || r.scrollGridImpl,
- listenerRefiners: Object.assign(Object.assign({}, r.listenerRefiners), e.listenerRefiners),
- optionRefiners: Object.assign(Object.assign({}, r.optionRefiners), e.optionRefiners),
- propSetHandlers: Object.assign(Object.assign({}, r.propSetHandlers), e.propSetHandlers)
- };
-}
-function uSe(r, e) {
- return r === void 0 ? e : e === void 0 ? r : new Date(Math.max(r.valueOf(), e.valueOf()));
-}
-class Ac extends _m {
-}
-Ac.prototype.classes = {
- root: "fc-theme-standard",
- tableCellShaded: "fc-cell-shaded",
- buttonGroup: "fc-button-group",
- button: "fc-button fc-button-primary",
- buttonActive: "fc-button-active"
-};
-Ac.prototype.baseIconClass = "fc-icon";
-Ac.prototype.iconClasses = {
- close: "fc-icon-x",
- prev: "fc-icon-chevron-left",
- next: "fc-icon-chevron-right",
- prevYear: "fc-icon-chevrons-left",
- nextYear: "fc-icon-chevrons-right"
-};
-Ac.prototype.rtlIconClasses = {
- prev: "fc-icon-chevron-right",
- next: "fc-icon-chevron-left",
- prevYear: "fc-icon-chevrons-right",
- nextYear: "fc-icon-chevrons-left"
-};
-Ac.prototype.iconOverrideOption = "buttonIcons";
-Ac.prototype.iconOverrideCustomButtonOption = "icon";
-Ac.prototype.iconOverridePrefix = "fc-icon-";
-function cSe(r, e) {
- let t = {}, n;
- for (n in r)
- oI(n, t, r, e);
- for (n in e)
- oI(n, t, r, e);
- return t;
-}
-function oI(r, e, t, n) {
- if (e[r])
- return e[r];
- let i = hSe(r, e, t, n);
- return i && (e[r] = i), i;
-}
-function hSe(r, e, t, n) {
- let i = t[r], a = n[r], o = (c) => i && i[c] !== null ? i[c] : a && a[c] !== null ? a[c] : null, s = o("component"), l = o("superType"), u = null;
- if (l) {
- if (l === r)
- throw new Error("Can't have a custom view type that references itself");
- u = oI(l, e, t, n);
- }
- return !s && u && (s = u.component), s ? {
- type: r,
- component: s,
- defaults: Object.assign(Object.assign({}, u ? u.defaults : {}), i ? i.rawOptions : {}),
- overrides: Object.assign(Object.assign({}, u ? u.overrides : {}), a ? a.rawOptions : {})
- } : null;
-}
-function Rz(r) {
- return su(r, fSe);
-}
-function fSe(r) {
- let e = typeof r == "function" ? { component: r } : r, { component: t } = e;
- return e.content ? t = Nz(e) : t && !(t.prototype instanceof un) && (t = Nz(Object.assign(Object.assign({}, e), { content: t }))), {
- superType: e.type,
- component: t,
- rawOptions: e
- // includes type and component too :(
- };
-}
-function Nz(r) {
- return (e) => me(fu.Consumer, null, (t) => me(ma, { elTag: "div", elClasses: iU(t.viewSpec), renderProps: Object.assign(Object.assign({}, e), { nextDayThreshold: t.options.nextDayThreshold }), generatorName: void 0, customGenerator: r.content, classNameGenerator: r.classNames, didMount: r.didMount, willUnmount: r.willUnmount }));
-}
-function dSe(r, e, t, n) {
- let i = Rz(r), a = Rz(e.views), o = cSe(i, a);
- return su(o, (s) => vSe(s, a, e, t, n));
-}
-function vSe(r, e, t, n, i) {
- let a = r.overrides.duration || r.defaults.duration || n.duration || t.duration, o = null, s = "", l = "", u = {};
- if (a && (o = pSe(a), o)) {
- let f = KT(o);
- s = f.unit, f.value === 1 && (l = s, u = e[s] ? e[s].rawOptions : {});
- }
- let c = (f) => {
- let v = f.buttonText || {}, b = r.defaults.buttonTextKey;
- return b != null && v[b] != null ? v[b] : v[r.type] != null ? v[r.type] : v[l] != null ? v[l] : null;
- }, h = (f) => {
- let v = f.buttonHints || {}, b = r.defaults.buttonTextKey;
- return b != null && v[b] != null ? v[b] : v[r.type] != null ? v[r.type] : v[l] != null ? v[l] : null;
- };
- return {
- type: r.type,
- component: r.component,
- duration: o,
- durationUnit: s,
- singleUnit: l,
- optionDefaults: r.defaults,
- optionOverrides: Object.assign(Object.assign({}, u), r.overrides),
- buttonTextOverride: c(n) || c(t) || // constructor-specified buttonText lookup hash takes precedence
- r.overrides.buttonText,
- buttonTextDefault: c(i) || r.defaults.buttonText || c(tg) || r.type,
- // not DRY
- buttonTitleOverride: h(n) || h(t) || r.overrides.buttonHint,
- buttonTitleDefault: h(i) || r.defaults.buttonHint || h(tg)
- // will eventually fall back to buttonText
- };
-}
-let zz = {};
-function pSe(r) {
- let e = JSON.stringify(r), t = zz[e];
- return t === void 0 && (t = Xr(r), zz[e] = t), t;
-}
-function gSe(r, e) {
- switch (e.type) {
- case "CHANGE_VIEW_TYPE":
- r = e.viewType;
- }
- return r;
-}
-function mSe(r, e) {
- switch (e.type) {
- case "SET_OPTION":
- return Object.assign(Object.assign({}, r), { [e.optionName]: e.rawOptionValue });
- default:
- return r;
- }
-}
-function ySe(r, e, t, n) {
- let i;
- switch (e.type) {
- case "CHANGE_VIEW_TYPE":
- return n.build(e.dateMarker || t);
- case "CHANGE_DATE":
- return n.build(e.dateMarker);
- case "PREV":
- if (i = n.buildPrev(r, t), i.isValid)
- return i;
- break;
- case "NEXT":
- if (i = n.buildNext(r, t), i.isValid)
- return i;
- break;
- }
- return r;
-}
-function _Se(r, e, t) {
- let n = e ? e.activeRange : null;
- return fU({}, ISe(r, t), n, t);
-}
-function bSe(r, e, t, n) {
- let i = t ? t.activeRange : null;
- switch (e.type) {
- case "ADD_EVENT_SOURCES":
- return fU(r, e.sources, i, n);
- case "REMOVE_EVENT_SOURCE":
- return SSe(r, e.sourceId);
- case "PREV":
- case "NEXT":
- case "CHANGE_DATE":
- case "CHANGE_VIEW_TYPE":
- return t ? dU(r, i, n) : r;
- case "FETCH_EVENT_SOURCES":
- return TM(r, e.sourceIds ? (
- // why no type?
- dG(e.sourceIds)
- ) : vU(r, n), i, e.isRefetch || !1, n);
- case "RECEIVE_EVENTS":
- case "RECEIVE_EVENT_ERROR":
- return TSe(r, e.sourceId, e.fetchId, e.fetchRange);
- case "REMOVE_ALL_EVENT_SOURCES":
- return {};
- default:
- return r;
- }
-}
-function xSe(r, e, t) {
- let n = e ? e.activeRange : null;
- return TM(r, vU(r, t), n, !0, t);
-}
-function hU(r) {
- for (let e in r)
- if (r[e].isFetching)
- return !0;
- return !1;
-}
-function fU(r, e, t, n) {
- let i = {};
- for (let a of e)
- i[a.sourceId] = a;
- return t && (i = dU(i, t, n)), Object.assign(Object.assign({}, r), i);
-}
-function SSe(r, e) {
- return ef(r, (t) => t.sourceId !== e);
-}
-function dU(r, e, t) {
- return TM(r, ef(r, (n) => wSe(n, e, t)), e, !1, t);
-}
-function wSe(r, e, t) {
- return pU(r, t) ? !t.options.lazyFetching || !r.fetchRange || r.isFetching || // always cancel outdated in-progress fetches
- e.start < r.fetchRange.start || e.end > r.fetchRange.end : !r.latestFetchId;
-}
-function TM(r, e, t, n, i) {
- let a = {};
- for (let o in r) {
- let s = r[o];
- e[o] ? a[o] = CSe(s, t, n, i) : a[o] = s;
- }
- return a;
-}
-function CSe(r, e, t, n) {
- let { options: i, calendarApi: a } = n, o = n.pluginHooks.eventSourceDefs[r.sourceDefId], s = df();
- return o.fetch({
- eventSource: r,
- range: e,
- isRefetch: t,
- context: n
- }, (l) => {
- let { rawEvents: u } = l;
- i.eventSourceSuccess && (u = i.eventSourceSuccess.call(a, u, l.response) || u), r.success && (u = r.success.call(a, u, l.response) || u), n.dispatch({
- type: "RECEIVE_EVENTS",
- sourceId: r.sourceId,
- fetchId: s,
- fetchRange: e,
- rawEvents: u
- });
- }, (l) => {
- let u = !1;
- i.eventSourceFailure && (i.eventSourceFailure.call(a, l), u = !0), r.failure && (r.failure(l), u = !0), u || console.warn(l.message, l), n.dispatch({
- type: "RECEIVE_EVENT_ERROR",
- sourceId: r.sourceId,
- fetchId: s,
- fetchRange: e,
- error: l
- });
- }), Object.assign(Object.assign({}, r), { isFetching: !0, latestFetchId: s });
-}
-function TSe(r, e, t, n) {
- let i = r[e];
- return i && // not already removed
- t === i.latestFetchId ? Object.assign(Object.assign({}, r), { [e]: Object.assign(Object.assign({}, i), { isFetching: !1, fetchRange: n }) }) : r;
-}
-function vU(r, e) {
- return ef(r, (t) => pU(t, e));
-}
-function ISe(r, e) {
- let t = oU(e), n = [].concat(r.eventSources || []), i = [];
- r.initialEvents && n.unshift(r.initialEvents), r.events && n.unshift(r.events);
- for (let a of n) {
- let o = aU(a, e, t);
- o && i.push(o);
- }
- return i;
-}
-function pU(r, e) {
- return !e.pluginHooks.eventSourceDefs[r.sourceDefId].ignoreRange;
-}
-function ASe(r, e) {
- switch (e.type) {
- case "UNSELECT_DATES":
- return null;
- case "SELECT_DATES":
- return e.selection;
- default:
- return r;
- }
-}
-function ESe(r, e) {
- switch (e.type) {
- case "UNSELECT_EVENT":
- return "";
- case "SELECT_EVENT":
- return e.eventInstanceId;
- default:
- return r;
- }
-}
-function MSe(r, e) {
- let t;
- switch (e.type) {
- case "UNSET_EVENT_DRAG":
- return null;
- case "SET_EVENT_DRAG":
- return t = e.state, {
- affectedEvents: t.affectedEvents,
- mutatedEvents: t.mutatedEvents,
- isEvent: t.isEvent
- };
- default:
- return r;
- }
-}
-function DSe(r, e) {
- let t;
- switch (e.type) {
- case "UNSET_EVENT_RESIZE":
- return null;
- case "SET_EVENT_RESIZE":
- return t = e.state, {
- affectedEvents: t.affectedEvents,
- mutatedEvents: t.mutatedEvents,
- isEvent: t.isEvent
- };
- default:
- return r;
- }
-}
-function kSe(r, e, t, n, i) {
- let a = r.headerToolbar ? Bz(r.headerToolbar, r, e, t, n, i) : null, o = r.footerToolbar ? Bz(r.footerToolbar, r, e, t, n, i) : null;
- return { header: a, footer: o };
-}
-function Bz(r, e, t, n, i, a) {
- let o = {}, s = [], l = !1;
- for (let u in r) {
- let c = r[u], h = OSe(c, e, t, n, i, a);
- o[u] = h.widgets, s.push(...h.viewsWithButtons), l = l || h.hasTitle;
- }
- return { sectionWidgets: o, viewsWithButtons: s, hasTitle: l };
-}
-function OSe(r, e, t, n, i, a) {
- let o = e.direction === "rtl", s = e.customButtons || {}, l = t.buttonText || {}, u = e.buttonText || {}, c = t.buttonHints || {}, h = e.buttonHints || {}, f = r ? r.split(" ") : [], v = [], b = !1;
- return { widgets: f.map((p) => p.split(",").map((d) => {
- if (d === "title")
- return b = !0, { buttonName: d };
- let m, _, y, x, g, S;
- if (m = s[d])
- y = (T) => {
- m.click && m.click.call(T.target, T, T.target);
- }, (x = n.getCustomButtonIconClass(m)) || (x = n.getIconClass(d, o)) || (g = m.text), S = m.hint || m.text;
- else if (_ = i[d]) {
- v.push(d), y = () => {
- a.changeView(d);
- }, (g = _.buttonTextOverride) || (x = n.getIconClass(d, o)) || (g = _.buttonTextDefault);
- let T = _.buttonTextOverride || _.buttonTextDefault;
- S = eg(
- _.buttonTitleOverride || _.buttonTitleDefault || e.viewHint,
- [T, d],
- // view-name = buttonName
- T
- );
- } else if (a[d])
- if (y = () => {
- a[d]();
- }, (g = l[d]) || (x = n.getIconClass(d, o)) || (g = u[d]), d === "prevYear" || d === "nextYear") {
- let T = d === "prevYear" ? "prev" : "next";
- S = eg(c[T] || h[T], [
- u.year || "year",
- "year"
- ], u[d]);
- } else
- S = (T) => eg(c[d] || h[d], [
- u[T] || T,
- T
- ], u[d]);
- return { buttonName: d, buttonClick: y, buttonIcon: x, buttonText: g, buttonHint: S };
- })), viewsWithButtons: v, hasTitle: b };
-}
-class LSe {
- constructor(e, t, n) {
- this.type = e, this.getCurrentData = t, this.dateEnv = n;
- }
- get calendar() {
- return this.getCurrentData().calendarApi;
- }
- get title() {
- return this.getCurrentData().viewTitle;
- }
- get activeStart() {
- return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);
- }
- get activeEnd() {
- return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);
- }
- get currentStart() {
- return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);
- }
- get currentEnd() {
- return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);
- }
- getOption(e) {
- return this.getCurrentData().options[e];
- }
-}
-let PSe = {
- ignoreRange: !0,
- parseMeta(r) {
- return Array.isArray(r.events) ? r.events : null;
- },
- fetch(r, e) {
- e({
- rawEvents: r.eventSource.meta
- });
- }
-};
-const RSe = Gs({
- name: "array-event-source",
- eventSourceDefs: [PSe]
-});
-let NSe = {
- parseMeta(r) {
- return typeof r.events == "function" ? r.events : null;
- },
- fetch(r, e, t) {
- const { dateEnv: n } = r.context, i = r.eventSource.meta;
- Cbe(i.bind(null, kG(r.range, n)), (a) => e({ rawEvents: a }), t);
- }
-};
-const zSe = Gs({
- name: "func-event-source",
- eventSourceDefs: [NSe]
-}), BSe = {
- method: String,
- extraParams: $e,
- startParam: String,
- endParam: String,
- timeZoneParam: String
-};
-let jSe = {
- parseMeta(r) {
- return r.url && (r.format === "json" || !r.format) ? {
- url: r.url,
- format: "json",
- method: (r.method || "GET").toUpperCase(),
- extraParams: r.extraParams,
- startParam: r.startParam,
- endParam: r.endParam,
- timeZoneParam: r.timeZoneParam
- } : null;
- },
- fetch(r, e, t) {
- const { meta: n } = r.eventSource, i = $Se(n, r.range, r.context);
- Mxe(n.method, n.url, i).then(([a, o]) => {
- e({ rawEvents: a, response: o });
- }, t);
- }
-};
-const FSe = Gs({
- name: "json-event-source",
- eventSourceRefiners: BSe,
- eventSourceDefs: [jSe]
-});
-function $Se(r, e, t) {
- let { dateEnv: n, options: i } = t, a, o, s, l, u = {};
- return a = r.startParam, a == null && (a = i.startParam), o = r.endParam, o == null && (o = i.endParam), s = r.timeZoneParam, s == null && (s = i.timeZoneParam), typeof r.extraParams == "function" ? l = r.extraParams() : l = r.extraParams || {}, Object.assign(u, l), u[a] = n.formatIso(e.start), u[o] = n.formatIso(e.end), n.timeZone !== "local" && (u[s] = n.timeZone), u;
-}
-const HSe = {
- daysOfWeek: $e,
- startTime: Xr,
- endTime: Xr,
- duration: Xr,
- startRecur: $e,
- endRecur: $e
-};
-let VSe = {
- parse(r, e) {
- if (r.daysOfWeek || r.startTime || r.endTime || r.startRecur || r.endRecur) {
- let t = {
- daysOfWeek: r.daysOfWeek || null,
- startTime: r.startTime || null,
- endTime: r.endTime || null,
- startRecur: r.startRecur ? e.createMarker(r.startRecur) : null,
- endRecur: r.endRecur ? e.createMarker(r.endRecur) : null
- }, n;
- return r.duration && (n = r.duration), !n && r.startTime && r.endTime && (n = o_e(r.endTime, r.startTime)), {
- allDayGuess: !r.startTime && !r.endTime,
- duration: n,
- typeData: t
- // doesn't need endTime anymore but oh well
- };
- }
- return null;
- },
- expand(r, e, t) {
- let n = xc(e, { start: r.startRecur, end: r.endRecur });
- return n ? USe(r.daysOfWeek, r.startTime, n, t) : [];
- }
-};
-const GSe = Gs({
- name: "simple-recurring-event",
- recurringTypes: [VSe],
- eventRefiners: HSe
-});
-function USe(r, e, t, n) {
- let i = r ? dG(r) : null, a = kn(t.start), o = t.end, s = [];
- for (; a < o; ) {
- let l;
- (!i || i[a.getUTCDay()]) && (e ? l = n.add(a, e) : l = a, s.push(l)), a = Bi(a, 1);
- }
- return s;
-}
-const WSe = Gs({
- name: "change-handler",
- optionChangeHandlers: {
- events(r, e) {
- jz([r], e);
- },
- eventSources: jz
- }
-});
-function jz(r, e) {
- let t = eM(e.getCurrentData().eventSources);
- if (t.length === 1 && r.length === 1 && Array.isArray(t[0]._raw) && Array.isArray(r[0])) {
- e.dispatch({
- type: "RESET_RAW_EVENTS",
- sourceId: t[0].sourceId,
- rawEvents: r[0]
- });
- return;
- }
- let n = [];
- for (let i of r) {
- let a = !1;
- for (let o = 0; o < t.length; o += 1)
- if (t[o]._raw === i) {
- t.splice(o, 1), a = !0;
- break;
- }
- a || n.push(i);
- }
- for (let i of t)
- e.dispatch({
- type: "REMOVE_EVENT_SOURCE",
- sourceId: i.sourceId
- });
- for (let i of n)
- e.calendarApi.addEventSource(i);
-}
-function YSe(r, e) {
- e.emitter.trigger("datesSet", Object.assign(Object.assign({}, kG(r.activeRange, e.dateEnv)), { view: e.viewApi }));
-}
-function XSe(r, e) {
- let { emitter: t } = e;
- t.hasHandlers("eventsSet") && t.trigger("eventsSet", $h(r, e));
-}
-const ZSe = [
- RSe,
- zSe,
- FSe,
- GSe,
- WSe,
- Gs({
- name: "misc",
- isLoadingFuncs: [
- (r) => hU(r.eventSources)
- ],
- propSetHandlers: {
- dateProfile: YSe,
- eventStore: XSe
- }
- })
-];
-class JSe {
- constructor(e, t) {
- this.runTaskOption = e, this.drainedOption = t, this.queue = [], this.delayedRunner = new bM(this.drain.bind(this));
- }
- request(e, t) {
- this.queue.push(e), this.delayedRunner.request(t);
- }
- pause(e) {
- this.delayedRunner.pause(e);
- }
- resume(e, t) {
- this.delayedRunner.resume(e, t);
- }
- drain() {
- let { queue: e } = this;
- for (; e.length; ) {
- let t = [], n;
- for (; n = e.shift(); )
- this.runTask(n), t.push(n);
- this.drained(t);
- }
- }
- runTask(e) {
- this.runTaskOption && this.runTaskOption(e);
- }
- drained(e) {
- this.drainedOption && this.drainedOption(e);
- }
-}
-function KSe(r, e, t) {
- let n;
- return /^(year|month)$/.test(r.currentRangeUnit) ? n = r.currentRange : n = r.activeRange, t.formatRange(n.start, n.end, jn(e.titleFormat || QSe(r)), {
- isEndExclusive: r.isRangeAllDay,
- defaultSeparator: e.titleRangeSeparator
- });
-}
-function QSe(r) {
- let { currentRangeUnit: e } = r;
- if (e === "year")
- return { year: "numeric" };
- if (e === "month")
- return { year: "numeric", month: "long" };
- let t = ub(r.currentRange.start, r.currentRange.end);
- return t !== null && t > 1 ? { year: "numeric", month: "short", day: "numeric" } : { year: "numeric", month: "long", day: "numeric" };
-}
-class qSe {
- constructor(e) {
- this.computeCurrentViewData = rr(this._computeCurrentViewData), this.organizeRawLocales = rr(nSe), this.buildLocale = rr(uU), this.buildPluginHooks = sSe(), this.buildDateEnv = rr(ewe), this.buildTheme = rr(twe), this.parseToolbars = rr(kSe), this.buildViewSpecs = rr(dSe), this.buildDateProfileGenerator = q0(rwe), this.buildViewApi = rr(nwe), this.buildViewUiProps = q0(owe), this.buildEventUiBySource = rr(iwe, El), this.buildEventUiBases = rr(awe), this.parseContextBusinessHours = q0(swe), this.buildTitle = rr(KSe), this.emitter = new Cx(), this.actionRunner = new JSe(this._handleAction.bind(this), this.updateData.bind(this)), this.currentCalendarOptionsInput = {}, this.currentCalendarOptionsRefined = {}, this.currentViewOptionsInput = {}, this.currentViewOptionsRefined = {}, this.currentCalendarOptionsRefiners = {}, this.optionsForRefining = [], this.optionsForHandling = [], this.getCurrentData = () => this.data, this.dispatch = (f) => {
- this.actionRunner.request(f);
- }, this.props = e, this.actionRunner.pause();
- let t = {}, n = this.computeOptionsData(e.optionOverrides, t, e.calendarApi), i = n.calendarOptions.initialView || n.pluginHooks.initialView, a = this.computeCurrentViewData(i, n, e.optionOverrides, t);
- e.calendarApi.currentDataManager = this, this.emitter.setThisContext(e.calendarApi), this.emitter.setOptions(a.options);
- let o = Rbe(n.calendarOptions, n.dateEnv), s = a.dateProfileGenerator.build(o);
- Ql(s.activeRange, o) || (o = s.currentRange.start);
- let l = {
- dateEnv: n.dateEnv,
- options: n.calendarOptions,
- pluginHooks: n.pluginHooks,
- calendarApi: e.calendarApi,
- dispatch: this.dispatch,
- emitter: this.emitter,
- getCurrentData: this.getCurrentData
- };
- for (let f of n.pluginHooks.contextInit)
- f(l);
- let u = _Se(n.calendarOptions, s, l), c = {
- dynamicOptionOverrides: t,
- currentViewType: i,
- currentDate: o,
- dateProfile: s,
- businessHours: this.parseContextBusinessHours(l),
- eventSources: u,
- eventUiBases: {},
- eventStore: xo(),
- renderableEventStore: xo(),
- dateSelection: null,
- eventSelection: "",
- eventDrag: null,
- eventResize: null,
- selectionConfig: this.buildViewUiProps(l).selectionConfig
- }, h = Object.assign(Object.assign({}, l), c);
- for (let f of n.pluginHooks.reducers)
- Object.assign(c, f(null, null, h));
- $C(c, l) && this.emitter.trigger("loading", !0), this.state = c, this.updateData(), this.actionRunner.resume();
- }
- resetOptions(e, t) {
- let { props: n } = this;
- t === void 0 ? n.optionOverrides = e : (n.optionOverrides = Object.assign(Object.assign({}, n.optionOverrides || {}), e), this.optionsForRefining.push(...t)), (t === void 0 || t.length) && this.actionRunner.request({
- type: "NOTHING"
- });
- }
- _handleAction(e) {
- let { props: t, state: n, emitter: i } = this, a = mSe(n.dynamicOptionOverrides, e), o = this.computeOptionsData(t.optionOverrides, a, t.calendarApi), s = gSe(n.currentViewType, e), l = this.computeCurrentViewData(s, o, t.optionOverrides, a);
- t.calendarApi.currentDataManager = this, i.setThisContext(t.calendarApi), i.setOptions(l.options);
- let u = {
- dateEnv: o.dateEnv,
- options: o.calendarOptions,
- pluginHooks: o.pluginHooks,
- calendarApi: t.calendarApi,
- dispatch: this.dispatch,
- emitter: i,
- getCurrentData: this.getCurrentData
- }, { currentDate: c, dateProfile: h } = n;
- this.data && this.data.dateProfileGenerator !== l.dateProfileGenerator && (h = l.dateProfileGenerator.build(c)), c = Pbe(c, e), h = ySe(h, e, c, l.dateProfileGenerator), (e.type === "PREV" || // TODO: move this logic into DateProfileGenerator
- e.type === "NEXT" || // "
- !Ql(h.currentRange, c)) && (c = h.currentRange.start);
- let f = bSe(n.eventSources, e, h, u), v = mxe(n.eventStore, e, f, h, u), w = hU(f) && !l.options.progressiveEventRendering && n.renderableEventStore || v, { eventUiSingleBase: p, selectionConfig: d } = this.buildViewUiProps(u), m = this.buildEventUiBySource(f), _ = this.buildEventUiBases(w.defs, p, m), y = {
- dynamicOptionOverrides: a,
- currentViewType: s,
- currentDate: c,
- dateProfile: h,
- eventSources: f,
- eventStore: v,
- renderableEventStore: w,
- selectionConfig: d,
- eventUiBases: _,
- businessHours: this.parseContextBusinessHours(u),
- dateSelection: ASe(n.dateSelection, e),
- eventSelection: ESe(n.eventSelection, e),
- eventDrag: MSe(n.eventDrag, e),
- eventResize: DSe(n.eventResize, e)
- }, x = Object.assign(Object.assign({}, u), y);
- for (let T of o.pluginHooks.reducers)
- Object.assign(y, T(n, e, x));
- let g = $C(n, u), S = $C(y, u);
- !g && S ? i.trigger("loading", !0) : g && !S && i.trigger("loading", !1), this.state = y, t.onAction && t.onAction(e);
- }
- updateData() {
- let { props: e, state: t } = this, n = this.data, i = this.computeOptionsData(e.optionOverrides, t.dynamicOptionOverrides, e.calendarApi), a = this.computeCurrentViewData(t.currentViewType, i, e.optionOverrides, t.dynamicOptionOverrides), o = this.data = Object.assign(Object.assign(Object.assign({ viewTitle: this.buildTitle(t.dateProfile, a.options, i.dateEnv), calendarApi: e.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, i), a), t), s = i.pluginHooks.optionChangeHandlers, l = n && n.calendarOptions, u = i.calendarOptions;
- if (l && l !== u) {
- l.timeZone !== u.timeZone && (t.eventSources = o.eventSources = xSe(o.eventSources, t.dateProfile, o), t.eventStore = o.eventStore = Oz(o.eventStore, n.dateEnv, o.dateEnv), t.renderableEventStore = o.renderableEventStore = Oz(o.renderableEventStore, n.dateEnv, o.dateEnv));
- for (let c in s)
- (this.optionsForHandling.indexOf(c) !== -1 || l[c] !== u[c]) && s[c](u[c], o);
- }
- this.optionsForHandling = [], e.onData && e.onData(o);
- }
- computeOptionsData(e, t, n) {
- if (!this.optionsForRefining.length && e === this.stableOptionOverrides && t === this.stableDynamicOptionOverrides)
- return this.stableCalendarOptionsData;
- let { refinedOptions: i, pluginHooks: a, localeDefaults: o, availableLocaleData: s, extra: l } = this.processRawCalendarOptions(e, t);
- Fz(l);
- let u = this.buildDateEnv(i.timeZone, i.locale, i.weekNumberCalculation, i.firstDay, i.weekText, a, s, i.defaultRangeSeparator), c = this.buildViewSpecs(a.views, this.stableOptionOverrides, this.stableDynamicOptionOverrides, o), h = this.buildTheme(i, a), f = this.parseToolbars(i, this.stableOptionOverrides, h, c, n);
- return this.stableCalendarOptionsData = {
- calendarOptions: i,
- pluginHooks: a,
- dateEnv: u,
- viewSpecs: c,
- theme: h,
- toolbarConfig: f,
- localeDefaults: o,
- availableRawLocales: s.map
- };
- }
- // always called from behind a memoizer
- processRawCalendarOptions(e, t) {
- let { locales: n, locale: i } = LC([
- tg,
- e,
- t
- ]), a = this.organizeRawLocales(n), o = a.map, s = this.buildLocale(i || a.defaultCode, o).options, l = this.buildPluginHooks(e.plugins || [], ZSe), u = this.currentCalendarOptionsRefiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, Sz), wz), Cz), l.listenerRefiners), l.optionRefiners), c = {}, h = LC([
- tg,
- s,
- e,
- t
- ]), f = {}, v = this.currentCalendarOptionsInput, b = this.currentCalendarOptionsRefined, w = !1;
- for (let p in h)
- this.optionsForRefining.indexOf(p) === -1 && (h[p] === v[p] || yh[p] && p in v && yh[p](v[p], h[p])) ? f[p] = b[p] : u[p] ? (f[p] = u[p](h[p]), w = !0) : c[p] = v[p];
- return w && (this.currentCalendarOptionsInput = h, this.currentCalendarOptionsRefined = f, this.stableOptionOverrides = e, this.stableDynamicOptionOverrides = t), this.optionsForHandling.push(...this.optionsForRefining), this.optionsForRefining = [], {
- rawOptions: this.currentCalendarOptionsInput,
- refinedOptions: this.currentCalendarOptionsRefined,
- pluginHooks: l,
- availableLocaleData: a,
- localeDefaults: s,
- extra: c
- };
- }
- _computeCurrentViewData(e, t, n, i) {
- let a = t.viewSpecs[e];
- if (!a)
- throw new Error(`viewType "${e}" is not available. Please make sure you've loaded all neccessary plugins`);
- let { refinedOptions: o, extra: s } = this.processRawViewOptions(a, t.pluginHooks, t.localeDefaults, n, i);
- Fz(s);
- let l = this.buildDateProfileGenerator({
- dateProfileGeneratorClass: a.optionDefaults.dateProfileGeneratorClass,
- duration: a.duration,
- durationUnit: a.durationUnit,
- usesMinMaxTime: a.optionDefaults.usesMinMaxTime,
- dateEnv: t.dateEnv,
- calendarApi: this.props.calendarApi,
- slotMinTime: o.slotMinTime,
- slotMaxTime: o.slotMaxTime,
- showNonCurrentDates: o.showNonCurrentDates,
- dayCount: o.dayCount,
- dateAlignment: o.dateAlignment,
- dateIncrement: o.dateIncrement,
- hiddenDays: o.hiddenDays,
- weekends: o.weekends,
- nowInput: o.now,
- validRangeInput: o.validRange,
- visibleRangeInput: o.visibleRange,
- fixedWeekCount: o.fixedWeekCount
- }), u = this.buildViewApi(e, this.getCurrentData, t.dateEnv);
- return { viewSpec: a, options: o, dateProfileGenerator: l, viewApi: u };
- }
- processRawViewOptions(e, t, n, i, a) {
- let o = LC([
- tg,
- e.optionDefaults,
- n,
- i,
- e.optionOverrides,
- a
- ]), s = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, Sz), wz), Cz), V_e), t.listenerRefiners), t.optionRefiners), l = {}, u = this.currentViewOptionsInput, c = this.currentViewOptionsRefined, h = !1, f = {};
- for (let v in o)
- o[v] === u[v] || yh[v] && yh[v](o[v], u[v]) ? l[v] = c[v] : (o[v] === this.currentCalendarOptionsInput[v] || yh[v] && yh[v](o[v], this.currentCalendarOptionsInput[v]) ? v in this.currentCalendarOptionsRefined && (l[v] = this.currentCalendarOptionsRefined[v]) : s[v] ? l[v] = s[v](o[v]) : f[v] = o[v], h = !0);
- return h && (this.currentViewOptionsInput = o, this.currentViewOptionsRefined = l), {
- rawOptions: this.currentViewOptionsInput,
- refinedOptions: this.currentViewOptionsRefined,
- extra: f
- };
- }
-}
-function ewe(r, e, t, n, i, a, o, s) {
- let l = uU(e || o.defaultCode, o.map);
- return new nxe({
- calendarSystem: "gregory",
- timeZone: r,
- namedTimeZoneImpl: a.namedTimeZonedImpl,
- locale: l,
- weekNumberCalculation: t,
- firstDay: n,
- weekText: i,
- cmdFormatter: a.cmdFormatter,
- defaultSeparator: s
- });
-}
-function twe(r, e) {
- let t = e.themeClasses[r.themeSystem] || Ac;
- return new t(r);
-}
-function rwe(r) {
- let e = r.dateProfileGeneratorClass || IG;
- return new e(r);
-}
-function nwe(r, e, t) {
- return new LSe(r, e, t);
-}
-function iwe(r) {
- return su(r, (e) => e.ui);
-}
-function awe(r, e, t) {
- let n = { "": e };
- for (let i in r) {
- let a = r[i];
- a.sourceId && t[a.sourceId] && (n[i] = t[a.sourceId]);
- }
- return n;
-}
-function owe(r) {
- let { options: e } = r;
- return {
- eventUiSingleBase: db({
- display: e.eventDisplay,
- editable: e.editable,
- startEditable: e.eventStartEditable,
- durationEditable: e.eventDurationEditable,
- constraint: e.eventConstraint,
- overlap: typeof e.eventOverlap == "boolean" ? e.eventOverlap : void 0,
- allow: e.eventAllow,
- backgroundColor: e.eventBackgroundColor,
- borderColor: e.eventBorderColor,
- textColor: e.eventTextColor,
- color: e.eventColor
- // classNames: options.eventClassNames // render hook will handle this
- }, r),
- selectionConfig: db({
- constraint: e.selectConstraint,
- overlap: typeof e.selectOverlap == "boolean" ? e.selectOverlap : void 0,
- allow: e.selectAllow
- }, r)
- };
-}
-function $C(r, e) {
- for (let t of e.pluginHooks.isLoadingFuncs)
- if (t(r))
- return !0;
- return !1;
-}
-function swe(r) {
- return tbe(r.options.businessHours, r);
-}
-function Fz(r, e) {
- for (let t in r)
- console.warn(`Unknown option '${t}'` + (e ? ` for view '${e}'` : ""));
-}
-class lwe extends un {
- render() {
- let e = this.props.widgetGroups.map((t) => this.renderWidgetGroup(t));
- return me("div", { className: "fc-toolbar-chunk" }, ...e);
- }
- renderWidgetGroup(e) {
- let { props: t } = this, { theme: n } = this.context, i = [], a = !0;
- for (let o of e) {
- let { buttonName: s, buttonClick: l, buttonText: u, buttonIcon: c, buttonHint: h } = o;
- if (s === "title")
- a = !1, i.push(me("h2", { className: "fc-toolbar-title", id: t.titleId }, t.title));
- else {
- let f = s === t.activeButton, v = !t.isTodayEnabled && s === "today" || !t.isPrevEnabled && s === "prev" || !t.isNextEnabled && s === "next", b = [`fc-${s}-button`, n.getClass("button")];
- f && b.push(n.getClass("buttonActive")), i.push(me("button", { type: "button", title: typeof h == "function" ? h(t.navUnit) : h, disabled: v, "aria-pressed": f, className: b.join(" "), onClick: l }, u || (c ? me("span", { className: c }) : "")));
- }
- }
- if (i.length > 1) {
- let o = a && n.getClass("buttonGroup") || "";
- return me("div", { className: o }, ...i);
- }
- return i[0];
- }
-}
-class $z extends un {
- render() {
- let { model: e, extraClassName: t } = this.props, n = !1, i, a, o = e.sectionWidgets, s = o.center;
- return o.left ? (n = !0, i = o.left) : i = o.start, o.right ? (n = !0, a = o.right) : a = o.end, me(
- "div",
- { className: [
- t || "",
- "fc-toolbar",
- n ? "fc-toolbar-ltr" : ""
- ].join(" ") },
- this.renderSection("start", i || []),
- this.renderSection("center", s || []),
- this.renderSection("end", a || [])
- );
- }
- renderSection(e, t) {
- let { props: n } = this;
- return me(lwe, { key: e, widgetGroups: t, title: n.title, navUnit: n.navUnit, activeButton: n.activeButton, isTodayEnabled: n.isTodayEnabled, isPrevEnabled: n.isPrevEnabled, isNextEnabled: n.isNextEnabled, titleId: n.titleId });
- }
-}
-class uwe extends un {
- constructor() {
- super(...arguments), this.state = {
- availableWidth: null
- }, this.handleEl = (e) => {
- this.el = e, lu(this.props.elRef, e), this.updateAvailableWidth();
- }, this.handleResize = () => {
- this.updateAvailableWidth();
- };
- }
- render() {
- let { props: e, state: t } = this, { aspectRatio: n } = e, i = [
- "fc-view-harness",
- n || e.liquid || e.height ? "fc-view-harness-active" : "fc-view-harness-passive"
- // let the view do the height
- ], a = "", o = "";
- return n ? t.availableWidth !== null ? a = t.availableWidth / n : o = `${1 / n * 100}%` : a = e.height || "", me("div", { "aria-labelledby": e.labeledById, ref: this.handleEl, className: i.join(" "), style: { height: a, paddingBottom: o } }, e.children);
- }
- componentDidMount() {
- this.context.addResizeHandler(this.handleResize);
- }
- componentWillUnmount() {
- this.context.removeResizeHandler(this.handleResize);
- }
- updateAvailableWidth() {
- this.el && // needed. but why?
- this.props.aspectRatio && this.setState({ availableWidth: this.el.offsetWidth });
- }
-}
-class cwe extends dv {
- constructor(e) {
- super(e), this.handleSegClick = (t, n) => {
- let { component: i } = this, { context: a } = i, o = Wd(n);
- if (o && // might be the surrounding the more link
- i.isValidSegDownEl(t.target)) {
- let s = da(t.target, ".fc-event-forced-url"), l = s ? s.querySelector("a[href]").href : "";
- a.emitter.trigger("eventClick", {
- el: n,
- event: new Gn(i.context, o.eventRange.def, o.eventRange.instance),
- jsEvent: t,
- view: a.viewApi
- }), l && !t.defaultPrevented && (window.location.href = l);
- }
- }, this.destroy = cG(
- e.el,
- "click",
- ".fc-event",
- // on both fg and bg events
- this.handleSegClick
- );
- }
-}
-class hwe extends dv {
- constructor(e) {
- super(e), this.handleEventElRemove = (t) => {
- t === this.currentSegEl && this.handleSegLeave(null, this.currentSegEl);
- }, this.handleSegEnter = (t, n) => {
- Wd(n) && (this.currentSegEl = n, this.triggerEvent("eventMouseEnter", t, n));
- }, this.handleSegLeave = (t, n) => {
- this.currentSegEl && (this.currentSegEl = null, this.triggerEvent("eventMouseLeave", t, n));
- }, this.removeHoverListeners = U0e(
- e.el,
- ".fc-event",
- // on both fg and bg events
- this.handleSegEnter,
- this.handleSegLeave
- );
- }
- destroy() {
- this.removeHoverListeners();
- }
- triggerEvent(e, t, n) {
- let { component: i } = this, { context: a } = i, o = Wd(n);
- (!t || i.isValidSegDownEl(t.target)) && a.emitter.trigger(e, {
- el: n,
- event: new Gn(a, o.eventRange.def, o.eventRange.instance),
- jsEvent: t,
- view: a.viewApi
- });
- }
-}
-class fwe extends vf {
- constructor() {
- super(...arguments), this.buildViewContext = rr(kbe), this.buildViewPropTransformers = rr(vwe), this.buildToolbarProps = rr(dwe), this.headerRef = Da(), this.footerRef = Da(), this.interactionsStore = {}, this.state = {
- viewLabelId: cc()
- }, this.registerInteractiveComponent = (e, t) => {
- let n = oxe(e, t), o = [
- cwe,
- hwe
- ].concat(this.props.pluginHooks.componentInteractions).map((s) => new s(n));
- this.interactionsStore[e.uid] = o, iI[e.uid] = n;
- }, this.unregisterInteractiveComponent = (e) => {
- let t = this.interactionsStore[e.uid];
- if (t) {
- for (let n of t)
- n.destroy();
- delete this.interactionsStore[e.uid];
- }
- delete iI[e.uid];
- }, this.resizeRunner = new bM(() => {
- this.props.emitter.trigger("_resize", !0), this.props.emitter.trigger("windowResize", { view: this.props.viewApi });
- }), this.handleWindowResize = (e) => {
- let { options: t } = this.props;
- t.handleWindowResize && e.target === window && this.resizeRunner.request(t.windowResizeDelay);
- };
- }
- /*
- renders INSIDE of an outer div
- */
- render() {
- let { props: e } = this, { toolbarConfig: t, options: n } = e, i = this.buildToolbarProps(
- e.viewSpec,
- e.dateProfile,
- e.dateProfileGenerator,
- e.currentDate,
- bm(e.options.now, e.dateEnv),
- // TODO: use NowTimer????
- e.viewTitle
- ), a = !1, o = "", s;
- e.isHeightAuto || e.forPrint ? o = "" : n.height != null ? a = !0 : n.contentHeight != null ? o = n.contentHeight : s = Math.max(n.aspectRatio, 0.5);
- let l = this.buildViewContext(e.viewSpec, e.viewApi, e.options, e.dateProfileGenerator, e.dateEnv, e.theme, e.pluginHooks, e.dispatch, e.getCurrentData, e.emitter, e.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent), u = t.header && t.header.hasTitle ? this.state.viewLabelId : "";
- return me(
- fu.Provider,
- { value: l },
- t.header && me($z, Object.assign({ ref: this.headerRef, extraClassName: "fc-header-toolbar", model: t.header, titleId: u }, i)),
- me(
- uwe,
- { liquid: a, height: o, aspectRatio: s, labeledById: u },
- this.renderView(e),
- this.buildAppendContent()
- ),
- t.footer && me($z, Object.assign({ ref: this.footerRef, extraClassName: "fc-footer-toolbar", model: t.footer, titleId: "" }, i))
- );
- }
- componentDidMount() {
- let { props: e } = this;
- this.calendarInteractions = e.pluginHooks.calendarInteractions.map((n) => new n(e)), window.addEventListener("resize", this.handleWindowResize);
- let { propSetHandlers: t } = e.pluginHooks;
- for (let n in t)
- t[n](e[n], e);
- }
- componentDidUpdate(e) {
- let { props: t } = this, { propSetHandlers: n } = t.pluginHooks;
- for (let i in n)
- t[i] !== e[i] && n[i](t[i], t);
- }
- componentWillUnmount() {
- window.removeEventListener("resize", this.handleWindowResize), this.resizeRunner.clear();
- for (let e of this.calendarInteractions)
- e.destroy();
- this.props.emitter.trigger("_unmount");
- }
- buildAppendContent() {
- let { props: e } = this, t = e.pluginHooks.viewContainerAppends.map((n) => n(e));
- return me(Dn, {}, ...t);
- }
- renderView(e) {
- let { pluginHooks: t } = e, { viewSpec: n } = e, i = {
- dateProfile: e.dateProfile,
- businessHours: e.businessHours,
- eventStore: e.renderableEventStore,
- eventUiBases: e.eventUiBases,
- dateSelection: e.dateSelection,
- eventSelection: e.eventSelection,
- eventDrag: e.eventDrag,
- eventResize: e.eventResize,
- isHeightAuto: e.isHeightAuto,
- forPrint: e.forPrint
- }, a = this.buildViewPropTransformers(t.viewPropsTransformers);
- for (let s of a)
- Object.assign(i, s.transform(i, e));
- let o = n.component;
- return me(o, Object.assign({}, i));
- }
-}
-function dwe(r, e, t, n, i, a) {
- let o = t.build(i, void 0, !1), s = t.buildPrev(e, n, !1), l = t.buildNext(e, n, !1);
- return {
- title: a,
- activeButton: r.type,
- navUnit: r.singleUnit,
- isTodayEnabled: o.isValid && !Ql(e.currentRange, i),
- isPrevEnabled: s.isValid,
- isNextEnabled: l.isValid
- };
-}
-function vwe(r) {
- return r.map((e) => new e());
-}
-class pwe extends qxe {
- constructor(e, t = {}) {
- super(), this.isRendering = !1, this.isRendered = !1, this.currentClassNames = [], this.customContentRenderId = 0, this.handleAction = (n) => {
- switch (n.type) {
- case "SET_EVENT_DRAG":
- case "SET_EVENT_RESIZE":
- this.renderRunner.tryDrain();
- }
- }, this.handleData = (n) => {
- this.currentData = n, this.renderRunner.request(n.calendarOptions.rerenderDelay);
- }, this.handleRenderRequest = () => {
- if (this.isRendering) {
- this.isRendered = !0;
- let { currentData: n } = this;
- Az(() => {
- Fg(me(lxe, { options: n.calendarOptions, theme: n.theme, emitter: n.emitter }, (i, a, o, s) => (this.setClassNames(i), this.setHeight(a), me(
- jG.Provider,
- { value: this.customContentRenderId },
- me(fwe, Object.assign({ isHeightAuto: o, forPrint: s }, n))
- ))), this.el);
- });
- } else
- this.isRendered && (this.isRendered = !1, Fg(null, this.el), this.setClassNames([]), this.setHeight(""));
- }, N0e(e), this.el = e, this.renderRunner = new bM(this.handleRenderRequest), new qSe({
- optionOverrides: t,
- calendarApi: this,
- onAction: this.handleAction,
- onData: this.handleData
- });
- }
- render() {
- let e = this.isRendering;
- e ? this.customContentRenderId += 1 : this.isRendering = !0, this.renderRunner.request(), e && this.updateSize();
- }
- destroy() {
- this.isRendering && (this.isRendering = !1, this.renderRunner.request());
- }
- updateSize() {
- Az(() => {
- super.updateSize();
- });
- }
- batchRendering(e) {
- this.renderRunner.pause("batchRendering"), e(), this.renderRunner.resume("batchRendering");
- }
- pauseRendering() {
- this.renderRunner.pause("pauseRendering");
- }
- resumeRendering() {
- this.renderRunner.resume("pauseRendering", !0);
- }
- resetOptions(e, t) {
- this.currentDataManager.resetOptions(e, t);
- }
- setClassNames(e) {
- if (!_c(e, this.currentClassNames)) {
- let { classList: t } = this.el;
- for (let n of this.currentClassNames)
- t.remove(n);
- for (let n of e)
- t.add(n);
- this.currentClassNames = e;
- }
- }
- setHeight(e) {
- lG(this.el, "height", e);
- }
-}
-class gU extends $react.Component {
- constructor() {
- super(...arguments), this.elRef = $react.createRef(), this.isUpdating = !1, this.isUnmounting = !1, this.state = {
- customRenderingMap: /* @__PURE__ */ new Map()
- }, this.requestResize = () => {
- this.isUnmounting || (this.cancelResize(), this.resizeId = requestAnimationFrame(() => {
- this.doResize();
- }));
- };
- }
- render() {
- const e = [];
- for (const t of this.state.customRenderingMap.values())
- e.push(/* @__PURE__ */ Bt(gwe, {
- customRendering: t
- }, t.id));
- return /* @__PURE__ */ Bt("div", {
- ref: this.elRef,
- children: e
- });
- }
- componentDidMount() {
- const e = new tSe();
- this.handleCustomRendering = e.handle.bind(e), this.calendar = new pwe(this.elRef.current, Object.assign(Object.assign({}, this.props), {
- handleCustomRendering: this.handleCustomRendering
- })), this.calendar.render();
- let t;
- e.subscribe((n) => {
- const i = Date.now(), a = !t;
- (a || this.isUpdating || this.isUnmounting || i - t < 100 ? mU : $react_dom.flushSync)(() => {
- this.setState({
- customRenderingMap: n
- }, () => {
- t = i, a ? this.doResize() : this.requestResize();
- });
- });
- });
- }
- componentDidUpdate() {
- this.isUpdating = !0, this.calendar.resetOptions(Object.assign(Object.assign({}, this.props), {
- handleCustomRendering: this.handleCustomRendering
- })), this.isUpdating = !1;
- }
- componentWillUnmount() {
- this.isUnmounting = !0, this.cancelResize(), this.calendar.destroy();
- }
- doResize() {
- this.calendar.updateSize();
- }
- cancelResize() {
- this.resizeId !== void 0 && (cancelAnimationFrame(this.resizeId), this.resizeId = void 0);
- }
- getApi() {
- return this.calendar;
- }
-}
-gU.act = mU;
-class gwe extends $react.PureComponent {
- render() {
- const {
- customRendering: e
- } = this.props, {
- generatorMeta: t
- } = e, n = typeof t == "function" ? t(e.renderProps) : t;
- return $react_dom.createPortal(n, e.containerEl);
- }
-}
-function mU(r) {
- r();
-}
-var mwe = ':root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-day-events:after,.fc-daygrid-day-events:before,.fc-daygrid-day-frame:after,.fc-daygrid-day-frame:before,.fc-daygrid-event-harness:after,.fc-daygrid-event-harness:before{clear:both;content:"";display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-daygrid-day-frame{min-height:100%;position:relative}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{padding:4px;position:relative;z-index:4}.fc .fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{left:0;position:absolute;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{min-height:2em;position:relative}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{left:0;position:absolute;right:0;top:0}.fc .fc-daygrid-bg-harness{bottom:0;position:absolute;top:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{margin-top:1px;z-index:6}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:0 2px}.fc .fc-daygrid-day-bottom:after,.fc .fc-daygrid-day-bottom:before{clear:both;content:"";display:table}.fc .fc-daygrid-more-link{border-radius:3px;cursor:pointer;line-height:1;margin-top:1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap;z-index:4}.fc .fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc .fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0;z-index:5}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-more-link{float:left}.fc-direction-ltr .fc-daygrid-week-number{border-radius:0 0 3px 0;left:0}.fc-direction-rtl .fc-daygrid-more-link{float:right}.fc-direction-rtl .fc-daygrid-week-number{border-radius:0 0 0 3px;right:0}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);position:relative;white-space:nowrap}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{align-items:center;display:flex;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;font-weight:700;min-width:0;overflow:hidden}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-dot-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-daygrid-event-dot{border:calc(var(--fc-daygrid-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-daygrid-event-dot-width)/2);box-sizing:content-box;height:0;margin:0 4px;width:0}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}';
-yx(mwe);
-function A0(r, e) {
- let t = [];
- for (let n = 0; n < e; n += 1)
- t[n] = [];
- for (let n of r)
- t[n.row].push(n);
- return t;
-}
-function E0(r, e) {
- let t = [];
- for (let n = 0; n < e; n += 1)
- t[n] = [];
- for (let n of r)
- t[n.firstCol].push(n);
- return t;
-}
-function Hz(r, e) {
- let t = [];
- if (r) {
- for (let n = 0; n < e; n += 1)
- t[n] = {
- affectedInstances: r.affectedInstances,
- isEvent: r.isEvent,
- segs: []
- };
- for (let n of r.segs)
- t[n.row].segs.push(n);
- } else
- for (let n = 0; n < e; n += 1)
- t[n] = null;
- return t;
-}
-const yU = jn({
- hour: "numeric",
- minute: "2-digit",
- omitZeroMinute: !0,
- meridiem: "narrow"
-});
-function _U(r) {
- let { display: e } = r.eventRange.ui;
- return e === "list-item" || e === "auto" && !r.eventRange.def.allDay && r.firstCol === r.lastCol && // can't be multi-day
- r.isStart && // "
- r.isEnd;
-}
-class bU extends un {
- render() {
- let { props: e } = this;
- return me(QG, Object.assign({}, e, { elClasses: ["fc-daygrid-event", "fc-daygrid-block-event", "fc-h-event"], defaultTimeFormat: yU, defaultDisplayEventEnd: e.defaultDisplayEventEnd, disableResizing: !e.seg.eventRange.def.allDay }));
- }
-}
-class xU extends un {
- render() {
- let { props: e, context: t } = this, { options: n } = t, { seg: i } = e, a = n.eventTimeFormat || yU, o = rg(i, a, t, !0, e.defaultDisplayEventEnd);
- return me(Tx, Object.assign({}, e, { elTag: "a", elClasses: ["fc-daygrid-event", "fc-daygrid-dot-event"], elAttrs: pM(e.seg, t), defaultGenerator: ywe, timeText: o, isResizing: !1, isDateSelecting: !1 }));
- }
-}
-function ywe(r) {
- return me(
- Dn,
- null,
- me("div", { className: "fc-daygrid-event-dot", style: { borderColor: r.borderColor || r.backgroundColor } }),
- r.timeText && me("div", { className: "fc-event-time" }, r.timeText),
- me("div", { className: "fc-event-title" }, r.event.title || me(Dn, null, " "))
- );
-}
-class _we extends un {
- constructor() {
- super(...arguments), this.compileSegs = rr(bwe);
- }
- render() {
- let { props: e } = this, { allSegs: t, invisibleSegs: n } = this.compileSegs(e.singlePlacements);
- return me(rU, { elClasses: ["fc-daygrid-more-link"], dateProfile: e.dateProfile, todayRange: e.todayRange, allDayDate: e.allDayDate, moreCnt: e.moreCnt, allSegs: t, hiddenSegs: n, alignmentElRef: e.alignmentElRef, alignGridTop: e.alignGridTop, extraDateSpan: e.extraDateSpan, popoverContent: () => {
- let i = (e.eventDrag ? e.eventDrag.affectedInstances : null) || (e.eventResize ? e.eventResize.affectedInstances : null) || {};
- return me(Dn, null, t.map((a) => {
- let o = a.eventRange.instance.instanceId;
- return me("div", { className: "fc-daygrid-event-harness", key: o, style: {
- visibility: i[o] ? "hidden" : ""
- } }, _U(a) ? me(xU, Object.assign({ seg: a, isDragging: !1, isSelected: o === e.eventSelection, defaultDisplayEventEnd: !1 }, ql(a, e.todayRange))) : me(bU, Object.assign({ seg: a, isDragging: !1, isResizing: !1, isDateSelecting: !1, isSelected: o === e.eventSelection, defaultDisplayEventEnd: !1 }, ql(a, e.todayRange))));
- }));
- } });
- }
-}
-function bwe(r) {
- let e = [], t = [];
- for (let n of r)
- e.push(n.seg), n.isVisible || t.push(n.seg);
- return { allSegs: e, invisibleSegs: t };
-}
-const xwe = jn({ week: "narrow" });
-class Swe extends Vs {
- constructor() {
- super(...arguments), this.rootElRef = Da(), this.state = {
- dayNumberId: cc()
- }, this.handleRootEl = (e) => {
- lu(this.rootElRef, e), lu(this.props.elRef, e);
- };
- }
- render() {
- let { context: e, props: t, state: n, rootElRef: i } = this, { options: a, dateEnv: o } = e, { date: s, dateProfile: l } = t;
- const u = t.showDayNumber && Cwe(s, l.currentRange, o);
- return me(wM, { elTag: "td", elRef: this.handleRootEl, elClasses: [
- "fc-daygrid-day",
- ...t.extraClassNames || []
- ], elAttrs: Object.assign(Object.assign(Object.assign({}, t.extraDataAttrs), t.showDayNumber ? { "aria-labelledby": n.dayNumberId } : {}), { role: "gridcell" }), defaultGenerator: wwe, date: s, dateProfile: l, todayRange: t.todayRange, showDayNumber: t.showDayNumber, isMonthStart: u, extraRenderProps: t.extraRenderProps }, (c, h) => me(
- "div",
- { ref: t.innerElRef, className: "fc-daygrid-day-frame fc-scrollgrid-sync-inner", style: { minHeight: t.minHeight } },
- t.showWeekNumber && me(tU, { elTag: "a", elClasses: ["fc-daygrid-week-number"], elAttrs: Gd(e, s, "week"), date: s, defaultFormat: xwe }),
- !h.isDisabled && (t.showDayNumber || CM(a) || t.forceDayTop) ? me(
- "div",
- { className: "fc-daygrid-day-top" },
- me(c, { elTag: "a", elClasses: [
- "fc-daygrid-day-number",
- u && "fc-daygrid-month-start"
- ], elAttrs: Object.assign(Object.assign({}, Gd(e, s)), { id: n.dayNumberId }) })
- ) : t.showDayNumber ? (
- // for creating correct amount of space (see issue #7162)
- me(
- "div",
- { className: "fc-daygrid-day-top", style: { visibility: "hidden" } },
- me("a", { className: "fc-daygrid-day-number" }, " ")
- )
- ) : void 0,
- me(
- "div",
- { className: "fc-daygrid-day-events", ref: t.fgContentElRef },
- t.fgContent,
- me(
- "div",
- { className: "fc-daygrid-day-bottom", style: { marginTop: t.moreMarginTop } },
- me(_we, { allDayDate: s, singlePlacements: t.singlePlacements, moreCnt: t.moreCnt, alignmentElRef: i, alignGridTop: !t.showDayNumber, extraDateSpan: t.extraDateSpan, dateProfile: t.dateProfile, eventSelection: t.eventSelection, eventDrag: t.eventDrag, eventResize: t.eventResize, todayRange: t.todayRange })
- )
- ),
- me("div", { className: "fc-daygrid-day-bg" }, t.bgContent)
- ));
- }
-}
-function wwe(r) {
- return r.dayNumberText || me(Dn, null, " ");
-}
-function Cwe(r, e, t) {
- const { start: n, end: i } = e, a = bc(i, -1), o = t.getYear(n), s = t.getMonth(n), l = t.getYear(a), u = t.getMonth(a);
- return !(o === l && s === u) && // first date in current view?
- (r.valueOf() === n.valueOf() || // a month-start that's within the current range?
- t.getDay(r) === 1 && r.valueOf() < i.valueOf());
-}
-function Twe(r, e, t, n, i, a, o) {
- let s = new Ewe();
- s.allowReslicing = !0, s.strictOrder = n, e === !0 || t === !0 ? (s.maxCoord = a, s.hiddenConsumes = !0) : typeof e == "number" ? s.maxStackCnt = e : typeof t == "number" && (s.maxStackCnt = t, s.hiddenConsumes = !0);
- let l = [], u = [];
- for (let d = 0; d < r.length; d += 1) {
- let m = r[d], { instanceId: _ } = m.eventRange.instance, y = i[_];
- y != null ? l.push({
- index: d,
- thickness: y,
- span: {
- start: m.firstCol,
- end: m.lastCol + 1
- }
- }) : u.push(m);
- }
- let c = s.addSegs(l), h = s.toRects(), { singleColPlacements: f, multiColPlacements: v, leftoverMargins: b } = Iwe(h, r, o), w = [], p = [];
- for (let d of u) {
- v[d.firstCol].push({
- seg: d,
- isVisible: !1,
- isAbsolute: !0,
- absoluteTop: 0,
- marginTop: 0
- });
- for (let m = d.firstCol; m <= d.lastCol; m += 1)
- f[m].push({
- seg: Ed(d, m, m + 1, o),
- isVisible: !1,
- isAbsolute: !1,
- absoluteTop: 0,
- marginTop: 0
- });
- }
- for (let d = 0; d < o.length; d += 1)
- w.push(0);
- for (let d of c) {
- let m = r[d.index], _ = d.span;
- v[_.start].push({
- seg: Ed(m, _.start, _.end, o),
- isVisible: !1,
- isAbsolute: !0,
- absoluteTop: 0,
- marginTop: 0
- });
- for (let y = _.start; y < _.end; y += 1)
- w[y] += 1, f[y].push({
- seg: Ed(m, y, y + 1, o),
- isVisible: !1,
- isAbsolute: !1,
- absoluteTop: 0,
- marginTop: 0
- });
- }
- for (let d = 0; d < o.length; d += 1)
- p.push(b[d]);
- return { singleColPlacements: f, multiColPlacements: v, moreCnts: w, moreMarginTops: p };
-}
-function Iwe(r, e, t) {
- let n = Awe(r, t.length), i = [], a = [], o = [];
- for (let s = 0; s < t.length; s += 1) {
- let l = n[s], u = [], c = 0, h = 0;
- for (let v of l) {
- let b = e[v.index];
- u.push({
- seg: Ed(b, s, s + 1, t),
- isVisible: !0,
- isAbsolute: !1,
- absoluteTop: v.levelCoord,
- marginTop: v.levelCoord - c
- }), c = v.levelCoord + v.thickness;
- }
- let f = [];
- c = 0, h = 0;
- for (let v of l) {
- let b = e[v.index], w = v.span.end - v.span.start > 1, p = v.span.start === s;
- h += v.levelCoord - c, c = v.levelCoord + v.thickness, w ? (h += v.thickness, p && f.push({
- seg: Ed(b, v.span.start, v.span.end, t),
- isVisible: !0,
- isAbsolute: !0,
- absoluteTop: v.levelCoord,
- marginTop: 0
- })) : p && (f.push({
- seg: Ed(b, v.span.start, v.span.end, t),
- isVisible: !0,
- isAbsolute: !1,
- absoluteTop: v.levelCoord,
- marginTop: h
- // claim the margin
- }), h = 0);
- }
- i.push(u), a.push(f), o.push(h);
- }
- return { singleColPlacements: i, multiColPlacements: a, leftoverMargins: o };
-}
-function Awe(r, e) {
- let t = [];
- for (let n = 0; n < e; n += 1)
- t.push([]);
- for (let n of r)
- for (let i = n.span.start; i < n.span.end; i += 1)
- t[i].push(n);
- return t;
-}
-function Ed(r, e, t, n) {
- if (r.firstCol === e && r.lastCol === t - 1)
- return r;
- let i = r.eventRange, a = i.range, o = xc(a, {
- start: n[e].date,
- end: Bi(n[t - 1].date, 1)
- });
- return Object.assign(Object.assign({}, r), { firstCol: e, lastCol: t - 1, eventRange: {
- def: i.def,
- ui: Object.assign(Object.assign({}, i.ui), { durationEditable: !1 }),
- instance: i.instance,
- range: o
- }, isStart: r.isStart && o.start.valueOf() === a.start.valueOf(), isEnd: r.isEnd && o.end.valueOf() === a.end.valueOf() });
-}
-class Ewe extends PG {
- constructor() {
- super(...arguments), this.hiddenConsumes = !1, this.forceHidden = {};
- }
- addSegs(e) {
- const t = super.addSegs(e), { entriesByLevel: n } = this, i = (a) => !this.forceHidden[Hh(a)];
- for (let a = 0; a < n.length; a += 1)
- n[a] = n[a].filter(i);
- return t;
- }
- handleInvalidInsertion(e, t, n) {
- const { entriesByLevel: i, forceHidden: a } = this, { touchingEntry: o, touchingLevel: s, touchingLateral: l } = e;
- if (this.hiddenConsumes && o) {
- const u = Hh(o);
- if (!a[u])
- if (this.allowReslicing) {
- const c = Object.assign(Object.assign({}, o), { span: gM(o.span, t.span) }), h = Hh(c);
- a[h] = !0, i[s][l] = c, this.splitEntry(o, t, n);
- } else
- a[u] = !0, n.push(o);
- }
- return super.handleInvalidInsertion(e, t, n);
- }
-}
-class SU extends Vs {
- constructor() {
- super(...arguments), this.cellElRefs = new Zl(), this.frameElRefs = new Zl(), this.fgElRefs = new Zl(), this.segHarnessRefs = new Zl(), this.rootElRef = Da(), this.state = {
- framePositions: null,
- maxContentHeight: null,
- eventInstanceHeights: {}
- }, this.handleResize = (e) => {
- e && this.updateSizing(!0);
- };
- }
- render() {
- let { props: e, state: t, context: n } = this, { options: i } = n, a = e.cells.length, o = E0(e.businessHourSegs, a), s = E0(e.bgEventSegs, a), l = E0(this.getHighlightSegs(), a), u = E0(this.getMirrorSegs(), a), { singleColPlacements: c, multiColPlacements: h, moreCnts: f, moreMarginTops: v } = Twe(vM(e.fgEventSegs, i.eventOrder), e.dayMaxEvents, e.dayMaxEventRows, i.eventOrderStrict, t.eventInstanceHeights, t.maxContentHeight, e.cells), b = (
- // TODO: messy way to compute this
- e.eventDrag && e.eventDrag.affectedInstances || e.eventResize && e.eventResize.affectedInstances || {}
- );
- return me(
- "tr",
- { ref: this.rootElRef, role: "row" },
- e.renderIntro && e.renderIntro(),
- e.cells.map((w, p) => {
- let d = this.renderFgSegs(p, e.forPrint ? c[p] : h[p], e.todayRange, b), m = this.renderFgSegs(p, Mwe(u[p], h), e.todayRange, {}, !!e.eventDrag, !!e.eventResize, !1);
- return me(Swe, { key: w.key, elRef: this.cellElRefs.createRef(w.key), innerElRef: this.frameElRefs.createRef(w.key), dateProfile: e.dateProfile, date: w.date, showDayNumber: e.showDayNumbers, showWeekNumber: e.showWeekNumbers && p === 0, forceDayTop: e.showWeekNumbers, todayRange: e.todayRange, eventSelection: e.eventSelection, eventDrag: e.eventDrag, eventResize: e.eventResize, extraRenderProps: w.extraRenderProps, extraDataAttrs: w.extraDataAttrs, extraClassNames: w.extraClassNames, extraDateSpan: w.extraDateSpan, moreCnt: f[p], moreMarginTop: v[p], singlePlacements: c[p], fgContentElRef: this.fgElRefs.createRef(w.key), fgContent: (
- // Fragment scopes the keys
- me(
- Dn,
- null,
- me(Dn, null, d),
- me(Dn, null, m)
- )
- ), bgContent: (
- // Fragment scopes the keys
- me(
- Dn,
- null,
- this.renderFillSegs(l[p], "highlight"),
- this.renderFillSegs(o[p], "non-business"),
- this.renderFillSegs(s[p], "bg-event")
- )
- ), minHeight: e.cellMinHeight });
- })
- );
- }
- componentDidMount() {
- this.updateSizing(!0), this.context.addResizeHandler(this.handleResize);
- }
- componentDidUpdate(e, t) {
- let n = this.props;
- this.updateSizing(!El(e, n));
- }
- componentWillUnmount() {
- this.context.removeResizeHandler(this.handleResize);
- }
- getHighlightSegs() {
- let { props: e } = this;
- return e.eventDrag && e.eventDrag.segs.length ? e.eventDrag.segs : e.eventResize && e.eventResize.segs.length ? e.eventResize.segs : e.dateSelectionSegs;
- }
- getMirrorSegs() {
- let { props: e } = this;
- return e.eventResize && e.eventResize.segs.length ? e.eventResize.segs : [];
- }
- renderFgSegs(e, t, n, i, a, o, s) {
- let { context: l } = this, { eventSelection: u } = this.props, { framePositions: c } = this.state, h = this.props.cells.length === 1, f = a || o || s, v = [];
- if (c)
- for (let b of t) {
- let { seg: w } = b, { instanceId: p } = w.eventRange.instance, d = p + ":" + e, m = b.isVisible && !i[p], _ = b.isAbsolute, y = "", x = "";
- _ && (l.isRtl ? (x = 0, y = c.lefts[w.lastCol] - c.lefts[w.firstCol]) : (y = 0, x = c.rights[w.firstCol] - c.rights[w.lastCol])), v.push(me("div", { className: "fc-daygrid-event-harness" + (_ ? " fc-daygrid-event-harness-abs" : ""), key: d, ref: f ? null : this.segHarnessRefs.createRef(d), style: {
- visibility: m ? "" : "hidden",
- marginTop: _ ? "" : b.marginTop,
- top: _ ? b.absoluteTop : "",
- left: y,
- right: x
- } }, _U(w) ? me(xU, Object.assign({ seg: w, isDragging: a, isSelected: p === u, defaultDisplayEventEnd: h }, ql(w, n))) : me(bU, Object.assign({ seg: w, isDragging: a, isResizing: o, isDateSelecting: s, isSelected: p === u, defaultDisplayEventEnd: h }, ql(w, n)))));
- }
- return v;
- }
- renderFillSegs(e, t) {
- let { isRtl: n } = this.context, { todayRange: i } = this.props, { framePositions: a } = this.state, o = [];
- if (a)
- for (let s of e) {
- let l = n ? {
- right: 0,
- left: a.lefts[s.lastCol] - a.lefts[s.firstCol]
- } : {
- left: 0,
- right: a.rights[s.firstCol] - a.rights[s.lastCol]
- };
- o.push(me("div", { key: DG(s.eventRange), className: "fc-daygrid-bg-harness", style: l }, t === "bg-event" ? me(qG, Object.assign({ seg: s }, ql(s, i))) : eU(t)));
- }
- return me(Dn, {}, ...o);
- }
- updateSizing(e) {
- let { props: t, state: n, frameElRefs: i } = this;
- if (!t.forPrint && t.clientWidth !== null) {
- if (e) {
- let l = t.cells.map((u) => i.currentMap[u.key]);
- if (l.length) {
- let u = this.rootElRef.current, c = new Ud(
- u,
- l,
- !0,
- // isHorizontal
- !1
- );
- (!n.framePositions || !n.framePositions.similarTo(c)) && this.setState({
- framePositions: new Ud(
- u,
- l,
- !0,
- // isHorizontal
- !1
- )
- });
- }
- }
- const a = this.state.eventInstanceHeights, o = this.queryEventInstanceHeights(), s = t.dayMaxEvents === !0 || t.dayMaxEventRows === !0;
- this.safeSetState({
- // HACK to prevent oscillations of events being shown/hidden from max-event-rows
- // Essentially, once you compute an element's height, never null-out.
- // TODO: always display all events, as visibility:hidden?
- eventInstanceHeights: Object.assign(Object.assign({}, a), o),
- maxContentHeight: s ? this.computeMaxContentHeight() : null
- });
- }
- }
- queryEventInstanceHeights() {
- let e = this.segHarnessRefs.currentMap, t = {};
- for (let n in e) {
- let i = Math.round(e[n].getBoundingClientRect().height), a = n.split(":")[0];
- t[a] = Math.max(t[a] || 0, i);
- }
- return t;
- }
- computeMaxContentHeight() {
- let e = this.props.cells[0].key, t = this.cellElRefs.currentMap[e], n = this.fgElRefs.currentMap[e];
- return t.getBoundingClientRect().bottom - n.getBoundingClientRect().top;
- }
- getCellEls() {
- let e = this.cellElRefs.currentMap;
- return this.props.cells.map((t) => e[t.key]);
- }
-}
-SU.addStateEquality({
- eventInstanceHeights: El
-});
-function Mwe(r, e) {
- if (!r.length)
- return [];
- let t = Dwe(e);
- return r.map((n) => ({
- seg: n,
- isVisible: !0,
- isAbsolute: !0,
- absoluteTop: t[n.eventRange.instance.instanceId],
- marginTop: 0
- }));
-}
-function Dwe(r) {
- let e = {};
- for (let t of r)
- for (let n of t)
- e[n.seg.eventRange.instance.instanceId] = n.absoluteTop;
- return e;
-}
-class kwe extends Vs {
- constructor() {
- super(...arguments), this.splitBusinessHourSegs = rr(A0), this.splitBgEventSegs = rr(A0), this.splitFgEventSegs = rr(A0), this.splitDateSelectionSegs = rr(A0), this.splitEventDrag = rr(Hz), this.splitEventResize = rr(Hz), this.rowRefs = new Zl();
- }
- render() {
- let { props: e, context: t } = this, n = e.cells.length, i = this.splitBusinessHourSegs(e.businessHourSegs, n), a = this.splitBgEventSegs(e.bgEventSegs, n), o = this.splitFgEventSegs(e.fgEventSegs, n), s = this.splitDateSelectionSegs(e.dateSelectionSegs, n), l = this.splitEventDrag(e.eventDrag, n), u = this.splitEventResize(e.eventResize, n), c = n >= 7 && e.clientWidth ? e.clientWidth / t.options.aspectRatio / 6 : null;
- return me(vv, { unit: "day" }, (h, f) => me(Dn, null, e.cells.map((v, b) => me(SU, {
- ref: this.rowRefs.createRef(b),
- key: v.length ? v[0].date.toISOString() : b,
- showDayNumbers: n > 1,
- showWeekNumbers: e.showWeekNumbers,
- todayRange: f,
- dateProfile: e.dateProfile,
- cells: v,
- renderIntro: e.renderRowIntro,
- businessHourSegs: i[b],
- eventSelection: e.eventSelection,
- bgEventSegs: a[b].filter(Owe),
- fgEventSegs: o[b],
- dateSelectionSegs: s[b],
- eventDrag: l[b],
- eventResize: u[b],
- dayMaxEvents: e.dayMaxEvents,
- dayMaxEventRows: e.dayMaxEventRows,
- clientWidth: e.clientWidth,
- clientHeight: e.clientHeight,
- cellMinHeight: c,
- forPrint: e.forPrint
- }))));
- }
- componentDidMount() {
- const e = this.rowRefs.currentMap[0].getCellEls()[0];
- this.rootEl = e ? e.closest(".fc-daygrid-body") : null, this.rootEl && this.context.registerInteractiveComponent(this, {
- el: this.rootEl,
- isHitComboAllowed: this.props.isHitComboAllowed
- });
- }
- componentWillUnmount() {
- this.rootEl && (this.context.unregisterInteractiveComponent(this), this.rootEl = null);
- }
- // Hit System
- // ----------------------------------------------------------------------------------------------------
- prepareHits() {
- this.rowPositions = new Ud(
- this.rootEl,
- this.rowRefs.collect().map((e) => e.getCellEls()[0]),
- // first cell el in each row. TODO: not optimal
- !1,
- !0
- ), this.colPositions = new Ud(
- this.rootEl,
- this.rowRefs.currentMap[0].getCellEls(),
- // cell els in first row
- !0,
- // horizontal
- !1
- );
- }
- queryHit(e, t) {
- let { colPositions: n, rowPositions: i } = this, a = n.leftToIndex(e), o = i.topToIndex(t);
- if (o != null && a != null) {
- let s = this.props.cells[o][a];
- return {
- dateProfile: this.props.dateProfile,
- dateSpan: Object.assign({ range: this.getCellRange(o, a), allDay: !0 }, s.extraDateSpan),
- dayEl: this.getCellEl(o, a),
- rect: {
- left: n.lefts[a],
- right: n.rights[a],
- top: i.tops[o],
- bottom: i.bottoms[o]
- },
- layer: 0
- };
- }
- return null;
- }
- getCellEl(e, t) {
- return this.rowRefs.currentMap[e].getCellEls()[t];
- }
- getCellRange(e, t) {
- let n = this.props.cells[e][t].date, i = Bi(n, 1);
- return { start: n, end: i };
- }
-}
-function Owe(r) {
- return r.eventRange.def.allDay;
-}
-class Lwe extends Vs {
- constructor() {
- super(...arguments), this.elRef = Da(), this.needsScrollReset = !1;
- }
- render() {
- let { props: e } = this, { dayMaxEventRows: t, dayMaxEvents: n, expandRows: i } = e, a = n === !0 || t === !0;
- a && !i && (a = !1, t = null, n = null);
- let o = [
- "fc-daygrid-body",
- a ? "fc-daygrid-body-balanced" : "fc-daygrid-body-unbalanced",
- i ? "" : "fc-daygrid-body-natural"
- // will height of one row depend on the others?
- ];
- return me(
- "div",
- { ref: this.elRef, className: o.join(" "), style: {
- // these props are important to give this wrapper correct dimensions for interactions
- // TODO: if we set it here, can we avoid giving to inner tables?
- width: e.clientWidth,
- minWidth: e.tableMinWidth
- } },
- me(
- "table",
- { role: "presentation", className: "fc-scrollgrid-sync-table", style: {
- width: e.clientWidth,
- minWidth: e.tableMinWidth,
- height: i ? e.clientHeight : ""
- } },
- e.colGroupNode,
- me(
- "tbody",
- { role: "presentation" },
- me(kwe, { dateProfile: e.dateProfile, cells: e.cells, renderRowIntro: e.renderRowIntro, showWeekNumbers: e.showWeekNumbers, clientWidth: e.clientWidth, clientHeight: e.clientHeight, businessHourSegs: e.businessHourSegs, bgEventSegs: e.bgEventSegs, fgEventSegs: e.fgEventSegs, dateSelectionSegs: e.dateSelectionSegs, eventSelection: e.eventSelection, eventDrag: e.eventDrag, eventResize: e.eventResize, dayMaxEvents: n, dayMaxEventRows: t, forPrint: e.forPrint, isHitComboAllowed: e.isHitComboAllowed })
- )
- )
- );
- }
- componentDidMount() {
- this.requestScrollReset();
- }
- componentDidUpdate(e) {
- e.dateProfile !== this.props.dateProfile ? this.requestScrollReset() : this.flushScrollReset();
- }
- requestScrollReset() {
- this.needsScrollReset = !0, this.flushScrollReset();
- }
- flushScrollReset() {
- if (this.needsScrollReset && this.props.clientWidth) {
- const e = Pwe(this.elRef.current, this.props.dateProfile);
- if (e) {
- const t = e.closest(".fc-daygrid-body"), n = t.closest(".fc-scroller"), i = e.getBoundingClientRect().top - t.getBoundingClientRect().top;
- n.scrollTop = i ? i + 1 : 0;
- }
- this.needsScrollReset = !1;
- }
- }
-}
-function Pwe(r, e) {
- let t;
- return e.currentRangeUnit.match(/year|month/) && (t = r.querySelector(`[data-date="${I_e(e.currentDate)}-01"]`)), t || (t = r.querySelector(`[data-date="${ym(e.currentDate)}"]`)), t;
-}
-class Rwe extends VG {
- constructor() {
- super(...arguments), this.forceDayIfListItem = !0;
- }
- sliceRange(e, t) {
- return t.sliceRange(e);
- }
-}
-class wU extends Vs {
- constructor() {
- super(...arguments), this.slicer = new Rwe(), this.tableRef = Da();
- }
- render() {
- let { props: e, context: t } = this;
- return me(Lwe, Object.assign({ ref: this.tableRef }, this.slicer.sliceProps(e, e.dateProfile, e.nextDayThreshold, t, e.dayTableModel), { dateProfile: e.dateProfile, cells: e.dayTableModel.cells, colGroupNode: e.colGroupNode, tableMinWidth: e.tableMinWidth, renderRowIntro: e.renderRowIntro, dayMaxEvents: e.dayMaxEvents, dayMaxEventRows: e.dayMaxEventRows, showWeekNumbers: e.showWeekNumbers, expandRows: e.expandRows, headerAlignElRef: e.headerAlignElRef, clientWidth: e.clientWidth, clientHeight: e.clientHeight, forPrint: e.forPrint }));
- }
-}
-class Nwe extends IG {
- // Computes the date range that will be rendered
- buildRenderRange(e, t, n) {
- let i = super.buildRenderRange(e, t, n), { props: a } = this;
- return zwe({
- currentRange: i,
- snapToWeek: /^(year|month)$/.test(t),
- fixedWeekCount: a.fixedWeekCount,
- dateEnv: a.dateEnv
- });
- }
-}
-function zwe(r) {
- let { dateEnv: e, currentRange: t } = r, { start: n, end: i } = t, a;
- if (r.snapToWeek && (n = e.startOfWeek(n), a = e.startOfWeek(i), a.valueOf() !== i.valueOf() && (i = gz(a, 1))), r.fixedWeekCount) {
- let o = e.startOfWeek(e.startOfMonth(Bi(t.end, -1))), s = Math.ceil(
- // could be partial weeks due to hiddenDays
- p_e(o, i)
- );
- i = gz(i, 6 - s);
- }
- return { start: n, end: i };
-}
-class Bwe extends Vs {
- constructor() {
- super(...arguments), this.headerElRef = Da();
- }
- renderSimpleLayout(e, t) {
- let { props: n, context: i } = this, a = [], o = pb(i.options);
- return e && a.push({
- type: "header",
- key: "header",
- isSticky: o,
- chunk: {
- elRef: this.headerElRef,
- tableClassName: "fc-col-header",
- rowContent: e
- }
- }), a.push({
- type: "body",
- key: "body",
- liquid: !0,
- chunk: { content: t }
- }), me(
- Hg,
- { elClasses: ["fc-daygrid"], viewSpec: i.viewSpec },
- me(xM, { liquid: !n.isHeightAuto && !n.forPrint, collapsibleWidth: n.forPrint, cols: [], sections: a })
- );
- }
- renderHScrollLayout(e, t, n, i) {
- let a = this.context.pluginHooks.scrollGridImpl;
- if (!a)
- throw new Error("No ScrollGrid implementation");
- let { props: o, context: s } = this, l = !o.forPrint && pb(s.options), u = !o.forPrint && KG(s.options), c = [];
- return e && c.push({
- type: "header",
- key: "header",
- isSticky: l,
- chunks: [{
- key: "main",
- elRef: this.headerElRef,
- tableClassName: "fc-col-header",
- rowContent: e
- }]
- }), c.push({
- type: "body",
- key: "body",
- liquid: !0,
- chunks: [{
- key: "main",
- content: t
- }]
- }), u && c.push({
- type: "footer",
- key: "footer",
- isSticky: !0,
- chunks: [{
- key: "main",
- content: aI
- }]
- }), me(
- Hg,
- { elClasses: ["fc-daygrid"], viewSpec: s.viewSpec },
- me(a, { liquid: !o.isHeightAuto && !o.forPrint, forPrint: o.forPrint, collapsibleWidth: o.forPrint, colGroups: [{ cols: [{ span: n, minWidth: i }] }], sections: c })
- );
- }
-}
-class jwe extends Bwe {
- constructor() {
- super(...arguments), this.buildDayTableModel = rr(Fwe), this.headerRef = Da(), this.tableRef = Da();
- }
- render() {
- let { options: e, dateProfileGenerator: t } = this.context, { props: n } = this, i = this.buildDayTableModel(n.dateProfile, t), a = e.dayHeaders && me(FG, { ref: this.headerRef, dateProfile: n.dateProfile, dates: i.headerDates, datesRepDistinctDays: i.rowCnt === 1 }), o = (s) => me(wU, { ref: this.tableRef, dateProfile: n.dateProfile, dayTableModel: i, businessHours: n.businessHours, dateSelection: n.dateSelection, eventStore: n.eventStore, eventUiBases: n.eventUiBases, eventSelection: n.eventSelection, eventDrag: n.eventDrag, eventResize: n.eventResize, nextDayThreshold: e.nextDayThreshold, colGroupNode: s.tableColGroupNode, tableMinWidth: s.tableMinWidth, dayMaxEvents: e.dayMaxEvents, dayMaxEventRows: e.dayMaxEventRows, showWeekNumbers: e.weekNumbers, expandRows: !n.isHeightAuto, headerAlignElRef: this.headerElRef, clientWidth: s.clientWidth, clientHeight: s.clientHeight, forPrint: n.forPrint });
- return e.dayMinWidth ? this.renderHScrollLayout(a, o, i.colCnt, e.dayMinWidth) : this.renderSimpleLayout(a, o);
- }
-}
-function Fwe(r, e) {
- let t = new $G(r.renderRange, e);
- return new HG(t, /year|month|week/.test(r.currentRangeUnit));
-}
-var $we = Gs({
- name: "@fullcalendar/daygrid",
- initialView: "dayGridMonth",
- views: {
- dayGrid: {
- component: jwe,
- dateProfileGeneratorClass: Nwe
- },
- dayGridDay: {
- type: "dayGrid",
- duration: { days: 1 }
- },
- dayGridWeek: {
- type: "dayGrid",
- duration: { weeks: 1 }
- },
- dayGridMonth: {
- type: "dayGrid",
- duration: { months: 1 },
- fixedWeekCount: !0
- },
- dayGridYear: {
- type: "dayGrid",
- duration: { years: 1 }
- }
- }
-}), Hwe = '.fc-v-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-v-event .fc-event-main{color:var(--fc-event-text-color);height:100%}.fc-v-event .fc-event-main-frame{display:flex;flex-direction:column;height:100%}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{bottom:0;max-height:100%;overflow:hidden;top:0}.fc-v-event:not(.fc-event-start){border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.fc-v-event:not(.fc-event-end){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-width:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:var(--fc-event-resizer-thickness);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{min-height:100%;position:relative;z-index:1}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table,.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{border-bottom:0;height:1.5em}.fc .fc-timegrid-slot:empty:before{content:"\\00a0"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{align-items:center;display:flex;justify-content:flex-end;overflow:hidden}.fc .fc-timegrid-axis-cushion{flex-shrink:0;max-width:60px}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols{bottom:0;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{left:0;position:absolute;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness{position:absolute}.fc-timegrid-event-harness>.fc-timegrid-event{bottom:0;left:0;position:absolute;right:0;top:0}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror,.fc-timegrid-more-link{box-shadow:0 0 0 1px var(--fc-page-bg-color)}.fc-timegrid-event,.fc-timegrid-more-link{border-radius:3px;font-size:var(--fc-small-font-size)}.fc-timegrid-event{margin-bottom:1px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{font-size:var(--fc-small-font-size);margin-bottom:1px;white-space:nowrap}.fc-timegrid-event-short .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-short .fc-event-time:after{content:"\\00a0-\\00a0"}.fc-timegrid-event-short .fc-event-title{font-size:var(--fc-small-font-size)}.fc-timegrid-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;margin-bottom:1px;position:absolute;z-index:9999}.fc-timegrid-more-link-inner{padding:3px 2px;top:0}.fc-direction-ltr .fc-timegrid-more-link{right:0}.fc-direction-rtl .fc-timegrid-more-link{left:0}.fc .fc-timegrid-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;border-width:1px 0 0;left:0;position:absolute;right:0;z-index:4}.fc .fc-timegrid-now-indicator-arrow{border-color:var(--fc-now-indicator-color);border-style:solid;margin-top:-5px;position:absolute;z-index:4}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 0 5px 6px;left:0}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 6px 5px 0;right:0}';
-yx(Hwe);
-class Vwe extends ube {
- getKeyInfo() {
- return {
- allDay: {},
- timed: {}
- };
- }
- getKeysForDateSpan(e) {
- return e.allDay ? ["allDay"] : ["timed"];
- }
- getKeysForEventDef(e) {
- return e.allDay ? jbe(e) ? ["timed", "allDay"] : ["allDay"] : ["timed"];
- }
-}
-const Gwe = jn({
- hour: "numeric",
- minute: "2-digit",
- omitZeroMinute: !0,
- meridiem: "short"
-});
-function CU(r) {
- let e = [
- "fc-timegrid-slot",
- "fc-timegrid-slot-label",
- r.isLabeled ? "fc-scrollgrid-shrink" : "fc-timegrid-slot-minor"
- ];
- return me(fu.Consumer, null, (t) => {
- if (!r.isLabeled)
- return me("td", { className: e.join(" "), "data-time": r.isoTimeStr });
- let { dateEnv: n, options: i, viewApi: a } = t, o = (
- // TODO: fully pre-parse
- i.slotLabelFormat == null ? Gwe : Array.isArray(i.slotLabelFormat) ? jn(i.slotLabelFormat[0]) : jn(i.slotLabelFormat)
- ), s = {
- level: 0,
- time: r.time,
- date: n.toDate(r.date),
- view: a,
- text: n.format(r.date, o)
- };
- return me(ma, { elTag: "td", elClasses: e, elAttrs: {
- "data-time": r.isoTimeStr
- }, renderProps: s, generatorName: "slotLabelContent", customGenerator: i.slotLabelContent, defaultGenerator: Uwe, classNameGenerator: i.slotLabelClassNames, didMount: i.slotLabelDidMount, willUnmount: i.slotLabelWillUnmount }, (l) => me(
- "div",
- { className: "fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame" },
- me(l, { elTag: "div", elClasses: [
- "fc-timegrid-slot-label-cushion",
- "fc-scrollgrid-shrink-cushion"
- ] })
- ));
- });
-}
-function Uwe(r) {
- return r.text;
-}
-class Wwe extends un {
- render() {
- return this.props.slatMetas.map((e) => me(
- "tr",
- { key: e.key },
- me(CU, Object.assign({}, e))
- ));
- }
-}
-const Ywe = jn({ week: "short" }), Xwe = 5;
-class Zwe extends Vs {
- constructor() {
- super(...arguments), this.allDaySplitter = new Vwe(), this.headerElRef = Da(), this.rootElRef = Da(), this.scrollerElRef = Da(), this.state = {
- slatCoords: null
- }, this.handleScrollTopRequest = (e) => {
- let t = this.scrollerElRef.current;
- t && (t.scrollTop = e);
- }, this.renderHeadAxis = (e, t = "") => {
- let { options: n } = this.context, { dateProfile: i } = this.props, a = i.renderRange, s = Ic(a.start, a.end) === 1 ? Gd(this.context, a.start, "week") : {};
- return n.weekNumbers && e === "day" ? me(tU, { elTag: "th", elClasses: [
- "fc-timegrid-axis",
- "fc-scrollgrid-shrink"
- ], elAttrs: {
- "aria-hidden": !0
- }, date: a.start, defaultFormat: Ywe }, (l) => me(
- "div",
- { className: [
- "fc-timegrid-axis-frame",
- "fc-scrollgrid-shrink-frame",
- "fc-timegrid-axis-frame-liquid"
- ].join(" "), style: { height: t } },
- me(l, { elTag: "a", elClasses: [
- "fc-timegrid-axis-cushion",
- "fc-scrollgrid-shrink-cushion",
- "fc-scrollgrid-sync-inner"
- ], elAttrs: s })
- )) : me(
- "th",
- { "aria-hidden": !0, className: "fc-timegrid-axis" },
- me("div", { className: "fc-timegrid-axis-frame", style: { height: t } })
- );
- }, this.renderTableRowAxis = (e) => {
- let { options: t, viewApi: n } = this.context, i = {
- text: t.allDayText,
- view: n
- };
- return (
- // TODO: make reusable hook. used in list view too
- me(ma, { elTag: "td", elClasses: [
- "fc-timegrid-axis",
- "fc-scrollgrid-shrink"
- ], elAttrs: {
- "aria-hidden": !0
- }, renderProps: i, generatorName: "allDayContent", customGenerator: t.allDayContent, defaultGenerator: Jwe, classNameGenerator: t.allDayClassNames, didMount: t.allDayDidMount, willUnmount: t.allDayWillUnmount }, (a) => me(
- "div",
- { className: [
- "fc-timegrid-axis-frame",
- "fc-scrollgrid-shrink-frame",
- e == null ? " fc-timegrid-axis-frame-liquid" : ""
- ].join(" "), style: { height: e } },
- me(a, { elTag: "span", elClasses: [
- "fc-timegrid-axis-cushion",
- "fc-scrollgrid-shrink-cushion",
- "fc-scrollgrid-sync-inner"
- ] })
- ))
- );
- }, this.handleSlatCoords = (e) => {
- this.setState({ slatCoords: e });
- };
- }
- // rendering
- // ----------------------------------------------------------------------------------------------------
- renderSimpleLayout(e, t, n) {
- let { context: i, props: a } = this, o = [], s = pb(i.options);
- return e && o.push({
- type: "header",
- key: "header",
- isSticky: s,
- chunk: {
- elRef: this.headerElRef,
- tableClassName: "fc-col-header",
- rowContent: e
- }
- }), t && (o.push({
- type: "body",
- key: "all-day",
- chunk: { content: t }
- }), o.push({
- type: "body",
- key: "all-day-divider",
- outerContent: (
- // TODO: rename to cellContent so don't need to define
?
- me(
- "tr",
- { role: "presentation", className: "fc-scrollgrid-section" },
- me("td", { className: "fc-timegrid-divider " + i.theme.getClass("tableCellShaded") })
- )
- )
- })), o.push({
- type: "body",
- key: "body",
- liquid: !0,
- expandRows: !!i.options.expandRows,
- chunk: {
- scrollerElRef: this.scrollerElRef,
- content: n
- }
- }), me(
- Hg,
- { elRef: this.rootElRef, elClasses: ["fc-timegrid"], viewSpec: i.viewSpec },
- me(xM, { liquid: !a.isHeightAuto && !a.forPrint, collapsibleWidth: a.forPrint, cols: [{ width: "shrink" }], sections: o })
- );
- }
- renderHScrollLayout(e, t, n, i, a, o, s) {
- let l = this.context.pluginHooks.scrollGridImpl;
- if (!l)
- throw new Error("No ScrollGrid implementation");
- let { context: u, props: c } = this, h = !c.forPrint && pb(u.options), f = !c.forPrint && KG(u.options), v = [];
- e && v.push({
- type: "header",
- key: "header",
- isSticky: h,
- syncRowHeights: !0,
- chunks: [
- {
- key: "axis",
- rowContent: (w) => me("tr", { role: "presentation" }, this.renderHeadAxis("day", w.rowSyncHeights[0]))
- },
- {
- key: "cols",
- elRef: this.headerElRef,
- tableClassName: "fc-col-header",
- rowContent: e
- }
- ]
- }), t && (v.push({
- type: "body",
- key: "all-day",
- syncRowHeights: !0,
- chunks: [
- {
- key: "axis",
- rowContent: (w) => me("tr", { role: "presentation" }, this.renderTableRowAxis(w.rowSyncHeights[0]))
- },
- {
- key: "cols",
- content: t
- }
- ]
- }), v.push({
- key: "all-day-divider",
- type: "body",
- outerContent: (
- // TODO: rename to cellContent so don't need to define
?
- me(
- "tr",
- { role: "presentation", className: "fc-scrollgrid-section" },
- me("td", { colSpan: 2, className: "fc-timegrid-divider " + u.theme.getClass("tableCellShaded") })
- )
- )
- }));
- let b = u.options.nowIndicator;
- return v.push({
- type: "body",
- key: "body",
- liquid: !0,
- expandRows: !!u.options.expandRows,
- chunks: [
- {
- key: "axis",
- content: (w) => (
- // TODO: make this now-indicator arrow more DRY with TimeColsContent
- me(
- "div",
- { className: "fc-timegrid-axis-chunk" },
- me(
- "table",
- { "aria-hidden": !0, style: { height: w.expandRows ? w.clientHeight : "" } },
- w.tableColGroupNode,
- me(
- "tbody",
- null,
- me(Wwe, { slatMetas: o })
- )
- ),
- me(
- "div",
- { className: "fc-timegrid-now-indicator-container" },
- me(vv, {
- unit: b ? "minute" : "day"
- /* hacky */
- }, (p) => {
- let d = b && s && s.safeComputeTop(p);
- return typeof d == "number" ? me(SM, { elClasses: ["fc-timegrid-now-indicator-arrow"], elStyle: { top: d }, isAxis: !0, date: p }) : null;
- })
- )
- )
- )
- },
- {
- key: "cols",
- scrollerElRef: this.scrollerElRef,
- content: n
- }
- ]
- }), f && v.push({
- key: "footer",
- type: "footer",
- isSticky: !0,
- chunks: [
- {
- key: "axis",
- content: aI
- },
- {
- key: "cols",
- content: aI
- }
- ]
- }), me(
- Hg,
- { elRef: this.rootElRef, elClasses: ["fc-timegrid"], viewSpec: u.viewSpec },
- me(l, { liquid: !c.isHeightAuto && !c.forPrint, forPrint: c.forPrint, collapsibleWidth: !1, colGroups: [
- { width: "shrink", cols: [{ width: "shrink" }] },
- { cols: [{ span: i, minWidth: a }] }
- ], sections: v })
- );
- }
- /* Dimensions
- ------------------------------------------------------------------------------------------------------------------*/
- getAllDayMaxEventProps() {
- let { dayMaxEvents: e, dayMaxEventRows: t } = this.context.options;
- return (e === !0 || t === !0) && (e = void 0, t = Xwe), { dayMaxEvents: e, dayMaxEventRows: t };
- }
-}
-function Jwe(r) {
- return r.text;
-}
-class Kwe {
- constructor(e, t, n) {
- this.positions = e, this.dateProfile = t, this.slotDuration = n;
- }
- safeComputeTop(e) {
- let { dateProfile: t } = this;
- if (Ql(t.currentRange, e)) {
- let n = kn(e), i = e.valueOf() - n.valueOf();
- if (i >= Ls(t.slotMinTime) && i < Ls(t.slotMaxTime))
- return this.computeTimeTop(Xr(i));
- }
- return null;
- }
- // Computes the top coordinate, relative to the bounds of the grid, of the given date.
- // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.
- computeDateTop(e, t) {
- return t || (t = kn(e)), this.computeTimeTop(Xr(e.valueOf() - t.valueOf()));
- }
- // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).
- // This is a makeshify way to compute the time-top. Assumes all slatMetas dates are uniform.
- // Eventually allow computation with arbirary slat dates.
- computeTimeTop(e) {
- let { positions: t, dateProfile: n } = this, i = t.els.length, a = (e.milliseconds - Ls(n.slotMinTime)) / Ls(this.slotDuration), o, s;
- return a = Math.max(0, a), a = Math.min(i, a), o = Math.floor(a), o = Math.min(o, i - 1), s = a - o, t.tops[o] + t.getHeight(o) * s;
- }
-}
-class Qwe extends un {
- render() {
- let { props: e, context: t } = this, { options: n } = t, { slatElRefs: i } = e;
- return me("tbody", null, e.slatMetas.map((a, o) => {
- let s = {
- time: a.time,
- date: t.dateEnv.toDate(a.date),
- view: t.viewApi
- };
- return me(
- "tr",
- { key: a.key, ref: i.createRef(a.key) },
- e.axis && me(CU, Object.assign({}, a)),
- me(ma, { elTag: "td", elClasses: [
- "fc-timegrid-slot",
- "fc-timegrid-slot-lane",
- !a.isLabeled && "fc-timegrid-slot-minor"
- ], elAttrs: {
- "data-time": a.isoTimeStr
- }, renderProps: s, generatorName: "slotLaneContent", customGenerator: n.slotLaneContent, classNameGenerator: n.slotLaneClassNames, didMount: n.slotLaneDidMount, willUnmount: n.slotLaneWillUnmount })
- );
- }));
- }
-}
-class qwe extends un {
- constructor() {
- super(...arguments), this.rootElRef = Da(), this.slatElRefs = new Zl();
- }
- render() {
- let { props: e, context: t } = this;
- return me(
- "div",
- { ref: this.rootElRef, className: "fc-timegrid-slots" },
- me(
- "table",
- { "aria-hidden": !0, className: t.theme.getClass("table"), style: {
- minWidth: e.tableMinWidth,
- width: e.clientWidth,
- height: e.minHeight
- } },
- e.tableColGroupNode,
- me(Qwe, { slatElRefs: this.slatElRefs, axis: e.axis, slatMetas: e.slatMetas })
- )
- );
- }
- componentDidMount() {
- this.updateSizing();
- }
- componentDidUpdate() {
- this.updateSizing();
- }
- componentWillUnmount() {
- this.props.onCoords && this.props.onCoords(null);
- }
- updateSizing() {
- let { context: e, props: t } = this;
- t.onCoords && t.clientWidth !== null && this.rootElRef.current.offsetHeight && t.onCoords(new Kwe(new Ud(this.rootElRef.current, eCe(this.slatElRefs.currentMap, t.slatMetas), !1, !0), this.props.dateProfile, e.options.slotDuration));
- }
-}
-function eCe(r, e) {
- return e.map((t) => r[t.key]);
-}
-function Sp(r, e) {
- let t = [], n;
- for (n = 0; n < e; n += 1)
- t.push([]);
- if (r)
- for (n = 0; n < r.length; n += 1)
- t[r[n].col].push(r[n]);
- return t;
-}
-function Vz(r, e) {
- let t = [];
- if (r) {
- for (let n = 0; n < e; n += 1)
- t[n] = {
- affectedInstances: r.affectedInstances,
- isEvent: r.isEvent,
- segs: []
- };
- for (let n of r.segs)
- t[n.col].segs.push(n);
- } else
- for (let n = 0; n < e; n += 1)
- t[n] = null;
- return t;
-}
-class tCe extends un {
- render() {
- let { props: e } = this;
- return me(rU, { elClasses: ["fc-timegrid-more-link"], elStyle: {
- top: e.top,
- bottom: e.bottom
- }, allDayDate: null, moreCnt: e.hiddenSegs.length, allSegs: e.hiddenSegs, hiddenSegs: e.hiddenSegs, extraDateSpan: e.extraDateSpan, dateProfile: e.dateProfile, todayRange: e.todayRange, popoverContent: () => IU(e.hiddenSegs, e), defaultGenerator: rCe, forceTimed: !0 }, (t) => me(t, { elTag: "div", elClasses: ["fc-timegrid-more-link-inner", "fc-sticky"] }));
- }
-}
-function rCe(r) {
- return r.shortText;
-}
-function nCe(r, e, t) {
- let n = new PG();
- e != null && (n.strictOrder = e), t != null && (n.maxStackCnt = t);
- let i = n.addSegs(r), a = ixe(i), o = iCe(n);
- return o = lCe(o, 1), { segRects: uCe(o), hiddenGroups: a };
-}
-function iCe(r) {
- const { entriesByLevel: e } = r, t = IM((n, i) => n + ":" + i, (n, i) => {
- let a = sCe(r, n, i), o = Gz(a, t), s = e[n][i];
- return [
- Object.assign(Object.assign({}, s), { nextLevelNodes: o[0] }),
- s.thickness + o[1]
- // the pressure builds
- ];
- });
- return Gz(e.length ? { level: 0, lateralStart: 0, lateralEnd: e[0].length } : null, t)[0];
-}
-function Gz(r, e) {
- if (!r)
- return [[], 0];
- let { level: t, lateralStart: n, lateralEnd: i } = r, a = n, o = [];
- for (; a < i; )
- o.push(e(t, a)), a += 1;
- return o.sort(aCe), [
- o.map(oCe),
- o[0][1]
- // first item's pressure
- ];
-}
-function aCe(r, e) {
- return e[1] - r[1];
-}
-function oCe(r) {
- return r[0];
-}
-function sCe(r, e, t) {
- let { levelCoords: n, entriesByLevel: i } = r, a = i[e][t], o = n[e] + a.thickness, s = n.length, l = e;
- for (; l < s && n[l] < o; l += 1)
- ;
- for (; l < s; l += 1) {
- let u = i[l], c, h = nI(u, a.span.start, rI), f = h[0] + h[1], v = f;
- for (
- ;
- // loop through entries that horizontally intersect
- (c = u[v]) && // but not past the whole seg list
- c.span.start < a.span.end;
- )
- v += 1;
- if (f < v)
- return { level: l, lateralStart: f, lateralEnd: v };
- }
- return null;
-}
-function lCe(r, e) {
- const t = IM((n, i, a) => Hh(n), (n, i, a) => {
- let { nextLevelNodes: o, thickness: s } = n, l = s + a, u = s / l, c, h = [];
- if (!o.length)
- c = e;
- else
- for (let v of o)
- if (c === void 0) {
- let b = t(v, i, l);
- c = b[0], h.push(b[1]);
- } else {
- let b = t(v, c, 0);
- h.push(b[1]);
- }
- let f = (c - i) * u;
- return [c - f, Object.assign(Object.assign({}, n), { thickness: f, nextLevelNodes: h })];
- });
- return r.map((n) => t(n, 0, 0)[1]);
-}
-function uCe(r) {
- let e = [];
- const t = IM((i, a, o) => Hh(i), (i, a, o) => {
- let s = Object.assign(Object.assign({}, i), {
- levelCoord: a,
- stackDepth: o,
- stackForward: 0
- });
- return e.push(s), s.stackForward = n(i.nextLevelNodes, a + i.thickness, o + 1) + 1;
- });
- function n(i, a, o) {
- let s = 0;
- for (let l of i)
- s = Math.max(t(l, a, o), s);
- return s;
- }
- return n(r, 0, 0), e;
-}
-function IM(r, e) {
- const t = {};
- return (...n) => {
- let i = r(...n);
- return i in t ? t[i] : t[i] = e(...n);
- };
-}
-function Uz(r, e, t = null, n = 0) {
- let i = [];
- if (t)
- for (let a = 0; a < r.length; a += 1) {
- let o = r[a], s = t.computeDateTop(o.start, e), l = Math.max(
- s + (n || 0),
- // :(
- t.computeDateTop(o.end, e)
- );
- i.push({
- start: Math.round(s),
- end: Math.round(l)
- //
- });
- }
- return i;
-}
-function cCe(r, e, t, n) {
- let i = [], a = [];
- for (let u = 0; u < r.length; u += 1) {
- let c = e[u];
- c ? i.push({
- index: u,
- thickness: 1,
- span: c
- }) : a.push(r[u]);
- }
- let { segRects: o, hiddenGroups: s } = nCe(i, t, n), l = [];
- for (let u of o)
- l.push({
- seg: r[u.index],
- rect: u
- });
- for (let u of a)
- l.push({ seg: u, rect: null });
- return { segPlacements: l, hiddenGroups: s };
-}
-const hCe = jn({
- hour: "numeric",
- minute: "2-digit",
- meridiem: !1
-});
-class TU extends un {
- render() {
- return me(QG, Object.assign({}, this.props, { elClasses: [
- "fc-timegrid-event",
- "fc-v-event",
- this.props.isShort && "fc-timegrid-event-short"
- ], defaultTimeFormat: hCe }));
- }
-}
-class fCe extends un {
- constructor() {
- super(...arguments), this.sortEventSegs = rr(vM);
- }
- // TODO: memoize event-placement?
- render() {
- let { props: e, context: t } = this, { options: n } = t, i = n.selectMirror, a = (
- // yuck
- e.eventDrag && e.eventDrag.segs || e.eventResize && e.eventResize.segs || i && e.dateSelectionSegs || []
- ), o = (
- // TODO: messy way to compute this
- e.eventDrag && e.eventDrag.affectedInstances || e.eventResize && e.eventResize.affectedInstances || {}
- ), s = this.sortEventSegs(e.fgEventSegs, n.eventOrder);
- return me(wM, { elTag: "td", elRef: e.elRef, elClasses: [
- "fc-timegrid-col",
- ...e.extraClassNames || []
- ], elAttrs: Object.assign({ role: "gridcell" }, e.extraDataAttrs), date: e.date, dateProfile: e.dateProfile, todayRange: e.todayRange, extraRenderProps: e.extraRenderProps }, (l) => me(
- "div",
- { className: "fc-timegrid-col-frame" },
- me(
- "div",
- { className: "fc-timegrid-col-bg" },
- this.renderFillSegs(e.businessHourSegs, "non-business"),
- this.renderFillSegs(e.bgEventSegs, "bg-event"),
- this.renderFillSegs(e.dateSelectionSegs, "highlight")
- ),
- me("div", { className: "fc-timegrid-col-events" }, this.renderFgSegs(s, o, !1, !1, !1)),
- me("div", { className: "fc-timegrid-col-events" }, this.renderFgSegs(a, {}, !!e.eventDrag, !!e.eventResize, !!i, "mirror")),
- me("div", { className: "fc-timegrid-now-indicator-container" }, this.renderNowIndicator(e.nowIndicatorSegs)),
- CM(n) && me(l, { elTag: "div", elClasses: ["fc-timegrid-col-misc"] })
- ));
- }
- renderFgSegs(e, t, n, i, a, o) {
- let { props: s } = this;
- return s.forPrint ? IU(e, s) : this.renderPositionedFgSegs(e, t, n, i, a, o);
- }
- renderPositionedFgSegs(e, t, n, i, a, o) {
- let { eventMaxStack: s, eventShortHeight: l, eventOrderStrict: u, eventMinHeight: c } = this.context.options, { date: h, slatCoords: f, eventSelection: v, todayRange: b, nowDate: w } = this.props, p = n || i || a, d = Uz(e, h, f, c), { segPlacements: m, hiddenGroups: _ } = cCe(e, d, u, s);
- return me(
- Dn,
- null,
- this.renderHiddenGroups(_, e),
- m.map((y) => {
- let { seg: x, rect: g } = y, S = x.eventRange.instance.instanceId, T = p || !!(!t[S] && g), C = HC(g && g.span), E = !p && g ? this.computeSegHStyle(g) : { left: 0, right: 0 }, M = !!g && g.stackForward > 0, P = !!g && g.span.end - g.span.start < l;
- return me(
- "div",
- { className: "fc-timegrid-event-harness" + (M ? " fc-timegrid-event-harness-inset" : ""), key: o || S, style: Object.assign(Object.assign({ visibility: T ? "" : "hidden" }, C), E) },
- me(TU, Object.assign({ seg: x, isDragging: n, isResizing: i, isDateSelecting: a, isSelected: S === v, isShort: P }, ql(x, b, w)))
- );
- })
- );
- }
- // will already have eventMinHeight applied because segInputs already had it
- renderHiddenGroups(e, t) {
- let { extraDateSpan: n, dateProfile: i, todayRange: a, nowDate: o, eventSelection: s, eventDrag: l, eventResize: u } = this.props;
- return me(Dn, null, e.map((c) => {
- let h = HC(c.span), f = dCe(c.entries, t);
- return me(tCe, { key: pG(nU(f)), hiddenSegs: f, top: h.top, bottom: h.bottom, extraDateSpan: n, dateProfile: i, todayRange: a, nowDate: o, eventSelection: s, eventDrag: l, eventResize: u });
- }));
- }
- renderFillSegs(e, t) {
- let { props: n, context: i } = this, o = Uz(e, n.date, n.slatCoords, i.options.eventMinHeight).map((s, l) => {
- let u = e[l];
- return me("div", { key: DG(u.eventRange), className: "fc-timegrid-bg-harness", style: HC(s) }, t === "bg-event" ? me(qG, Object.assign({ seg: u }, ql(u, n.todayRange, n.nowDate))) : eU(t));
- });
- return me(Dn, null, o);
- }
- renderNowIndicator(e) {
- let { slatCoords: t, date: n } = this.props;
- return t ? e.map((i, a) => me(
- SM,
- {
- // key doesn't matter. will only ever be one
- key: a,
- elClasses: ["fc-timegrid-now-indicator-line"],
- elStyle: {
- top: t.computeDateTop(i.start, n)
- },
- isAxis: !1,
- date: n
- }
- )) : null;
- }
- computeSegHStyle(e) {
- let { isRtl: t, options: n } = this.context, i = n.slotEventOverlap, a = e.levelCoord, o = e.levelCoord + e.thickness, s, l;
- i && (o = Math.min(1, a + (o - a) * 2)), t ? (s = 1 - o, l = a) : (s = a, l = 1 - o);
- let u = {
- zIndex: e.stackDepth + 1,
- left: s * 100 + "%",
- right: l * 100 + "%"
- };
- return i && !e.stackForward && (u[t ? "marginLeft" : "marginRight"] = 10 * 2), u;
- }
-}
-function IU(r, { todayRange: e, nowDate: t, eventSelection: n, eventDrag: i, eventResize: a }) {
- let o = (i ? i.affectedInstances : null) || (a ? a.affectedInstances : null) || {};
- return me(Dn, null, r.map((s) => {
- let l = s.eventRange.instance.instanceId;
- return me(
- "div",
- { key: l, style: { visibility: o[l] ? "hidden" : "" } },
- me(TU, Object.assign({ seg: s, isDragging: !1, isResizing: !1, isDateSelecting: !1, isSelected: l === n, isShort: !1 }, ql(s, e, t)))
- );
- }));
-}
-function HC(r) {
- return r ? {
- top: r.start,
- bottom: -r.end
- } : { top: "", bottom: "" };
-}
-function dCe(r, e) {
- return r.map((t) => e[t.index]);
-}
-class vCe extends un {
- constructor() {
- super(...arguments), this.splitFgEventSegs = rr(Sp), this.splitBgEventSegs = rr(Sp), this.splitBusinessHourSegs = rr(Sp), this.splitNowIndicatorSegs = rr(Sp), this.splitDateSelectionSegs = rr(Sp), this.splitEventDrag = rr(Vz), this.splitEventResize = rr(Vz), this.rootElRef = Da(), this.cellElRefs = new Zl();
- }
- render() {
- let { props: e, context: t } = this, n = t.options.nowIndicator && e.slatCoords && e.slatCoords.safeComputeTop(e.nowDate), i = e.cells.length, a = this.splitFgEventSegs(e.fgEventSegs, i), o = this.splitBgEventSegs(e.bgEventSegs, i), s = this.splitBusinessHourSegs(e.businessHourSegs, i), l = this.splitNowIndicatorSegs(e.nowIndicatorSegs, i), u = this.splitDateSelectionSegs(e.dateSelectionSegs, i), c = this.splitEventDrag(e.eventDrag, i), h = this.splitEventResize(e.eventResize, i);
- return me(
- "div",
- { className: "fc-timegrid-cols", ref: this.rootElRef },
- me(
- "table",
- { role: "presentation", style: {
- minWidth: e.tableMinWidth,
- width: e.clientWidth
- } },
- e.tableColGroupNode,
- me(
- "tbody",
- { role: "presentation" },
- me(
- "tr",
- { role: "row" },
- e.axis && me(
- "td",
- { "aria-hidden": !0, className: "fc-timegrid-col fc-timegrid-axis" },
- me(
- "div",
- { className: "fc-timegrid-col-frame" },
- me("div", { className: "fc-timegrid-now-indicator-container" }, typeof n == "number" && me(SM, { elClasses: ["fc-timegrid-now-indicator-arrow"], elStyle: { top: n }, isAxis: !0, date: e.nowDate }))
- )
- ),
- e.cells.map((f, v) => me(fCe, { key: f.key, elRef: this.cellElRefs.createRef(f.key), dateProfile: e.dateProfile, date: f.date, nowDate: e.nowDate, todayRange: e.todayRange, extraRenderProps: f.extraRenderProps, extraDataAttrs: f.extraDataAttrs, extraClassNames: f.extraClassNames, extraDateSpan: f.extraDateSpan, fgEventSegs: a[v], bgEventSegs: o[v], businessHourSegs: s[v], nowIndicatorSegs: l[v], dateSelectionSegs: u[v], eventDrag: c[v], eventResize: h[v], slatCoords: e.slatCoords, eventSelection: e.eventSelection, forPrint: e.forPrint }))
- )
- )
- )
- );
- }
- componentDidMount() {
- this.updateCoords();
- }
- componentDidUpdate() {
- this.updateCoords();
- }
- updateCoords() {
- let { props: e } = this;
- e.onColCoords && e.clientWidth !== null && e.onColCoords(new Ud(
- this.rootElRef.current,
- pCe(this.cellElRefs.currentMap, e.cells),
- !0,
- // horizontal
- !1
- ));
- }
-}
-function pCe(r, e) {
- return e.map((t) => r[t.key]);
-}
-class gCe extends Vs {
- constructor() {
- super(...arguments), this.processSlotOptions = rr(mCe), this.state = {
- slatCoords: null
- }, this.handleRootEl = (e) => {
- e ? this.context.registerInteractiveComponent(this, {
- el: e,
- isHitComboAllowed: this.props.isHitComboAllowed
- }) : this.context.unregisterInteractiveComponent(this);
- }, this.handleScrollRequest = (e) => {
- let { onScrollTopRequest: t } = this.props, { slatCoords: n } = this.state;
- if (t && n) {
- if (e.time) {
- let i = n.computeTimeTop(e.time);
- i = Math.ceil(i), i && (i += 1), t(i);
- }
- return !0;
- }
- return !1;
- }, this.handleColCoords = (e) => {
- this.colCoords = e;
- }, this.handleSlatCoords = (e) => {
- this.setState({ slatCoords: e }), this.props.onSlatCoords && this.props.onSlatCoords(e);
- };
- }
- render() {
- let { props: e, state: t } = this;
- return me(
- "div",
- { className: "fc-timegrid-body", ref: this.handleRootEl, style: {
- // these props are important to give this wrapper correct dimensions for interactions
- // TODO: if we set it here, can we avoid giving to inner tables?
- width: e.clientWidth,
- minWidth: e.tableMinWidth
- } },
- me(qwe, { axis: e.axis, dateProfile: e.dateProfile, slatMetas: e.slatMetas, clientWidth: e.clientWidth, minHeight: e.expandRows ? e.clientHeight : "", tableMinWidth: e.tableMinWidth, tableColGroupNode: e.axis ? e.tableColGroupNode : null, onCoords: this.handleSlatCoords }),
- me(vCe, { cells: e.cells, axis: e.axis, dateProfile: e.dateProfile, businessHourSegs: e.businessHourSegs, bgEventSegs: e.bgEventSegs, fgEventSegs: e.fgEventSegs, dateSelectionSegs: e.dateSelectionSegs, eventSelection: e.eventSelection, eventDrag: e.eventDrag, eventResize: e.eventResize, todayRange: e.todayRange, nowDate: e.nowDate, nowIndicatorSegs: e.nowIndicatorSegs, clientWidth: e.clientWidth, tableMinWidth: e.tableMinWidth, tableColGroupNode: e.tableColGroupNode, slatCoords: t.slatCoords, onColCoords: this.handleColCoords, forPrint: e.forPrint })
- );
- }
- componentDidMount() {
- this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest);
- }
- componentDidUpdate(e) {
- this.scrollResponder.update(e.dateProfile !== this.props.dateProfile);
- }
- componentWillUnmount() {
- this.scrollResponder.detach();
- }
- queryHit(e, t) {
- let { dateEnv: n, options: i } = this.context, { colCoords: a } = this, { dateProfile: o } = this.props, { slatCoords: s } = this.state, { snapDuration: l, snapsPerSlot: u } = this.processSlotOptions(this.props.slotDuration, i.snapDuration), c = a.leftToIndex(e), h = s.positions.topToIndex(t);
- if (c != null && h != null) {
- let f = this.props.cells[c], v = s.positions.tops[h], b = s.positions.getHeight(h), w = (t - v) / b, p = Math.floor(w * u), d = h * u + p, m = this.props.cells[c].date, _ = JT(o.slotMinTime, s_e(l, d)), y = n.add(m, _), x = n.add(y, l);
- return {
- dateProfile: o,
- dateSpan: Object.assign({ range: { start: y, end: x }, allDay: !1 }, f.extraDateSpan),
- dayEl: a.els[c],
- rect: {
- left: a.lefts[c],
- right: a.rights[c],
- top: v,
- bottom: v + b
- },
- layer: 0
- };
- }
- return null;
- }
-}
-function mCe(r, e) {
- let t = e || r, n = QE(r, t);
- return n === null && (t = r, n = 1), { snapDuration: t, snapsPerSlot: n };
-}
-class yCe extends VG {
- sliceRange(e, t) {
- let n = [];
- for (let i = 0; i < t.length; i += 1) {
- let a = xc(e, t[i]);
- a && n.push({
- start: a.start,
- end: a.end,
- isStart: a.start.valueOf() === e.start.valueOf(),
- isEnd: a.end.valueOf() === e.end.valueOf(),
- col: i
- });
- }
- return n;
- }
-}
-class _Ce extends Vs {
- constructor() {
- super(...arguments), this.buildDayRanges = rr(bCe), this.slicer = new yCe(), this.timeColsRef = Da();
- }
- render() {
- let { props: e, context: t } = this, { dateProfile: n, dayTableModel: i } = e, { nowIndicator: a, nextDayThreshold: o } = t.options, s = this.buildDayRanges(i, n, t.dateEnv);
- return me(vv, { unit: a ? "minute" : "day" }, (l, u) => me(gCe, Object.assign({ ref: this.timeColsRef }, this.slicer.sliceProps(e, n, null, t, s), { forPrint: e.forPrint, axis: e.axis, dateProfile: n, slatMetas: e.slatMetas, slotDuration: e.slotDuration, cells: i.cells[0], tableColGroupNode: e.tableColGroupNode, tableMinWidth: e.tableMinWidth, clientWidth: e.clientWidth, clientHeight: e.clientHeight, expandRows: e.expandRows, nowDate: l, nowIndicatorSegs: a && this.slicer.sliceNowDate(l, n, o, t, s), todayRange: u, onScrollTopRequest: e.onScrollTopRequest, onSlatCoords: e.onSlatCoords })));
- }
-}
-function bCe(r, e, t) {
- let n = [];
- for (let i of r.headerDates)
- n.push({
- start: t.add(i, e.slotMinTime),
- end: t.add(i, e.slotMaxTime)
- });
- return n;
-}
-const Wz = [
- { hours: 1 },
- { minutes: 30 },
- { minutes: 15 },
- { seconds: 30 },
- { seconds: 15 }
-];
-function xCe(r, e, t, n, i) {
- let a = /* @__PURE__ */ new Date(0), o = r, s = Xr(0), l = t || SCe(n), u = [];
- for (; Ls(o) < Ls(e); ) {
- let c = i.add(a, o), h = QE(s, l) !== null;
- u.push({
- date: c,
- time: o,
- key: c.toISOString(),
- isoTimeStr: A_e(c),
- isLabeled: h
- }), o = JT(o, n), s = JT(s, n);
- }
- return u;
-}
-function SCe(r) {
- let e, t, n;
- for (e = Wz.length - 1; e >= 0; e -= 1)
- if (t = Xr(Wz[e]), n = QE(t, r), n !== null && n > 1)
- return t;
- return r;
-}
-class wCe extends Zwe {
- constructor() {
- super(...arguments), this.buildTimeColsModel = rr(CCe), this.buildSlatMetas = rr(xCe);
- }
- render() {
- let { options: e, dateEnv: t, dateProfileGenerator: n } = this.context, { props: i } = this, { dateProfile: a } = i, o = this.buildTimeColsModel(a, n), s = this.allDaySplitter.splitProps(i), l = this.buildSlatMetas(a.slotMinTime, a.slotMaxTime, e.slotLabelInterval, e.slotDuration, t), { dayMinWidth: u } = e, c = !u, h = u, f = e.dayHeaders && me(FG, { dates: o.headerDates, dateProfile: a, datesRepDistinctDays: !0, renderIntro: c ? this.renderHeadAxis : null }), v = e.allDaySlot !== !1 && ((w) => me(wU, Object.assign({}, s.allDay, { dateProfile: a, dayTableModel: o, nextDayThreshold: e.nextDayThreshold, tableMinWidth: w.tableMinWidth, colGroupNode: w.tableColGroupNode, renderRowIntro: c ? this.renderTableRowAxis : null, showWeekNumbers: !1, expandRows: !1, headerAlignElRef: this.headerElRef, clientWidth: w.clientWidth, clientHeight: w.clientHeight, forPrint: i.forPrint }, this.getAllDayMaxEventProps()))), b = (w) => me(_Ce, Object.assign({}, s.timed, { dayTableModel: o, dateProfile: a, axis: c, slotDuration: e.slotDuration, slatMetas: l, forPrint: i.forPrint, tableColGroupNode: w.tableColGroupNode, tableMinWidth: w.tableMinWidth, clientWidth: w.clientWidth, clientHeight: w.clientHeight, onSlatCoords: this.handleSlatCoords, expandRows: w.expandRows, onScrollTopRequest: this.handleScrollTopRequest }));
- return h ? this.renderHScrollLayout(f, v, b, o.colCnt, u, l, this.state.slatCoords) : this.renderSimpleLayout(f, v, b);
- }
-}
-function CCe(r, e) {
- let t = new $G(r.renderRange, e);
- return new HG(t, !1);
-}
-const TCe = {
- allDaySlot: Boolean
-};
-var ICe = Gs({
- name: "@fullcalendar/timegrid",
- initialView: "timeGridWeek",
- optionRefiners: TCe,
- views: {
- timeGrid: {
- component: wCe,
- usesMinMaxTime: !0,
- allDaySlot: !0,
- slotDuration: "00:30:00",
- slotEventOverlap: !0
- // a bad name. confused with overlap/constraint system
- },
- timeGridDay: {
- type: "timeGrid",
- duration: { days: 1 }
- },
- timeGridWeek: {
- type: "timeGrid",
- duration: { weeks: 1 }
- }
- }
-});
-yM.touchMouseIgnoreWait = 500;
-let sI = 0, gb = 0, lI = !1;
-class AU {
- constructor(e) {
- this.subjectEl = null, this.selector = "", this.handleSelector = "", this.shouldIgnoreMove = !1, this.shouldWatchScroll = !0, this.isDragging = !1, this.isTouchDragging = !1, this.wasTouchScroll = !1, this.handleMouseDown = (t) => {
- if (!this.shouldIgnoreMouse() && ACe(t) && this.tryStart(t)) {
- let n = this.createEventFromMouse(t, !0);
- this.emitter.trigger("pointerdown", n), this.initScrollWatch(n), this.shouldIgnoreMove || document.addEventListener("mousemove", this.handleMouseMove), document.addEventListener("mouseup", this.handleMouseUp);
- }
- }, this.handleMouseMove = (t) => {
- let n = this.createEventFromMouse(t);
- this.recordCoords(n), this.emitter.trigger("pointermove", n);
- }, this.handleMouseUp = (t) => {
- document.removeEventListener("mousemove", this.handleMouseMove), document.removeEventListener("mouseup", this.handleMouseUp), this.emitter.trigger("pointerup", this.createEventFromMouse(t)), this.cleanup();
- }, this.handleTouchStart = (t) => {
- if (this.tryStart(t)) {
- this.isTouchDragging = !0;
- let n = this.createEventFromTouch(t, !0);
- this.emitter.trigger("pointerdown", n), this.initScrollWatch(n);
- let i = t.target;
- this.shouldIgnoreMove || i.addEventListener("touchmove", this.handleTouchMove), i.addEventListener("touchend", this.handleTouchEnd), i.addEventListener("touchcancel", this.handleTouchEnd), window.addEventListener("scroll", this.handleTouchScroll, !0);
- }
- }, this.handleTouchMove = (t) => {
- let n = this.createEventFromTouch(t);
- this.recordCoords(n), this.emitter.trigger("pointermove", n);
- }, this.handleTouchEnd = (t) => {
- if (this.isDragging) {
- let n = t.target;
- n.removeEventListener("touchmove", this.handleTouchMove), n.removeEventListener("touchend", this.handleTouchEnd), n.removeEventListener("touchcancel", this.handleTouchEnd), window.removeEventListener("scroll", this.handleTouchScroll, !0), this.emitter.trigger("pointerup", this.createEventFromTouch(t)), this.cleanup(), this.isTouchDragging = !1, ECe();
- }
- }, this.handleTouchScroll = () => {
- this.wasTouchScroll = !0;
- }, this.handleScroll = (t) => {
- if (!this.shouldIgnoreMove) {
- let n = window.pageXOffset - this.prevScrollX + this.prevPageX, i = window.pageYOffset - this.prevScrollY + this.prevPageY;
- this.emitter.trigger("pointermove", {
- origEvent: t,
- isTouch: this.isTouchDragging,
- subjectEl: this.subjectEl,
- pageX: n,
- pageY: i,
- deltaX: n - this.origPageX,
- deltaY: i - this.origPageY
- });
- }
- }, this.containerEl = e, this.emitter = new Cx(), e.addEventListener("mousedown", this.handleMouseDown), e.addEventListener("touchstart", this.handleTouchStart, { passive: !0 }), MCe();
- }
- destroy() {
- this.containerEl.removeEventListener("mousedown", this.handleMouseDown), this.containerEl.removeEventListener("touchstart", this.handleTouchStart, { passive: !0 }), DCe();
- }
- tryStart(e) {
- let t = this.querySubjectEl(e), n = e.target;
- return t && (!this.handleSelector || da(n, this.handleSelector)) ? (this.subjectEl = t, this.isDragging = !0, this.wasTouchScroll = !1, !0) : !1;
- }
- cleanup() {
- lI = !1, this.isDragging = !1, this.subjectEl = null, this.destroyScrollWatch();
- }
- querySubjectEl(e) {
- return this.selector ? da(e.target, this.selector) : this.containerEl;
- }
- shouldIgnoreMouse() {
- return sI || this.isTouchDragging;
- }
- // can be called by user of this class, to cancel touch-based scrolling for the current drag
- cancelTouchScroll() {
- this.isDragging && (lI = !0);
- }
- // Scrolling that simulates pointermoves
- // ----------------------------------------------------------------------------------------------------
- initScrollWatch(e) {
- this.shouldWatchScroll && (this.recordCoords(e), window.addEventListener("scroll", this.handleScroll, !0));
- }
- recordCoords(e) {
- this.shouldWatchScroll && (this.prevPageX = e.pageX, this.prevPageY = e.pageY, this.prevScrollX = window.pageXOffset, this.prevScrollY = window.pageYOffset);
- }
- destroyScrollWatch() {
- this.shouldWatchScroll && window.removeEventListener("scroll", this.handleScroll, !0);
- }
- // Event Normalization
- // ----------------------------------------------------------------------------------------------------
- createEventFromMouse(e, t) {
- let n = 0, i = 0;
- return t ? (this.origPageX = e.pageX, this.origPageY = e.pageY) : (n = e.pageX - this.origPageX, i = e.pageY - this.origPageY), {
- origEvent: e,
- isTouch: !1,
- subjectEl: this.subjectEl,
- pageX: e.pageX,
- pageY: e.pageY,
- deltaX: n,
- deltaY: i
- };
- }
- createEventFromTouch(e, t) {
- let n = e.touches, i, a, o = 0, s = 0;
- return n && n.length ? (i = n[0].pageX, a = n[0].pageY) : (i = e.pageX, a = e.pageY), t ? (this.origPageX = i, this.origPageY = a) : (o = i - this.origPageX, s = a - this.origPageY), {
- origEvent: e,
- isTouch: !0,
- subjectEl: this.subjectEl,
- pageX: i,
- pageY: a,
- deltaX: o,
- deltaY: s
- };
- }
-}
-function ACe(r) {
- return r.button === 0 && !r.ctrlKey;
-}
-function ECe() {
- sI += 1, setTimeout(() => {
- sI -= 1;
- }, yM.touchMouseIgnoreWait);
-}
-function MCe() {
- gb += 1, gb === 1 && window.addEventListener("touchmove", EU, { passive: !1 });
-}
-function DCe() {
- gb -= 1, gb || window.removeEventListener("touchmove", EU, { passive: !1 });
-}
-function EU(r) {
- lI && r.preventDefault();
-}
-class kCe {
- constructor() {
- this.isVisible = !1, this.sourceEl = null, this.mirrorEl = null, this.sourceElRect = null, this.parentNode = document.body, this.zIndex = 9999, this.revertDuration = 0;
- }
- start(e, t, n) {
- this.sourceEl = e, this.sourceElRect = this.sourceEl.getBoundingClientRect(), this.origScreenX = t - window.pageXOffset, this.origScreenY = n - window.pageYOffset, this.deltaX = 0, this.deltaY = 0, this.updateElPosition();
- }
- handleMove(e, t) {
- this.deltaX = e - window.pageXOffset - this.origScreenX, this.deltaY = t - window.pageYOffset - this.origScreenY, this.updateElPosition();
- }
- // can be called before start
- setIsVisible(e) {
- e ? this.isVisible || (this.mirrorEl && (this.mirrorEl.style.display = ""), this.isVisible = e, this.updateElPosition()) : this.isVisible && (this.mirrorEl && (this.mirrorEl.style.display = "none"), this.isVisible = e);
- }
- // always async
- stop(e, t) {
- let n = () => {
- this.cleanup(), t();
- };
- e && this.mirrorEl && this.isVisible && this.revertDuration && // if 0, transition won't work
- (this.deltaX || this.deltaY) ? this.doRevertAnimation(n, this.revertDuration) : setTimeout(n, 0);
- }
- doRevertAnimation(e, t) {
- let n = this.mirrorEl, i = this.sourceEl.getBoundingClientRect();
- n.style.transition = "top " + t + "ms,left " + t + "ms", qp(n, {
- left: i.left,
- top: i.top
- }), W0e(n, () => {
- n.style.transition = "", e();
- });
- }
- cleanup() {
- this.mirrorEl && (ZE(this.mirrorEl), this.mirrorEl = null), this.sourceEl = null;
- }
- updateElPosition() {
- this.sourceEl && this.isVisible && qp(this.getMirrorEl(), {
- left: this.sourceElRect.left + this.deltaX,
- top: this.sourceElRect.top + this.deltaY
- });
- }
- getMirrorEl() {
- let e = this.sourceElRect, t = this.mirrorEl;
- return t || (t = this.mirrorEl = this.sourceEl.cloneNode(!0), t.style.userSelect = "none", t.classList.add("fc-event-dragging"), qp(t, {
- position: "fixed",
- zIndex: this.zIndex,
- visibility: "",
- boxSizing: "border-box",
- width: e.right - e.left,
- height: e.bottom - e.top,
- right: "auto",
- bottom: "auto",
- margin: 0
- }), this.parentNode.appendChild(t)), t;
- }
-}
-class MU extends hM {
- constructor(e, t) {
- super(), this.handleScroll = () => {
- this.scrollTop = this.scrollController.getScrollTop(), this.scrollLeft = this.scrollController.getScrollLeft(), this.handleScrollChange();
- }, this.scrollController = e, this.doesListening = t, this.scrollTop = this.origScrollTop = e.getScrollTop(), this.scrollLeft = this.origScrollLeft = e.getScrollLeft(), this.scrollWidth = e.getScrollWidth(), this.scrollHeight = e.getScrollHeight(), this.clientWidth = e.getClientWidth(), this.clientHeight = e.getClientHeight(), this.clientRect = this.computeClientRect(), this.doesListening && this.getEventTarget().addEventListener("scroll", this.handleScroll);
- }
- destroy() {
- this.doesListening && this.getEventTarget().removeEventListener("scroll", this.handleScroll);
- }
- getScrollTop() {
- return this.scrollTop;
- }
- getScrollLeft() {
- return this.scrollLeft;
- }
- setScrollTop(e) {
- this.scrollController.setScrollTop(e), this.doesListening || (this.scrollTop = Math.max(Math.min(e, this.getMaxScrollTop()), 0), this.handleScrollChange());
- }
- setScrollLeft(e) {
- this.scrollController.setScrollLeft(e), this.doesListening || (this.scrollLeft = Math.max(Math.min(e, this.getMaxScrollLeft()), 0), this.handleScrollChange());
- }
- getClientWidth() {
- return this.clientWidth;
- }
- getClientHeight() {
- return this.clientHeight;
- }
- getScrollWidth() {
- return this.scrollWidth;
- }
- getScrollHeight() {
- return this.scrollHeight;
- }
- handleScrollChange() {
- }
-}
-class DU extends MU {
- constructor(e, t) {
- super(new Abe(e), t);
- }
- getEventTarget() {
- return this.scrollController.el;
- }
- computeClientRect() {
- return Sbe(this.scrollController.el);
- }
-}
-class OCe extends MU {
- constructor(e) {
- super(new Ebe(), e);
- }
- getEventTarget() {
- return window;
- }
- computeClientRect() {
- return {
- left: this.scrollLeft,
- right: this.scrollLeft + this.clientWidth,
- top: this.scrollTop,
- bottom: this.scrollTop + this.clientHeight
- };
- }
- // the window is the only scroll object that changes it's rectangle relative
- // to the document's topleft as it scrolls
- handleScrollChange() {
- this.clientRect = this.computeClientRect();
- }
-}
-const Yz = typeof performance == "function" ? performance.now : Date.now;
-class LCe {
- constructor() {
- this.isEnabled = !0, this.scrollQuery = [window, ".fc-scroller"], this.edgeThreshold = 50, this.maxVelocity = 300, this.pointerScreenX = null, this.pointerScreenY = null, this.isAnimating = !1, this.scrollCaches = null, this.everMovedUp = !1, this.everMovedDown = !1, this.everMovedLeft = !1, this.everMovedRight = !1, this.animate = () => {
- if (this.isAnimating) {
- let e = this.computeBestEdge(this.pointerScreenX + window.pageXOffset, this.pointerScreenY + window.pageYOffset);
- if (e) {
- let t = Yz();
- this.handleSide(e, (t - this.msSinceRequest) / 1e3), this.requestAnimation(t);
- } else
- this.isAnimating = !1;
- }
- };
- }
- start(e, t, n) {
- this.isEnabled && (this.scrollCaches = this.buildCaches(n), this.pointerScreenX = null, this.pointerScreenY = null, this.everMovedUp = !1, this.everMovedDown = !1, this.everMovedLeft = !1, this.everMovedRight = !1, this.handleMove(e, t));
- }
- handleMove(e, t) {
- if (this.isEnabled) {
- let n = e - window.pageXOffset, i = t - window.pageYOffset, a = this.pointerScreenY === null ? 0 : i - this.pointerScreenY, o = this.pointerScreenX === null ? 0 : n - this.pointerScreenX;
- a < 0 ? this.everMovedUp = !0 : a > 0 && (this.everMovedDown = !0), o < 0 ? this.everMovedLeft = !0 : o > 0 && (this.everMovedRight = !0), this.pointerScreenX = n, this.pointerScreenY = i, this.isAnimating || (this.isAnimating = !0, this.requestAnimation(Yz()));
- }
- }
- stop() {
- if (this.isEnabled) {
- this.isAnimating = !1;
- for (let e of this.scrollCaches)
- e.destroy();
- this.scrollCaches = null;
- }
- }
- requestAnimation(e) {
- this.msSinceRequest = e, requestAnimationFrame(this.animate);
- }
- handleSide(e, t) {
- let { scrollCache: n } = e, { edgeThreshold: i } = this, a = i - e.distance, o = (
- // the closer to the edge, the faster we scroll
- a * a / (i * i) * // quadratic
- this.maxVelocity * t
- ), s = 1;
- switch (e.name) {
- case "left":
- s = -1;
- case "right":
- n.setScrollLeft(n.getScrollLeft() + o * s);
- break;
- case "top":
- s = -1;
- case "bottom":
- n.setScrollTop(n.getScrollTop() + o * s);
- break;
- }
- }
- // left/top are relative to document topleft
- computeBestEdge(e, t) {
- let { edgeThreshold: n } = this, i = null, a = this.scrollCaches || [];
- for (let o of a) {
- let s = o.clientRect, l = e - s.left, u = s.right - e, c = t - s.top, h = s.bottom - t;
- l >= 0 && u >= 0 && c >= 0 && h >= 0 && (c <= n && this.everMovedUp && o.canScrollUp() && (!i || i.distance > c) && (i = { scrollCache: o, name: "top", distance: c }), h <= n && this.everMovedDown && o.canScrollDown() && (!i || i.distance > h) && (i = { scrollCache: o, name: "bottom", distance: h }), l <= n && this.everMovedLeft && o.canScrollLeft() && (!i || i.distance > l) && (i = { scrollCache: o, name: "left", distance: l }), u <= n && this.everMovedRight && o.canScrollRight() && (!i || i.distance > u) && (i = { scrollCache: o, name: "right", distance: u }));
- }
- return i;
- }
- buildCaches(e) {
- return this.queryScrollEls(e).map((t) => t === window ? new OCe(!1) : new DU(t, !1));
- }
- queryScrollEls(e) {
- let t = [];
- for (let n of this.scrollQuery)
- typeof n == "object" ? t.push(n) : t.push(...Array.prototype.slice.call(e.getRootNode().querySelectorAll(n)));
- return t;
- }
-}
-class xm extends sxe {
- constructor(e, t) {
- super(e), this.containerEl = e, this.delay = null, this.minDistance = 0, this.touchScrollAllowed = !0, this.mirrorNeedsRevert = !1, this.isInteracting = !1, this.isDragging = !1, this.isDelayEnded = !1, this.isDistanceSurpassed = !1, this.delayTimeoutId = null, this.onPointerDown = (i) => {
- this.isDragging || (this.isInteracting = !0, this.isDelayEnded = !1, this.isDistanceSurpassed = !1, Y0e(document.body), Z0e(document.body), i.isTouch || i.origEvent.preventDefault(), this.emitter.trigger("pointerdown", i), this.isInteracting && // not destroyed via pointerdown handler
- !this.pointer.shouldIgnoreMove && (this.mirror.setIsVisible(!1), this.mirror.start(i.subjectEl, i.pageX, i.pageY), this.startDelay(i), this.minDistance || this.handleDistanceSurpassed(i)));
- }, this.onPointerMove = (i) => {
- if (this.isInteracting) {
- if (this.emitter.trigger("pointermove", i), !this.isDistanceSurpassed) {
- let a = this.minDistance, o, { deltaX: s, deltaY: l } = i;
- o = s * s + l * l, o >= a * a && this.handleDistanceSurpassed(i);
- }
- this.isDragging && (i.origEvent.type !== "scroll" && (this.mirror.handleMove(i.pageX, i.pageY), this.autoScroller.handleMove(i.pageX, i.pageY)), this.emitter.trigger("dragmove", i));
- }
- }, this.onPointerUp = (i) => {
- this.isInteracting && (this.isInteracting = !1, X0e(document.body), J0e(document.body), this.emitter.trigger("pointerup", i), this.isDragging && (this.autoScroller.stop(), this.tryStopDrag(i)), this.delayTimeoutId && (clearTimeout(this.delayTimeoutId), this.delayTimeoutId = null));
- };
- let n = this.pointer = new AU(e);
- n.emitter.on("pointerdown", this.onPointerDown), n.emitter.on("pointermove", this.onPointerMove), n.emitter.on("pointerup", this.onPointerUp), t && (n.selector = t), this.mirror = new kCe(), this.autoScroller = new LCe();
- }
- destroy() {
- this.pointer.destroy(), this.onPointerUp({});
- }
- startDelay(e) {
- typeof this.delay == "number" ? this.delayTimeoutId = setTimeout(() => {
- this.delayTimeoutId = null, this.handleDelayEnd(e);
- }, this.delay) : this.handleDelayEnd(e);
- }
- handleDelayEnd(e) {
- this.isDelayEnded = !0, this.tryStartDrag(e);
- }
- handleDistanceSurpassed(e) {
- this.isDistanceSurpassed = !0, this.tryStartDrag(e);
- }
- tryStartDrag(e) {
- this.isDelayEnded && this.isDistanceSurpassed && (!this.pointer.wasTouchScroll || this.touchScrollAllowed) && (this.isDragging = !0, this.mirrorNeedsRevert = !1, this.autoScroller.start(e.pageX, e.pageY, this.containerEl), this.emitter.trigger("dragstart", e), this.touchScrollAllowed === !1 && this.pointer.cancelTouchScroll());
- }
- tryStopDrag(e) {
- this.mirror.stop(this.mirrorNeedsRevert, this.stopDrag.bind(this, e));
- }
- stopDrag(e) {
- this.isDragging = !1, this.emitter.trigger("dragend", e);
- }
- // fill in the implementations...
- setIgnoreMove(e) {
- this.pointer.shouldIgnoreMove = e;
- }
- setMirrorIsVisible(e) {
- this.mirror.setIsVisible(e);
- }
- setMirrorNeedsRevert(e) {
- this.mirrorNeedsRevert = e;
- }
- setAutoScrollEnabled(e) {
- this.autoScroller.isEnabled = e;
- }
-}
-class PCe {
- constructor(e) {
- this.origRect = cM(e), this.scrollCaches = CG(e).map((t) => new DU(t, !0));
- }
- destroy() {
- for (let e of this.scrollCaches)
- e.destroy();
- }
- computeLeft() {
- let e = this.origRect.left;
- for (let t of this.scrollCaches)
- e += t.origScrollLeft - t.getScrollLeft();
- return e;
- }
- computeTop() {
- let e = this.origRect.top;
- for (let t of this.scrollCaches)
- e += t.origScrollTop - t.getScrollTop();
- return e;
- }
- isWithinClipping(e, t) {
- let n = { left: e, top: t };
- for (let i of this.scrollCaches)
- if (!RCe(i.getEventTarget()) && !ibe(n, i.clientRect))
- return !1;
- return !0;
- }
-}
-function RCe(r) {
- let e = r.tagName;
- return e === "HTML" || e === "BODY";
-}
-class Ix {
- constructor(e, t) {
- this.useSubjectCenter = !1, this.requireInitial = !0, this.initialHit = null, this.movingHit = null, this.finalHit = null, this.handlePointerDown = (n) => {
- let { dragging: i } = this;
- this.initialHit = null, this.movingHit = null, this.finalHit = null, this.prepareHits(), this.processFirstCoord(n), this.initialHit || !this.requireInitial ? (i.setIgnoreMove(!1), this.emitter.trigger("pointerdown", n)) : i.setIgnoreMove(!0);
- }, this.handleDragStart = (n) => {
- this.emitter.trigger("dragstart", n), this.handleMove(n, !0);
- }, this.handleDragMove = (n) => {
- this.emitter.trigger("dragmove", n), this.handleMove(n);
- }, this.handlePointerUp = (n) => {
- this.releaseHits(), this.emitter.trigger("pointerup", n);
- }, this.handleDragEnd = (n) => {
- this.movingHit && this.emitter.trigger("hitupdate", null, !0, n), this.finalHit = this.movingHit, this.movingHit = null, this.emitter.trigger("dragend", n);
- }, this.droppableStore = t, e.emitter.on("pointerdown", this.handlePointerDown), e.emitter.on("dragstart", this.handleDragStart), e.emitter.on("dragmove", this.handleDragMove), e.emitter.on("pointerup", this.handlePointerUp), e.emitter.on("dragend", this.handleDragEnd), this.dragging = e, this.emitter = new Cx();
- }
- // sets initialHit
- // sets coordAdjust
- processFirstCoord(e) {
- let t = { left: e.pageX, top: e.pageY }, n = t, i = e.subjectEl, a;
- i instanceof HTMLElement && (a = cM(i), n = abe(n, a));
- let o = this.initialHit = this.queryHitForOffset(n.left, n.top);
- if (o) {
- if (this.useSubjectCenter && a) {
- let s = xG(a, o.rect);
- s && (n = obe(s));
- }
- this.coordAdjust = sbe(n, t);
- } else
- this.coordAdjust = { left: 0, top: 0 };
- }
- handleMove(e, t) {
- let n = this.queryHitForOffset(e.pageX + this.coordAdjust.left, e.pageY + this.coordAdjust.top);
- (t || !Ax(this.movingHit, n)) && (this.movingHit = n, this.emitter.trigger("hitupdate", n, !1, e));
- }
- prepareHits() {
- this.offsetTrackers = su(this.droppableStore, (e) => (e.component.prepareHits(), new PCe(e.el)));
- }
- releaseHits() {
- let { offsetTrackers: e } = this;
- for (let t in e)
- e[t].destroy();
- this.offsetTrackers = {};
- }
- queryHitForOffset(e, t) {
- let { droppableStore: n, offsetTrackers: i } = this, a = null;
- for (let o in n) {
- let s = n[o].component, l = i[o];
- if (l && // wasn't destroyed mid-drag
- l.isWithinClipping(e, t)) {
- let u = l.computeLeft(), c = l.computeTop(), h = e - u, f = t - c, { origRect: v } = l, b = v.right - v.left, w = v.bottom - v.top;
- if (
- // must be within the element's bounds
- h >= 0 && h < b && f >= 0 && f < w
- ) {
- let p = s.queryHit(h, f, b, w);
- p && // make sure the hit is within activeRange, meaning it's not a dead cell
- xx(p.dateProfile.activeRange, p.dateSpan.range) && (!a || p.layer > a.layer) && (p.componentId = o, p.context = s.context, p.rect.left += u, p.rect.right += u, p.rect.top += c, p.rect.bottom += c, a = p);
- }
- }
- }
- return a;
- }
-}
-function Ax(r, e) {
- return !r && !e ? !0 : !!r != !!e ? !1 : Xbe(r.dateSpan, e.dateSpan);
-}
-function kU(r, e) {
- let t = {};
- for (let n of e.pluginHooks.datePointTransforms)
- Object.assign(t, n(r, e));
- return Object.assign(t, NCe(r, e.dateEnv)), t;
-}
-function NCe(r, e) {
- return {
- date: e.toDate(r.range.start),
- dateStr: e.formatIso(r.range.start, { omitTime: r.allDay }),
- allDay: r.allDay
- };
-}
-class zCe extends dv {
- constructor(e) {
- super(e), this.handlePointerDown = (n) => {
- let { dragging: i } = this, a = n.origEvent.target;
- i.setIgnoreMove(!this.component.isValidDateDownEl(a));
- }, this.handleDragEnd = (n) => {
- let { component: i } = this, { pointer: a } = this.dragging;
- if (!a.wasTouchScroll) {
- let { initialHit: o, finalHit: s } = this.hitDragging;
- if (o && s && Ax(o, s)) {
- let { context: l } = i, u = Object.assign(Object.assign({}, kU(o.dateSpan, l)), { dayEl: o.dayEl, jsEvent: n.origEvent, view: l.viewApi || l.calendarApi.view });
- l.emitter.trigger("dateClick", u);
- }
- }
- }, this.dragging = new xm(e.el), this.dragging.autoScroller.isEnabled = !1;
- let t = this.hitDragging = new Ix(this.dragging, mM(e));
- t.emitter.on("pointerdown", this.handlePointerDown), t.emitter.on("dragend", this.handleDragEnd);
- }
- destroy() {
- this.dragging.destroy();
- }
-}
-class BCe extends dv {
- constructor(e) {
- super(e), this.dragSelection = null, this.handlePointerDown = (o) => {
- let { component: s, dragging: l } = this, { options: u } = s.context, c = u.selectable && s.isValidDateDownEl(o.origEvent.target);
- l.setIgnoreMove(!c), l.delay = o.isTouch ? jCe(s) : null;
- }, this.handleDragStart = (o) => {
- this.component.context.calendarApi.unselect(o);
- }, this.handleHitUpdate = (o, s) => {
- let { context: l } = this.component, u = null, c = !1;
- if (o) {
- let h = this.hitDragging.initialHit;
- o.componentId === h.componentId && this.isHitComboAllowed && !this.isHitComboAllowed(h, o) || (u = FCe(h, o, l.pluginHooks.dateSelectionTransformers)), (!u || !wxe(u, o.dateProfile, l)) && (c = !0, u = null);
- }
- u ? l.dispatch({ type: "SELECT_DATES", selection: u }) : s || l.dispatch({ type: "UNSELECT_DATES" }), c ? JE() : KE(), s || (this.dragSelection = u);
- }, this.handlePointerUp = (o) => {
- this.dragSelection && (AG(this.dragSelection, o, this.component.context), this.dragSelection = null);
- };
- let { component: t } = e, { options: n } = t.context, i = this.dragging = new xm(e.el);
- i.touchScrollAllowed = !1, i.minDistance = n.selectMinDistance || 0, i.autoScroller.isEnabled = n.dragScroll;
- let a = this.hitDragging = new Ix(this.dragging, mM(e));
- a.emitter.on("pointerdown", this.handlePointerDown), a.emitter.on("dragstart", this.handleDragStart), a.emitter.on("hitupdate", this.handleHitUpdate), a.emitter.on("pointerup", this.handlePointerUp);
- }
- destroy() {
- this.dragging.destroy();
- }
-}
-function jCe(r) {
- let { options: e } = r.context, t = e.selectLongPressDelay;
- return t == null && (t = e.longPressDelay), t;
-}
-function FCe(r, e, t) {
- let n = r.dateSpan, i = e.dateSpan, a = [
- n.range.start,
- n.range.end,
- i.range.start,
- i.range.end
- ];
- a.sort(t_e);
- let o = {};
- for (let s of t) {
- let l = s(r, e);
- if (l === !1)
- return null;
- l && Object.assign(o, l);
- }
- return o.range = { start: a[0], end: a[3] }, o.allDay = n.allDay, o;
-}
-class Sm extends dv {
- constructor(e) {
- super(e), this.subjectEl = null, this.subjectSeg = null, this.isDragging = !1, this.eventRange = null, this.relevantEvents = null, this.receivingContext = null, this.validMutation = null, this.mutatedRelevantEvents = null, this.handlePointerDown = (o) => {
- let s = o.origEvent.target, { component: l, dragging: u } = this, { mirror: c } = u, { options: h } = l.context, f = l.context;
- this.subjectEl = o.subjectEl;
- let v = this.subjectSeg = Wd(o.subjectEl), w = (this.eventRange = v.eventRange).instance.instanceId;
- this.relevantEvents = iM(f.getCurrentData().eventStore, w), u.minDistance = o.isTouch ? 0 : h.eventDragMinDistance, u.delay = // only do a touch delay if touch and this event hasn't been selected yet
- o.isTouch && w !== l.props.eventSelection ? HCe(l) : null, h.fixedMirrorParent ? c.parentNode = h.fixedMirrorParent : c.parentNode = da(s, ".fc"), c.revertDuration = h.dragRevertDuration;
- let p = l.isValidSegDownEl(s) && !da(s, ".fc-event-resizer");
- u.setIgnoreMove(!p), this.isDragging = p && o.subjectEl.classList.contains("fc-event-draggable");
- }, this.handleDragStart = (o) => {
- let s = this.component.context, l = this.eventRange, u = l.instance.instanceId;
- o.isTouch ? u !== this.component.props.eventSelection && s.dispatch({ type: "SELECT_EVENT", eventInstanceId: u }) : s.dispatch({ type: "UNSELECT_EVENT" }), this.isDragging && (s.calendarApi.unselect(o), s.emitter.trigger("eventDragStart", {
- el: this.subjectEl,
- event: new Gn(s, l.def, l.instance),
- jsEvent: o.origEvent,
- view: s.viewApi
- }));
- }, this.handleHitUpdate = (o, s) => {
- if (!this.isDragging)
- return;
- let l = this.relevantEvents, u = this.hitDragging.initialHit, c = this.component.context, h = null, f = null, v = null, b = !1, w = {
- affectedEvents: l,
- mutatedEvents: xo(),
- isEvent: !0
- };
- if (o) {
- h = o.context;
- let p = h.options;
- c === h || p.editable && p.droppable ? (f = $Ce(u, o, h.getCurrentData().pluginHooks.eventDragMutationMassagers), f && (v = dM(l, h.getCurrentData().eventUiBases, f, h), w.mutatedEvents = v, WG(w, o.dateProfile, h) || (b = !0, f = null, v = null, w.mutatedEvents = xo()))) : h = null;
- }
- this.displayDrag(h, w), b ? JE() : KE(), s || (c === h && // TODO: write test for this
- Ax(u, o) && (f = null), this.dragging.setMirrorNeedsRevert(!f), this.dragging.setMirrorIsVisible(!o || !this.subjectEl.getRootNode().querySelector(".fc-event-mirror")), this.receivingContext = h, this.validMutation = f, this.mutatedRelevantEvents = v);
- }, this.handlePointerUp = () => {
- this.isDragging || this.cleanup();
- }, this.handleDragEnd = (o) => {
- if (this.isDragging) {
- let s = this.component.context, l = s.viewApi, { receivingContext: u, validMutation: c } = this, h = this.eventRange.def, f = this.eventRange.instance, v = new Gn(s, h, f), b = this.relevantEvents, w = this.mutatedRelevantEvents, { finalHit: p } = this.hitDragging;
- if (this.clearDrag(), s.emitter.trigger("eventDragStop", {
- el: this.subjectEl,
- event: v,
- jsEvent: o.origEvent,
- view: l
- }), c) {
- if (u === s) {
- let d = new Gn(s, w.defs[h.defId], f ? w.instances[f.instanceId] : null);
- s.dispatch({
- type: "MERGE_EVENTS",
- eventStore: w
- });
- let m = {
- oldEvent: v,
- event: d,
- relatedEvents: $h(w, s, f),
- revert() {
- s.dispatch({
- type: "MERGE_EVENTS",
- eventStore: b
- // the pre-change data
- });
- }
- }, _ = {};
- for (let y of s.getCurrentData().pluginHooks.eventDropTransformers)
- Object.assign(_, y(c, s));
- s.emitter.trigger("eventDrop", Object.assign(Object.assign(Object.assign({}, m), _), { el: o.subjectEl, delta: c.datesDelta, jsEvent: o.origEvent, view: l })), s.emitter.trigger("eventChange", m);
- } else if (u) {
- let d = {
- event: v,
- relatedEvents: $h(b, s, f),
- revert() {
- s.dispatch({
- type: "MERGE_EVENTS",
- eventStore: b
- });
- }
- };
- s.emitter.trigger("eventLeave", Object.assign(Object.assign({}, d), { draggedEl: o.subjectEl, view: l })), s.dispatch({
- type: "REMOVE_EVENTS",
- eventStore: b
- }), s.emitter.trigger("eventRemove", d);
- let m = w.defs[h.defId], _ = w.instances[f.instanceId], y = new Gn(u, m, _);
- u.dispatch({
- type: "MERGE_EVENTS",
- eventStore: w
- });
- let x = {
- event: y,
- relatedEvents: $h(w, u, _),
- revert() {
- u.dispatch({
- type: "REMOVE_EVENTS",
- eventStore: w
- });
- }
- };
- u.emitter.trigger("eventAdd", x), o.isTouch && u.dispatch({
- type: "SELECT_EVENT",
- eventInstanceId: f.instanceId
- }), u.emitter.trigger("drop", Object.assign(Object.assign({}, kU(p.dateSpan, u)), { draggedEl: o.subjectEl, jsEvent: o.origEvent, view: p.context.viewApi })), u.emitter.trigger("eventReceive", Object.assign(Object.assign({}, x), { draggedEl: o.subjectEl, view: p.context.viewApi }));
- }
- } else
- s.emitter.trigger("_noEventDrop");
- }
- this.cleanup();
- };
- let { component: t } = this, { options: n } = t.context, i = this.dragging = new xm(e.el);
- i.pointer.selector = Sm.SELECTOR, i.touchScrollAllowed = !1, i.autoScroller.isEnabled = n.dragScroll;
- let a = this.hitDragging = new Ix(this.dragging, iI);
- a.useSubjectCenter = e.useEventCenter, a.emitter.on("pointerdown", this.handlePointerDown), a.emitter.on("dragstart", this.handleDragStart), a.emitter.on("hitupdate", this.handleHitUpdate), a.emitter.on("pointerup", this.handlePointerUp), a.emitter.on("dragend", this.handleDragEnd);
- }
- destroy() {
- this.dragging.destroy();
- }
- // render a drag state on the next receivingCalendar
- displayDrag(e, t) {
- let n = this.component.context, i = this.receivingContext;
- i && i !== e && (i === n ? i.dispatch({
- type: "SET_EVENT_DRAG",
- state: {
- affectedEvents: t.affectedEvents,
- mutatedEvents: xo(),
- isEvent: !0
- }
- }) : i.dispatch({ type: "UNSET_EVENT_DRAG" })), e && e.dispatch({ type: "SET_EVENT_DRAG", state: t });
- }
- clearDrag() {
- let e = this.component.context, { receivingContext: t } = this;
- t && t.dispatch({ type: "UNSET_EVENT_DRAG" }), e !== t && e.dispatch({ type: "UNSET_EVENT_DRAG" });
- }
- cleanup() {
- this.subjectSeg = null, this.isDragging = !1, this.eventRange = null, this.relevantEvents = null, this.receivingContext = null, this.validMutation = null, this.mutatedRelevantEvents = null;
- }
-}
-Sm.SELECTOR = ".fc-event-draggable, .fc-event-resizable";
-function $Ce(r, e, t) {
- let n = r.dateSpan, i = e.dateSpan, a = n.range.start, o = i.range.start, s = {};
- n.allDay !== i.allDay && (s.allDay = i.allDay, s.hasEnd = e.context.options.allDayMaintainDuration, i.allDay && (a = kn(a)));
- let l = pd(a, o, r.context.dateEnv, r.componentId === e.componentId ? r.largeUnit : null);
- l.milliseconds && (s.allDay = !1);
- let u = {
- datesDelta: l,
- standardProps: s
- };
- for (let c of t)
- c(u, r, e);
- return u;
-}
-function HCe(r) {
- let { options: e } = r.context, t = e.eventLongPressDelay;
- return t == null && (t = e.longPressDelay), t;
-}
-class VCe extends dv {
- constructor(e) {
- super(e), this.draggingSegEl = null, this.draggingSeg = null, this.eventRange = null, this.relevantEvents = null, this.validMutation = null, this.mutatedRelevantEvents = null, this.handlePointerDown = (a) => {
- let { component: o } = this, s = this.querySegEl(a), l = Wd(s), u = this.eventRange = l.eventRange;
- this.dragging.minDistance = o.context.options.eventDragMinDistance, this.dragging.setIgnoreMove(!this.component.isValidSegDownEl(a.origEvent.target) || a.isTouch && this.component.props.eventSelection !== u.instance.instanceId);
- }, this.handleDragStart = (a) => {
- let { context: o } = this.component, s = this.eventRange;
- this.relevantEvents = iM(o.getCurrentData().eventStore, this.eventRange.instance.instanceId);
- let l = this.querySegEl(a);
- this.draggingSegEl = l, this.draggingSeg = Wd(l), o.calendarApi.unselect(), o.emitter.trigger("eventResizeStart", {
- el: l,
- event: new Gn(o, s.def, s.instance),
- jsEvent: a.origEvent,
- view: o.viewApi
- });
- }, this.handleHitUpdate = (a, o, s) => {
- let { context: l } = this.component, u = this.relevantEvents, c = this.hitDragging.initialHit, h = this.eventRange.instance, f = null, v = null, b = !1, w = {
- affectedEvents: u,
- mutatedEvents: xo(),
- isEvent: !0
- };
- a && (a.componentId === c.componentId && this.isHitComboAllowed && !this.isHitComboAllowed(c, a) || (f = GCe(c, a, s.subjectEl.classList.contains("fc-event-resizer-start"), h.range))), f && (v = dM(u, l.getCurrentData().eventUiBases, f, l), w.mutatedEvents = v, WG(w, a.dateProfile, l) || (b = !0, f = null, v = null, w.mutatedEvents = null)), v ? l.dispatch({
- type: "SET_EVENT_RESIZE",
- state: w
- }) : l.dispatch({ type: "UNSET_EVENT_RESIZE" }), b ? JE() : KE(), o || (f && Ax(c, a) && (f = null), this.validMutation = f, this.mutatedRelevantEvents = v);
- }, this.handleDragEnd = (a) => {
- let { context: o } = this.component, s = this.eventRange.def, l = this.eventRange.instance, u = new Gn(o, s, l), c = this.relevantEvents, h = this.mutatedRelevantEvents;
- if (o.emitter.trigger("eventResizeStop", {
- el: this.draggingSegEl,
- event: u,
- jsEvent: a.origEvent,
- view: o.viewApi
- }), this.validMutation) {
- let f = new Gn(o, h.defs[s.defId], l ? h.instances[l.instanceId] : null);
- o.dispatch({
- type: "MERGE_EVENTS",
- eventStore: h
- });
- let v = {
- oldEvent: u,
- event: f,
- relatedEvents: $h(h, o, l),
- revert() {
- o.dispatch({
- type: "MERGE_EVENTS",
- eventStore: c
- // the pre-change events
- });
- }
- };
- o.emitter.trigger("eventResize", Object.assign(Object.assign({}, v), { el: this.draggingSegEl, startDelta: this.validMutation.startDelta || Xr(0), endDelta: this.validMutation.endDelta || Xr(0), jsEvent: a.origEvent, view: o.viewApi })), o.emitter.trigger("eventChange", v);
- } else
- o.emitter.trigger("_noEventResize");
- this.draggingSeg = null, this.relevantEvents = null, this.validMutation = null;
- };
- let { component: t } = e, n = this.dragging = new xm(e.el);
- n.pointer.selector = ".fc-event-resizer", n.touchScrollAllowed = !1, n.autoScroller.isEnabled = t.context.options.dragScroll;
- let i = this.hitDragging = new Ix(this.dragging, mM(e));
- i.emitter.on("pointerdown", this.handlePointerDown), i.emitter.on("dragstart", this.handleDragStart), i.emitter.on("hitupdate", this.handleHitUpdate), i.emitter.on("dragend", this.handleDragEnd);
- }
- destroy() {
- this.dragging.destroy();
- }
- querySegEl(e) {
- return da(e.subjectEl, ".fc-event");
- }
-}
-function GCe(r, e, t, n) {
- let i = r.context.dateEnv, a = r.dateSpan.range.start, o = e.dateSpan.range.start, s = pd(a, o, i, r.largeUnit);
- if (t) {
- if (i.add(n.start, s) < n.end)
- return { startDelta: s };
- } else if (i.add(n.end, s) > n.start)
- return { endDelta: s };
- return null;
-}
-class UCe {
- constructor(e) {
- this.context = e, this.isRecentPointerDateSelect = !1, this.matchesCancel = !1, this.matchesEvent = !1, this.onSelect = (n) => {
- n.jsEvent && (this.isRecentPointerDateSelect = !0);
- }, this.onDocumentPointerDown = (n) => {
- let i = this.context.options.unselectCancel, a = uG(n.origEvent);
- this.matchesCancel = !!da(a, i), this.matchesEvent = !!da(a, Sm.SELECTOR);
- }, this.onDocumentPointerUp = (n) => {
- let { context: i } = this, { documentPointer: a } = this, o = i.getCurrentData();
- if (!a.wasTouchScroll) {
- if (o.dateSelection && // an existing date selection?
- !this.isRecentPointerDateSelect) {
- let s = i.options.unselectAuto;
- s && (!s || !this.matchesCancel) && i.calendarApi.unselect(n);
- }
- o.eventSelection && // an existing event selected?
- !this.matchesEvent && i.dispatch({ type: "UNSELECT_EVENT" });
- }
- this.isRecentPointerDateSelect = !1;
- };
- let t = this.documentPointer = new AU(document);
- t.shouldIgnoreMove = !0, t.shouldWatchScroll = !1, t.emitter.on("pointerdown", this.onDocumentPointerDown), t.emitter.on("pointerup", this.onDocumentPointerUp), e.emitter.on("select", this.onSelect);
- }
- destroy() {
- this.context.emitter.off("select", this.onSelect), this.documentPointer.destroy();
- }
-}
-const WCe = {
- fixedMirrorParent: $e
-}, YCe = {
- dateClick: $e,
- eventDragStart: $e,
- eventDragStop: $e,
- eventDrop: $e,
- eventResizeStart: $e,
- eventResizeStop: $e,
- eventResize: $e,
- drop: $e,
- eventReceive: $e,
- eventLeave: $e
-};
-yM.dataAttrPrefix = "";
-var XCe = Gs({
- name: "@fullcalendar/interaction",
- componentInteractions: [zCe, BCe, Sm, VCe],
- calendarInteractions: [UCe],
- elementDraggingImpl: xm,
- optionRefiners: WCe,
- listenerRefiners: YCe
-}), ZCe = ':root{--fc-list-event-dot-width:10px;--fc-list-event-hover-bg-color:#f5f5f5}.fc-theme-standard .fc-list{border:1px solid var(--fc-border-color)}.fc .fc-list-empty{align-items:center;background-color:var(--fc-neutral-bg-color);display:flex;height:100%;justify-content:center}.fc .fc-list-empty-cushion{margin:5em 0}.fc .fc-list-table{border-style:hidden;width:100%}.fc .fc-list-table tr>*{border-left:0;border-right:0}.fc .fc-list-sticky .fc-list-day>*{background:var(--fc-page-bg-color);position:sticky;top:0}.fc .fc-list-table thead{left:-10000px;position:absolute}.fc .fc-list-table tbody>tr:first-child th{border-top:0}.fc .fc-list-table th{padding:0}.fc .fc-list-day-cushion,.fc .fc-list-table td{padding:8px 14px}.fc .fc-list-day-cushion:after{clear:both;content:"";display:table}.fc-theme-standard .fc-list-day-cushion{background-color:var(--fc-neutral-bg-color)}.fc-direction-ltr .fc-list-day-text,.fc-direction-rtl .fc-list-day-side-text{float:left}.fc-direction-ltr .fc-list-day-side-text,.fc-direction-rtl .fc-list-day-text{float:right}.fc-direction-ltr .fc-list-table .fc-list-event-graphic{padding-right:0}.fc-direction-rtl .fc-list-table .fc-list-event-graphic{padding-left:0}.fc .fc-list-event.fc-event-forced-url{cursor:pointer}.fc .fc-list-event:hover td{background-color:var(--fc-list-event-hover-bg-color)}.fc .fc-list-event-graphic,.fc .fc-list-event-time{white-space:nowrap;width:1px}.fc .fc-list-event-dot{border:calc(var(--fc-list-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-list-event-dot-width)/2);box-sizing:content-box;display:inline-block;height:0;width:0}.fc .fc-list-event-title a{color:inherit;text-decoration:none}.fc .fc-list-event.fc-event-forced-url:hover a{text-decoration:underline}';
-yx(ZCe);
-class JCe extends un {
- constructor() {
- super(...arguments), this.state = {
- textId: cc()
- };
- }
- render() {
- let { theme: e, dateEnv: t, options: n, viewApi: i } = this.context, { cellId: a, dayDate: o, todayRange: s } = this.props, { textId: l } = this.state, u = uM(o, s), c = n.listDayFormat ? t.format(o, n.listDayFormat) : "", h = n.listDaySideFormat ? t.format(o, n.listDaySideFormat) : "", f = Object.assign({
- date: t.toDate(o),
- view: i,
- textId: l,
- text: c,
- sideText: h,
- navLinkAttrs: Gd(this.context, o),
- sideNavLinkAttrs: Gd(this.context, o, "day", !1)
- }, u);
- return me(ma, { elTag: "tr", elClasses: [
- "fc-list-day",
- ...Sx(u, e)
- ], elAttrs: {
- "data-date": ym(o)
- }, renderProps: f, generatorName: "dayHeaderContent", customGenerator: n.dayHeaderContent, defaultGenerator: KCe, classNameGenerator: n.dayHeaderClassNames, didMount: n.dayHeaderDidMount, willUnmount: n.dayHeaderWillUnmount }, (v) => (
- // TODO: force-hide top border based on :first-child
- me(
- "th",
- { scope: "colgroup", colSpan: 3, id: a, "aria-labelledby": l },
- me(v, { elTag: "div", elClasses: [
- "fc-list-day-cushion",
- e.getClass("tableCellShaded")
- ] })
- )
- ));
- }
-}
-function KCe(r) {
- return me(
- Dn,
- null,
- r.text && me("a", Object.assign({ id: r.textId, className: "fc-list-day-text" }, r.navLinkAttrs), r.text),
- r.sideText && /* not keyboard tabbable */
- me("a", Object.assign({ "aria-hidden": !0, className: "fc-list-day-side-text" }, r.sideNavLinkAttrs), r.sideText)
- );
-}
-const QCe = jn({
- hour: "numeric",
- minute: "2-digit",
- meridiem: "short"
-});
-class qCe extends un {
- render() {
- let { props: e, context: t } = this, { options: n } = t, { seg: i, timeHeaderId: a, eventHeaderId: o, dateHeaderId: s } = e, l = n.eventTimeFormat || QCe;
- return me(Tx, Object.assign({}, e, { elTag: "tr", elClasses: [
- "fc-list-event",
- i.eventRange.def.url && "fc-event-forced-url"
- ], defaultGenerator: () => e1e(i, t), seg: i, timeText: "", disableDragging: !0, disableResizing: !0 }), (u, c) => me(
- Dn,
- null,
- t1e(i, l, t, a, s),
- me(
- "td",
- { "aria-hidden": !0, className: "fc-list-event-graphic" },
- me("span", { className: "fc-list-event-dot", style: {
- borderColor: c.borderColor || c.backgroundColor
- } })
- ),
- me(u, { elTag: "td", elClasses: ["fc-list-event-title"], elAttrs: { headers: `${o} ${s}` } })
- ));
- }
-}
-function e1e(r, e) {
- let t = pM(r, e);
- return me("a", Object.assign({}, t), r.eventRange.def.title);
-}
-function t1e(r, e, t, n, i) {
- let { options: a } = t;
- if (a.displayEventTime !== !1) {
- let o = r.eventRange.def, s = r.eventRange.instance, l = !1, u;
- if (o.allDay ? l = !0 : nbe(r.eventRange.range) ? r.isStart ? u = rg(r, e, t, null, null, s.range.start, r.end) : r.isEnd ? u = rg(r, e, t, null, null, r.start, s.range.end) : l = !0 : u = rg(r, e, t), l) {
- let c = {
- text: t.options.allDayText,
- view: t.viewApi
- };
- return me(ma, { elTag: "td", elClasses: ["fc-list-event-time"], elAttrs: {
- headers: `${n} ${i}`
- }, renderProps: c, generatorName: "allDayContent", customGenerator: a.allDayContent, defaultGenerator: r1e, classNameGenerator: a.allDayClassNames, didMount: a.allDayDidMount, willUnmount: a.allDayWillUnmount });
- }
- return me("td", { className: "fc-list-event-time" }, u);
- }
- return null;
-}
-function r1e(r) {
- return r.text;
-}
-class n1e extends Vs {
- constructor() {
- super(...arguments), this.computeDateVars = rr(a1e), this.eventStoreToSegs = rr(this._eventStoreToSegs), this.state = {
- timeHeaderId: cc(),
- eventHeaderId: cc(),
- dateHeaderIdRoot: cc()
- }, this.setRootEl = (e) => {
- e ? this.context.registerInteractiveComponent(this, {
- el: e
- }) : this.context.unregisterInteractiveComponent(this);
- };
- }
- render() {
- let { props: e, context: t } = this, { dayDates: n, dayRanges: i } = this.computeDateVars(e.dateProfile), a = this.eventStoreToSegs(e.eventStore, e.eventUiBases, i);
- return me(
- Hg,
- { elRef: this.setRootEl, elClasses: [
- "fc-list",
- t.theme.getClass("table"),
- t.options.stickyHeaderDates !== !1 ? "fc-list-sticky" : ""
- ], viewSpec: t.viewSpec },
- me(ZG, { liquid: !e.isHeightAuto, overflowX: e.isHeightAuto ? "visible" : "hidden", overflowY: e.isHeightAuto ? "visible" : "auto" }, a.length > 0 ? this.renderSegList(a, n) : this.renderEmptyMessage())
- );
- }
- renderEmptyMessage() {
- let { options: e, viewApi: t } = this.context, n = {
- text: e.noEventsText,
- view: t
- };
- return me(ma, { elTag: "div", elClasses: ["fc-list-empty"], renderProps: n, generatorName: "noEventsContent", customGenerator: e.noEventsContent, defaultGenerator: i1e, classNameGenerator: e.noEventsClassNames, didMount: e.noEventsDidMount, willUnmount: e.noEventsWillUnmount }, (i) => me(i, { elTag: "div", elClasses: ["fc-list-empty-cushion"] }));
- }
- renderSegList(e, t) {
- let { theme: n, options: i } = this.context, { timeHeaderId: a, eventHeaderId: o, dateHeaderIdRoot: s } = this.state, l = o1e(e);
- return me(vv, { unit: "day" }, (u, c) => {
- let h = [];
- for (let f = 0; f < l.length; f += 1) {
- let v = l[f];
- if (v) {
- let b = ym(t[f]), w = s + "-" + b;
- h.push(me(JCe, { key: b, cellId: w, dayDate: t[f], todayRange: c })), v = vM(v, i.eventOrder);
- for (let p of v)
- h.push(me(qCe, Object.assign({ key: b + ":" + p.eventRange.instance.instanceId, seg: p, isDragging: !1, isResizing: !1, isDateSelecting: !1, isSelected: !1, timeHeaderId: a, eventHeaderId: o, dateHeaderId: w }, ql(p, c, u))));
- }
- }
- return me(
- "table",
- { className: "fc-list-table " + n.getClass("table") },
- me(
- "thead",
- null,
- me(
- "tr",
- null,
- me("th", { scope: "col", id: a }, i.timeHint),
- me("th", { scope: "col", "aria-hidden": !0 }),
- me("th", { scope: "col", id: o }, i.eventHint)
- )
- ),
- me("tbody", null, h)
- );
- });
- }
- _eventStoreToSegs(e, t, n) {
- return this.eventRangesToSegs(tI(e, t, this.props.dateProfile.activeRange, this.context.options.nextDayThreshold).fg, n);
- }
- eventRangesToSegs(e, t) {
- let n = [];
- for (let i of e)
- n.push(...this.eventRangeToSegs(i, t));
- return n;
- }
- eventRangeToSegs(e, t) {
- let { dateEnv: n } = this.context, { nextDayThreshold: i } = this.context.options, a = e.range, o = e.def.allDay, s, l, u, c = [];
- for (s = 0; s < t.length; s += 1)
- if (l = xc(a, t[s]), l && (u = {
- component: this,
- eventRange: e,
- start: l.start,
- end: l.end,
- isStart: e.isStart && l.start.valueOf() === a.start.valueOf(),
- isEnd: e.isEnd && l.end.valueOf() === a.end.valueOf(),
- dayIndex: s
- }, c.push(u), !u.isEnd && !o && s + 1 < t.length && a.end < n.add(t[s + 1].start, i))) {
- u.end = a.end, u.isEnd = !0;
- break;
- }
- return c;
- }
-}
-function i1e(r) {
- return r.text;
-}
-function a1e(r) {
- let e = kn(r.renderRange.start), t = r.renderRange.end, n = [], i = [];
- for (; e < t; )
- n.push(e), i.push({
- start: e,
- end: Bi(e, 1)
- }), e = Bi(e, 1);
- return { dayDates: n, dayRanges: i };
-}
-function o1e(r) {
- let e = [], t, n;
- for (t = 0; t < r.length; t += 1)
- n = r[t], (e[n.dayIndex] || (e[n.dayIndex] = [])).push(n);
- return e;
-}
-const s1e = {
- listDayFormat: Xz,
- listDaySideFormat: Xz,
- noEventsClassNames: $e,
- noEventsContent: $e,
- noEventsDidMount: $e,
- noEventsWillUnmount: $e
- // noEventsText is defined in base options
-};
-function Xz(r) {
- return r === !1 ? null : jn(r);
-}
-var l1e = Gs({
- name: "@fullcalendar/list",
- optionRefiners: s1e,
- views: {
- list: {
- component: n1e,
- buttonTextKey: "list",
- listDayFormat: { month: "long", day: "numeric", year: "numeric" }
- // like "January 1, 2016"
- },
- listDay: {
- type: "list",
- duration: { days: 1 },
- listDayFormat: { weekday: "long" }
- // day-of-week is all we need. full date is probably in headerToolbar
- },
- listWeek: {
- type: "list",
- duration: { weeks: 1 },
- listDayFormat: { weekday: "long" },
- listDaySideFormat: { month: "long", day: "numeric", year: "numeric" }
- },
- listMonth: {
- type: "list",
- duration: { month: 1 },
- listDaySideFormat: { weekday: "long" }
- // day-of-week is nice-to-have
- },
- listYear: {
- type: "list",
- duration: { year: 1 },
- listDaySideFormat: { weekday: "long" }
- // day-of-week is nice-to-have
- }
- }
-}), u1e = {
- code: "af",
- week: {
- dow: 1,
- doy: 4
- // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
- },
- buttonText: {
- prev: "Vorige",
- next: "Volgende",
- today: "Vandag",
- year: "Jaar",
- month: "Maand",
- week: "Week",
- day: "Dag",
- list: "Agenda"
- },
- allDayText: "Heeldag",
- moreLinkText: "Addisionele",
- noEventsText: "Daar is geen gebeurtenisse nie"
-}, c1e = {
- code: "ar-dz",
- week: {
- dow: 0,
- doy: 4
- // The week that contains Jan 1st is the first week of the year.
- },
- direction: "rtl",
- buttonText: {
- prev: "السابق",
- next: "التالي",
- today: "اليوم",
- year: "سنة",
- month: "شهر",
- week: "أسبوع",
- day: "يوم",
- list: "أجندة"
- },
- weekText: "أسبوع",
- allDayText: "اليوم كله",
- moreLinkText: "أخرى",
- noEventsText: "أي أحداث لعرض"
-}, h1e = {
- code: "ar-kw",
- week: {
- dow: 0,
- doy: 12
- // The week that contains Jan 1st is the first week of the year.
- },
- direction: "rtl",
- buttonText: {
- prev: "السابق",
- next: "التالي",
- today: "اليوم",
- year: "سنة",
- month: "شهر",
- week: "أسبوع",
- day: "يوم",
- list: "أجندة"
- },
- weekText: "أسبوع",
- allDayText: "اليوم كله",
- moreLinkText: "أخرى",
- noEventsText: "أي أحداث لعرض"
-}, f1e = {
- code: "ar-ly",
- week: {
- dow: 6,
- doy: 12
- // The week that contains Jan 1st is the first week of the year.
- },
- direction: "rtl",
- buttonText: {
- prev: "السابق",
- next: "التالي",
- today: "اليوم",
- year: "سنة",
- month: "شهر",
- week: "أسبوع",
- day: "يوم",
- list: "أجندة"
- },
- weekText: "أسبوع",
- allDayText: "اليوم كله",
- moreLinkText: "أخرى",
- noEventsText: "أي أحداث لعرض"
-}, d1e = {
- code: "ar-ma",
- week: {
- dow: 6,
- doy: 12
- // The week that contains Jan 1st is the first week of the year.
- },
- direction: "rtl",
- buttonText: {
- prev: "السابق",
- next: "التالي",
- today: "اليوم",
- year: "سنة",
- month: "شهر",
- week: "أسبوع",
- day: "يوم",
- list: "أجندة"
- },
- weekText: "أسبوع",
- allDayText: "اليوم كله",
- moreLinkText: "أخرى",
- noEventsText: "أي أحداث لعرض"
-}, v1e = {
- code: "ar-sa",
- week: {
- dow: 0,
- doy: 6
- // The week that contains Jan 1st is the first week of the year.
- },
- direction: "rtl",
- buttonText: {
- prev: "السابق",
- next: "التالي",
- today: "اليوم",
- year: "سنة",
- month: "شهر",
- week: "أسبوع",
- day: "يوم",
- list: "أجندة"
- },
- weekText: "أسبوع",
- allDayText: "اليوم كله",
- moreLinkText: "أخرى",
- noEventsText: "أي أحداث لعرض"
-}, p1e = {
- code: "ar-tn",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- direction: "rtl",
- buttonText: {
- prev: "السابق",
- next: "التالي",
- today: "اليوم",
- year: "سنة",
- month: "شهر",
- week: "أسبوع",
- day: "يوم",
- list: "أجندة"
- },
- weekText: "أسبوع",
- allDayText: "اليوم كله",
- moreLinkText: "أخرى",
- noEventsText: "أي أحداث لعرض"
-}, g1e = {
- code: "ar",
- week: {
- dow: 6,
- doy: 12
- // The week that contains Jan 1st is the first week of the year.
- },
- direction: "rtl",
- buttonText: {
- prev: "السابق",
- next: "التالي",
- today: "اليوم",
- year: "سنة",
- month: "شهر",
- week: "أسبوع",
- day: "يوم",
- list: "أجندة"
- },
- weekText: "أسبوع",
- allDayText: "اليوم كله",
- moreLinkText: "أخرى",
- noEventsText: "أي أحداث لعرض"
-}, m1e = {
- code: "az",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Əvvəl",
- next: "Sonra",
- today: "Bu Gün",
- year: "Il",
- month: "Ay",
- week: "Həftə",
- day: "Gün",
- list: "Gündəm"
- },
- weekText: "Həftə",
- allDayText: "Bütün Gün",
- moreLinkText(r) {
- return "+ daha çox " + r;
- },
- noEventsText: "Göstərmək üçün hadisə yoxdur"
-}, y1e = {
- code: "bg",
- week: {
- dow: 1,
- doy: 7
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "назад",
- next: "напред",
- today: "днес",
- year: "година",
- month: "Месец",
- week: "Седмица",
- day: "Ден",
- list: "График"
- },
- allDayText: "Цял ден",
- moreLinkText(r) {
- return "+още " + r;
- },
- noEventsText: "Няма събития за показване"
-}, _1e = {
- code: "bn",
- week: {
- dow: 0,
- doy: 6
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "পেছনে",
- next: "সামনে",
- today: "আজ",
- year: "বছর",
- month: "মাস",
- week: "সপ্তাহ",
- day: "দিন",
- list: "তালিকা"
- },
- weekText: "সপ্তাহ",
- allDayText: "সারাদিন",
- moreLinkText(r) {
- return "+অন্যান্য " + r;
- },
- noEventsText: "কোনো ইভেন্ট নেই"
-}, b1e = {
- code: "bs",
- week: {
- dow: 1,
- doy: 7
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "Prošli",
- next: "Sljedeći",
- today: "Danas",
- year: "Godina",
- month: "Mjesec",
- week: "Sedmica",
- day: "Dan",
- list: "Raspored"
- },
- weekText: "Sed",
- allDayText: "Cijeli dan",
- moreLinkText(r) {
- return "+ još " + r;
- },
- noEventsText: "Nema događaja za prikazivanje"
-}, x1e = {
- code: "ca",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Anterior",
- next: "Següent",
- today: "Avui",
- year: "Curs",
- month: "Mes",
- week: "Setmana",
- day: "Dia",
- list: "Agenda"
- },
- weekText: "Set",
- allDayText: "Tot el dia",
- moreLinkText: "més",
- noEventsText: "No hi ha esdeveniments per mostrar"
-}, S1e = {
- code: "cs",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Dříve",
- next: "Později",
- today: "Nyní",
- year: "Rok",
- month: "Měsíc",
- week: "Týden",
- day: "Den",
- list: "Agenda"
- },
- weekText: "Týd",
- allDayText: "Celý den",
- moreLinkText(r) {
- return "+další: " + r;
- },
- noEventsText: "Žádné akce k zobrazení"
-}, w1e = {
- code: "cy",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Blaenorol",
- next: "Nesaf",
- today: "Heddiw",
- year: "Blwyddyn",
- month: "Mis",
- week: "Wythnos",
- day: "Dydd",
- list: "Rhestr"
- },
- weekText: "Wythnos",
- allDayText: "Trwy'r dydd",
- moreLinkText: "Mwy",
- noEventsText: "Dim digwyddiadau"
-}, C1e = {
- code: "da",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Forrige",
- next: "Næste",
- today: "I dag",
- year: "År",
- month: "Måned",
- week: "Uge",
- day: "Dag",
- list: "Agenda"
- },
- weekText: "Uge",
- allDayText: "Hele dagen",
- moreLinkText: "flere",
- noEventsText: "Ingen arrangementer at vise"
-};
-function VC(r) {
- return r === "Tag" || r === "Monat" ? "r" : r === "Jahr" ? "s" : "";
-}
-var T1e = {
- code: "de-at",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Zurück",
- next: "Vor",
- today: "Heute",
- year: "Jahr",
- month: "Monat",
- week: "Woche",
- day: "Tag",
- list: "Terminübersicht"
- },
- weekText: "KW",
- weekTextLong: "Woche",
- allDayText: "Ganztägig",
- moreLinkText(r) {
- return "+ weitere " + r;
- },
- noEventsText: "Keine Ereignisse anzuzeigen",
- buttonHints: {
- prev(r) {
- return `Vorherige${VC(r)} ${r}`;
- },
- next(r) {
- return `Nächste${VC(r)} ${r}`;
- },
- today(r) {
- return r === "Tag" ? "Heute" : `Diese${VC(r)} ${r}`;
- }
- },
- viewHint(r) {
- return r + (r === "Woche" ? "n" : r === "Monat" ? "s" : "es") + "ansicht";
- },
- navLinkHint: "Gehe zu $0",
- moreLinkHint(r) {
- return "Zeige " + (r === 1 ? "ein weiteres Ereignis" : r + " weitere Ereignisse");
- },
- closeHint: "Schließen",
- timeHint: "Uhrzeit",
- eventHint: "Ereignis"
-};
-function GC(r) {
- return r === "Tag" || r === "Monat" ? "r" : r === "Jahr" ? "s" : "";
-}
-var I1e = {
- code: "de",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Zurück",
- next: "Vor",
- today: "Heute",
- year: "Jahr",
- month: "Monat",
- week: "Woche",
- day: "Tag",
- list: "Terminübersicht"
- },
- weekText: "KW",
- weekTextLong: "Woche",
- allDayText: "Ganztägig",
- moreLinkText(r) {
- return "+ weitere " + r;
- },
- noEventsText: "Keine Ereignisse anzuzeigen",
- buttonHints: {
- prev(r) {
- return `Vorherige${GC(r)} ${r}`;
- },
- next(r) {
- return `Nächste${GC(r)} ${r}`;
- },
- today(r) {
- return r === "Tag" ? "Heute" : `Diese${GC(r)} ${r}`;
- }
- },
- viewHint(r) {
- return r + (r === "Woche" ? "n" : r === "Monat" ? "s" : "es") + "ansicht";
- },
- navLinkHint: "Gehe zu $0",
- moreLinkHint(r) {
- return "Zeige " + (r === 1 ? "ein weiteres Ereignis" : r + " weitere Ereignisse");
- },
- closeHint: "Schließen",
- timeHint: "Uhrzeit",
- eventHint: "Ereignis"
-}, A1e = {
- code: "el",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4st is the first week of the year.
- },
- buttonText: {
- prev: "Προηγούμενος",
- next: "Επόμενος",
- today: "Σήμερα",
- year: "Ετος",
- month: "Μήνας",
- week: "Εβδομάδα",
- day: "Ημέρα",
- list: "Ατζέντα"
- },
- weekText: "Εβδ",
- allDayText: "Ολοήμερο",
- moreLinkText: "περισσότερα",
- noEventsText: "Δεν υπάρχουν γεγονότα προς εμφάνιση"
-}, E1e = {
- code: "en-au",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonHints: {
- prev: "Previous $0",
- next: "Next $0",
- today: "This $0"
- },
- viewHint: "$0 view",
- navLinkHint: "Go to $0",
- moreLinkHint(r) {
- return `Show ${r} more event${r === 1 ? "" : "s"}`;
- }
-}, M1e = {
- code: "en-gb",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonHints: {
- prev: "Previous $0",
- next: "Next $0",
- today: "This $0"
- },
- viewHint: "$0 view",
- navLinkHint: "Go to $0",
- moreLinkHint(r) {
- return `Show ${r} more event${r === 1 ? "" : "s"}`;
- }
-}, D1e = {
- code: "en-nz",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonHints: {
- prev: "Previous $0",
- next: "Next $0",
- today: "This $0"
- },
- viewHint: "$0 view",
- navLinkHint: "Go to $0",
- moreLinkHint(r) {
- return `Show ${r} more event${r === 1 ? "" : "s"}`;
- }
-}, k1e = {
- code: "eo",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Antaŭa",
- next: "Sekva",
- today: "Hodiaŭ",
- year: "Jaro",
- month: "Monato",
- week: "Semajno",
- day: "Tago",
- list: "Tagordo"
- },
- weekText: "Sm",
- allDayText: "Tuta tago",
- moreLinkText: "pli",
- noEventsText: "Neniuj eventoj por montri"
-}, O1e = {
- code: "es",
- week: {
- dow: 0,
- doy: 6
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "Ant",
- next: "Sig",
- today: "Hoy",
- year: "Año",
- month: "Mes",
- week: "Semana",
- day: "Día",
- list: "Agenda"
- },
- weekText: "Sm",
- allDayText: "Todo el día",
- moreLinkText: "más",
- noEventsText: "No hay eventos para mostrar"
-}, L1e = {
- code: "es",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Ant",
- next: "Sig",
- today: "Hoy",
- year: "Año",
- month: "Mes",
- week: "Semana",
- day: "Día",
- list: "Agenda"
- },
- buttonHints: {
- prev: "$0 antes",
- next: "$0 siguiente",
- today(r) {
- return r === "Día" ? "Hoy" : (r === "Semana" ? "Esta" : "Este") + " " + r.toLocaleLowerCase();
- }
- },
- viewHint(r) {
- return "Vista " + (r === "Semana" ? "de la" : "del") + " " + r.toLocaleLowerCase();
- },
- weekText: "Sm",
- weekTextLong: "Semana",
- allDayText: "Todo el día",
- moreLinkText: "más",
- moreLinkHint(r) {
- return `Mostrar ${r} eventos más`;
- },
- noEventsText: "No hay eventos para mostrar",
- navLinkHint: "Ir al $0",
- closeHint: "Cerrar",
- timeHint: "La hora",
- eventHint: "Evento"
-}, P1e = {
- code: "et",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Eelnev",
- next: "Järgnev",
- today: "Täna",
- year: "Aasta",
- month: "Kuu",
- week: "Nädal",
- day: "Päev",
- list: "Päevakord"
- },
- weekText: "näd",
- allDayText: "Kogu päev",
- moreLinkText(r) {
- return "+ veel " + r;
- },
- noEventsText: "Kuvamiseks puuduvad sündmused"
-}, R1e = {
- code: "eu",
- week: {
- dow: 1,
- doy: 7
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "Aur",
- next: "Hur",
- today: "Gaur",
- year: "Urtea",
- month: "Hilabetea",
- week: "Astea",
- day: "Eguna",
- list: "Agenda"
- },
- weekText: "As",
- allDayText: "Egun osoa",
- moreLinkText: "gehiago",
- noEventsText: "Ez dago ekitaldirik erakusteko"
-}, N1e = {
- code: "fa",
- week: {
- dow: 6,
- doy: 12
- // The week that contains Jan 1st is the first week of the year.
- },
- direction: "rtl",
- buttonText: {
- prev: "قبلی",
- next: "بعدی",
- today: "امروز",
- year: "سال",
- month: "ماه",
- week: "هفته",
- day: "روز",
- list: "برنامه"
- },
- weekText: "هف",
- allDayText: "تمام روز",
- moreLinkText(r) {
- return "بیش از " + r;
- },
- noEventsText: "هیچ رویدادی به نمایش"
-}, z1e = {
- code: "fi",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Edellinen",
- next: "Seuraava",
- today: "Tänään",
- year: "Vuosi",
- month: "Kuukausi",
- week: "Viikko",
- day: "Päivä",
- list: "Tapahtumat"
- },
- weekText: "Vk",
- allDayText: "Koko päivä",
- moreLinkText: "lisää",
- noEventsText: "Ei näytettäviä tapahtumia"
-}, B1e = {
- code: "fr",
- buttonText: {
- prev: "Précédent",
- next: "Suivant",
- today: "Aujourd'hui",
- year: "Année",
- month: "Mois",
- week: "Semaine",
- day: "Jour",
- list: "Mon planning"
- },
- weekText: "Sem.",
- allDayText: "Toute la journée",
- moreLinkText: "en plus",
- noEventsText: "Aucun évènement à afficher"
-}, j1e = {
- code: "fr-ch",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Précédent",
- next: "Suivant",
- today: "Courant",
- year: "Année",
- month: "Mois",
- week: "Semaine",
- day: "Jour",
- list: "Mon planning"
- },
- weekText: "Sm",
- allDayText: "Toute la journée",
- moreLinkText: "en plus",
- noEventsText: "Aucun évènement à afficher"
-}, F1e = {
- code: "fr",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Précédent",
- next: "Suivant",
- today: "Aujourd'hui",
- year: "Année",
- month: "Mois",
- week: "Semaine",
- day: "Jour",
- list: "Planning"
- },
- weekText: "Sem.",
- weekTextLong: "Semaine",
- allDayText: "Toute la journée",
- moreLinkText: "en plus",
- noEventsText: "Aucun évènement à afficher"
-}, $1e = {
- code: "gl",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Ant",
- next: "Seg",
- today: "Hoxe",
- year: "Ano",
- month: "Mes",
- week: "Semana",
- day: "Día",
- list: "Axenda"
- },
- buttonHints: {
- prev: "$0 antes",
- next: "$0 seguinte",
- today(r) {
- return r === "Día" ? "Hoxe" : (r === "Semana" ? "Esta" : "Este") + " " + r.toLocaleLowerCase();
- }
- },
- viewHint(r) {
- return "Vista " + (r === "Semana" ? "da" : "do") + " " + r.toLocaleLowerCase();
- },
- weekText: "Sm",
- weekTextLong: "Semana",
- allDayText: "Todo o día",
- moreLinkText: "máis",
- moreLinkHint(r) {
- return `Amosar ${r} eventos máis`;
- },
- noEventsText: "Non hai eventos para amosar",
- navLinkHint: "Ir ao $0",
- closeHint: "Pechar",
- timeHint: "A hora",
- eventHint: "Evento"
-}, H1e = {
- code: "he",
- direction: "rtl",
- buttonText: {
- prev: "הקודם",
- next: "הבא",
- today: "היום",
- year: "שנה",
- month: "חודש",
- week: "שבוע",
- day: "יום",
- list: "סדר יום"
- },
- allDayText: "כל היום",
- moreLinkText: "נוספים",
- noEventsText: "אין אירועים להצגה",
- weekText: "שבוע"
-}, V1e = {
- code: "hi",
- week: {
- dow: 0,
- doy: 6
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "पिछला",
- next: "अगला",
- today: "आज",
- year: "वर्ष",
- month: "महीना",
- week: "सप्ताह",
- day: "दिन",
- list: "कार्यसूची"
- },
- weekText: "हफ्ता",
- allDayText: "सभी दिन",
- moreLinkText(r) {
- return "+अधिक " + r;
- },
- noEventsText: "कोई घटनाओं को प्रदर्शित करने के लिए"
-}, G1e = {
- code: "hr",
- week: {
- dow: 1,
- doy: 7
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "Prijašnji",
- next: "Sljedeći",
- today: "Danas",
- year: "Godina",
- month: "Mjesec",
- week: "Tjedan",
- day: "Dan",
- list: "Raspored"
- },
- weekText: "Tje",
- allDayText: "Cijeli dan",
- moreLinkText(r) {
- return "+ još " + r;
- },
- noEventsText: "Nema događaja za prikaz"
-}, U1e = {
- code: "hu",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "vissza",
- next: "előre",
- today: "ma",
- year: "Év",
- month: "Hónap",
- week: "Hét",
- day: "Nap",
- list: "Lista"
- },
- weekText: "Hét",
- allDayText: "Egész nap",
- moreLinkText: "további",
- noEventsText: "Nincs megjeleníthető esemény"
-}, W1e = {
- code: "hy-am",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Նախորդ",
- next: "Հաջորդ",
- today: "Այսօր",
- year: "Տարի",
- month: "Ամիս",
- week: "Շաբաթ",
- day: "Օր",
- list: "Օրվա ցուցակ"
- },
- weekText: "Շաբ",
- allDayText: "Ամբողջ օր",
- moreLinkText(r) {
- return "+ ևս " + r;
- },
- noEventsText: "Բացակայում է իրադարձությունը ցուցադրելու"
-}, Y1e = {
- code: "id",
- week: {
- dow: 1,
- doy: 7
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "mundur",
- next: "maju",
- today: "hari ini",
- year: "Tahun",
- month: "Bulan",
- week: "Minggu",
- day: "Hari",
- list: "Agenda"
- },
- weekText: "Mg",
- allDayText: "Sehari penuh",
- moreLinkText: "lebih",
- noEventsText: "Tidak ada acara untuk ditampilkan"
-}, X1e = {
- code: "is",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Fyrri",
- next: "Næsti",
- today: "Í dag",
- year: "Ár",
- month: "Mánuður",
- week: "Vika",
- day: "Dagur",
- list: "Dagskrá"
- },
- weekText: "Vika",
- allDayText: "Allan daginn",
- moreLinkText: "meira",
- noEventsText: "Engir viðburðir til að sýna"
-}, Z1e = {
- code: "it",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Prec",
- next: "Succ",
- today: "Oggi",
- year: "Anno",
- month: "Mese",
- week: "Settimana",
- day: "Giorno",
- list: "Agenda"
- },
- weekText: "Sm",
- allDayText: "Tutto il giorno",
- moreLinkText(r) {
- return "+altri " + r;
- },
- noEventsText: "Non ci sono eventi da visualizzare"
-}, J1e = {
- code: "ja",
- buttonText: {
- prev: "前",
- next: "次",
- today: "今日",
- year: "年",
- month: "月",
- week: "週",
- day: "日",
- list: "予定リスト"
- },
- weekText: "週",
- allDayText: "終日",
- moreLinkText(r) {
- return "他 " + r + " 件";
- },
- noEventsText: "表示する予定はありません"
-}, K1e = {
- code: "ka",
- week: {
- dow: 1,
- doy: 7
- },
- buttonText: {
- prev: "წინა",
- next: "შემდეგი",
- today: "დღეს",
- year: "წელიწადი",
- month: "თვე",
- week: "კვირა",
- day: "დღე",
- list: "დღის წესრიგი"
- },
- weekText: "კვ",
- allDayText: "მთელი დღე",
- moreLinkText(r) {
- return "+ კიდევ " + r;
- },
- noEventsText: "ღონისძიებები არ არის"
-}, Q1e = {
- code: "kk",
- week: {
- dow: 1,
- doy: 7
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "Алдыңғы",
- next: "Келесі",
- today: "Бүгін",
- year: "Жыл",
- month: "Ай",
- week: "Апта",
- day: "Күн",
- list: "Күн тәртібі"
- },
- weekText: "Не",
- allDayText: "Күні бойы",
- moreLinkText(r) {
- return "+ тағы " + r;
- },
- noEventsText: "Көрсету үшін оқиғалар жоқ"
-}, q1e = {
- code: "km",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "មុន",
- next: "បន្ទាប់",
- today: "ថ្ងៃនេះ",
- year: "ឆ្នាំ",
- month: "ខែ",
- week: "សប្តាហ៍",
- day: "ថ្ងៃ",
- list: "បញ្ជី"
- },
- weekText: "សប្តាហ៍",
- allDayText: "ពេញមួយថ្ងៃ",
- moreLinkText: "ច្រើនទៀត",
- noEventsText: "គ្មានព្រឹត្តិការណ៍ត្រូវបង្ហាញ"
-}, eTe = {
- code: "ko",
- buttonText: {
- prev: "이전달",
- next: "다음달",
- today: "오늘",
- year: "년도",
- month: "월",
- week: "주",
- day: "일",
- list: "일정목록"
- },
- weekText: "주",
- allDayText: "종일",
- moreLinkText: "개",
- noEventsText: "일정이 없습니다"
-}, tTe = {
- code: "ku",
- week: {
- dow: 6,
- doy: 12
- // The week that contains Jan 1st is the first week of the year.
- },
- direction: "rtl",
- buttonText: {
- prev: "پێشتر",
- next: "دواتر",
- today: "ئەمڕو",
- year: "ساڵ",
- month: "مانگ",
- week: "هەفتە",
- day: "ڕۆژ",
- list: "بەرنامە"
- },
- weekText: "هەفتە",
- allDayText: "هەموو ڕۆژەکە",
- moreLinkText: "زیاتر",
- noEventsText: "هیچ ڕووداوێك نیە"
-}, rTe = {
- code: "lb",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Zréck",
- next: "Weider",
- today: "Haut",
- year: "Joer",
- month: "Mount",
- week: "Woch",
- day: "Dag",
- list: "Terminiwwersiicht"
- },
- weekText: "W",
- allDayText: "Ganzen Dag",
- moreLinkText: "méi",
- noEventsText: "Nee Evenementer ze affichéieren"
-}, nTe = {
- code: "lt",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Atgal",
- next: "Pirmyn",
- today: "Šiandien",
- year: "Metai",
- month: "Mėnuo",
- week: "Savaitė",
- day: "Diena",
- list: "Darbotvarkė"
- },
- weekText: "SAV",
- allDayText: "Visą dieną",
- moreLinkText: "daugiau",
- noEventsText: "Nėra įvykių rodyti"
-}, iTe = {
- code: "lv",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Iepr.",
- next: "Nāk.",
- today: "Šodien",
- year: "Gads",
- month: "Mēnesis",
- week: "Nedēļa",
- day: "Diena",
- list: "Dienas kārtība"
- },
- weekText: "Ned.",
- allDayText: "Visu dienu",
- moreLinkText(r) {
- return "+vēl " + r;
- },
- noEventsText: "Nav notikumu"
-}, aTe = {
- code: "mk",
- buttonText: {
- prev: "претходно",
- next: "следно",
- today: "Денес",
- year: "година",
- month: "Месец",
- week: "Недела",
- day: "Ден",
- list: "График"
- },
- weekText: "Сед",
- allDayText: "Цел ден",
- moreLinkText(r) {
- return "+повеќе " + r;
- },
- noEventsText: "Нема настани за прикажување"
-}, oTe = {
- code: "ms",
- week: {
- dow: 1,
- doy: 7
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "Sebelum",
- next: "Selepas",
- today: "hari ini",
- year: "Tahun",
- month: "Bulan",
- week: "Minggu",
- day: "Hari",
- list: "Agenda"
- },
- weekText: "Mg",
- allDayText: "Sepanjang hari",
- moreLinkText(r) {
- return "masih ada " + r + " acara";
- },
- noEventsText: "Tiada peristiwa untuk dipaparkan"
-}, sTe = {
- code: "nb",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Forrige",
- next: "Neste",
- today: "I dag",
- year: "År",
- month: "Måned",
- week: "Uke",
- day: "Dag",
- list: "Agenda"
- },
- weekText: "Uke",
- weekTextLong: "Uke",
- allDayText: "Hele dagen",
- moreLinkText: "til",
- noEventsText: "Ingen hendelser å vise",
- buttonHints: {
- prev: "Forrige $0",
- next: "Neste $0",
- today: "Nåværende $0"
- },
- viewHint: "$0 visning",
- navLinkHint: "Gå til $0",
- moreLinkHint(r) {
- return `Vis ${r} flere hendelse${r === 1 ? "" : "r"}`;
- }
-}, lTe = {
- code: "ne",
- week: {
- dow: 7,
- doy: 1
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "अघिल्लो",
- next: "अर्को",
- today: "आज",
- year: "वर्ष",
- month: "महिना",
- week: "हप्ता",
- day: "दिन",
- list: "सूची"
- },
- weekText: "हप्ता",
- allDayText: "दिनभरि",
- moreLinkText: "थप लिंक",
- noEventsText: "देखाउनको लागि कुनै घटनाहरू छैनन्"
-}, uTe = {
- code: "nl",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Vorige",
- next: "Volgende",
- today: "Vandaag",
- year: "Jaar",
- month: "Maand",
- week: "Week",
- day: "Dag",
- list: "Agenda"
- },
- allDayText: "Hele dag",
- moreLinkText: "extra",
- noEventsText: "Geen evenementen om te laten zien"
-}, cTe = {
- code: "nn",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Førre",
- next: "Neste",
- today: "I dag",
- year: "År",
- month: "Månad",
- week: "Veke",
- day: "Dag",
- list: "Agenda"
- },
- weekText: "Veke",
- allDayText: "Heile dagen",
- moreLinkText: "til",
- noEventsText: "Ingen hendelser å vise"
-}, hTe = {
- code: "pl",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Poprzedni",
- next: "Następny",
- today: "Dziś",
- year: "Rok",
- month: "Miesiąc",
- week: "Tydzień",
- day: "Dzień",
- list: "Plan dnia"
- },
- weekText: "Tydz",
- allDayText: "Cały dzień",
- moreLinkText: "więcej",
- noEventsText: "Brak wydarzeń do wyświetlenia"
-}, fTe = {
- code: "pt-br",
- buttonText: {
- prev: "Anterior",
- next: "Próximo",
- prevYear: "Ano anterior",
- nextYear: "Próximo ano",
- year: "Ano",
- today: "Hoje",
- month: "Mês",
- week: "Semana",
- day: "Dia",
- list: "Lista"
- },
- buttonHints: {
- prev: "$0 Anterior",
- next: "Próximo $0",
- today(r) {
- return r === "Dia" ? "Hoje" : (r === "Semana" ? "Esta" : "Este") + " " + r.toLocaleLowerCase();
- }
- },
- viewHint(r) {
- return "Visualizar " + (r === "Semana" ? "a" : "o") + " " + r.toLocaleLowerCase();
- },
- weekText: "Sm",
- weekTextLong: "Semana",
- allDayText: "dia inteiro",
- moreLinkText(r) {
- return "mais +" + r;
- },
- moreLinkHint(r) {
- return `Mostrar mais ${r} eventos`;
- },
- noEventsText: "Não há eventos para mostrar",
- navLinkHint: "Ir para $0",
- closeHint: "Fechar",
- timeHint: "A hora",
- eventHint: "Evento"
-}, dTe = {
- code: "pt",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Anterior",
- next: "Seguinte",
- today: "Hoje",
- year: "Ano",
- month: "Mês",
- week: "Semana",
- day: "Dia",
- list: "Agenda"
- },
- weekText: "Sem",
- allDayText: "Todo o dia",
- moreLinkText: "mais",
- noEventsText: "Não há eventos para mostrar"
-}, vTe = {
- code: "ro",
- week: {
- dow: 1,
- doy: 7
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "precedentă",
- next: "următoare",
- today: "Azi",
- year: "An",
- month: "Lună",
- week: "Săptămână",
- day: "Zi",
- list: "Agendă"
- },
- weekText: "Săpt",
- allDayText: "Toată ziua",
- moreLinkText(r) {
- return "+alte " + r;
- },
- noEventsText: "Nu există evenimente de afișat"
-}, pTe = {
- code: "ru",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Пред",
- next: "След",
- today: "Сегодня",
- year: "Год",
- month: "Месяц",
- week: "Неделя",
- day: "День",
- list: "Повестка дня"
- },
- weekText: "Нед",
- allDayText: "Весь день",
- moreLinkText(r) {
- return "+ ещё " + r;
- },
- noEventsText: "Нет событий для отображения"
-}, gTe = {
- code: "si-lk",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "පෙර",
- next: "පසු",
- today: "අද",
- year: "අවුරුදු",
- month: "මාසය",
- week: "සතිය",
- day: "දවස",
- list: "ලැයිස්තුව"
- },
- weekText: "සති",
- allDayText: "සියලු",
- moreLinkText: "තවත්",
- noEventsText: "මුකුත් නැත"
-}, mTe = {
- code: "sk",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Predchádzajúci",
- next: "Nasledujúci",
- today: "Dnes",
- year: "Rok",
- month: "Mesiac",
- week: "Týždeň",
- day: "Deň",
- list: "Rozvrh"
- },
- weekText: "Ty",
- allDayText: "Celý deň",
- moreLinkText(r) {
- return "+ďalšie: " + r;
- },
- noEventsText: "Žiadne akcie na zobrazenie"
-}, yTe = {
- code: "sl",
- week: {
- dow: 1,
- doy: 7
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "Prejšnji",
- next: "Naslednji",
- today: "Trenutni",
- year: "Leto",
- month: "Mesec",
- week: "Teden",
- day: "Dan",
- list: "Dnevni red"
- },
- weekText: "Teden",
- allDayText: "Ves dan",
- moreLinkText: "več",
- noEventsText: "Ni dogodkov za prikaz"
-}, _Te = {
- code: "sm",
- buttonText: {
- prev: "Talu ai",
- next: "Mulimuli atu",
- today: "Aso nei",
- year: "Tausaga",
- month: "Masina",
- week: "Vaiaso",
- day: "Aso",
- list: "Faasologa"
- },
- weekText: "Vaiaso",
- allDayText: "Aso atoa",
- moreLinkText: "sili atu",
- noEventsText: "Leai ni mea na tutupu"
-}, bTe = {
- code: "sq",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "mbrapa",
- next: "Përpara",
- today: "Sot",
- year: "Viti",
- month: "Muaj",
- week: "Javë",
- day: "Ditë",
- list: "Listë"
- },
- weekText: "Ja",
- allDayText: "Gjithë ditën",
- moreLinkText(r) {
- return "+më tepër " + r;
- },
- noEventsText: "Nuk ka evente për të shfaqur"
-}, xTe = {
- code: "sr-cyrl",
- week: {
- dow: 1,
- doy: 7
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "Претходна",
- next: "следећи",
- today: "Данас",
- year: "Година",
- month: "Месец",
- week: "Недеља",
- day: "Дан",
- list: "Планер"
- },
- weekText: "Сед",
- allDayText: "Цео дан",
- moreLinkText(r) {
- return "+ још " + r;
- },
- noEventsText: "Нема догађаја за приказ"
-}, STe = {
- code: "sr",
- week: {
- dow: 1,
- doy: 7
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "Prethodna",
- next: "Sledeći",
- today: "Danas",
- year: "Godina",
- month: "Mеsеc",
- week: "Nеdеlja",
- day: "Dan",
- list: "Planеr"
- },
- weekText: "Sed",
- allDayText: "Cеo dan",
- moreLinkText(r) {
- return "+ još " + r;
- },
- noEventsText: "Nеma događaja za prikaz"
-}, wTe = {
- code: "sv",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Förra",
- next: "Nästa",
- today: "Idag",
- year: "År",
- month: "Månad",
- week: "Vecka",
- day: "Dag",
- list: "Program"
- },
- buttonHints: {
- prev(r) {
- return `Föregående ${r.toLocaleLowerCase()}`;
- },
- next(r) {
- return `Nästa ${r.toLocaleLowerCase()}`;
- },
- today(r) {
- return (r === "Program" ? "Detta" : "Denna") + " " + r.toLocaleLowerCase();
- }
- },
- viewHint: "$0 vy",
- navLinkHint: "Gå till $0",
- moreLinkHint(r) {
- return `Visa ytterligare ${r} händelse${r === 1 ? "" : "r"}`;
- },
- weekText: "v.",
- weekTextLong: "Vecka",
- allDayText: "Heldag",
- moreLinkText: "till",
- noEventsText: "Inga händelser att visa",
- closeHint: "Stäng",
- timeHint: "Klockan",
- eventHint: "Händelse"
-}, CTe = {
- code: "ta-in",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "முந்தைய",
- next: "அடுத்தது",
- today: "இன்று",
- year: "ஆண்டு",
- month: "மாதம்",
- week: "வாரம்",
- day: "நாள்",
- list: "தினசரி அட்டவணை"
- },
- weekText: "வாரம்",
- allDayText: "நாள் முழுவதும்",
- moreLinkText(r) {
- return "+ மேலும் " + r;
- },
- noEventsText: "காண்பிக்க நிகழ்வுகள் இல்லை"
-}, TTe = {
- code: "th",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "ก่อนหน้า",
- next: "ถัดไป",
- prevYear: "ปีก่อนหน้า",
- nextYear: "ปีถัดไป",
- year: "ปี",
- today: "วันนี้",
- month: "เดือน",
- week: "สัปดาห์",
- day: "วัน",
- list: "กำหนดการ"
- },
- weekText: "สัปดาห์",
- allDayText: "ตลอดวัน",
- moreLinkText: "เพิ่มเติม",
- noEventsText: "ไม่มีกิจกรรมที่จะแสดง"
-}, ITe = {
- code: "tr",
- week: {
- dow: 1,
- doy: 7
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "geri",
- next: "ileri",
- today: "bugün",
- year: "Yıl",
- month: "Ay",
- week: "Hafta",
- day: "Gün",
- list: "Ajanda"
- },
- weekText: "Hf",
- allDayText: "Tüm gün",
- moreLinkText: "daha fazla",
- noEventsText: "Gösterilecek etkinlik yok"
-}, ATe = {
- code: "ug",
- buttonText: {
- prev: "ئالدىنقى",
- next: "كېيىنكى",
- today: "بۈگۈن",
- year: "يىل",
- month: "ئاي",
- week: "ھەپتە",
- day: "كۈن",
- list: "كۈنتەرتىپ"
- },
- allDayText: "پۈتۈن كۈن"
-}, ETe = {
- code: "uk",
- week: {
- dow: 1,
- doy: 7
- // The week that contains Jan 1st is the first week of the year.
- },
- buttonText: {
- prev: "Попередній",
- next: "далі",
- today: "Сьогодні",
- year: "рік",
- month: "Місяць",
- week: "Тиждень",
- day: "День",
- list: "Порядок денний"
- },
- weekText: "Тиж",
- allDayText: "Увесь день",
- moreLinkText(r) {
- return "+ще " + r + "...";
- },
- noEventsText: "Немає подій для відображення"
-}, MTe = {
- code: "uz-cy",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Олин",
- next: "Кейин",
- today: "Бугун",
- month: "Ой",
- week: "Ҳафта",
- day: "Кун",
- list: "Кун тартиби"
- },
- weekText: "Ҳафта",
- allDayText: "Кун бўйича",
- moreLinkText(r) {
- return "+ яна " + r;
- },
- noEventsText: "Кўрсатиш учун воқеалар йўқ"
-}, DTe = {
- code: "uz",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Oldingi",
- next: "Keyingi",
- today: "Bugun",
- year: "Yil",
- month: "Oy",
- week: "Xafta",
- day: "Kun",
- list: "Kun tartibi"
- },
- allDayText: "Kun bo'yi",
- moreLinkText(r) {
- return "+ yana " + r;
- },
- noEventsText: "Ko'rsatish uchun voqealar yo'q"
-}, kTe = {
- code: "vi",
- week: {
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "Trước",
- next: "Tiếp",
- today: "Hôm nay",
- year: "Năm",
- month: "Tháng",
- week: "Tuần",
- day: "Ngày",
- list: "Lịch biểu"
- },
- weekText: "Tu",
- allDayText: "Cả ngày",
- moreLinkText(r) {
- return "+ thêm " + r;
- },
- noEventsText: "Không có sự kiện để hiển thị"
-}, OTe = {
- code: "zh-cn",
- week: {
- // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
- dow: 1,
- doy: 4
- // The week that contains Jan 4th is the first week of the year.
- },
- buttonText: {
- prev: "上月",
- next: "下月",
- today: "今天",
- year: "年",
- month: "月",
- week: "周",
- day: "日",
- list: "日程"
- },
- weekText: "周",
- allDayText: "全天",
- moreLinkText(r) {
- return "另外 " + r + " 个";
- },
- noEventsText: "没有事件显示"
-}, LTe = {
- code: "zh-tw",
- buttonText: {
- prev: "上個",
- next: "下個",
- today: "今天",
- year: "年",
- month: "月",
- week: "週",
- day: "天",
- list: "活動列表"
- },
- weekText: "週",
- allDayText: "整天",
- moreLinkText: "顯示更多",
- noEventsText: "沒有任何活動"
-}, PTe = [
- u1e,
- c1e,
- h1e,
- f1e,
- d1e,
- v1e,
- p1e,
- g1e,
- m1e,
- y1e,
- _1e,
- b1e,
- x1e,
- S1e,
- w1e,
- C1e,
- T1e,
- I1e,
- A1e,
- E1e,
- M1e,
- D1e,
- k1e,
- O1e,
- L1e,
- P1e,
- R1e,
- N1e,
- z1e,
- B1e,
- j1e,
- F1e,
- $1e,
- H1e,
- V1e,
- G1e,
- U1e,
- W1e,
- Y1e,
- X1e,
- Z1e,
- J1e,
- K1e,
- Q1e,
- q1e,
- eTe,
- tTe,
- rTe,
- nTe,
- iTe,
- aTe,
- oTe,
- sTe,
- lTe,
- uTe,
- cTe,
- hTe,
- fTe,
- dTe,
- vTe,
- pTe,
- gTe,
- mTe,
- yTe,
- _Te,
- bTe,
- xTe,
- STe,
- wTe,
- CTe,
- TTe,
- ITe,
- ATe,
- ETe,
- MTe,
- DTe,
- kTe,
- OTe,
- LTe
-];
-function UC(r, e, t, n) {
- let i;
- return e === "local" ? i = $moment(r) : e === "UTC" ? i = $moment.utc(r) : $moment.tz ? i = $moment.tz(r, e) : (i = $moment.utc(r), t != null && i.utcOffset(t)), i.locale(n), i;
-}
-function RTe(r, e) {
- let t = OU(r);
- if (e.end) {
- let n = UC(e.start.array, e.timeZone, e.start.timeZoneOffset, e.localeCodes[0]), i = UC(e.end.array, e.timeZone, e.end.timeZoneOffset, e.localeCodes[0]);
- return uI(t, Zz(n), Zz(i), e.defaultSeparator);
- }
- return UC(e.date.array, e.timeZone, e.date.timeZoneOffset, e.localeCodes[0]).format(t.whole);
-}
-function Zz(r) {
- return (e) => e ? r.format(e) : "";
-}
-function OU(r) {
- let e = r.match(/^(.*?)\{(.*)\}(.*)$/);
- if (e) {
- let t = OU(e[2]);
- return {
- head: e[1],
- middle: t,
- tail: e[3],
- whole: e[1] + t.whole + e[3]
- };
- }
- return {
- head: null,
- middle: null,
- tail: null,
- whole: r
- };
-}
-function uI(r, e, t, n) {
- if (r.middle) {
- let o = e(r.head), s = uI(r.middle, e, t, n), l = e(r.tail), u = t(r.head), c = uI(r.middle, e, t, n), h = t(r.tail);
- if (o === u && l === h)
- return o + (s === c ? s : s + n + c) + l;
- }
- let i = e(r.whole), a = t(r.whole);
- return i === a ? i : i + n + a;
-}
-var NTe = Gs({
- name: "@fullcalendar/moment",
- cmdFormatter: RTe
-});
-const zTe = $styled_components.div`
- position: relative;
- height: 100%;
- overflow: hidden;
- color: ${(r) => r.$style.text};
- .fc-theme-standard .fc-list-day-cushion,
- .fc .fc-timegrid-col.fc-day-today,
- .fc .fc-daygrid-day.fc-day-today {
- background-color: ${(r) => r.$style.background};
- }
- .fc .fc-highlight {
- background-color: ${(r) => r.$style.selectBackground};
- }
- a {
- color: ${(r) => r.$style.text};
- }
-
- .fc .fc-timegrid-slot {
- height: 28px;
- }
-
- // day
- .fc-timeGridDay-view {
- .fc-col-header-cell {
- font-size: 20px;
- font-weight: 500;
- a {
- line-height: 67px;
- }
- }
- }
-
- // list
- .fc-list {
- .fc-list-table {
- table-layout: fixed;
- th {
- background-color: ${(r) => r.$style.background};
- }
- }
- .fc-list-event-graphic {
- display: none;
- }
- .fc-list-day-cushion {
- font-size: 16px;
- font-weight: 500;
- line-height: 32px;
- padding: 0 24px;
- }
- .fc-list-day-side-text {
- float: left;
- margin-left: 24px;
- }
- .fc-list-day {
- th {
- padding: 8px 0 3px 0;
- }
- > th {
- border: none;
- }
- &:not(:nth-of-type(1)) .fc-list-day-cushion {
- border-top: 1px solid
- ${(r) => $lowcoder_sdk.toHex(r.$style.border) === "#D7D9E0" ? "#E1E3EB" : $lowcoder_sdk.lightenColor(r.$style.border, 0.03)};
- }
- }
- .fc-event + .fc-list-day th {
- padding-top: 11px;
- .fc-list-day-cushion {
- padding-top: 8px;
- }
- }
- .fc-event {
- .fc-list-event-time,
- .fc-list-event-title {
- border: none;
- }
- &:hover .event {
- box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.15);
- border-width: 1px;
- margin: 2px 5px;
- height: 20px;
- .event-title {
- margin-left: 15px;
- }
- &::before {
- left: 2px;
- }
- }
- }
- .fc-event {
- font-size: 13px;
- line-height: 20px;
- display: flex;
- align-items: center;
- &.no-time {
- padding-left: 19px;
- }
- }
- .fc-list-event-time {
- padding: 0px 16px 0 24px;
- vertical-align: middle;
- min-width: 87px;
- width: 87px;
- box-sizing: content-box;
- }
- .fc-list-event-title {
- min-width: 266px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- padding: 0 14px 0 0;
- cursor: pointer;
- .event {
- font-size: 13px;
- height: 18px;
- line-height: 18px;
- margin: 3px 5px;
- border-width: 0;
- align-items: center;
- &::before {
- height: 14px;
- top: 2px;
- left: 3px;
- }
- .event-time {
- display: none;
- }
- .event-title {
- margin-left: 16px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- .event-remove {
- background-color: inherit;
- }
- }
- }
- .fc-event:hover td {
- background-color: inherit;
- }
- }
-
- // month
- .fc-dayGridMonth-view {
- .fc-daygrid-day-frame {
- min-height: 95px;
- height: 100%;
- }
- .fc-col-header-cell {
- font-size: 14px;
- font-weight: 400;
- text-align: left;
- padding-left: 16px;
- a {
- padding: 0;
- line-height: 39px;
- }
- }
- .fc-daygrid-day-number {
- font-size: 14px;
- line-height: 22px;
- font-weight: 500;
- padding: 0 6px;
- border-radius: 11px;
- margin: 12px 0 0 10px;
- }
- .fc-daygrid-day-top {
- flex-direction: inherit;
- }
- .fc-day-today .fc-daygrid-day-number {
- background-color: ${(r) => r.theme.primary};
- color: ${(r) => $lowcoder_sdk.contrastText(r.theme.primary || "", r.theme.textDark, r.theme.textLight)};
- }
- .fc-daygrid-day-events {
- padding: 1px 0 5px 0;
- min-height: unset;
- .fc-event {
- margin: 2px 4px 2px 12px;
- padding: 0;
- &:hover .event {
- padding-right: 20px;
- }
- .event {
- font-size: 13px;
- line-height: 18px;
- padding-right: 0;
- .event-time {
- display: none;
- }
- .event-title {
- margin-left: 15px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- &::before {
- height: 14px;
- }
- }
- }
- .fc-daygrid-day-bottom {
- padding: 2px 2px 0 10px;
- }
- }
- .fc-day-other {
- color: ${(r) => r.$style.text};
- .fc-daygrid-day-top,
- .fc-daygrid-day-events {
- opacity: 0.35;
- }
- .event::before {
- background-color: ${(r) => r.$style.text};
- }
- }
- }
- // month drag event
- .fc > .fc-event {
- visibility: hidden;
- }
-
- // more link
- .fc-view-harness-active .fc-more-popover {
- border-radius: 4px;
- box-shadow: 0 0px 10px 4px rgba(0, 0, 0, 0.25);
- overflow: hidden;
- left: ${(r) => `min(${r.left}px, calc(100% - 210px)) !important`};
- .fc-popover-body {
- padding: 4px 0;
- min-width: 200px;
- width: 200px;
- .fc-daygrid-event-harness {
- margin: 4px;
- .fc-event {
- margin: 0;
- .event {
- height: fit-content;
- .event-title {
- white-space: pre-wrap;
- }
- .event-time {
- margin-top: 0;
- }
- }
- }
- }
- }
- .fc-popover-header,
- .fc-popover-body {
- background-color: ${(r) => r.$style.background};
- }
- .fc-popover-header .fc-popover-close {
- color: #8b8fa3;
- &:hover {
- color: #222;
- }
- }
- }
-
- .fc-direction-ltr .fc-timegrid-more-link {
- border: 1px solid ${(r) => r.$style.border};
- border-radius: 4px;
- box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.15);
- font-size: 13px;
- display: inline-block;
- font-weight: 500;
- background-color: ${(r) => $lowcoder_sdk.lightenColor(r.$style.background, 0.1)};
- }
-
- .fc-dayGridMonth-view .fc-more-link {
- margin: 0 2px 2px 2px !important;
- }
- .fc-timeGridWeek-view .fc-more-link,
- .fc-timeGridDay-view .fc-more-link {
- margin: 2px !important;
- }
- .fc-daygrid-day-events {
- margin: 0 !important;
- padding: 2px 0;
- .fc-event {
- margin: 2px 4px;
- }
- .fc-daygrid-day-bottom {
- line-height: 16px;
- padding: 0;
- .fc-more-link {
- width: calc(100% - 4px);
- border: 1px solid ${(r) => r.$style.border};
- border-radius: 4px;
- box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.15);
- font-size: 13px;
- display: inline-block;
- height: 20px;
- padding-left: 15px;
- font-weight: 500;
- background-color: ${(r) => $lowcoder_sdk.lightenColor(r.$style.background, 0.1)};
- }
- }
- }
-
- // on resize
- .fc-media-screen {
- height: 100% !important;
- }
- .fc-scroller {
- overflow: hidden auto !important;
- overflow: hidden overlay !important;
- }
- .fc-col-header,
- .fc-scroller > div,
- .fc-scroller > div > table,
- .fc-scrollgrid-sync-table,
- .fc-timegrid-cols > table,
- .fc .fc-scrollgrid,
- .fc .fc-scrollgrid table {
- width: 100% !important;
- }
-
- // event
- .fc-timegrid-event .fc-event-main {
- padding: 4px 0 4px 1px;
- }
- .fc-event {
- position: relative;
- height: 100%;
- background-color: unset !important;
- border: none !important;
- box-shadow: none !important;
- .event-remove {
- color: ${(r) => r.$style.text};
- }
- &:hover {
- .event-remove {
- opacity: ${(r) => r.editable && 1};
- }
- }
- }
-
- // left time
- .time.past {
- opacity: 0.35;
- }
-
- .past .time {
- opacity: 0.35;
- }
-
- .future .time {
- opacity: 1;
- }
-
- .fc-scrollgrid-liquid > tbody {
- & > tr:nth-of-type(2) {
- display: ${(r) => r.allDay && 1};
- }
- }
- .fc .fc-timegrid-slot-label-cushion {
- padding: 0 15px;
- }
-
- // border-radius, bg
- .fc-theme-standard .fc-list {
- background-color: ${(r) => r.$style.background};
- border-radius: ${(r) => `0 0 ${r.$style.radius} ${r.$style.radius}`};
- border-color: ${(r) => r.$style.border};
- border-top-color: ${(r) => $lowcoder_sdk.toHex(r.$style.border) === "#D7D9E0" ? "#E1E3EB" : $lowcoder_sdk.lightenColor(r.$style.border, 0.03)};
- }
- .fc-scrollgrid-liquid {
- border-radius: ${(r) => `0 0 ${r.$style.radius} ${r.$style.radius}`};
- overflow: hidden;
- border-right-width: 1px;
- border-bottom-width: 1px;
- border-color: ${(r) => r.$style.border};
- > thead,
- > tbody > tr:nth-of-type(1),
- .fc-scrollgrid-section-liquid > td {
- background-color: ${(r) => r.$style.background};
- }
- }
- .fc-scrollgrid-section-liquid > td,
- .fc-scrollgrid-liquid .fc-scrollgrid-section-header > th {
- border: none;
- }
- .fc-scrollgrid-liquid > tbody > tr:nth-of-type(1) > td {
- border-right: none;
- }
- .fc-theme-standard .fc-scrollgrid {
- border-color: ${(r) => $lowcoder_sdk.toHex(r.$style.border) === "#D7D9E0" ? "#E1E3EB" : $lowcoder_sdk.lightenColor(r.$style.border, 0.03)};
- }
- .fc .fc-scrollgrid {
- border-bottom-width: 1px;
- border-right-width: 1px;
- }
-
- .fc-day-sat,
- .fc-day-sun {
- &.fc-timegrid-col,
- &.fc-daygrid-day {
- background-color: ${(r) => $lowcoder_sdk.isDarkColor(r.$style.background) ? $lowcoder_sdk.darkenColor(r.$style.background, 0.06) : $lowcoder_sdk.darkenColor(r.$style.background, 0.02)};
- }
- }
- .fc-theme-standard td,
- .fc-theme-standard th {
- border-color: ${(r) => $lowcoder_sdk.toHex(r.$style.border) === "#D7D9E0" ? "#E1E3EB" : $lowcoder_sdk.lightenColor(r.$style.border, 0.03)};
- }
-
- // header
- .fc .fc-toolbar.fc-header-toolbar {
- padding: 16px;
- margin-bottom: 0;
- border: 1px solid ${(r) => r.$style.border};
- border-bottom: none;
- border-radius: ${(r) => `${r.$style.radius} ${r.$style.radius} 0 0`};
- background-color: ${(r) => r.$style.background};
- }
- .fc-toolbar-title {
- color: ${(r) => r.$style.title};
- font-size: 24px;
- line-height: 24px;
- display: inline-flex;
- }
- .fc-toolbar-chunk {
- display: inline-flex;
- align-items: center;
- }
- .fc .fc-toolbar-chunk .fc-button.fc-button-primary {
- height: 28px;
- display: flex;
- align-items: center;
- justify-content: center;
- &:not(:disabled):not(.fc-button-active) {
- &:hover,
- &:active {
- color: ${(r) => r.$style.btnText};
- background-color: ${(r) => $lowcoder_sdk.toHex(r.$style.headerBtnBackground) === "#FFFFFF" ? "#F5F5F6" : $lowcoder_sdk.genHoverColor(r.$style.headerBtnBackground)};
- border-color: ${(r) => $lowcoder_sdk.toHex(r.$style.headerBtnBackground) === "#FFFFFF" ? "#D7D9E0" : $lowcoder_sdk.backgroundToBorder($lowcoder_sdk.genHoverColor(r.$style.headerBtnBackground))};
- }
- }
- &:not(:disabled):focus {
- box-shadow: none;
- }
- &:disabled {
- cursor: not-allowed;
- opacity: 1;
- &,
- &:hover {
- background-color: ${(r) => r.$style.headerBtnBackground};
- border-color: ${(r) => $lowcoder_sdk.backgroundToBorder(r.$style.headerBtnBackground)};
- color: ${(r) => $lowcoder_sdk.toHex(r.$style.btnText) === "#222222" ? "#B8B9BF" : $lowcoder_sdk.contrastColor(r.$style.btnText)};
- }
- }
- }
- .fc .fc-button-primary:not(:disabled).fc-button-active:focus,
- .fc .fc-button-primary:not(:disabled):active:focus {
- box-shadow: none;
- }
- .fc-toolbar-chunk:nth-of-type(3) .fc-button-primary {
- height: 28px;
- display: inline-flex;
- font-size: 14px;
- margin-left: 8px;
- background-color: ${(r) => r.$style.headerBtnBackground};
- border-color: ${(r) => $lowcoder_sdk.backgroundToBorder(r.$style.headerBtnBackground)};
- color: ${(r) => r.$style.btnText};
- &.fc-today-button {
- min-width: 52px;
- }
- &.fc-prev-button,
- &.fc-next-button {
- padding: 0;
- width: 28px;
- color: ${(r) => $lowcoder_sdk.lightenColor(r.$style.btnText, 0.4)};
- }
- &.fc-prev-button {
- margin-left: 12px;
- }
- }
- .fc-toolbar-chunk:nth-of-type(3) .fc-button-group {
- background-color: ${(r) => $lowcoder_sdk.toHex(r.$style.headerBtnBackground) === "#FFFFFF" ? "#EFEFF1" : $lowcoder_sdk.isDarkColor(r.$style.headerBtnBackground) ? r.$style.headerBtnBackground : $lowcoder_sdk.darkenColor(r.$style.headerBtnBackground, 0.1)};
- border-radius: 4px;
- margin-left: 16px;
- .fc-button-primary {
- background-color: transparent;
- min-width: 60px;
- border-radius: 4px;
- margin: 2px;
- border: none;
- color: ${(r) => $lowcoder_sdk.toHex(r.$style.btnText) === "#222222" ? "#8B8FA3" : $lowcoder_sdk.lightenColor(r.$style.btnText, 0.4)};
- font-weight: 500;
-
- &.fc-button-active {
- background-color: ${(r) => $lowcoder_sdk.isDarkColor(r.$style.headerBtnBackground) ? $lowcoder_sdk.lightenColor(r.$style.headerBtnBackground, 0.1) : r.$style.headerBtnBackground};
- color: ${(r) => r.$style.btnText};
- }
- }
- }
-
- // week head
- .fc-timeGridWeek-view {
- .week-head {
- display: flex;
- flex-direction: column;
- font-size: 14px;
- font-weight: 400;
- &.past span {
- opacity: 0.35;
- }
- .week {
- padding-bottom: 3px;
- }
- .day {
- font-size: 20px;
- font-weight: 500;
- line-height: 22px;
- }
- }
- .fc-day-today.fc-col-header-cell {
- background-color: ${(r) => $lowcoder_sdk.isDarkColor(r.$style.background) ? "#ffffff19" : $lowcoder_sdk.toHex(r.theme.primary) + "19"};
- a {
- color: ${(r) => !$lowcoder_sdk.isDarkColor(r.$style.background) && $lowcoder_sdk.darkenColor(r.theme.primary, 0.1)};
- }
- }
- .fc-col-header-cell-cushion {
- padding: 8px 0 13px 0;
- }
- }
-
- // week left
- .fc .fc-timegrid-axis-cushion {
- min-width: 62px;
- min-height: 52px;
- max-width: none;
- display: inline-flex;
- align-items: center;
- justify-content: center;
- }
- .fc-direction-ltr .fc-timegrid-slot-label-frame {
- text-align: center;
- }
- .fc .fc-timegrid-slot-label {
- border: none;
- }
-
- // time can doubleClick
- .fc-timegrid-bg-harness,
- .fc-daygrid-day-bg {
- pointer-events: none;
- }
-`, BTe = $styled_components.div`
- position: absolute;
- pointer-events: auto;
- top: 0;
- right: 0;
- display: flex;
- padding: 5px;
- opacity: 0;
- cursor: pointer;
- &:hover {
- g {
- stroke: #315efb;
- }
- }
-`, jTe = $styled_components.div`
- height: 100%;
- width: 100%;
- pointer-events: none;
- border-radius: 4px;
- box-shadow: ${(r) => !r.isList && "0 0 5px 0 rgba(0, 0, 0, 0.15)"};
- border: 1px solid ${(r) => r.$style.border};
- display: ${(r) => r.isList && "flex"};
- background-color: ${(r) => !r.isList && $lowcoder_sdk.lightenColor(r.$style.background, 0.1)};
- overflow: hidden;
- font-size: 13px;
- line-height: 19px;
- padding-right: 20px;
- overflow: hidden;
- position: relative;
- &::before {
- content: "";
- position: absolute;
- display: block;
- width: 5px;
- height: calc(100% - 4px);
- left: 2px;
- top: 2px;
- border-radius: 3px;
- background-color: ${(r) => r.bg};
- }
-
- .event-time {
- color: ${(r) => !r.isList && ($lowcoder_sdk.isDarkColor(r.$style.text) ? $lowcoder_sdk.lightenColor(r.$style.text, 0.2) : r.$style.text)};
- margin-left: 15px;
- white-space: pre-wrap;
- margin-top: 2px;
- }
- .event-title {
- color: ${(r) => !r.isList && r.$style.text};
- font-weight: 500;
- margin-left: 15px;
- white-space: pre-wrap;
- word-break: break-word;
- }
-
- &.small {
- height: 20px;
- .event-time {
- display: none;
- }
- .event-title {
- text-overflow: ellipsis;
- overflow: hidden;
- white-space: nowrap;
- }
- }
- &.middle {
- padding-top: 2px;
- .event-time,
- .event-title {
- text-overflow: ellipsis;
- overflow: hidden;
- white-space: nowrap;
- }
- }
- &.large {
- .event-time {
- margin-top: 13px;
- }
- }
- &.past {
- background-color: ${(r) => $lowcoder_sdk.isDarkColor(r.$style.background) && r.$style.background};
- &::before {
- background-color: ${(r) => $lowcoder_sdk.toHex(r.$style.text) === "#3C3C3C" ? "#8B8FA3" : $lowcoder_sdk.isDarkColor(r.$style.text) ? $lowcoder_sdk.lightenColor(r.$style.text, 0.3) : r.$style.text};
- }
- &::before,
- .event-title,
- .event-time {
- opacity: 0.35;
- }
- }
-`, FTe = $styled_components($antd.Form)`
- .ant-form-item-label {
- width: 100px;
- text-align: left;
- line-height: 18px;
- label:not(.ant-form-item-required) {
- margin-left: 11px;
- }
- label span {
- ${$lowcoder_sdk.UnderlineCss}
- }
- }
-`;
-var Gu = /* @__PURE__ */ ((r) => (r.MONTH = "dayGridMonth", r.WEEK = "timeGridWeek", r.DAY = "timeGridDay", r.LIST = "listWeek", r))(Gu || {});
-const $Te = [{
- label: Ye("calendar.month"),
- value: "dayGridMonth"
-}, {
- label: Ye("calendar.week"),
- value: "timeGridWeek"
-}, {
- label: Ye("calendar.day"),
- value: "timeGridDay"
-}, {
- label: Ye("calendar.list"),
- value: "listWeek"
-}], HTe = [{
- label: Ye("calendar.monday"),
- value: "1"
-}, {
- label: Ye("calendar.tuesday"),
- value: "2"
-}, {
- label: Ye("calendar.wednesday"),
- value: "3"
-}, {
- label: Ye("calendar.thursday"),
- value: "4"
-}, {
- label: Ye("calendar.friday"),
- value: "5"
-}, {
- label: Ye("calendar.saturday"),
- value: "6"
-}, {
- label: Ye("calendar.sunday"),
- value: "0"
-}], VTe = [{
- id: "1",
- title: "Coding",
- start: $dayjs().hour(10).minute(0).second(0).format($lowcoder_sdk.DATE_TIME_FORMAT),
- end: $dayjs().hour(11).minute(30).second(0).format($lowcoder_sdk.DATE_TIME_FORMAT),
- color: "#079968"
-}, {
- id: "2",
- title: "Rest",
- start: $dayjs().hour(24).format($lowcoder_sdk.DATE_FORMAT),
- end: $dayjs().hour(48).format($lowcoder_sdk.DATE_FORMAT),
- allDay: !0
-}], GTe = {
- today: Ye("calendar.today"),
- month: Ye("calendar.month"),
- week: Ye("calendar.week"),
- day: Ye("calendar.day"),
- list: Ye("calendar.list")
-}, UTe = {
- left: "title",
- right: "prev today next dayGridMonth,timeGridWeek,timeGridDay,listWeek"
-}, WTe = (r) => {
- const e = r.text.split(" ");
- return {
- html: `
- ${e[0]}
- ${e[1]}
- `
- };
-}, Jz = (r) => {
- let e = !1;
- return r.view.type === "timeGridWeek" ? e = $dayjs().isAfter($dayjs($dayjs().format("YYYY MM DD " + r.text))) : r.view.type === "timeGridDay" && (e = $dayjs().isAfter($dayjs($dayjs(r.view.activeStart).format("YYYY MM DD " + r.text)))), {
- html: `${r.text}`
- };
-}, YTe = {
- timeGridWeek: {
- dayHeaderFormat: "ddd DD",
- dayHeaderContent: (r) => WTe(r),
- slotLabelContent: (r) => Jz(r)
- },
- timeGridDay: {
- slotLabelContent: (r) => Jz(r)
- },
- listWeek: {
- listDayFormat: {
- weekday: "short"
- }
- }
-}, XTe = [{
- hour: "2-digit",
- minute: "2-digit"
-}], ZTe = (r) => {
- let e = "";
- return [
- "timeGridWeek",
- "timeGridDay"
- /* DAY */
- ].includes(r.view.type) && ($dayjs().isAfter(r.view.activeEnd) ? e = "past" : $dayjs().isBefore(r.view.activeStart) && (e = "future")), e;
-}, JTe = {
- events: $lowcoder_sdk.jsonValueExposingStateControl("events", VTe),
- onEvent: $lowcoder_sdk.ChangeEventHandlerControl,
- editable: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0),
- defaultDate: $lowcoder_sdk.withDefault($lowcoder_sdk.StringControl, "{{ new Date() }}"),
- defaultView: $lowcoder_sdk.dropdownControl($Te, "timeGridWeek"),
- firstDay: $lowcoder_sdk.dropdownControl(HTe, "1"),
- showEventTime: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0),
- showWeekends: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0),
- showAllDay: $lowcoder_sdk.withDefault($lowcoder_sdk.BoolControl, !0),
- dayMaxEvents: $lowcoder_sdk.withDefault($lowcoder_sdk.NumberControl, 2),
- eventMaxStack: $lowcoder_sdk.withDefault($lowcoder_sdk.NumberControl, 0),
- style: $lowcoder_sdk.styleControl($lowcoder_sdk.CalendarStyle)
-};
-let cI = function() {
- return new $lowcoder_sdk.UICompBuilder(JTe, (r) => {
- const e = $react.useContext($lowcoder_sdk.ThemeContext), t = $react.createRef(), n = $react.useRef(), [i] = $antd.Form.useForm(), [a, o] = $react.useState(void 0), s = r.events.value.map((S) => {
- var T;
- return sn({
- title: S.title,
- id: S.id,
- start: $dayjs(S.start, $lowcoder_sdk.DateParser).format(),
- end: $dayjs(S.end, $lowcoder_sdk.DateParser).format(),
- allDay: S.allDay,
- color: $lowcoder_sdk.isValidColor(S.color || "") ? S.color : (T = e == null ? void 0 : e.theme) == null ? void 0 : T.primary
- }, S.groupId ? {
- groupId: S.groupId
- } : null);
- }), {
- defaultDate: l,
- defaultView: u,
- showEventTime: c,
- showWeekends: h,
- showAllDay: f,
- dayMaxEvents: v,
- eventMaxStack: b,
- style: w,
- firstDay: p,
- editable: d
- } = r;
- function m(S) {
- const T = S.view.type === "listWeek";
- let C = "";
- if ([Gu.WEEK, Gu.DAY].includes(S.view.type)) {
- const M = $dayjs(S.event.end).diff($dayjs(S.event.start), "minutes");
- M <= 30 || S.event.allDay ? C = "small" : M <= 60 ? C = "middle" : C = "large";
- }
- const E = $dayjs().isAfter($dayjs(S.event.end)) && S.view.type !== Gu.MONTH ? "past" : "";
- return /* @__PURE__ */ Rn(jTe, {
- className: `event ${C} ${E}`,
- isList: T,
- bg: S.backgroundColor,
- theme: e == null ? void 0 : e.theme,
- allDay: f,
- $style: r.style,
- children: [/* @__PURE__ */ Bt("div", {
- className: "event-time",
- children: S.timeText
- }), /* @__PURE__ */ Bt("div", {
- className: "event-title",
- children: S.event.title
- }), /* @__PURE__ */ Bt(BTe, {
- isList: T,
- className: "event-remove",
- onClick: (M) => {
- M.stopPropagation(), r.onEvent("change");
- const P = s.filter((R) => R.id !== S.event.id);
- r.events.onChange(P);
- },
- onMouseDown: (M) => {
- M.stopPropagation(), M.preventDefault();
- },
- children: /* @__PURE__ */ Bt($lowcoder_sdk.CalendarDeleteIcon, {})
- })]
- });
- }
- const _ = () => {
- const S = r.events.value.find((T) => {
- var C;
- return T.id === ((C = n.current) == null ? void 0 : C.id);
- });
- if (!(!d || !n.current))
- if (S) {
- const {
- title: T,
- groupId: C,
- color: E,
- id: M
- } = S;
- x({
- title: T,
- groupId: C,
- color: E,
- id: M
- }, !0);
- } else
- x(n.current, !1);
- }, y = (S) => {
- const T = {
- allDay: S.allDay,
- start: S.startStr,
- end: S.endStr
- }, C = S.view.type, E = $dayjs(S.end).diff($dayjs(S.start), "minutes");
- if (C === Gu.MONTH && E === 1440 || [Gu.WEEK, Gu.DAY].includes(C) && E === 30 || S.allDay && E === 1440) {
- n.current = T, setTimeout(() => {
- n.current = void 0;
- }, 500);
- return;
- }
- x(T, !1);
- }, x = (S, T) => {
- var M;
- const C = Ye(T ? "calendar.editEvent" : "calendar.creatEvent");
- i && i.setFieldsValue(S);
- const E = (M = n.current) == null ? void 0 : M.id;
- $lowcoder_sdk.CustomModal.confirm({
- title: C,
- content: /* @__PURE__ */ Rn(FTe, {
- form: i,
- children: [/* @__PURE__ */ Bt($antd.Form.Item, {
- label: /* @__PURE__ */ Bt($lowcoder_sdk.Tooltip, {
- title: Ye("calendar.eventIdTooltip"),
- children: Ye("calendar.eventId")
- }),
- name: "id",
- rules: [{
- required: !0,
- message: Ye("calendar.eventIdRequire")
- }],
- children: /* @__PURE__ */ Bt($antd.Input, {})
- }), /* @__PURE__ */ Bt($antd.Form.Item, {
- label: Ye("calendar.eventName"),
- name: "title",
- rules: [{
- required: !0,
- message: Ye("calendar.eventNameRequire")
- }],
- children: /* @__PURE__ */ Bt($antd.Input, {})
- }), /* @__PURE__ */ Bt($antd.Form.Item, {
- label: Ye("calendar.eventColor"),
- name: "color",
- children: /* @__PURE__ */ Bt($antd.Input, {})
- }), /* @__PURE__ */ Bt($antd.Form.Item, {
- label: /* @__PURE__ */ Bt($lowcoder_sdk.Tooltip, {
- title: Ye("calendar.groupIdTooltip"),
- children: Ye("calendar.eventGroupId")
- }),
- name: "groupId",
- children: /* @__PURE__ */ Bt($antd.Input, {})
- })]
- }),
- onConfirm: () => (i.submit(), i.validateFields().then(() => {
- const {
- id: P,
- groupId: R,
- color: N,
- title: F = ""
- } = i.getFieldsValue();
- if (r.events.value.findIndex(($) => $.id === P) > -1 && P !== E)
- throw i.setFields([{
- name: "id",
- errors: [Ye("calendar.eventIdExist")]
- }]), new Error();
- if (T) {
- const $ = r.events.value.map((G) => G.id === E ? sn(sn(Za(sn({}, G), {
- title: F,
- id: P
- }), R !== void 0 ? {
- groupId: R
- } : null), N !== void 0 ? {
- color: N
- } : null) : G);
- r.events.onChange($);
- } else {
- const $ = sn(sn({
- allDay: S.allDay,
- start: S.start,
- end: S.end,
- id: P,
- title: F
- }, R !== void 0 ? {
- groupId: R
- } : null), N !== void 0 ? {
- color: N
- } : null);
- r.events.onChange([...r.events.value, $]);
- }
- r.onEvent("change"), i.resetFields();
- })),
- onCancel: () => {
- i.resetFields();
- }
- });
- };
- let g = l;
- try {
- g = new Date(l).toISOString();
- } catch (S) {
- g = void 0;
- }
- return /* @__PURE__ */ Bt(zTe, {
- ref: t,
- editable: d,
- $style: w,
- theme: e == null ? void 0 : e.theme,
- onDoubleClick: _,
- left: a,
- children: /* @__PURE__ */ Bt(gU, {
- slotEventOverlap: !1,
- events: s,
- expandRows: !0,
- height: "100%",
- locale: d6(),
- locales: PTe,
- firstDay: Number(p),
- plugins: [$we, ICe, XCe, l1e, NTe],
- headerToolbar: UTe,
- moreLinkClick: (S) => {
- var E, M, P, R, N, F, U, $, G, Q;
- let T = 0;
- const C = S.jsEvent.target;
- S.view.type === Gu.DAY ? S.allDay ? T = ((M = (E = C.offsetParent) == null ? void 0 : E.parentElement) == null ? void 0 : M.offsetLeft) || 0 : T = ((P = C.parentElement) == null ? void 0 : P.offsetLeft) || 0 : S.allDay ? T = ((F = (N = (R = C.offsetParent) == null ? void 0 : R.parentElement) == null ? void 0 : N.parentElement) == null ? void 0 : F.offsetLeft) || 0 : T = ((Q = (G = ($ = (U = C.offsetParent) == null ? void 0 : U.parentElement) == null ? void 0 : $.parentElement) == null ? void 0 : G.parentElement) == null ? void 0 : Q.offsetLeft) || 0, o(T);
- },
- buttonText: GTe,
- views: YTe,
- eventClassNames: () => c ? "" : "no-time",
- slotLabelFormat: XTe,
- viewClassNames: ZTe,
- moreLinkText: Ye("calendar.more"),
- initialDate: g,
- initialView: u,
- editable: d,
- selectable: d,
- selectMirror: !1,
- displayEventTime: c,
- dayMaxEvents: v,
- eventMaxStack: b || void 0,
- weekends: h,
- allDaySlot: f,
- eventContent: m,
- select: (S) => y(S),
- eventClick: (S) => {
- const T = s.find((C) => C.id === S.event.id);
- n.current = T, setTimeout(() => {
- n.current = void 0;
- }, 500);
- },
- eventsSet: (S) => {
- let T = !1, C = [];
- S.forEach((E) => {
- const M = s.find((N) => N.id === E.id), P = $dayjs(E.start, $lowcoder_sdk.DateParser).format(), R = $dayjs(E.end, $lowcoder_sdk.DateParser).format();
- P !== (M == null ? void 0 : M.start) || R !== (M == null ? void 0 : M.end) || !!E.allDay != !!(M != null && M.allDay) ? (T = !0, C.push(Za(sn({}, M), {
- allDay: E.allDay,
- start: E.startStr,
- end: E.endStr
- }))) : C.push(M);
- }), T && (r.events.onChange(C), r.onEvent("change"));
- }
- })
- }, g ? u + g : u);
- }).setPropertyViewFn((r) => /* @__PURE__ */ Rn(Ni, {
- children: [/* @__PURE__ */ Bt($lowcoder_sdk.Section, {
- name: $lowcoder_sdk.sectionNames.basic,
- children: r.events.propertyView({})
- }), /* @__PURE__ */ Bt($lowcoder_sdk.Section, {
- name: $lowcoder_sdk.sectionNames.interaction,
- children: r.onEvent.getPropertyView()
- }), /* @__PURE__ */ Rn($lowcoder_sdk.Section, {
- name: $lowcoder_sdk.sectionNames.advanced,
- children: [r.editable.propertyView({
- label: Ye("calendar.editable")
- }), r.defaultDate.propertyView({
- label: Ye("calendar.defaultDate"),
- tooltip: Ye("calendar.defaultDateTooltip")
- }), r.defaultView.propertyView({
- label: Ye("calendar.defaultView"),
- tooltip: Ye("calendar.defaultViewTooltip")
- }), r.firstDay.propertyView({
- label: Ye("calendar.startWeek")
- }), r.showEventTime.propertyView({
- label: Ye("calendar.showEventTime"),
- tooltip: Ye("calendar.showEventTimeTooltip")
- }), r.showWeekends.propertyView({
- label: Ye("calendar.showWeekends")
- }), r.showAllDay.propertyView({
- label: Ye("calendar.showAllDay"),
- tooltip: Ye("calendar.showAllDayTooltip")
- }), r.dayMaxEvents.propertyView({
- label: Ye("calendar.dayMaxEvents"),
- tooltip: Ye("calendar.dayMaxEventsTooltip")
- }), r.eventMaxStack.propertyView({
- label: Ye("calendar.eventMaxStack"),
- tooltip: Ye("calendar.eventMaxStackTooltip")
- })]
- }), /* @__PURE__ */ Bt($lowcoder_sdk.Section, {
- name: $lowcoder_sdk.sectionNames.layout,
- children: $lowcoder_sdk.hiddenPropertyView(r)
- }), /* @__PURE__ */ Bt($lowcoder_sdk.Section, {
- name: $lowcoder_sdk.sectionNames.style,
- children: r.style.getPropertyView()
- })]
- })).build();
-}();
-cI = class extends cI {
- autoHeight() {
- return !1;
- }
-};
-const KTe = $lowcoder_sdk.withExposingConfigs(cI, [new $lowcoder_sdk.NameConfig("events", Ye("calendar.events")), $lowcoder_sdk.NameConfigHidden]), tIe = {
- chart: a0e,
- imageEditor: p0e,
- calendar: KTe
-};
-export {
- tIe as default
-};
diff --git a/client/packages/lowcoder-comps/package/package.json b/client/packages/lowcoder-comps/package/package.json
deleted file mode 100644
index 3254348be..000000000
--- a/client/packages/lowcoder-comps/package/package.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "name": "lowcoder-comps",
- "version": "0.0.14",
- "type": "module",
- "license": "MIT",
- "dependencies": {
- "@fullcalendar/core": "^6.1.6",
- "@fullcalendar/daygrid": "^6.1.6",
- "@fullcalendar/interaction": "^6.1.6",
- "@fullcalendar/list": "^6.1.6",
- "@fullcalendar/moment": "^6.1.6",
- "@fullcalendar/react": "^6.1.6",
- "@fullcalendar/timegrid": "^6.1.6",
- "@types/react": "17",
- "@types/react-dom": "17",
- "big.js": "^6.2.1",
- "echarts-extension-gmap": "^1.6.0",
- "lowcoder-cli": "workspace:^",
- "lowcoder-sdk": "workspace:^",
- "mermaid": "^10.2.4",
- "react": "17",
- "react-dom": "17",
- "typescript": "4.8.4"
- },
- "lowcoder": {
- "description": "",
- "comps": {
- "chart": {
- "name": "Chart",
- "icon": "./icons/icon-chart.svg",
- "layoutInfo": {
- "w": 11,
- "h": 35
- }
- },
- "imageEditor": {
- "name": "Image Editor",
- "icon": "./icons/icon-chart.svg",
- "layoutInfo": {
- "w": 15,
- "h": 60
- }
- },
- "calendar": {
- "name": "Calendar",
- "icon": "./icons/icon-comp-calendar.svg",
- "layoutInfo": {
- "w": 15,
- "h": 60
- }
- }
- },
- "entry": "index.js"
- },
- "scripts": {
- "start": "vite",
- "build": "yarn test && lowcoder-cli build",
- "build_only": "lowcoder-cli build",
- "build_publish": "lowcoder-cli build --publish",
- "test": "jest"
- },
- "devDependencies": {
- "jest": "29.3.0",
- "jest-canvas-mock": "^2.5.2",
- "vite": "^4.3.9",
- "vite-tsconfig-paths": "^3.6.0"
- }
-}
\ No newline at end of file
diff --git a/client/packages/lowcoder-comps/src/comps/chartComp/chartComp.tsx b/client/packages/lowcoder-comps/src/comps/chartComp/chartComp.tsx
index 671ccae7c..e0877d747 100644
--- a/client/packages/lowcoder-comps/src/comps/chartComp/chartComp.tsx
+++ b/client/packages/lowcoder-comps/src/comps/chartComp/chartComp.tsx
@@ -47,6 +47,10 @@ let ChartTmpComp = (function () {
})();
ChartTmpComp = withViewFn(ChartTmpComp, (comp) => {
+ const apiKey = comp.children.mapApiKey.getView();
+ const mode = comp.children.mode.getView();
+ const onEvent = comp.children.onEvent.getView();
+
const echartsCompRef = useRef();
const [chartSize, setChartSize] = useState();
const [mapScriptLoaded, setMapScriptLoaded] = useState(false);
@@ -64,8 +68,9 @@ ChartTmpComp = withViewFn(ChartTmpComp, (comp) => {
log.error('theme chart error: ', error);
}
- const onEvent = comp.children.onEvent.getView();
useEffect(() => {
+ if(mode !== 'ui') return;
+
// bind events
const echartsCompInstance = echartsCompRef?.current?.getEchartsInstance();
if (!echartsCompInstance) {
@@ -84,7 +89,7 @@ ChartTmpComp = withViewFn(ChartTmpComp, (comp) => {
});
// unbind
return () => echartsCompInstance?.off("selectchanged");
- }, [onEvent]);
+ }, [mode, onEvent]);
const echartsConfigChildren = _.omit(comp.children, echartsConfigOmitChildren);
const option = useMemo(() => {
@@ -100,19 +105,17 @@ ChartTmpComp = withViewFn(ChartTmpComp, (comp) => {
const loadGoogleMapsData = () => {
setTimeout(() => {
- setMapScriptLoaded(true);
const echartsCompInstance = echartsCompRef?.current?.getEchartsInstance();
if (!echartsCompInstance) {
return _.noop;
}
- const mapInstance = echartsCompInstance?.getModel()?.getComponent("gmap")?.getGoogleMap();
+ let mapInstance = undefined;
+ mapInstance = echartsCompInstance?.getModel()?.getComponent("gmap")?.getGoogleMap();
comp.dispatch(changeChildAction("mapInstance", mapInstance));
}, 500)
}
-
- const apiKey = comp.children.mapApiKey.getView();
- const mode = comp.children.mode.getView();
+
useEffect(() => {
if( mode !== 'map') {
comp.dispatch(changeChildAction("mapInstance", undefined));
@@ -125,6 +128,7 @@ ChartTmpComp = withViewFn(ChartTmpComp, (comp) => {
return;
}
gMapScript.addEventListener('load', function () {
+ setMapScriptLoaded(true);
loadGoogleMapsData();
});
}, [mode, apiKey, option])
@@ -277,16 +281,13 @@ let ChartComp = withExposingConfigs(ChartTmpComp, [
new NameConfig("title", trans("chart.titleDesc")),
]);
-ChartComp = withMethodExposing(ChartTmpComp, [
+ChartComp = withMethodExposing(ChartComp, [
{
method: {
name: "getMapInstance",
},
execute: (comp) => {
- return new Promise((resolve) => {
- console.log(comp.children.mapInstance.getView())
- resolve(comp.children.mapInstance.getView())
- })
+ return comp.children.mapInstance.getView()
},
},
])
diff --git a/client/packages/lowcoder-design/src/components/popover.tsx b/client/packages/lowcoder-design/src/components/popover.tsx
index 8dfb7f956..6b7c35800 100644
--- a/client/packages/lowcoder-design/src/components/popover.tsx
+++ b/client/packages/lowcoder-design/src/components/popover.tsx
@@ -122,6 +122,7 @@ export interface EditPopoverProps extends PopoverProps {
items?: EditPopoverItemType[]; // FIXME: refactor props below into this structure
addText?: string;
add?: () => void;
+ edit?: () => void;
rename?: () => void;
copy?: () => void;
del?: () => void;
@@ -134,6 +135,7 @@ const EditPopover = (props: EditPopoverProps) => {
items,
addText,
add,
+ edit,
rename,
copy,
del,
@@ -193,6 +195,17 @@ const EditPopover = (props: EditPopoverProps) => {
{addText || trans("addItem")}
)}
+ {edit && (
+ {
+ e.stopPropagation();
+ edit?.();
+ hide();
+ }}
+ >
+ {trans("edit")}
+
+ )}
{copy && (
{
diff --git a/client/packages/lowcoder/src/components/CompName.tsx b/client/packages/lowcoder/src/components/CompName.tsx
index 400d85895..cf63dbab4 100644
--- a/client/packages/lowcoder/src/components/CompName.tsx
+++ b/client/packages/lowcoder/src/components/CompName.tsx
@@ -143,12 +143,22 @@ export const CompName = (props: Iprops) => {
style={{ color: showSearch ? "#315EFB" : "#8B8FA3" }}
/>
)}
- GridCompOperator.deleteComp(editorState, editorState.selectedComps())}
- >
-
-
+ { compType === "module" ? (
+ GridCompOperator.editComp(editorState)}
+ del={() => GridCompOperator.deleteComp(editorState, editorState.selectedComps())}
+ >
+
+
+ ) : (
+ GridCompOperator.deleteComp(editorState, editorState.selectedComps())}
+ >
+
+
+ )}
);
return (
diff --git a/client/packages/lowcoder/src/comps/utils/gridCompOperator.ts b/client/packages/lowcoder/src/comps/utils/gridCompOperator.ts
index 411842419..4279ed654 100644
--- a/client/packages/lowcoder/src/comps/utils/gridCompOperator.ts
+++ b/client/packages/lowcoder/src/comps/utils/gridCompOperator.ts
@@ -27,6 +27,7 @@ import { CustomModal, messageInstance } from "lowcoder-design";
import { pasteKey, undoKey } from "util/keyUtils";
import { genRandomKey } from "./idGenerator";
import { getLatestVersion, getRemoteCompType, parseCompType } from "./remote";
+import { APPLICATION_VIEW_URL } from "@lowcoder-ee/constants/routesURL";
export type CopyCompType = {
layout: LayoutItem;
@@ -186,6 +187,12 @@ export class GridCompOperator {
return true;
}
+ static editComp(editorState: EditorState) {
+ const selectedComp = Object.values(editorState.selectedComps())[0];
+ const applicationId = selectedComp.children.comp.children.appId.value
+ window.open(APPLICATION_VIEW_URL(applicationId, "edit"))
+ }
+
static cutComp(editorState: EditorState, compRecords: Record) {
this.copyComp(editorState, compRecords) &&
this.doDelete(editorState, compRecords) &&
diff --git a/deploy/docker/docker-compose-multi.yaml b/deploy/docker/docker-compose-multi.yaml
index 74155454b..eac29ec5d 100644
--- a/deploy/docker/docker-compose-multi.yaml
+++ b/deploy/docker/docker-compose-multi.yaml
@@ -38,6 +38,12 @@ services:
LOWCODER_NODE_SERVICE_URL: "http://lowcoder-node-service:6060"
LOWCODER_MAX_QUERY_TIMEOUT: 120
ENABLE_USER_SIGN_UP: "true"
+ #
+ # ! PLEASE CHANGE THESE TO SOMETHING UNIQUE !
+ #
+ # ENCRYPTION_PASSWORD and ENCRYPTION_SALT is used to encrypt sensitive
+ # data in database so it is important to change the defaults
+ #
ENCRYPTION_PASSWORD: "lowcoder.org"
ENCRYPTION_SALT: "lowcoder.org"
CORS_ALLOWED_DOMAINS: "*"
@@ -46,6 +52,11 @@ services:
DEFAULT_ORG_GROUP_COUNT: 100
DEFAULT_ORG_APP_COUNT: 1000
DEFAULT_DEVELOPER_COUNT: 50
+ #
+ # API-KEY secret - should be a string of at least 32 random characters
+ # - on linux/mac, generate one eg. with: head /dev/urandom | head -c 30 | shasum -a 256
+ #
+ LOWCODER_API_KEY_SECRET: "5a41b090758b39b226603177ef48d73ae9839dd458ccb7e66f7e7cc028d5a50b"
restart: unless-stopped
depends_on:
- mongodb
diff --git a/deploy/docker/docker-compose.yaml b/deploy/docker/docker-compose.yaml
index 860808aee..2cbeb6dce 100644
--- a/deploy/docker/docker-compose.yaml
+++ b/deploy/docker/docker-compose.yaml
@@ -30,9 +30,20 @@ services:
MONGODB_URL: "mongodb://localhost:27017/lowcoder?authSource=admin"
REDIS_URL: "redis://localhost:6379"
ENABLE_USER_SIGN_UP: "true"
+ #
+ # ! PLEASE CHANGE THESE TO SOMETHING UNIQUE !
+ #
+ # ENCRYPTION_PASSWORD and ENCRYPTION_SALT is used to encrypt sensitive
+ # data in database so it is important to change the defaults
+ #
ENCRYPTION_PASSWORD: "lowcoder.org"
ENCRYPTION_SALT: "lowcoder.org"
CORS_ALLOWED_DOMAINS: "*"
+ #
+ # API-KEY secret - should be a string of at least 32 random characters
+ # - on linux/mac, generate one eg. with: head /dev/urandom | head -c 30 | shasum -a 256
+ #
+ LOWCODER_API_KEY_SECRET: "5a41b090758b39b226603177ef48d73ae9839dd458ccb7e66f7e7cc028d5a50b"
# api and node service parameters
LOWCODER_API_SERVICE_URL: "http://localhost:8080"
LOWCODER_NODE_SERVICE_URL: "http://localhost:6060"
diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/util/JWTUtils.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/util/JWTUtils.java
index c5c746b79..47bfd8380 100644
--- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/util/JWTUtils.java
+++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/util/JWTUtils.java
@@ -4,6 +4,7 @@
import io.jsonwebtoken.JwtParser;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
+import io.jsonwebtoken.io.Encoders;
import jakarta.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j;
import org.lowcoder.domain.user.model.User;
@@ -12,8 +13,6 @@
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
-import java.util.Random;
-
import java.util.Date;
@Component
@@ -25,12 +24,17 @@ public class JWTUtils {
private JwtParser jwtParser;
+ private String base64EncodedSecret;
+
private final String TOKEN_HEADER = "Authorization";
private final String TOKEN_PREFIX = "Bearer ";
@PostConstruct
public void setup(){
- this.jwtParser = Jwts.parser().setSigningKey(authProperties.getApiKey().getSecret());
+ base64EncodedSecret = Encoders.BASE64.encode(authProperties.getApiKey().getSecret().getBytes());
+ this.jwtParser = Jwts.parserBuilder()
+ .setSigningKey(base64EncodedSecret)
+ .build();
}
public String createToken(User user) {
@@ -39,10 +43,9 @@ public String createToken(User user) {
.setIssuedAt(new Date());
claims.put("userId", user.getId() );
claims.put("createdBy", user.getName());
- String randomFactor = String.valueOf(new Random().nextLong(100000000L));
return Jwts.builder()
.setClaims(claims)
- .signWith(SignatureAlgorithm.HS256, authProperties.getApiKey().getSecret() + randomFactor)
+ .signWith(SignatureAlgorithm.HS256, base64EncodedSecret)
.compact();
}
diff --git a/server/api-service/lowcoder-server/src/main/resources/application-lowcoder.yml b/server/api-service/lowcoder-server/src/main/resources/application-lowcoder.yml
index 223e127ce..ad2ea40c8 100644
--- a/server/api-service/lowcoder-server/src/main/resources/application-lowcoder.yml
+++ b/server/api-service/lowcoder-server/src/main/resources/application-lowcoder.yml
@@ -3,9 +3,9 @@ spring:
mongodb:
authentication-database: admin
auto-index-creation: false
- uri: mongodb://192.168.8.100:27017/lowcoder?authSource=admin
+ uri: mongodb://192.168.1.111:27017/lowcoder?authSource=admin
redis:
- url: redis://192.168.8.100:6379
+ url: redis://192.168.1.111:6379
main:
allow-bean-definition-overriding: true
allow-circular-references: true
@@ -57,7 +57,7 @@ springdoc:
auth:
api-key:
- secret: 123456789101112131415123456789101112131415123456789101112131415123456789101112131415
+ secret: 5a41b090758b39b226603177ef48d73ae9839dd458ccb7e66f7e7cc028d5a50b
email:
enable: true
- enable-register: false
\ No newline at end of file
+ enable-register: true
\ No newline at end of file
diff --git a/server/api-service/lowcoder-server/src/main/resources/selfhost/ce/application-selfhost.yml b/server/api-service/lowcoder-server/src/main/resources/selfhost/ce/application-selfhost.yml
index 53df2ac7e..8dc5a265b 100644
--- a/server/api-service/lowcoder-server/src/main/resources/selfhost/ce/application-selfhost.yml
+++ b/server/api-service/lowcoder-server/src/main/resources/selfhost/ce/application-selfhost.yml
@@ -8,6 +8,8 @@ common:
mode: ENTERPRISE
auth:
+ api-key:
+ secret: ${LOWCODER_API_KEY_SECRET:123456789101112131415123456789101112131415123456789101112131415123456789101112131415}
email:
enable: ${LOGIN_CHANNEL_EMAIL:true}
enable-register: ${ENABLE_USER_SIGN_UP:true}
diff --git a/server/api-service/lowcoder-server/src/main/resources/selfhost/ce/application.yml b/server/api-service/lowcoder-server/src/main/resources/selfhost/ce/application.yml
index ce0618058..cc3ed4be8 100644
--- a/server/api-service/lowcoder-server/src/main/resources/selfhost/ce/application.yml
+++ b/server/api-service/lowcoder-server/src/main/resources/selfhost/ce/application.yml
@@ -1,4 +1,6 @@
auth:
+ api-key:
+ secret: ${LOWCODER_API_KEY_SECRET:5a41b090758b39b226603177ef48d73ae9839dd458ccb7e66f7e7cc028d5a50b}
email:
enable: true
enable-register: ${ENABLE_USER_SIGN_UP:true}