fullcalendar 6.0.0-beta.2 → 6.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.global.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Standard Bundle v6.0.0-beta.2
2
+ FullCalendar Standard Bundle v6.0.0-beta.4
3
3
  Docs & License: https://fullcalendar.io/
4
4
  (c) 2022 Adam Shaw
5
5
  */
@@ -12,59 +12,6 @@ var FullCalendar = (function (exports) {
12
12
 
13
13
  function g(n,t){for(var e in t)n[e]=t[e];return n}function C(n,t){for(var e in n)if("__source"!==e&&!(e in t))return !0;for(var r in t)if("__source"!==r&&n[r]!==t[r])return !0;return !1}function w(n){this.props=n;}(w.prototype=new d).isPureReactComponent=!0,w.prototype.shouldComponentUpdate=function(n,t){return C(this.props,n)||C(this.state,t)};var x=l$1.__b;l$1.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),x&&x(n);};var T=l$1.__e;l$1.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);T(n,t,e,r);};var I=l$1.unmount;function L(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){"function"==typeof n.__c&&n.__c();}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return L(n,t,e)})),n}function U(n,t,e){return n&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return U(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.insertBefore(n.__e,n.__d),n.__c.__e=!0,n.__c.__P=e)),n}function D(){this.__u=0,this.t=null,this.__b=null;}function F(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function V(){this.u=null,this.o=null;}l$1.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),I&&I(n);},(D.prototype=new d).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=F(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l());};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=U(n,n.__c.__P,n.__c.__O);}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate();}},c=!0===t.__h;r.__u++||c||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i);},D.prototype.componentWillUnmount=function(){this.t=[];},D.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),o=this.__v.__k[0].__c;this.__v.__k[0]=L(this.__b,r,o.__O=o.__P);}this.__b=null;}var i=e.__a&&h(p,null,n.fallback);return i&&(i.__h=null),[h(p,null,e.__a?null:n.children),i]};var W=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&("t"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.u=e=e[2];}};function P(n){return this.getChildContext=function(){return n.context},n.children}function $(n){var e=this,r=n.i;e.componentWillUnmount=function(){P$1(null,e.l),e.l=null,e.i=null;},e.i&&e.i!==r&&e.componentWillUnmount(),n.__v?(e.l||(e.i=r,e.l={nodeType:1,parentNode:r,childNodes:[],appendChild:function(n){this.childNodes.push(n),e.i.appendChild(n);},insertBefore:function(n,t){this.childNodes.push(n),e.i.appendChild(n);},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.i.removeChild(n);}}),P$1(h(P,{context:e.context},n.__v),e.l)):e.l&&e.componentWillUnmount();}function j(n,e){var r=h($,{__v:n,i:e});return r.containerInfo=e,r}(V.prototype=new d).__a=function(n){var t=this,e=F(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),W(t,n,r)):u();};e?e(o):o();}},V.prototype.render=function(n){this.u=null,this.o=new Map;var t=x$1(n.children);n.revealOrder&&"b"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},V.prototype.componentDidUpdate=V.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){W(n,e,t);});};var z="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,B=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,H="undefined"!=typeof document,Z=function(n){return ("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};d.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(d.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n});}});});var G=l$1.event;function J(){}function K(){return this.cancelBubble}function Q(){return this.defaultPrevented}l$1.event=function(n){return G&&(n=G(n)),n.persist=J,n.isPropagationStopped=K,n.isDefaultPrevented=Q,n.nativeEvent=n};var nn={configurable:!0,get:function(){return this.class}},tn=l$1.vnode;l$1.vnode=function(n){var t=n.type,e=n.props,u=e;if("string"==typeof t){var o=-1===t.indexOf("-");for(var i in u={},e){var l=e[i];H&&"children"===i&&"noscript"===t||"value"===i&&"defaultValue"in e&&null==l||("defaultValue"===i&&"value"in e&&null==e.value?i="value":"download"===i&&!0===l?l="":/ondoubleclick/i.test(i)?i="ondblclick":/^onchange(textarea|input)/i.test(i+t)&&!Z(e.type)?i="oninput":/^onfocus$/i.test(i)?i="onfocusin":/^onblur$/i.test(i)?i="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i)?i=i.toLowerCase():o&&B.test(i)?i=i.replace(/[A-Z0-9]/g,"-$&").toLowerCase():null===l&&(l=void 0),/^oninput$/i.test(i)&&(i=i.toLowerCase(),u[i]&&(i="oninputCapture")),u[i]=l);}"select"==t&&u.multiple&&Array.isArray(u.value)&&(u.value=x$1(e.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value);})),"select"==t&&null!=u.defaultValue&&(u.value=x$1(e.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value;})),n.props=u,e.class!=e.className&&(nn.enumerable="className"in e,null!=e.className&&(u.class=e.className),Object.defineProperty(u,"className",nn));}n.$$typeof=z,tn&&tn(n);};var en=l$1.__r;l$1.__r=function(n){en&&en(n),n.__c;};
14
14
 
15
- /*
16
- NOTE: this can be a public API, especially createElement for hooks.
17
- See examples/typescript-scheduler/src/index.ts
18
- */
19
- function flushSync(runBeforeFlush) {
20
- runBeforeFlush();
21
- let oldDebounceRendering = l$1.debounceRendering; // orig
22
- let callbackQ = [];
23
- function execCallbackSync(callback) {
24
- callbackQ.push(callback);
25
- }
26
- l$1.debounceRendering = execCallbackSync;
27
- P$1(h(FakeComponent, {}), document.createElement('div'));
28
- while (callbackQ.length) {
29
- callbackQ.shift()();
30
- }
31
- l$1.debounceRendering = oldDebounceRendering;
32
- }
33
- class FakeComponent extends d {
34
- render() { return h('div', {}); }
35
- componentDidMount() { this.setState({}); }
36
- }
37
- // TODO: use preact/compat instead?
38
- function createContext(defaultValue) {
39
- let ContextType = B$1(defaultValue);
40
- let origProvider = ContextType.Provider;
41
- ContextType.Provider = function () {
42
- let isNew = !this.getChildContext;
43
- let children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params
44
- if (isNew) {
45
- let subs = [];
46
- this.shouldComponentUpdate = (_props) => {
47
- if (this.props.value !== _props.value) {
48
- subs.forEach((c) => {
49
- c.context = _props.value;
50
- c.forceUpdate();
51
- });
52
- }
53
- };
54
- this.sub = (c) => {
55
- subs.push(c);
56
- let old = c.componentWillUnmount;
57
- c.componentWillUnmount = () => {
58
- subs.splice(subs.indexOf(c), 1);
59
- old && old.call(c);
60
- };
61
- };
62
- }
63
- return children;
64
- };
65
- return ContextType;
66
- }
67
-
68
15
  function injectStyles(css) {
69
16
  if (!css || typeof document === 'undefined') {
70
17
  return;
@@ -305,6 +252,22 @@ var FullCalendar = (function (exports) {
305
252
  }
306
253
 
307
254
  const globalLocales = [];
255
+
256
+ // TODO: new util arrayify?
257
+ function removeExact(array, exactVal) {
258
+ let removeCnt = 0;
259
+ let i = 0;
260
+ while (i < array.length) {
261
+ if (array[i] === exactVal) {
262
+ array.splice(i, 1);
263
+ removeCnt += 1;
264
+ }
265
+ else {
266
+ i += 1;
267
+ }
268
+ }
269
+ return removeCnt;
270
+ }
308
271
  function isArraysEqual(a0, a1, equalityFunc) {
309
272
  if (a0 === a1) {
310
273
  return true;
@@ -362,6 +325,65 @@ var FullCalendar = (function (exports) {
362
325
  return currentRes;
363
326
  };
364
327
  }
328
+ function memoizeArraylike(// used at all?
329
+ workerFunc, resEquality, teardownFunc) {
330
+ let currentArgSets = [];
331
+ let currentResults = [];
332
+ return (newArgSets) => {
333
+ let currentLen = currentArgSets.length;
334
+ let newLen = newArgSets.length;
335
+ let i = 0;
336
+ for (; i < currentLen; i += 1) {
337
+ if (!newArgSets[i]) { // one of the old sets no longer exists
338
+ if (teardownFunc) {
339
+ teardownFunc(currentResults[i]);
340
+ }
341
+ }
342
+ else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) {
343
+ if (teardownFunc) {
344
+ teardownFunc(currentResults[i]);
345
+ }
346
+ let res = workerFunc.apply(this, newArgSets[i]);
347
+ if (!resEquality || !resEquality(res, currentResults[i])) {
348
+ currentResults[i] = res;
349
+ }
350
+ }
351
+ }
352
+ for (; i < newLen; i += 1) {
353
+ currentResults[i] = workerFunc.apply(this, newArgSets[i]);
354
+ }
355
+ currentArgSets = newArgSets;
356
+ currentResults.splice(newLen); // remove excess
357
+ return currentResults;
358
+ };
359
+ }
360
+ function memoizeHashlike(workerFunc, resEquality, teardownFunc) {
361
+ let currentArgHash = {};
362
+ let currentResHash = {};
363
+ return (newArgHash) => {
364
+ let newResHash = {};
365
+ for (let key in newArgHash) {
366
+ if (!currentResHash[key]) {
367
+ newResHash[key] = workerFunc.apply(this, newArgHash[key]);
368
+ }
369
+ else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {
370
+ if (teardownFunc) {
371
+ teardownFunc(currentResHash[key]);
372
+ }
373
+ let res = workerFunc.apply(this, newArgHash[key]);
374
+ newResHash[key] = (resEquality && resEquality(res, currentResHash[key]))
375
+ ? currentResHash[key]
376
+ : res;
377
+ }
378
+ else {
379
+ newResHash[key] = currentResHash[key];
380
+ }
381
+ }
382
+ currentArgHash = newArgHash;
383
+ currentResHash = newResHash;
384
+ return newResHash;
385
+ };
386
+ }
365
387
 
366
388
  function removeElement(el) {
367
389
  if (el.parentNode) {
@@ -405,6 +427,22 @@ var FullCalendar = (function (exports) {
405
427
  }
406
428
  return allMatches;
407
429
  }
430
+ // accepts multiple subject els
431
+ // only queries direct child elements // TODO: rename to findDirectChildren!
432
+ function findDirectChildren(parent, selector) {
433
+ let parents = parent instanceof HTMLElement ? [parent] : parent;
434
+ let allMatches = [];
435
+ for (let i = 0; i < parents.length; i += 1) {
436
+ let childNodes = parents[i].children; // only ever elements
437
+ for (let j = 0; j < childNodes.length; j += 1) {
438
+ let childNode = childNodes[j];
439
+ if (!selector || elementMatches(childNode, selector)) {
440
+ allMatches.push(childNode);
441
+ }
442
+ }
443
+ }
444
+ return allMatches;
445
+ }
408
446
  // Style
409
447
  // ----------------------------------------------------------------------------------------------------------------
410
448
  const PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i;
@@ -1058,6 +1096,12 @@ var FullCalendar = (function (exports) {
1058
1096
  d0.days === d1.days &&
1059
1097
  d0.milliseconds === d1.milliseconds;
1060
1098
  }
1099
+ function asCleanDays(dur) {
1100
+ if (!dur.years && !dur.months && !dur.milliseconds) {
1101
+ return dur.days;
1102
+ }
1103
+ return 0;
1104
+ }
1061
1105
  // Simple Math
1062
1106
  function addDurations(d0, d1) {
1063
1107
  return {
@@ -1094,6 +1138,12 @@ var FullCalendar = (function (exports) {
1094
1138
  function asRoughDays(dur) {
1095
1139
  return asRoughMs(dur) / 864e5;
1096
1140
  }
1141
+ function asRoughMinutes(dur) {
1142
+ return asRoughMs(dur) / (1000 * 60);
1143
+ }
1144
+ function asRoughSeconds(dur) {
1145
+ return asRoughMs(dur) / 1000;
1146
+ }
1097
1147
  function asRoughMs(dur) {
1098
1148
  return dur.years * (365 * 864e5) +
1099
1149
  dur.months * (30 * 864e5) +
@@ -2106,6 +2156,7 @@ var FullCalendar = (function (exports) {
2106
2156
  // (can't be part of plugin system b/c must be provided at runtime)
2107
2157
  handleCustomRendering: identity,
2108
2158
  customRenderingMetaMap: identity,
2159
+ customRenderingReplacesEl: Boolean,
2109
2160
  };
2110
2161
  // do NOT give a type here. need `typeof BASE_OPTION_DEFAULTS` to give real results.
2111
2162
  // raw values.
@@ -2248,6 +2299,59 @@ var FullCalendar = (function (exports) {
2248
2299
  return raw;
2249
2300
  }
2250
2301
 
2302
+ /*
2303
+ NOTE: this can be a public API, especially createElement for hooks.
2304
+ See examples/typescript-scheduler/src/index.ts
2305
+ */
2306
+ function flushSync(runBeforeFlush) {
2307
+ runBeforeFlush();
2308
+ let oldDebounceRendering = l$1.debounceRendering; // orig
2309
+ let callbackQ = [];
2310
+ function execCallbackSync(callback) {
2311
+ callbackQ.push(callback);
2312
+ }
2313
+ l$1.debounceRendering = execCallbackSync;
2314
+ P$1(h(FakeComponent, {}), document.createElement('div'));
2315
+ while (callbackQ.length) {
2316
+ callbackQ.shift()();
2317
+ }
2318
+ l$1.debounceRendering = oldDebounceRendering;
2319
+ }
2320
+ class FakeComponent extends d {
2321
+ render() { return h('div', {}); }
2322
+ componentDidMount() { this.setState({}); }
2323
+ }
2324
+ // TODO: use preact/compat instead?
2325
+ function createContext(defaultValue) {
2326
+ let ContextType = B$1(defaultValue);
2327
+ let origProvider = ContextType.Provider;
2328
+ ContextType.Provider = function () {
2329
+ let isNew = !this.getChildContext;
2330
+ let children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params
2331
+ if (isNew) {
2332
+ let subs = [];
2333
+ this.shouldComponentUpdate = (_props) => {
2334
+ if (this.props.value !== _props.value) {
2335
+ subs.forEach((c) => {
2336
+ c.context = _props.value;
2337
+ c.forceUpdate();
2338
+ });
2339
+ }
2340
+ };
2341
+ this.sub = (c) => {
2342
+ subs.push(c);
2343
+ let old = c.componentWillUnmount;
2344
+ c.componentWillUnmount = () => {
2345
+ subs.splice(subs.indexOf(c), 1);
2346
+ old && old.call(c);
2347
+ };
2348
+ };
2349
+ }
2350
+ return children;
2351
+ };
2352
+ return ContextType;
2353
+ }
2354
+
2251
2355
  class ScrollResponder {
2252
2356
  constructor(execFunc, emitter, scrollTime, scrollTimeReset) {
2253
2357
  this.execFunc = execFunc;
@@ -2365,6 +2469,11 @@ var FullCalendar = (function (exports) {
2365
2469
  this.id = guid();
2366
2470
  this.currentDomNodes = [];
2367
2471
  this.queuedDomNodes = [];
2472
+ this.handleEl = (el) => {
2473
+ if (this.props.elRef) {
2474
+ setRef(this.props.elRef, el);
2475
+ }
2476
+ };
2368
2477
  }
2369
2478
  render() {
2370
2479
  const { props, context } = this;
@@ -2373,7 +2482,12 @@ var FullCalendar = (function (exports) {
2373
2482
  const attrs = buildElAttrs(props);
2374
2483
  let innerContent;
2375
2484
  let queuedDomNodes = [];
2376
- if (!hasCustomRenderingHandler(props.generatorName, options)) {
2485
+ if (hasCustomRenderingHandler(props.generatorName, options)) {
2486
+ if (options.customRenderingReplacesEl) {
2487
+ delete attrs.elRef; // because handleEl will be used
2488
+ }
2489
+ }
2490
+ else {
2377
2491
  const customContent = typeof generator === 'function' ?
2378
2492
  generator(renderProps, h) :
2379
2493
  generator;
@@ -2398,7 +2512,7 @@ var FullCalendar = (function (exports) {
2398
2512
  this.applyQueueudDomNodes();
2399
2513
  this.triggerCustomRendering(true);
2400
2514
  }
2401
- componentDidUpdate(oldProps) {
2515
+ componentDidUpdate() {
2402
2516
  this.applyQueueudDomNodes();
2403
2517
  this.triggerCustomRendering(true);
2404
2518
  }
@@ -2411,7 +2525,7 @@ var FullCalendar = (function (exports) {
2411
2525
  if (handleCustomRendering) {
2412
2526
  const customRenderingMeta = customRenderingMetaMap === null || customRenderingMetaMap === void 0 ? void 0 : customRenderingMetaMap[props.generatorName];
2413
2527
  if (customRenderingMeta) {
2414
- handleCustomRendering(Object.assign({ id: this.id, isActive, containerEl: this.base, generatorMeta: customRenderingMeta }, props));
2528
+ handleCustomRendering(Object.assign({ id: this.id, isActive, containerEl: this.base, reportNewContainerEl: this.handleEl, generatorMeta: customRenderingMeta }, props));
2415
2529
  }
2416
2530
  }
2417
2531
  }
@@ -3541,12 +3655,17 @@ var FullCalendar = (function (exports) {
3541
3655
  rawEvents,
3542
3656
  });
3543
3657
  }, (error) => {
3544
- console.warn(error.message, error);
3658
+ let errorHandled = false;
3545
3659
  if (options.eventSourceFailure) {
3546
3660
  options.eventSourceFailure.call(calendarApi, error);
3661
+ errorHandled = true;
3547
3662
  }
3548
3663
  if (eventSource.failure) {
3549
3664
  eventSource.failure(error);
3665
+ errorHandled = true;
3666
+ }
3667
+ if (!errorHandled) {
3668
+ console.warn(error.message, error);
3550
3669
  }
3551
3670
  context.dispatch({
3552
3671
  type: 'RECEIVE_EVENT_ERROR',
@@ -4651,26 +4770,26 @@ var FullCalendar = (function (exports) {
4651
4770
  };
4652
4771
  }
4653
4772
 
4654
- // given a function that resolves a result asynchronously.
4655
- // the function can either call passed-in success and failure callbacks,
4656
- // or it can return a promise.
4657
- // if you need to pass additional params to func, bind them first.
4658
- function unpromisify(func, success, failure) {
4773
+ /*
4774
+ given a function that resolves a result asynchronously.
4775
+ the function can either call passed-in success and failure callbacks,
4776
+ or it can return a promise.
4777
+ if you need to pass additional params to func, bind them first.
4778
+ */
4779
+ function unpromisify(func, normalizedSuccessCallback, normalizedFailureCallback) {
4659
4780
  // guard against success/failure callbacks being called more than once
4660
4781
  // and guard against a promise AND callback being used together.
4661
4782
  let isResolved = false;
4662
- let wrappedSuccess = function () {
4783
+ let wrappedSuccess = function (res) {
4663
4784
  if (!isResolved) {
4664
4785
  isResolved = true;
4665
- success.apply(this, arguments); // eslint-disable-line prefer-rest-params
4786
+ normalizedSuccessCallback(res);
4666
4787
  }
4667
4788
  };
4668
- let wrappedFailure = function () {
4789
+ let wrappedFailure = function (error) {
4669
4790
  if (!isResolved) {
4670
4791
  isResolved = true;
4671
- if (failure) {
4672
- failure.apply(this, arguments); // eslint-disable-line prefer-rest-params
4673
- }
4792
+ normalizedFailureCallback(error);
4674
4793
  }
4675
4794
  };
4676
4795
  let res = func(wrappedSuccess, wrappedFailure);
@@ -5434,6 +5553,14 @@ var FullCalendar = (function (exports) {
5434
5553
  }
5435
5554
  return false;
5436
5555
  }
5556
+ function translateRect(rect, deltaX, deltaY) {
5557
+ return {
5558
+ left: rect.left + deltaX,
5559
+ right: rect.right + deltaX,
5560
+ top: rect.top + deltaY,
5561
+ bottom: rect.bottom + deltaY,
5562
+ };
5563
+ }
5437
5564
  // Returns a new point that will have been moved to reside within the given rectangle
5438
5565
  function constrainPoint(point, rect) {
5439
5566
  return {
@@ -5619,6 +5746,28 @@ var FullCalendar = (function (exports) {
5619
5746
  }
5620
5747
  return classNames;
5621
5748
  }
5749
+ function getSlotClassNames(meta, theme) {
5750
+ let classNames = [
5751
+ 'fc-slot',
5752
+ `fc-slot-${DAY_IDS[meta.dow]}`,
5753
+ ];
5754
+ if (meta.isDisabled) {
5755
+ classNames.push('fc-slot-disabled');
5756
+ }
5757
+ else {
5758
+ if (meta.isToday) {
5759
+ classNames.push('fc-slot-today');
5760
+ classNames.push(theme.getClass('today'));
5761
+ }
5762
+ if (meta.isPast) {
5763
+ classNames.push('fc-slot-past');
5764
+ }
5765
+ if (meta.isFuture) {
5766
+ classNames.push('fc-slot-future');
5767
+ }
5768
+ }
5769
+ return classNames;
5770
+ }
5622
5771
 
5623
5772
  const DAY_FORMAT = createFormatter({ year: 'numeric', month: 'long', day: 'numeric' });
5624
5773
  const WEEK_FORMAT = createFormatter({ week: 'long' });
@@ -5986,6 +6135,12 @@ var FullCalendar = (function (exports) {
5986
6135
  }
5987
6136
  }
5988
6137
 
6138
+ class NamedTimeZoneImpl {
6139
+ constructor(timeZoneName) {
6140
+ this.timeZoneName = timeZoneName;
6141
+ }
6142
+ }
6143
+
5989
6144
  class SegHierarchy {
5990
6145
  constructor() {
5991
6146
  // settings
@@ -7272,7 +7427,12 @@ var FullCalendar = (function (exports) {
7272
7427
  class EventContainer extends BaseComponent {
7273
7428
  constructor() {
7274
7429
  super(...arguments);
7275
- this.elRef = y();
7430
+ this.handleEl = (el) => {
7431
+ if (el) {
7432
+ setElSeg(el, this.props.seg);
7433
+ }
7434
+ // TODO: when null, should unset to avoid memory leaks?
7435
+ };
7276
7436
  }
7277
7437
  render() {
7278
7438
  const { props, context } = this;
@@ -7300,15 +7460,12 @@ var FullCalendar = (function (exports) {
7300
7460
  isDragging: Boolean(props.isDragging),
7301
7461
  isResizing: Boolean(props.isResizing),
7302
7462
  };
7303
- return (h(ContentContainer, Object.assign({}, props /* contains children */, { elRef: this.elRef, elClasses: [
7463
+ return (h(ContentContainer, Object.assign({}, props /* contains children */, { elRef: this.handleEl, elClasses: [
7304
7464
  ...getEventClassNames(renderProps),
7305
7465
  ...seg.eventRange.ui.classNames,
7306
7466
  ...(props.elClasses || []),
7307
7467
  ], renderProps: renderProps, generatorName: "eventContent", generator: options.eventContent || props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount })));
7308
7468
  }
7309
- componentDidMount() {
7310
- setElSeg(this.elRef.current, this.props.seg);
7311
- }
7312
7469
  }
7313
7470
 
7314
7471
  // should not be a purecomponent
@@ -7650,6 +7807,242 @@ var FullCalendar = (function (exports) {
7650
7807
  return seg0.eventRange.range.end > seg1.eventRange.range.end ? seg0 : seg1;
7651
7808
  }
7652
7809
 
7810
+ class Store {
7811
+ constructor() {
7812
+ this.handlers = [];
7813
+ }
7814
+ set(value) {
7815
+ this.currentValue = value;
7816
+ for (let handler of this.handlers) {
7817
+ handler(value);
7818
+ }
7819
+ }
7820
+ subscribe(handler) {
7821
+ this.handlers.push(handler);
7822
+ if (this.currentValue !== undefined) {
7823
+ handler(this.currentValue);
7824
+ }
7825
+ }
7826
+ }
7827
+
7828
+ /*
7829
+ Subscribers will get a LIST of CustomRenderings
7830
+ */
7831
+ class CustomRenderingStore extends Store {
7832
+ constructor() {
7833
+ super(...arguments);
7834
+ this.map = new Map();
7835
+ }
7836
+ // for consistent order
7837
+ handle(customRendering) {
7838
+ const { map } = this;
7839
+ let updated = false;
7840
+ if (customRendering.isActive) {
7841
+ map.set(customRendering.id, customRendering);
7842
+ updated = true;
7843
+ }
7844
+ else if (map.has(customRendering.id)) {
7845
+ map.delete(customRendering.id);
7846
+ updated = true;
7847
+ }
7848
+ if (updated) {
7849
+ this.set(map);
7850
+ }
7851
+ }
7852
+ }
7853
+
7854
+ var internal = {
7855
+ __proto__: null,
7856
+ BASE_OPTION_DEFAULTS: BASE_OPTION_DEFAULTS,
7857
+ BaseComponent: BaseComponent,
7858
+ BgEvent: BgEvent,
7859
+ CalendarImpl: CalendarImpl,
7860
+ CalendarRoot: CalendarRoot,
7861
+ ContentContainer: ContentContainer,
7862
+ CustomRenderingStore: CustomRenderingStore,
7863
+ DateComponent: DateComponent,
7864
+ DateEnv: DateEnv,
7865
+ DateProfileGenerator: DateProfileGenerator,
7866
+ DayCellContainer: DayCellContainer,
7867
+ DayHeader: DayHeader,
7868
+ DaySeriesModel: DaySeriesModel,
7869
+ DayTableModel: DayTableModel,
7870
+ DelayedRunner: DelayedRunner,
7871
+ ElementDragging: ElementDragging,
7872
+ ElementScrollController: ElementScrollController,
7873
+ Emitter: Emitter,
7874
+ EventContainer: EventContainer,
7875
+ EventImpl: EventImpl,
7876
+ Interaction: Interaction,
7877
+ MoreLinkContainer: MoreLinkContainer,
7878
+ NamedTimeZoneImpl: NamedTimeZoneImpl,
7879
+ NowIndicatorContainer: NowIndicatorContainer,
7880
+ NowTimer: NowTimer,
7881
+ PositionCache: PositionCache,
7882
+ RefMap: RefMap,
7883
+ ScrollController: ScrollController,
7884
+ ScrollResponder: ScrollResponder,
7885
+ Scroller: Scroller,
7886
+ SegHierarchy: SegHierarchy,
7887
+ SimpleScrollGrid: SimpleScrollGrid,
7888
+ Slicer: Slicer,
7889
+ Splitter: Splitter,
7890
+ StandardEvent: StandardEvent,
7891
+ TableDateCell: TableDateCell,
7892
+ TableDowCell: TableDowCell,
7893
+ Theme: Theme,
7894
+ ViewContainer: ViewContainer$1,
7895
+ ViewContextType: ViewContextType,
7896
+ WeekNumberContainer: WeekNumberContainer,
7897
+ WindowScrollController: WindowScrollController,
7898
+ addDays: addDays,
7899
+ addDurations: addDurations,
7900
+ addMs: addMs,
7901
+ addWeeks: addWeeks,
7902
+ allowContextMenu: allowContextMenu,
7903
+ allowSelection: allowSelection,
7904
+ applyMutationToEventStore: applyMutationToEventStore,
7905
+ applyStyle: applyStyle,
7906
+ asCleanDays: asCleanDays,
7907
+ asRoughMinutes: asRoughMinutes,
7908
+ asRoughMs: asRoughMs,
7909
+ asRoughSeconds: asRoughSeconds,
7910
+ binarySearch: binarySearch,
7911
+ buildElAttrs: buildElAttrs,
7912
+ buildEntryKey: buildEntryKey,
7913
+ buildEventApis: buildEventApis,
7914
+ buildEventRangeKey: buildEventRangeKey,
7915
+ buildIsoString: buildIsoString,
7916
+ buildNavLinkAttrs: buildNavLinkAttrs,
7917
+ buildSegTimeText: buildSegTimeText,
7918
+ collectFromHash: collectFromHash,
7919
+ combineEventUis: combineEventUis,
7920
+ compareByFieldSpecs: compareByFieldSpecs,
7921
+ compareNumbers: compareNumbers,
7922
+ compareObjs: compareObjs,
7923
+ computeEarliestSegStart: computeEarliestSegStart,
7924
+ computeEdges: computeEdges,
7925
+ computeFallbackHeaderFormat: computeFallbackHeaderFormat,
7926
+ computeInnerRect: computeInnerRect,
7927
+ computeRect: computeRect,
7928
+ computeShrinkWidth: computeShrinkWidth,
7929
+ computeVisibleDayRange: computeVisibleDayRange,
7930
+ config: config,
7931
+ constrainPoint: constrainPoint,
7932
+ createDuration: createDuration,
7933
+ createEmptyEventStore: createEmptyEventStore,
7934
+ createEventInstance: createEventInstance,
7935
+ createEventUi: createEventUi,
7936
+ createFormatter: createFormatter,
7937
+ diffDates: diffDates,
7938
+ diffDayAndTime: diffDayAndTime,
7939
+ diffDays: diffDays,
7940
+ diffPoints: diffPoints,
7941
+ diffWeeks: diffWeeks,
7942
+ diffWholeDays: diffWholeDays,
7943
+ diffWholeWeeks: diffWholeWeeks,
7944
+ disableCursor: disableCursor,
7945
+ elementClosest: elementClosest,
7946
+ elementMatches: elementMatches,
7947
+ enableCursor: enableCursor,
7948
+ eventTupleToStore: eventTupleToStore,
7949
+ filterHash: filterHash,
7950
+ findDirectChildren: findDirectChildren,
7951
+ findElements: findElements,
7952
+ flexibleCompare: flexibleCompare,
7953
+ formatDayString: formatDayString,
7954
+ formatIsoTimeString: formatIsoTimeString,
7955
+ getAllowYScrolling: getAllowYScrolling,
7956
+ getCanVGrowWithinCell: getCanVGrowWithinCell,
7957
+ getClippingParents: getClippingParents,
7958
+ getDateMeta: getDateMeta,
7959
+ getDayClassNames: getDayClassNames,
7960
+ getDefaultEventEnd: getDefaultEventEnd,
7961
+ getElRoot: getElRoot,
7962
+ getElSeg: getElSeg,
7963
+ getEntrySpanEnd: getEntrySpanEnd,
7964
+ getEventTargetViaRoot: getEventTargetViaRoot,
7965
+ getIsRtlScrollbarOnLeft: getIsRtlScrollbarOnLeft,
7966
+ getRectCenter: getRectCenter,
7967
+ getRelevantEvents: getRelevantEvents,
7968
+ getScrollGridClassNames: getScrollGridClassNames,
7969
+ getScrollbarWidths: getScrollbarWidths,
7970
+ getSectionClassNames: getSectionClassNames,
7971
+ getSectionHasLiquidHeight: getSectionHasLiquidHeight,
7972
+ getSegAnchorAttrs: getSegAnchorAttrs,
7973
+ getSegMeta: getSegMeta,
7974
+ getSlotClassNames: getSlotClassNames,
7975
+ getStickyFooterScrollbar: getStickyFooterScrollbar,
7976
+ getStickyHeaderDates: getStickyHeaderDates,
7977
+ getUniqueDomId: getUniqueDomId,
7978
+ globalLocales: globalLocales,
7979
+ globalPlugins: globalPlugins,
7980
+ greatestDurationDenominator: greatestDurationDenominator,
7981
+ groupIntersectingEntries: groupIntersectingEntries,
7982
+ guid: guid,
7983
+ hasBgRendering: hasBgRendering,
7984
+ hasCustomDayCellContent: hasCustomDayCellContent,
7985
+ hasShrinkWidth: hasShrinkWidth,
7986
+ identity: identity,
7987
+ injectStyles: injectStyles,
7988
+ interactionSettingsStore: interactionSettingsStore,
7989
+ interactionSettingsToStore: interactionSettingsToStore,
7990
+ intersectRanges: intersectRanges,
7991
+ intersectRects: intersectRects,
7992
+ intersectSpans: intersectSpans,
7993
+ isArraysEqual: isArraysEqual,
7994
+ isColPropsEqual: isColPropsEqual,
7995
+ isDateSelectionValid: isDateSelectionValid,
7996
+ isDateSpansEqual: isDateSpansEqual,
7997
+ isInt: isInt,
7998
+ isInteractionValid: isInteractionValid,
7999
+ isMultiDayRange: isMultiDayRange,
8000
+ isPropsEqual: isPropsEqual,
8001
+ isPropsValid: isPropsValid,
8002
+ isValidDate: isValidDate,
8003
+ mapHash: mapHash,
8004
+ memoize: memoize,
8005
+ memoizeArraylike: memoizeArraylike,
8006
+ memoizeHashlike: memoizeHashlike,
8007
+ memoizeObjArg: memoizeObjArg,
8008
+ mergeEventStores: mergeEventStores,
8009
+ multiplyDuration: multiplyDuration,
8010
+ padStart: padStart,
8011
+ parseBusinessHours: parseBusinessHours,
8012
+ parseClassNames: parseClassNames,
8013
+ parseDragMeta: parseDragMeta,
8014
+ parseEventDef: parseEventDef,
8015
+ parseFieldSpecs: parseFieldSpecs,
8016
+ parseMarker: parse,
8017
+ pointInsideRect: pointInsideRect,
8018
+ preventContextMenu: preventContextMenu,
8019
+ preventDefault: preventDefault,
8020
+ preventSelection: preventSelection,
8021
+ rangeContainsMarker: rangeContainsMarker,
8022
+ rangeContainsRange: rangeContainsRange,
8023
+ rangesEqual: rangesEqual,
8024
+ rangesIntersect: rangesIntersect,
8025
+ refineEventDef: refineEventDef,
8026
+ refineProps: refineProps,
8027
+ removeElement: removeElement,
8028
+ removeExact: removeExact,
8029
+ renderChunkContent: renderChunkContent,
8030
+ renderFill: renderFill,
8031
+ renderMicroColGroup: renderMicroColGroup,
8032
+ renderScrollShim: renderScrollShim,
8033
+ requestJson: requestJson,
8034
+ sanitizeShrinkWidth: sanitizeShrinkWidth,
8035
+ setRef: setRef,
8036
+ sliceEventStore: sliceEventStore,
8037
+ sortEventSegs: sortEventSegs,
8038
+ startOfDay: startOfDay,
8039
+ translateRect: translateRect,
8040
+ triggerDateSelect: triggerDateSelect,
8041
+ unpromisify: unpromisify,
8042
+ whenTransitionDone: whenTransitionDone,
8043
+ wholeDivideDurations: wholeDivideDurations
8044
+ };
8045
+
7653
8046
  var css_248z$3 = "\n/*\nfor css vars only.\nthese values are automatically known in all stylesheets.\nthe :root statement itself is only included in the common stylesheet.\nthis file is not processed by postcss when imported into the postcss-custom-properties plugin,\nso only write standard css!\n\nNOTE: for old browsers, will need to restart watcher after changing a variable\n*/\n\n:root {\n --fc-small-font-size: .85em;\n --fc-page-bg-color: #fff;\n --fc-neutral-bg-color: rgba(208, 208, 208, 0.3);\n --fc-neutral-text-color: #808080;\n --fc-border-color: #ddd;\n\n --fc-button-text-color: #fff;\n --fc-button-bg-color: #2C3E50;\n --fc-button-border-color: #2C3E50;\n --fc-button-hover-bg-color: #1e2b37;\n --fc-button-hover-border-color: #1a252f;\n --fc-button-active-bg-color: #1a252f;\n --fc-button-active-border-color: #151e27;\n\n --fc-event-bg-color: #3788d8;\n --fc-event-border-color: #3788d8;\n --fc-event-text-color: #fff;\n --fc-event-selected-overlay-color: rgba(0, 0, 0, 0.25);\n\n --fc-more-link-bg-color: #d0d0d0;\n --fc-more-link-text-color: inherit;\n\n --fc-event-resizer-thickness: 8px;\n --fc-event-resizer-dot-total-width: 8px;\n --fc-event-resizer-dot-border-width: 1px;\n\n --fc-non-business-color: rgba(215, 215, 215, 0.3);\n --fc-bg-event-color: rgb(143, 223, 130);\n --fc-bg-event-opacity: 0.3;\n --fc-highlight-color: rgba(188, 232, 241, 0.3);\n --fc-today-bg-color: rgba(255, 220, 40, 0.15);\n --fc-now-indicator-color: red;\n}\n\n/* classes attached to <body> */\n\n/* TODO: make fc-event selector work when calender in shadow DOM */\n\n.fc-not-allowed,\n.fc-not-allowed .fc-event { /* override events' custom cursors */\n cursor: not-allowed;\n}\n\n/* TODO: not attached to body. attached to specific els. move */\n\n.fc-unselectable {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n.fc {\n /* layout of immediate children */\n display: flex;\n flex-direction: column;\n\n font-size: 1em\n}\n.fc,\n .fc *,\n .fc *:before,\n .fc *:after {\n box-sizing: border-box;\n }\n.fc table {\n border-collapse: collapse;\n border-spacing: 0;\n font-size: 1em; /* normalize cross-browser */\n }\n.fc th {\n text-align: center;\n }\n.fc th,\n .fc td {\n vertical-align: top;\n padding: 0;\n }\n.fc a[data-navlink] {\n cursor: pointer;\n }\n.fc a[data-navlink]:hover {\n text-decoration: underline;\n }\n.fc-direction-ltr {\n direction: ltr;\n text-align: left;\n}\n.fc-direction-rtl {\n direction: rtl;\n text-align: right;\n}\n.fc-theme-standard td,\n .fc-theme-standard th {\n border: 1px solid var(--fc-border-color);\n }\n/* for FF, which doesn't expand a 100% div within a table cell. use absolute positioning */\n/* inner-wrappers are responsible for being absolute */\n/* TODO: best place for this? */\n.fc-liquid-hack td,\n .fc-liquid-hack th {\n position: relative;\n }\n\n@font-face {\n font-family: 'fcicons';\n src: url(\"data:application/x-font-ttf;charset=utf-8;base64,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\") format('truetype');\n font-weight: normal;\n font-style: normal;\n}\n\n.fc-icon {\n /* added for fc */\n display: inline-block;\n width: 1em;\n height: 1em;\n text-align: center;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n\n /* use !important to prevent issues with browser extensions that change fonts */\n font-family: 'fcicons' !important;\n speak: none;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.fc-icon-chevron-left:before {\n content: \"\\e900\";\n}\n\n.fc-icon-chevron-right:before {\n content: \"\\e901\";\n}\n\n.fc-icon-chevrons-left:before {\n content: \"\\e902\";\n}\n\n.fc-icon-chevrons-right:before {\n content: \"\\e903\";\n}\n\n.fc-icon-minus-square:before {\n content: \"\\e904\";\n}\n\n.fc-icon-plus-square:before {\n content: \"\\e905\";\n}\n\n.fc-icon-x:before {\n content: \"\\e906\";\n}\n/*\nLots taken from Flatly (MIT): https://bootswatch.com/4/flatly/bootstrap.css\n\nThese styles only apply when the standard-theme is activated.\nWhen it's NOT activated, the fc-button classes won't even be in the DOM.\n*/\n.fc {\n\n /* reset */\n\n}\n.fc .fc-button {\n border-radius: 0;\n overflow: visible;\n text-transform: none;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n }\n.fc .fc-button:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n }\n.fc .fc-button {\n -webkit-appearance: button;\n }\n.fc .fc-button:not(:disabled) {\n cursor: pointer;\n }\n.fc .fc-button::-moz-focus-inner {\n padding: 0;\n border-style: none;\n }\n.fc {\n\n /* theme */\n\n}\n.fc .fc-button {\n display: inline-block;\n font-weight: 400;\n text-align: center;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n background-color: transparent;\n border: 1px solid transparent;\n padding: 0.4em 0.65em;\n font-size: 1em;\n line-height: 1.5;\n border-radius: 0.25em;\n }\n.fc .fc-button:hover {\n text-decoration: none;\n }\n.fc .fc-button:focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\n }\n.fc .fc-button:disabled {\n opacity: 0.65;\n }\n.fc {\n\n /* \"primary\" coloring */\n\n}\n.fc .fc-button-primary {\n color: var(--fc-button-text-color);\n background-color: var(--fc-button-bg-color);\n border-color: var(--fc-button-border-color);\n }\n.fc .fc-button-primary:hover {\n color: var(--fc-button-text-color);\n background-color: var(--fc-button-hover-bg-color);\n border-color: var(--fc-button-hover-border-color);\n }\n.fc .fc-button-primary:disabled { /* not DRY */\n color: var(--fc-button-text-color);\n background-color: var(--fc-button-bg-color);\n border-color: var(--fc-button-border-color); /* overrides :hover */\n }\n.fc .fc-button-primary:focus {\n box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);\n }\n.fc .fc-button-primary:not(:disabled):active,\n .fc .fc-button-primary:not(:disabled).fc-button-active {\n color: var(--fc-button-text-color);\n background-color: var(--fc-button-active-bg-color);\n border-color: var(--fc-button-active-border-color);\n }\n.fc .fc-button-primary:not(:disabled):active:focus,\n .fc .fc-button-primary:not(:disabled).fc-button-active:focus {\n box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);\n }\n.fc {\n\n /* icons within buttons */\n\n}\n.fc .fc-button .fc-icon {\n vertical-align: middle;\n font-size: 1.5em; /* bump up the size (but don't make it bigger than line-height of button, which is 1.5em also) */\n }\n.fc .fc-button-group {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n }\n.fc .fc-button-group > .fc-button {\n position: relative;\n flex: 1 1 auto;\n }\n.fc .fc-button-group > .fc-button:hover {\n z-index: 1;\n }\n.fc .fc-button-group > .fc-button:focus,\n .fc .fc-button-group > .fc-button:active,\n .fc .fc-button-group > .fc-button.fc-button-active {\n z-index: 1;\n }\n.fc-direction-ltr .fc-button-group > .fc-button:not(:first-child) {\n margin-left: -1px;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n.fc-direction-ltr .fc-button-group > .fc-button:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n.fc-direction-rtl .fc-button-group > .fc-button:not(:first-child) {\n margin-right: -1px;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n.fc-direction-rtl .fc-button-group > .fc-button:not(:last-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n.fc .fc-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n.fc .fc-toolbar.fc-header-toolbar {\n margin-bottom: 1.5em;\n }\n.fc .fc-toolbar.fc-footer-toolbar {\n margin-top: 1.5em;\n }\n.fc .fc-toolbar-title {\n font-size: 1.75em;\n margin: 0;\n }\n.fc-direction-ltr .fc-toolbar > * > :not(:first-child) {\n margin-left: .75em; /* space between */\n }\n.fc-direction-rtl .fc-toolbar > * > :not(:first-child) {\n margin-right: .75em; /* space between */\n }\n.fc-direction-rtl .fc-toolbar-ltr { /* when the toolbar-chunk positioning system is explicitly left-to-right */\n flex-direction: row-reverse;\n }\n.fc .fc-scroller {\n -webkit-overflow-scrolling: touch;\n position: relative; /* for abs-positioned elements within */\n }\n.fc .fc-scroller-liquid {\n height: 100%;\n }\n.fc .fc-scroller-liquid-absolute {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n }\n.fc .fc-scroller-harness {\n position: relative;\n overflow: hidden;\n direction: ltr;\n /* hack for chrome computing the scroller's right/left wrong for rtl. undone below... */\n /* TODO: demonstrate in codepen */\n }\n.fc .fc-scroller-harness-liquid {\n height: 100%;\n }\n.fc-direction-rtl .fc-scroller-harness > .fc-scroller { /* undo above hack */\n direction: rtl;\n }\n.fc-theme-standard .fc-scrollgrid {\n border: 1px solid var(--fc-border-color); /* bootstrap does this. match */\n }\n.fc .fc-scrollgrid,\n .fc .fc-scrollgrid table { /* all tables (self included) */\n width: 100%; /* because tables don't normally do this */\n table-layout: fixed;\n }\n.fc .fc-scrollgrid table { /* inner tables */\n border-top-style: hidden;\n border-left-style: hidden;\n border-right-style: hidden;\n }\n.fc .fc-scrollgrid {\n\n border-collapse: separate;\n border-right-width: 0;\n border-bottom-width: 0;\n\n }\n.fc .fc-scrollgrid-liquid {\n height: 100%;\n }\n.fc .fc-scrollgrid-section { /* a <tr> */\n height: 1px /* better than 0, for firefox */\n\n }\n.fc .fc-scrollgrid-section > td {\n height: 1px; /* needs a height so inner div within grow. better than 0, for firefox */\n }\n.fc .fc-scrollgrid-section table {\n height: 1px;\n /* for most browsers, if a height isn't set on the table, can't do liquid-height within cells */\n /* serves as a min-height. harmless */\n }\n.fc .fc-scrollgrid-section-liquid > td {\n height: 100%; /* better than `auto`, for firefox */\n }\n.fc .fc-scrollgrid-section > * {\n border-top-width: 0;\n border-left-width: 0;\n }\n.fc .fc-scrollgrid-section-header > *,\n .fc .fc-scrollgrid-section-footer > * {\n border-bottom-width: 0;\n }\n.fc .fc-scrollgrid-section-body table,\n .fc .fc-scrollgrid-section-footer table {\n border-bottom-style: hidden; /* head keeps its bottom border tho */\n }\n.fc {\n\n /* stickiness */\n\n}\n.fc .fc-scrollgrid-section-sticky > * {\n background: var(--fc-page-bg-color);\n position: sticky;\n z-index: 3; /* TODO: var */\n /* TODO: box-shadow when sticking */\n }\n.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky > * {\n top: 0; /* because border-sharing causes a gap at the top */\n /* TODO: give safari -1. has bug */\n }\n.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky > * {\n bottom: 0; /* known bug: bottom-stickiness doesn't work in safari */\n }\n.fc .fc-scrollgrid-sticky-shim { /* for horizontal scrollbar */\n height: 1px; /* needs height to create scrollbars */\n margin-bottom: -1px;\n }\n.fc-sticky { /* no .fc wrap because used as child of body */\n position: sticky;\n}\n.fc .fc-view-harness {\n flex-grow: 1; /* because this harness is WITHIN the .fc's flexbox */\n position: relative;\n }\n.fc {\n\n /* when the harness controls the height, make the view liquid */\n\n}\n.fc .fc-view-harness-active > .fc-view {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n.fc .fc-col-header-cell-cushion {\n display: inline-block; /* x-browser for when sticky (when multi-tier header) */\n padding: 2px 4px;\n }\n.fc .fc-bg-event,\n .fc .fc-non-business,\n .fc .fc-highlight {\n /* will always have a harness with position:relative/absolute, so absolutely expand */\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n.fc .fc-non-business {\n background: var(--fc-non-business-color);\n }\n.fc .fc-bg-event {\n background: var(--fc-bg-event-color);\n opacity: var(--fc-bg-event-opacity)\n }\n.fc .fc-bg-event .fc-event-title {\n margin: .5em;\n font-size: var(--fc-small-font-size);\n font-style: italic;\n }\n.fc .fc-highlight {\n background: var(--fc-highlight-color);\n }\n.fc .fc-cell-shaded,\n .fc .fc-day-disabled {\n background: var(--fc-neutral-bg-color);\n }\n/* link resets */\n/* ---------------------------------------------------------------------------------------------------- */\na.fc-event,\na.fc-event:hover {\n text-decoration: none;\n}\n/* cursor */\n.fc-event[href],\n.fc-event.fc-event-draggable {\n cursor: pointer;\n}\n/* event text content */\n/* ---------------------------------------------------------------------------------------------------- */\n.fc-event .fc-event-main {\n position: relative;\n z-index: 2;\n }\n/* dragging */\n/* ---------------------------------------------------------------------------------------------------- */\n.fc-event-dragging:not(.fc-event-selected) { /* MOUSE */\n opacity: 0.75;\n }\n.fc-event-dragging.fc-event-selected { /* TOUCH */\n box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3);\n }\n/* resizing */\n/* ---------------------------------------------------------------------------------------------------- */\n/* (subclasses should hone positioning for touch and non-touch) */\n.fc-event .fc-event-resizer {\n display: none;\n position: absolute;\n z-index: 4;\n }\n.fc-event:hover, /* MOUSE */\n.fc-event-selected { /* TOUCH */\n\n}\n.fc-event:hover .fc-event-resizer, .fc-event-selected .fc-event-resizer {\n display: block;\n }\n.fc-event-selected .fc-event-resizer {\n border-radius: calc(var(--fc-event-resizer-dot-total-width) / 2);\n border-width: var(--fc-event-resizer-dot-border-width);\n width: var(--fc-event-resizer-dot-total-width);\n height: var(--fc-event-resizer-dot-total-width);\n border-style: solid;\n border-color: inherit;\n background: var(--fc-page-bg-color)\n\n /* expand hit area */\n\n }\n.fc-event-selected .fc-event-resizer:before {\n content: '';\n position: absolute;\n top: -20px;\n left: -20px;\n right: -20px;\n bottom: -20px;\n }\n/* selecting (always TOUCH) */\n/* OR, focused by tab-index */\n/* (TODO: maybe not the best focus-styling for .fc-daygrid-dot-event) */\n/* ---------------------------------------------------------------------------------------------------- */\n.fc-event-selected,\n.fc-event:focus {\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2)\n\n /* expand hit area (subclasses should expand) */\n\n}\n.fc-event-selected:before, .fc-event:focus:before {\n content: \"\";\n position: absolute;\n z-index: 3;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n.fc-event-selected,\n.fc-event:focus {\n\n /* dimmer effect */\n\n}\n.fc-event-selected:after, .fc-event:focus:after {\n content: \"\";\n background: var(--fc-event-selected-overlay-color);\n position: absolute;\n z-index: 1;\n\n /* assume there's a border on all sides. overcome it. */\n /* sometimes there's NOT a border, in which case the dimmer will go over */\n /* an adjacent border, which looks fine. */\n top: -1px;\n left: -1px;\n right: -1px;\n bottom: -1px;\n }\n/*\nA HORIZONTAL event\n*/\n.fc-h-event { /* allowed to be top-level */\n display: block;\n border: 1px solid var(--fc-event-border-color);\n background-color: var(--fc-event-bg-color)\n\n}\n.fc-h-event .fc-event-main {\n color: var(--fc-event-text-color);\n }\n.fc-h-event .fc-event-main-frame {\n display: flex; /* for make fc-event-title-container expand */\n }\n.fc-h-event .fc-event-time {\n max-width: 100%; /* clip overflow on this element */\n overflow: hidden;\n }\n.fc-h-event .fc-event-title-container { /* serves as a container for the sticky cushion */\n flex-grow: 1;\n flex-shrink: 1;\n min-width: 0; /* important for allowing to shrink all the way */\n }\n.fc-h-event .fc-event-title {\n display: inline-block; /* need this to be sticky cross-browser */\n vertical-align: top; /* for not messing up line-height */\n left: 0; /* for sticky */\n right: 0; /* for sticky */\n max-width: 100%; /* clip overflow on this element */\n overflow: hidden;\n }\n.fc-h-event.fc-event-selected:before {\n /* expand hit area */\n top: -10px;\n bottom: -10px;\n }\n/* adjust border and border-radius (if there is any) for non-start/end */\n.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),\n.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-left-width: 0;\n}\n.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),\n.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-right-width: 0;\n}\n/* resizers */\n.fc-h-event:not(.fc-event-selected) .fc-event-resizer {\n top: 0;\n bottom: 0;\n width: var(--fc-event-resizer-thickness);\n}\n.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,\n.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end {\n cursor: w-resize;\n left: calc(-0.5 * var(--fc-event-resizer-thickness));\n}\n.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,\n.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start {\n cursor: e-resize;\n right: calc(-0.5 * var(--fc-event-resizer-thickness));\n}\n/* resizers for TOUCH */\n.fc-h-event.fc-event-selected .fc-event-resizer {\n top: 50%;\n margin-top: calc(-0.5 * var(--fc-event-resizer-dot-total-width));\n}\n.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,\n.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end {\n left: calc(-0.5 * var(--fc-event-resizer-dot-total-width));\n}\n.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,\n.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start {\n right: calc(-0.5 * var(--fc-event-resizer-dot-total-width));\n}\n.fc .fc-popover {\n position: absolute;\n z-index: 9999;\n box-shadow: 0 2px 6px rgba(0,0,0,.15);\n }\n.fc .fc-popover-header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding: 3px 4px;\n }\n.fc .fc-popover-title {\n margin: 0 2px;\n }\n.fc .fc-popover-close {\n cursor: pointer;\n opacity: 0.65;\n font-size: 1.1em;\n }\n.fc-theme-standard .fc-popover {\n border: 1px solid var(--fc-border-color);\n background: var(--fc-page-bg-color);\n }\n.fc-theme-standard .fc-popover-header {\n background: var(--fc-neutral-bg-color);\n }\n";
7654
8047
  injectStyles(css_248z$3);
7655
8048
 
@@ -9178,7 +9571,7 @@ var FullCalendar = (function (exports) {
9178
9571
  return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;
9179
9572
  }
9180
9573
 
9181
- const version = '6.0.0-beta.2';
9574
+ const version = '6.0.0-beta.4';
9182
9575
 
9183
9576
  config.touchMouseIgnoreWait = 500;
9184
9577
  let ignoreMouseDepth = 0;
@@ -11275,87 +11668,6 @@ var FullCalendar = (function (exports) {
11275
11668
  listenerRefiners: LISTENER_REFINERS,
11276
11669
  });
11277
11670
 
11278
- /* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.
11279
- ----------------------------------------------------------------------------------------------------------------------*/
11280
- // It is a manager for a Table subcomponent, which does most of the heavy lifting.
11281
- // It is responsible for managing width/height.
11282
- class TableView extends DateComponent {
11283
- constructor() {
11284
- super(...arguments);
11285
- this.headerElRef = y();
11286
- }
11287
- renderSimpleLayout(headerRowContent, bodyContent) {
11288
- let { props, context } = this;
11289
- let sections = [];
11290
- let stickyHeaderDates = getStickyHeaderDates(context.options);
11291
- if (headerRowContent) {
11292
- sections.push({
11293
- type: 'header',
11294
- key: 'header',
11295
- isSticky: stickyHeaderDates,
11296
- chunk: {
11297
- elRef: this.headerElRef,
11298
- tableClassName: 'fc-col-header',
11299
- rowContent: headerRowContent,
11300
- },
11301
- });
11302
- }
11303
- sections.push({
11304
- type: 'body',
11305
- key: 'body',
11306
- liquid: true,
11307
- chunk: { content: bodyContent },
11308
- });
11309
- return (h(ViewContainer$1, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },
11310
- h(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections })));
11311
- }
11312
- renderHScrollLayout(headerRowContent, bodyContent, colCnt, dayMinWidth) {
11313
- let ScrollGrid = this.context.pluginHooks.scrollGridImpl;
11314
- if (!ScrollGrid) {
11315
- throw new Error('No ScrollGrid implementation');
11316
- }
11317
- let { props, context } = this;
11318
- let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);
11319
- let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);
11320
- let sections = [];
11321
- if (headerRowContent) {
11322
- sections.push({
11323
- type: 'header',
11324
- key: 'header',
11325
- isSticky: stickyHeaderDates,
11326
- chunks: [{
11327
- key: 'main',
11328
- elRef: this.headerElRef,
11329
- tableClassName: 'fc-col-header',
11330
- rowContent: headerRowContent,
11331
- }],
11332
- });
11333
- }
11334
- sections.push({
11335
- type: 'body',
11336
- key: 'body',
11337
- liquid: true,
11338
- chunks: [{
11339
- key: 'main',
11340
- content: bodyContent,
11341
- }],
11342
- });
11343
- if (stickyFooterScrollbar) {
11344
- sections.push({
11345
- type: 'footer',
11346
- key: 'footer',
11347
- isSticky: true,
11348
- chunks: [{
11349
- key: 'main',
11350
- content: renderScrollShim,
11351
- }],
11352
- });
11353
- }
11354
- return (h(ViewContainer$1, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },
11355
- h(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections })));
11356
- }
11357
- }
11358
-
11359
11671
  function splitSegsByRow(segs, rowCnt) {
11360
11672
  let byRow = [];
11361
11673
  for (let i = 0; i < rowCnt; i += 1) {
@@ -12064,6 +12376,87 @@ var FullCalendar = (function (exports) {
12064
12376
  }
12065
12377
  }
12066
12378
 
12379
+ /* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.
12380
+ ----------------------------------------------------------------------------------------------------------------------*/
12381
+ // It is a manager for a Table subcomponent, which does most of the heavy lifting.
12382
+ // It is responsible for managing width/height.
12383
+ class TableView extends DateComponent {
12384
+ constructor() {
12385
+ super(...arguments);
12386
+ this.headerElRef = y();
12387
+ }
12388
+ renderSimpleLayout(headerRowContent, bodyContent) {
12389
+ let { props, context } = this;
12390
+ let sections = [];
12391
+ let stickyHeaderDates = getStickyHeaderDates(context.options);
12392
+ if (headerRowContent) {
12393
+ sections.push({
12394
+ type: 'header',
12395
+ key: 'header',
12396
+ isSticky: stickyHeaderDates,
12397
+ chunk: {
12398
+ elRef: this.headerElRef,
12399
+ tableClassName: 'fc-col-header',
12400
+ rowContent: headerRowContent,
12401
+ },
12402
+ });
12403
+ }
12404
+ sections.push({
12405
+ type: 'body',
12406
+ key: 'body',
12407
+ liquid: true,
12408
+ chunk: { content: bodyContent },
12409
+ });
12410
+ return (h(ViewContainer$1, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },
12411
+ h(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections })));
12412
+ }
12413
+ renderHScrollLayout(headerRowContent, bodyContent, colCnt, dayMinWidth) {
12414
+ let ScrollGrid = this.context.pluginHooks.scrollGridImpl;
12415
+ if (!ScrollGrid) {
12416
+ throw new Error('No ScrollGrid implementation');
12417
+ }
12418
+ let { props, context } = this;
12419
+ let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);
12420
+ let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);
12421
+ let sections = [];
12422
+ if (headerRowContent) {
12423
+ sections.push({
12424
+ type: 'header',
12425
+ key: 'header',
12426
+ isSticky: stickyHeaderDates,
12427
+ chunks: [{
12428
+ key: 'main',
12429
+ elRef: this.headerElRef,
12430
+ tableClassName: 'fc-col-header',
12431
+ rowContent: headerRowContent,
12432
+ }],
12433
+ });
12434
+ }
12435
+ sections.push({
12436
+ type: 'body',
12437
+ key: 'body',
12438
+ liquid: true,
12439
+ chunks: [{
12440
+ key: 'main',
12441
+ content: bodyContent,
12442
+ }],
12443
+ });
12444
+ if (stickyFooterScrollbar) {
12445
+ sections.push({
12446
+ type: 'footer',
12447
+ key: 'footer',
12448
+ isSticky: true,
12449
+ chunks: [{
12450
+ key: 'main',
12451
+ content: renderScrollShim,
12452
+ }],
12453
+ });
12454
+ }
12455
+ return (h(ViewContainer$1, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },
12456
+ h(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections })));
12457
+ }
12458
+ }
12459
+
12067
12460
  class DayTableView extends TableView {
12068
12461
  constructor() {
12069
12462
  super(...arguments);
@@ -13623,6 +14016,7 @@ var FullCalendar = (function (exports) {
13623
14016
 
13624
14017
  exports.Calendar = Calendar;
13625
14018
  exports.Draggable = ExternalDraggable;
14019
+ exports.Internal = internal;
13626
14020
  exports.JsonRequestError = JsonRequestError;
13627
14021
  exports.ThirdPartyDraggable = ThirdPartyDraggable;
13628
14022
  exports.createPlugin = createPlugin;
@@ -13636,4 +14030,3 @@ var FullCalendar = (function (exports) {
13636
14030
  return exports;
13637
14031
 
13638
14032
  })({});
13639
- //# sourceMappingURL=index.global.js.map