jam-cloud/jam-ui/node_modules/@fullcalendar/core/vdom.cjs.js

82 lines
2.8 KiB
JavaScript

'use strict';
var tslib = require('tslib');
var preact = require('preact');
var preactCompat = require('preact/compat');
var globalObj = typeof globalThis !== 'undefined' ? globalThis : window; // // TODO: streamline when killing IE11 support
if (globalObj.FullCalendarVDom) {
console.warn('FullCalendar VDOM already loaded');
}
else {
globalObj.FullCalendarVDom = {
Component: preact.Component,
createElement: preact.createElement,
render: preact.render,
createRef: preact.createRef,
Fragment: preact.Fragment,
createContext: createContext,
createPortal: preactCompat.createPortal,
flushToDom: flushToDom,
unmountComponentAtNode: unmountComponentAtNode,
};
}
// HACKS...
// TODO: lock version
// TODO: link gh issues
function flushToDom() {
var oldDebounceRendering = preact.options.debounceRendering; // orig
var callbackQ = [];
function execCallbackSync(callback) {
callbackQ.push(callback);
}
preact.options.debounceRendering = execCallbackSync;
preact.render(preact.createElement(FakeComponent, {}), document.createElement('div'));
while (callbackQ.length) {
callbackQ.shift()();
}
preact.options.debounceRendering = oldDebounceRendering;
}
var FakeComponent = /** @class */ (function (_super) {
tslib.__extends(FakeComponent, _super);
function FakeComponent() {
return _super !== null && _super.apply(this, arguments) || this;
}
FakeComponent.prototype.render = function () { return preact.createElement('div', {}); };
FakeComponent.prototype.componentDidMount = function () { this.setState({}); };
return FakeComponent;
}(preact.Component));
function createContext(defaultValue) {
var ContextType = preact.createContext(defaultValue);
var origProvider = ContextType.Provider;
ContextType.Provider = function () {
var _this = this;
var isNew = !this.getChildContext;
var children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params
if (isNew) {
var subs_1 = [];
this.shouldComponentUpdate = function (_props) {
if (_this.props.value !== _props.value) {
subs_1.forEach(function (c) {
c.context = _props.value;
c.forceUpdate();
});
}
};
this.sub = function (c) {
subs_1.push(c);
var old = c.componentWillUnmount;
c.componentWillUnmount = function () {
subs_1.splice(subs_1.indexOf(c), 1);
old && old.call(c);
};
};
}
return children;
};
return ContextType;
}
function unmountComponentAtNode(node) {
preact.render(null, node);
}