12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043 |
- import {
- BaseComponent,
- BgEvent,
- DateComponent,
- DateProfileGenerator,
- DayCellContainer,
- DayHeader,
- DaySeriesModel,
- DayTableModel,
- EventContainer,
- MoreLinkContainer,
- NowTimer,
- PositionCache,
- RefMap,
- SegHierarchy,
- SimpleScrollGrid,
- Slicer,
- StandardEvent,
- ViewContainer,
- WeekNumberContainer,
- addDays,
- addMs,
- addWeeks,
- buildEntryKey,
- buildEventRangeKey,
- buildNavLinkAttrs,
- buildSegTimeText,
- createFormatter,
- diffWeeks,
- formatDayString,
- formatIsoMonthStr,
- getSegAnchorAttrs,
- getSegMeta,
- getStickyFooterScrollbar,
- getStickyHeaderDates,
- getUniqueDomId,
- hasCustomDayCellContent,
- injectStyles,
- intersectRanges,
- intersectSpans,
- isPropsEqual,
- memoize,
- renderFill,
- renderScrollShim,
- setRef,
- sortEventSegs
- } from "./chunk-QH2VTIUN.js";
- import {
- _,
- d,
- y
- } from "./chunk-PTVH4XAB.js";
- // node_modules/.pnpm/@fullcalendar+daygrid@6.1.14_@fullcalendar+core@6.1.14/node_modules/@fullcalendar/daygrid/internal.js
- var TableView = class extends DateComponent {
- constructor() {
- super(...arguments);
- this.headerElRef = d();
- }
- renderSimpleLayout(headerRowContent, bodyContent) {
- let { props, context } = this;
- let sections = [];
- let stickyHeaderDates = getStickyHeaderDates(context.options);
- if (headerRowContent) {
- sections.push({
- type: "header",
- key: "header",
- isSticky: stickyHeaderDates,
- chunk: {
- elRef: this.headerElRef,
- tableClassName: "fc-col-header",
- rowContent: headerRowContent
- }
- });
- }
- sections.push({
- type: "body",
- key: "body",
- liquid: true,
- chunk: { content: bodyContent }
- });
- return y(
- ViewContainer,
- { elClasses: ["fc-daygrid"], viewSpec: context.viewSpec },
- y(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [], sections })
- );
- }
- renderHScrollLayout(headerRowContent, bodyContent, colCnt, dayMinWidth) {
- let ScrollGrid = this.context.pluginHooks.scrollGridImpl;
- if (!ScrollGrid) {
- throw new Error("No ScrollGrid implementation");
- }
- let { props, context } = this;
- let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);
- let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);
- let sections = [];
- if (headerRowContent) {
- sections.push({
- type: "header",
- key: "header",
- isSticky: stickyHeaderDates,
- chunks: [{
- key: "main",
- elRef: this.headerElRef,
- tableClassName: "fc-col-header",
- rowContent: headerRowContent
- }]
- });
- }
- sections.push({
- type: "body",
- key: "body",
- liquid: true,
- chunks: [{
- key: "main",
- content: bodyContent
- }]
- });
- if (stickyFooterScrollbar) {
- sections.push({
- type: "footer",
- key: "footer",
- isSticky: true,
- chunks: [{
- key: "main",
- content: renderScrollShim
- }]
- });
- }
- return y(
- ViewContainer,
- { elClasses: ["fc-daygrid"], viewSpec: context.viewSpec },
- y(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, forPrint: props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections })
- );
- }
- };
- function splitSegsByRow(segs, rowCnt) {
- let byRow = [];
- for (let i = 0; i < rowCnt; i += 1) {
- byRow[i] = [];
- }
- for (let seg of segs) {
- byRow[seg.row].push(seg);
- }
- return byRow;
- }
- function splitSegsByFirstCol(segs, colCnt) {
- let byCol = [];
- for (let i = 0; i < colCnt; i += 1) {
- byCol[i] = [];
- }
- for (let seg of segs) {
- byCol[seg.firstCol].push(seg);
- }
- return byCol;
- }
- function splitInteractionByRow(ui, rowCnt) {
- let byRow = [];
- if (!ui) {
- for (let i = 0; i < rowCnt; i += 1) {
- byRow[i] = null;
- }
- } else {
- for (let i = 0; i < rowCnt; i += 1) {
- byRow[i] = {
- affectedInstances: ui.affectedInstances,
- isEvent: ui.isEvent,
- segs: []
- };
- }
- for (let seg of ui.segs) {
- byRow[seg.row].segs.push(seg);
- }
- }
- return byRow;
- }
- var DEFAULT_TABLE_EVENT_TIME_FORMAT = createFormatter({
- hour: "numeric",
- minute: "2-digit",
- omitZeroMinute: true,
- meridiem: "narrow"
- });
- function hasListItemDisplay(seg) {
- let { display } = seg.eventRange.ui;
- return display === "list-item" || display === "auto" && !seg.eventRange.def.allDay && seg.firstCol === seg.lastCol && // can't be multi-day
- seg.isStart && // "
- seg.isEnd;
- }
- var TableBlockEvent = class extends BaseComponent {
- render() {
- let { props } = this;
- return y(StandardEvent, Object.assign({}, props, { elClasses: ["fc-daygrid-event", "fc-daygrid-block-event", "fc-h-event"], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay }));
- }
- };
- var TableListItemEvent = class extends BaseComponent {
- render() {
- let { props, context } = this;
- let { options } = context;
- let { seg } = props;
- let timeFormat = options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT;
- let timeText = buildSegTimeText(seg, timeFormat, context, true, props.defaultDisplayEventEnd);
- return y(EventContainer, Object.assign({}, props, { elTag: "a", elClasses: ["fc-daygrid-event", "fc-daygrid-dot-event"], elAttrs: getSegAnchorAttrs(props.seg, context), defaultGenerator: renderInnerContent, timeText, isResizing: false, isDateSelecting: false }));
- }
- };
- function renderInnerContent(renderProps) {
- return y(
- _,
- null,
- y("div", { className: "fc-daygrid-event-dot", style: { borderColor: renderProps.borderColor || renderProps.backgroundColor } }),
- renderProps.timeText && y("div", { className: "fc-event-time" }, renderProps.timeText),
- y("div", { className: "fc-event-title" }, renderProps.event.title || y(_, null, " "))
- );
- }
- var TableCellMoreLink = class extends BaseComponent {
- constructor() {
- super(...arguments);
- this.compileSegs = memoize(compileSegs);
- }
- render() {
- let { props } = this;
- let { allSegs, invisibleSegs } = this.compileSegs(props.singlePlacements);
- return y(MoreLinkContainer, { elClasses: ["fc-daygrid-more-link"], dateProfile: props.dateProfile, todayRange: props.todayRange, allDayDate: props.allDayDate, moreCnt: props.moreCnt, allSegs, hiddenSegs: invisibleSegs, alignmentElRef: props.alignmentElRef, alignGridTop: props.alignGridTop, extraDateSpan: props.extraDateSpan, popoverContent: () => {
- let isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) || (props.eventResize ? props.eventResize.affectedInstances : null) || {};
- return y(_, null, allSegs.map((seg) => {
- let instanceId = seg.eventRange.instance.instanceId;
- return y("div", { className: "fc-daygrid-event-harness", key: instanceId, style: {
- visibility: isForcedInvisible[instanceId] ? "hidden" : ""
- } }, hasListItemDisplay(seg) ? y(TableListItemEvent, Object.assign({ seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange))) : y(TableBlockEvent, Object.assign({ seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange))));
- }));
- } });
- }
- };
- function compileSegs(singlePlacements) {
- let allSegs = [];
- let invisibleSegs = [];
- for (let placement of singlePlacements) {
- allSegs.push(placement.seg);
- if (!placement.isVisible) {
- invisibleSegs.push(placement.seg);
- }
- }
- return { allSegs, invisibleSegs };
- }
- var DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: "narrow" });
- var TableCell = class extends DateComponent {
- constructor() {
- super(...arguments);
- this.rootElRef = d();
- this.state = {
- dayNumberId: getUniqueDomId()
- };
- this.handleRootEl = (el) => {
- setRef(this.rootElRef, el);
- setRef(this.props.elRef, el);
- };
- }
- render() {
- let { context, props, state, rootElRef } = this;
- let { options, dateEnv } = context;
- let { date, dateProfile } = props;
- const isMonthStart = props.showDayNumber && shouldDisplayMonthStart(date, dateProfile.currentRange, dateEnv);
- return y(DayCellContainer, { elTag: "td", elRef: this.handleRootEl, elClasses: [
- "fc-daygrid-day",
- ...props.extraClassNames || []
- ], elAttrs: Object.assign(Object.assign(Object.assign({}, props.extraDataAttrs), props.showDayNumber ? { "aria-labelledby": state.dayNumberId } : {}), { role: "gridcell" }), defaultGenerator: renderTopInner, date, dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, isMonthStart, extraRenderProps: props.extraRenderProps }, (InnerContent, renderProps) => y(
- "div",
- { ref: props.innerElRef, className: "fc-daygrid-day-frame fc-scrollgrid-sync-inner", style: { minHeight: props.minHeight } },
- props.showWeekNumber && y(WeekNumberContainer, { elTag: "a", elClasses: ["fc-daygrid-week-number"], elAttrs: buildNavLinkAttrs(context, date, "week"), date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }),
- !renderProps.isDisabled && (props.showDayNumber || hasCustomDayCellContent(options) || props.forceDayTop) ? y(
- "div",
- { className: "fc-daygrid-day-top" },
- y(InnerContent, { elTag: "a", elClasses: [
- "fc-daygrid-day-number",
- isMonthStart && "fc-daygrid-month-start"
- ], elAttrs: Object.assign(Object.assign({}, buildNavLinkAttrs(context, date)), { id: state.dayNumberId }) })
- ) : props.showDayNumber ? (
- // for creating correct amount of space (see issue #7162)
- y(
- "div",
- { className: "fc-daygrid-day-top", style: { visibility: "hidden" } },
- y("a", { className: "fc-daygrid-day-number" }, " ")
- )
- ) : void 0,
- y(
- "div",
- { className: "fc-daygrid-day-events", ref: props.fgContentElRef },
- props.fgContent,
- y(
- "div",
- { className: "fc-daygrid-day-bottom", style: { marginTop: props.moreMarginTop } },
- y(TableCellMoreLink, { allDayDate: date, singlePlacements: props.singlePlacements, moreCnt: props.moreCnt, alignmentElRef: rootElRef, alignGridTop: !props.showDayNumber, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange })
- )
- ),
- y("div", { className: "fc-daygrid-day-bg" }, props.bgContent)
- ));
- }
- };
- function renderTopInner(props) {
- return props.dayNumberText || y(_, null, " ");
- }
- function shouldDisplayMonthStart(date, currentRange, dateEnv) {
- const { start: currentStart, end: currentEnd } = currentRange;
- const currentEndIncl = addMs(currentEnd, -1);
- const currentFirstYear = dateEnv.getYear(currentStart);
- const currentFirstMonth = dateEnv.getMonth(currentStart);
- const currentLastYear = dateEnv.getYear(currentEndIncl);
- const currentLastMonth = dateEnv.getMonth(currentEndIncl);
- return !(currentFirstYear === currentLastYear && currentFirstMonth === currentLastMonth) && Boolean(
- // first date in current view?
- date.valueOf() === currentStart.valueOf() || // a month-start that's within the current range?
- dateEnv.getDay(date) === 1 && date.valueOf() < currentEnd.valueOf()
- );
- }
- function generateSegKey(seg) {
- return seg.eventRange.instance.instanceId + ":" + seg.firstCol;
- }
- function generateSegUid(seg) {
- return generateSegKey(seg) + ":" + seg.lastCol;
- }
- function computeFgSegPlacement(segs, dayMaxEvents, dayMaxEventRows, strictOrder, segHeights, maxContentHeight, cells) {
- let hierarchy = new DayGridSegHierarchy((segEntry) => {
- let segUid = segs[segEntry.index].eventRange.instance.instanceId + ":" + segEntry.span.start + ":" + (segEntry.span.end - 1);
- return segHeights[segUid] || 1;
- });
- hierarchy.allowReslicing = true;
- hierarchy.strictOrder = strictOrder;
- if (dayMaxEvents === true || dayMaxEventRows === true) {
- hierarchy.maxCoord = maxContentHeight;
- hierarchy.hiddenConsumes = true;
- } else if (typeof dayMaxEvents === "number") {
- hierarchy.maxStackCnt = dayMaxEvents;
- } else if (typeof dayMaxEventRows === "number") {
- hierarchy.maxStackCnt = dayMaxEventRows;
- hierarchy.hiddenConsumes = true;
- }
- let segInputs = [];
- let unknownHeightSegs = [];
- for (let i = 0; i < segs.length; i += 1) {
- let seg = segs[i];
- let segUid = generateSegUid(seg);
- let eventHeight = segHeights[segUid];
- if (eventHeight != null) {
- segInputs.push({
- index: i,
- span: {
- start: seg.firstCol,
- end: seg.lastCol + 1
- }
- });
- } else {
- unknownHeightSegs.push(seg);
- }
- }
- let hiddenEntries = hierarchy.addSegs(segInputs);
- let segRects = hierarchy.toRects();
- let { singleColPlacements, multiColPlacements, leftoverMargins } = placeRects(segRects, segs, cells);
- let moreCnts = [];
- let moreMarginTops = [];
- for (let seg of unknownHeightSegs) {
- multiColPlacements[seg.firstCol].push({
- seg,
- isVisible: false,
- isAbsolute: true,
- absoluteTop: 0,
- marginTop: 0
- });
- for (let col = seg.firstCol; col <= seg.lastCol; col += 1) {
- singleColPlacements[col].push({
- seg: resliceSeg(seg, col, col + 1, cells),
- isVisible: false,
- isAbsolute: false,
- absoluteTop: 0,
- marginTop: 0
- });
- }
- }
- for (let col = 0; col < cells.length; col += 1) {
- moreCnts.push(0);
- }
- for (let hiddenEntry of hiddenEntries) {
- let seg = segs[hiddenEntry.index];
- let hiddenSpan = hiddenEntry.span;
- multiColPlacements[hiddenSpan.start].push({
- seg: resliceSeg(seg, hiddenSpan.start, hiddenSpan.end, cells),
- isVisible: false,
- isAbsolute: true,
- absoluteTop: 0,
- marginTop: 0
- });
- for (let col = hiddenSpan.start; col < hiddenSpan.end; col += 1) {
- moreCnts[col] += 1;
- singleColPlacements[col].push({
- seg: resliceSeg(seg, col, col + 1, cells),
- isVisible: false,
- isAbsolute: false,
- absoluteTop: 0,
- marginTop: 0
- });
- }
- }
- for (let col = 0; col < cells.length; col += 1) {
- moreMarginTops.push(leftoverMargins[col]);
- }
- return { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops };
- }
- function placeRects(allRects, segs, cells) {
- let rectsByEachCol = groupRectsByEachCol(allRects, cells.length);
- let singleColPlacements = [];
- let multiColPlacements = [];
- let leftoverMargins = [];
- for (let col = 0; col < cells.length; col += 1) {
- let rects = rectsByEachCol[col];
- let singlePlacements = [];
- let currentHeight = 0;
- let currentMarginTop = 0;
- for (let rect of rects) {
- let seg = segs[rect.index];
- singlePlacements.push({
- seg: resliceSeg(seg, col, col + 1, cells),
- isVisible: true,
- isAbsolute: false,
- absoluteTop: rect.levelCoord,
- marginTop: rect.levelCoord - currentHeight
- });
- currentHeight = rect.levelCoord + rect.thickness;
- }
- let multiPlacements = [];
- currentHeight = 0;
- currentMarginTop = 0;
- for (let rect of rects) {
- let seg = segs[rect.index];
- let isAbsolute = rect.span.end - rect.span.start > 1;
- let isFirstCol = rect.span.start === col;
- currentMarginTop += rect.levelCoord - currentHeight;
- currentHeight = rect.levelCoord + rect.thickness;
- if (isAbsolute) {
- currentMarginTop += rect.thickness;
- if (isFirstCol) {
- multiPlacements.push({
- seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),
- isVisible: true,
- isAbsolute: true,
- absoluteTop: rect.levelCoord,
- marginTop: 0
- });
- }
- } else if (isFirstCol) {
- multiPlacements.push({
- seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),
- isVisible: true,
- isAbsolute: false,
- absoluteTop: rect.levelCoord,
- marginTop: currentMarginTop
- // claim the margin
- });
- currentMarginTop = 0;
- }
- }
- singleColPlacements.push(singlePlacements);
- multiColPlacements.push(multiPlacements);
- leftoverMargins.push(currentMarginTop);
- }
- return { singleColPlacements, multiColPlacements, leftoverMargins };
- }
- function groupRectsByEachCol(rects, colCnt) {
- let rectsByEachCol = [];
- for (let col = 0; col < colCnt; col += 1) {
- rectsByEachCol.push([]);
- }
- for (let rect of rects) {
- for (let col = rect.span.start; col < rect.span.end; col += 1) {
- rectsByEachCol[col].push(rect);
- }
- }
- return rectsByEachCol;
- }
- function resliceSeg(seg, spanStart, spanEnd, cells) {
- if (seg.firstCol === spanStart && seg.lastCol === spanEnd - 1) {
- return seg;
- }
- let eventRange = seg.eventRange;
- let origRange = eventRange.range;
- let slicedRange = intersectRanges(origRange, {
- start: cells[spanStart].date,
- end: addDays(cells[spanEnd - 1].date, 1)
- });
- return Object.assign(Object.assign({}, seg), { firstCol: spanStart, lastCol: spanEnd - 1, eventRange: {
- def: eventRange.def,
- ui: Object.assign(Object.assign({}, eventRange.ui), { durationEditable: false }),
- instance: eventRange.instance,
- range: slicedRange
- }, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() });
- }
- var DayGridSegHierarchy = class extends SegHierarchy {
- constructor() {
- super(...arguments);
- this.hiddenConsumes = false;
- this.forceHidden = {};
- }
- addSegs(segInputs) {
- const hiddenSegs = super.addSegs(segInputs);
- const { entriesByLevel } = this;
- const excludeHidden = (entry) => !this.forceHidden[buildEntryKey(entry)];
- for (let level = 0; level < entriesByLevel.length; level += 1) {
- entriesByLevel[level] = entriesByLevel[level].filter(excludeHidden);
- }
- return hiddenSegs;
- }
- handleInvalidInsertion(insertion, entry, hiddenEntries) {
- const { entriesByLevel, forceHidden } = this;
- const { touchingEntry, touchingLevel, touchingLateral } = insertion;
- if (this.hiddenConsumes && touchingEntry) {
- const touchingEntryId = buildEntryKey(touchingEntry);
- if (!forceHidden[touchingEntryId]) {
- if (this.allowReslicing) {
- const hiddenEntry = Object.assign(Object.assign({}, touchingEntry), { span: intersectSpans(touchingEntry.span, entry.span) });
- const hiddenEntryId = buildEntryKey(hiddenEntry);
- forceHidden[hiddenEntryId] = true;
- entriesByLevel[touchingLevel][touchingLateral] = hiddenEntry;
- hiddenEntries.push(hiddenEntry);
- this.splitEntry(touchingEntry, entry, hiddenEntries);
- } else {
- forceHidden[touchingEntryId] = true;
- hiddenEntries.push(touchingEntry);
- }
- }
- }
- super.handleInvalidInsertion(insertion, entry, hiddenEntries);
- }
- };
- var TableRow = class extends DateComponent {
- constructor() {
- super(...arguments);
- this.cellElRefs = new RefMap();
- this.frameElRefs = new RefMap();
- this.fgElRefs = new RefMap();
- this.segHarnessRefs = new RefMap();
- this.rootElRef = d();
- this.state = {
- framePositions: null,
- maxContentHeight: null,
- segHeights: {}
- };
- this.handleResize = (isForced) => {
- if (isForced) {
- this.updateSizing(true);
- }
- };
- }
- render() {
- let { props, state, context } = this;
- let { options } = context;
- let colCnt = props.cells.length;
- let businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt);
- let bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt);
- let highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt);
- let mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt);
- let { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops } = computeFgSegPlacement(sortEventSegs(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.segHeights, state.maxContentHeight, props.cells);
- let isForcedInvisible = (
- // TODO: messy way to compute this
- props.eventDrag && props.eventDrag.affectedInstances || props.eventResize && props.eventResize.affectedInstances || {}
- );
- return y(
- "tr",
- { ref: this.rootElRef, role: "row" },
- props.renderIntro && props.renderIntro(),
- props.cells.map((cell, col) => {
- let normalFgNodes = this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible);
- let mirrorFgNodes = this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false);
- return y(TableCell, { key: cell.key, elRef: this.cellElRefs.createRef(cell.key), innerElRef: this.frameElRefs.createRef(cell.key), dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers && col === 0, forceDayTop: props.showWeekNumbers, todayRange: props.todayRange, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, extraRenderProps: cell.extraRenderProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, moreCnt: moreCnts[col], moreMarginTop: moreMarginTops[col], singlePlacements: singleColPlacements[col], fgContentElRef: this.fgElRefs.createRef(cell.key), fgContent: (
- // Fragment scopes the keys
- y(
- _,
- null,
- y(_, null, normalFgNodes),
- y(_, null, mirrorFgNodes)
- )
- ), bgContent: (
- // Fragment scopes the keys
- y(
- _,
- null,
- this.renderFillSegs(highlightSegsByCol[col], "highlight"),
- this.renderFillSegs(businessHoursByCol[col], "non-business"),
- this.renderFillSegs(bgEventSegsByCol[col], "bg-event")
- )
- ), minHeight: props.cellMinHeight });
- })
- );
- }
- componentDidMount() {
- this.updateSizing(true);
- this.context.addResizeHandler(this.handleResize);
- }
- componentDidUpdate(prevProps, prevState) {
- let currentProps = this.props;
- this.updateSizing(!isPropsEqual(prevProps, currentProps));
- }
- componentWillUnmount() {
- this.context.removeResizeHandler(this.handleResize);
- }
- getHighlightSegs() {
- let { props } = this;
- if (props.eventDrag && props.eventDrag.segs.length) {
- return props.eventDrag.segs;
- }
- if (props.eventResize && props.eventResize.segs.length) {
- return props.eventResize.segs;
- }
- return props.dateSelectionSegs;
- }
- getMirrorSegs() {
- let { props } = this;
- if (props.eventResize && props.eventResize.segs.length) {
- return props.eventResize.segs;
- }
- return [];
- }
- renderFgSegs(col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) {
- let { context } = this;
- let { eventSelection } = this.props;
- let { framePositions } = this.state;
- let defaultDisplayEventEnd = this.props.cells.length === 1;
- let isMirror = isDragging || isResizing || isDateSelecting;
- let nodes = [];
- if (framePositions) {
- for (let placement of segPlacements) {
- let { seg } = placement;
- let { instanceId } = seg.eventRange.instance;
- let isVisible = placement.isVisible && !isForcedInvisible[instanceId];
- let isAbsolute = placement.isAbsolute;
- let left = "";
- let right = "";
- if (isAbsolute) {
- if (context.isRtl) {
- right = 0;
- left = framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol];
- } else {
- left = 0;
- right = framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol];
- }
- }
- nodes.push(y("div", { className: "fc-daygrid-event-harness" + (isAbsolute ? " fc-daygrid-event-harness-abs" : ""), key: generateSegKey(seg), ref: isMirror ? null : this.segHarnessRefs.createRef(generateSegUid(seg)), style: {
- visibility: isVisible ? "" : "hidden",
- marginTop: isAbsolute ? "" : placement.marginTop,
- top: isAbsolute ? placement.absoluteTop : "",
- left,
- right
- } }, hasListItemDisplay(seg) ? y(TableListItemEvent, Object.assign({ seg, isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd }, getSegMeta(seg, todayRange))) : y(TableBlockEvent, Object.assign({ seg, isDragging, isResizing, isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd }, getSegMeta(seg, todayRange)))));
- }
- }
- return nodes;
- }
- renderFillSegs(segs, fillType) {
- let { isRtl } = this.context;
- let { todayRange } = this.props;
- let { framePositions } = this.state;
- let nodes = [];
- if (framePositions) {
- for (let seg of segs) {
- let leftRightCss = isRtl ? {
- right: 0,
- left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol]
- } : {
- left: 0,
- right: framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol]
- };
- nodes.push(y("div", { key: buildEventRangeKey(seg.eventRange), className: "fc-daygrid-bg-harness", style: leftRightCss }, fillType === "bg-event" ? y(BgEvent, Object.assign({ seg }, getSegMeta(seg, todayRange))) : renderFill(fillType)));
- }
- }
- return y(_, {}, ...nodes);
- }
- updateSizing(isExternalSizingChange) {
- let { props, state, frameElRefs } = this;
- if (!props.forPrint && props.clientWidth !== null) {
- if (isExternalSizingChange) {
- let frameEls = props.cells.map((cell) => frameElRefs.currentMap[cell.key]);
- if (frameEls.length) {
- let originEl = this.rootElRef.current;
- let newPositionCache = new PositionCache(
- originEl,
- frameEls,
- true,
- // isHorizontal
- false
- );
- if (!state.framePositions || !state.framePositions.similarTo(newPositionCache)) {
- this.setState({
- framePositions: new PositionCache(
- originEl,
- frameEls,
- true,
- // isHorizontal
- false
- )
- });
- }
- }
- }
- const oldSegHeights = this.state.segHeights;
- const newSegHeights = this.querySegHeights();
- const limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true;
- 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?
- segHeights: Object.assign(Object.assign({}, oldSegHeights), newSegHeights),
- maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null
- });
- }
- }
- querySegHeights() {
- let segElMap = this.segHarnessRefs.currentMap;
- let segHeights = {};
- for (let segUid in segElMap) {
- let height = Math.round(segElMap[segUid].getBoundingClientRect().height);
- segHeights[segUid] = Math.max(segHeights[segUid] || 0, height);
- }
- return segHeights;
- }
- computeMaxContentHeight() {
- let firstKey = this.props.cells[0].key;
- let cellEl = this.cellElRefs.currentMap[firstKey];
- let fcContainerEl = this.fgElRefs.currentMap[firstKey];
- return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top;
- }
- getCellEls() {
- let elMap = this.cellElRefs.currentMap;
- return this.props.cells.map((cell) => elMap[cell.key]);
- }
- };
- TableRow.addStateEquality({
- segHeights: isPropsEqual
- });
- function buildMirrorPlacements(mirrorSegs, colPlacements) {
- if (!mirrorSegs.length) {
- return [];
- }
- let topsByInstanceId = buildAbsoluteTopHash(colPlacements);
- return mirrorSegs.map((seg) => ({
- seg,
- isVisible: true,
- isAbsolute: true,
- absoluteTop: topsByInstanceId[seg.eventRange.instance.instanceId],
- marginTop: 0
- }));
- }
- function buildAbsoluteTopHash(colPlacements) {
- let topsByInstanceId = {};
- for (let placements of colPlacements) {
- for (let placement of placements) {
- topsByInstanceId[placement.seg.eventRange.instance.instanceId] = placement.absoluteTop;
- }
- }
- return topsByInstanceId;
- }
- var TableRows = class extends DateComponent {
- constructor() {
- super(...arguments);
- this.splitBusinessHourSegs = memoize(splitSegsByRow);
- this.splitBgEventSegs = memoize(splitSegsByRow);
- this.splitFgEventSegs = memoize(splitSegsByRow);
- this.splitDateSelectionSegs = memoize(splitSegsByRow);
- this.splitEventDrag = memoize(splitInteractionByRow);
- this.splitEventResize = memoize(splitInteractionByRow);
- this.rowRefs = new RefMap();
- }
- render() {
- let { props, context } = this;
- let rowCnt = props.cells.length;
- let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt);
- let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt);
- let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt);
- let dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt);
- let eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt);
- let eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt);
- let cellMinHeight = rowCnt >= 7 && props.clientWidth ? props.clientWidth / context.options.aspectRatio / 6 : null;
- return y(NowTimer, { unit: "day" }, (nowDate, todayRange) => y(_, null, props.cells.map((cells, row) => y(TableRow, {
- ref: this.rowRefs.createRef(row),
- key: cells.length ? cells[0].date.toISOString() : row,
- showDayNumbers: rowCnt > 1,
- showWeekNumbers: props.showWeekNumbers,
- todayRange,
- dateProfile: props.dateProfile,
- cells,
- renderIntro: props.renderRowIntro,
- businessHourSegs: businessHourSegsByRow[row],
- eventSelection: props.eventSelection,
- bgEventSegs: bgEventSegsByRow[row].filter(isSegAllDay),
- fgEventSegs: fgEventSegsByRow[row],
- dateSelectionSegs: dateSelectionSegsByRow[row],
- eventDrag: eventDragByRow[row],
- eventResize: eventResizeByRow[row],
- dayMaxEvents: props.dayMaxEvents,
- dayMaxEventRows: props.dayMaxEventRows,
- clientWidth: props.clientWidth,
- clientHeight: props.clientHeight,
- cellMinHeight,
- forPrint: props.forPrint
- }))));
- }
- componentDidMount() {
- this.registerInteractiveComponent();
- }
- componentDidUpdate() {
- this.registerInteractiveComponent();
- }
- registerInteractiveComponent() {
- if (!this.rootEl) {
- const firstCellEl = this.rowRefs.currentMap[0].getCellEls()[0];
- const rootEl = firstCellEl ? firstCellEl.closest(".fc-daygrid-body") : null;
- if (rootEl) {
- this.rootEl = rootEl;
- this.context.registerInteractiveComponent(this, {
- el: rootEl,
- isHitComboAllowed: this.props.isHitComboAllowed
- });
- }
- }
- }
- componentWillUnmount() {
- if (this.rootEl) {
- this.context.unregisterInteractiveComponent(this);
- this.rootEl = null;
- }
- }
- // Hit System
- // ----------------------------------------------------------------------------------------------------
- prepareHits() {
- this.rowPositions = new PositionCache(
- this.rootEl,
- this.rowRefs.collect().map((rowObj) => rowObj.getCellEls()[0]),
- // first cell el in each row. TODO: not optimal
- false,
- true
- );
- this.colPositions = new PositionCache(
- this.rootEl,
- this.rowRefs.currentMap[0].getCellEls(),
- // cell els in first row
- true,
- // horizontal
- false
- );
- }
- queryHit(positionLeft, positionTop) {
- let { colPositions, rowPositions } = this;
- let col = colPositions.leftToIndex(positionLeft);
- let row = rowPositions.topToIndex(positionTop);
- if (row != null && col != null) {
- let cell = this.props.cells[row][col];
- return {
- dateProfile: this.props.dateProfile,
- dateSpan: Object.assign({ range: this.getCellRange(row, col), allDay: true }, cell.extraDateSpan),
- dayEl: this.getCellEl(row, col),
- rect: {
- left: colPositions.lefts[col],
- right: colPositions.rights[col],
- top: rowPositions.tops[row],
- bottom: rowPositions.bottoms[row]
- },
- layer: 0
- };
- }
- return null;
- }
- getCellEl(row, col) {
- return this.rowRefs.currentMap[row].getCellEls()[col];
- }
- getCellRange(row, col) {
- let start = this.props.cells[row][col].date;
- let end = addDays(start, 1);
- return { start, end };
- }
- };
- function isSegAllDay(seg) {
- return seg.eventRange.def.allDay;
- }
- var Table = class extends DateComponent {
- constructor() {
- super(...arguments);
- this.elRef = d();
- this.needsScrollReset = false;
- }
- render() {
- let { props } = this;
- let { dayMaxEventRows, dayMaxEvents, expandRows } = props;
- let limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true;
- if (limitViaBalanced && !expandRows) {
- limitViaBalanced = false;
- dayMaxEventRows = null;
- dayMaxEvents = null;
- }
- let classNames = [
- "fc-daygrid-body",
- limitViaBalanced ? "fc-daygrid-body-balanced" : "fc-daygrid-body-unbalanced",
- expandRows ? "" : "fc-daygrid-body-natural"
- // will height of one row depend on the others?
- ];
- return y(
- "div",
- { ref: this.elRef, className: classNames.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: props.clientWidth,
- minWidth: props.tableMinWidth
- } },
- y(
- "table",
- { role: "presentation", className: "fc-scrollgrid-sync-table", style: {
- width: props.clientWidth,
- minWidth: props.tableMinWidth,
- height: expandRows ? props.clientHeight : ""
- } },
- props.colGroupNode,
- y(
- "tbody",
- { role: "presentation" },
- y(TableRows, { dateProfile: props.dateProfile, cells: props.cells, renderRowIntro: props.renderRowIntro, showWeekNumbers: props.showWeekNumbers, clientWidth: props.clientWidth, clientHeight: props.clientHeight, businessHourSegs: props.businessHourSegs, bgEventSegs: props.bgEventSegs, fgEventSegs: props.fgEventSegs, dateSelectionSegs: props.dateSelectionSegs, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, dayMaxEvents, dayMaxEventRows, forPrint: props.forPrint, isHitComboAllowed: props.isHitComboAllowed })
- )
- )
- );
- }
- componentDidMount() {
- this.requestScrollReset();
- }
- componentDidUpdate(prevProps) {
- if (prevProps.dateProfile !== this.props.dateProfile) {
- this.requestScrollReset();
- } else {
- this.flushScrollReset();
- }
- }
- requestScrollReset() {
- this.needsScrollReset = true;
- this.flushScrollReset();
- }
- flushScrollReset() {
- if (this.needsScrollReset && this.props.clientWidth) {
- const subjectEl = getScrollSubjectEl(this.elRef.current, this.props.dateProfile);
- if (subjectEl) {
- const originEl = subjectEl.closest(".fc-daygrid-body");
- const scrollEl = originEl.closest(".fc-scroller");
- const scrollTop = subjectEl.getBoundingClientRect().top - originEl.getBoundingClientRect().top;
- scrollEl.scrollTop = scrollTop ? scrollTop + 1 : 0;
- }
- this.needsScrollReset = false;
- }
- }
- };
- function getScrollSubjectEl(containerEl, dateProfile) {
- let el;
- if (dateProfile.currentRangeUnit.match(/year|month/)) {
- el = containerEl.querySelector(`[data-date="${formatIsoMonthStr(dateProfile.currentDate)}-01"]`);
- }
- if (!el) {
- el = containerEl.querySelector(`[data-date="${formatDayString(dateProfile.currentDate)}"]`);
- }
- return el;
- }
- var DayTableSlicer = class extends Slicer {
- constructor() {
- super(...arguments);
- this.forceDayIfListItem = true;
- }
- sliceRange(dateRange, dayTableModel) {
- return dayTableModel.sliceRange(dateRange);
- }
- };
- var DayTable = class extends DateComponent {
- constructor() {
- super(...arguments);
- this.slicer = new DayTableSlicer();
- this.tableRef = d();
- }
- render() {
- let { props, context } = this;
- return y(Table, Object.assign({ ref: this.tableRef }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint }));
- }
- };
- var DayTableView = class extends TableView {
- constructor() {
- super(...arguments);
- this.buildDayTableModel = memoize(buildDayTableModel);
- this.headerRef = d();
- this.tableRef = d();
- }
- render() {
- let { options, dateProfileGenerator } = this.context;
- let { props } = this;
- let dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator);
- let headerContent = options.dayHeaders && y(DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 });
- let bodyContent = (contentArg) => y(DayTable, { ref: this.tableRef, dateProfile: props.dateProfile, dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint });
- return options.dayMinWidth ? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth) : this.renderSimpleLayout(headerContent, bodyContent);
- }
- };
- function buildDayTableModel(dateProfile, dateProfileGenerator) {
- let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);
- return new DayTableModel(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit));
- }
- var TableDateProfileGenerator = class extends DateProfileGenerator {
- // Computes the date range that will be rendered
- buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay) {
- let renderRange = super.buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay);
- let { props } = this;
- return buildDayTableRenderRange({
- currentRange: renderRange,
- snapToWeek: /^(year|month)$/.test(currentRangeUnit),
- fixedWeekCount: props.fixedWeekCount,
- dateEnv: props.dateEnv
- });
- }
- };
- function buildDayTableRenderRange(props) {
- let { dateEnv, currentRange } = props;
- let { start, end } = currentRange;
- let endOfWeek;
- if (props.snapToWeek) {
- start = dateEnv.startOfWeek(start);
- endOfWeek = dateEnv.startOfWeek(end);
- if (endOfWeek.valueOf() !== end.valueOf()) {
- end = addWeeks(endOfWeek, 1);
- }
- }
- if (props.fixedWeekCount) {
- let lastMonthRenderStart = dateEnv.startOfWeek(dateEnv.startOfMonth(addDays(currentRange.end, -1)));
- let rowCnt = Math.ceil(
- // could be partial weeks due to hiddenDays
- diffWeeks(lastMonthRenderStart, end)
- );
- end = addWeeks(end, 6 - rowCnt);
- }
- return { start, end };
- }
- var css_248z = ':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}';
- injectStyles(css_248z);
- export {
- DayTable,
- DayTableView,
- TableDateProfileGenerator
- };
- //# sourceMappingURL=chunk-INZMDDGR.js.map
|