timepiece/node_modules/@lit/reactive-element/development/polyfill-support.js

99 lines
4.1 KiB
JavaScript

/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
var _a, _b;
var SCOPED = '__scoped';
// Note, explicitly use `var` here so that this can be re-defined when
// bundled.
// eslint-disable-next-line no-var
var DEV_MODE = true;
var polyfillSupport = function (_a) {
var ReactiveElement = _a.ReactiveElement;
// polyfill-support is only needed if ShadyCSS or the ApplyShim is in use
// We test at the point of patching, which makes it safe to load
// webcomponentsjs and polyfill-support in either order
if (window.ShadyCSS === undefined ||
(window.ShadyCSS.nativeShadow && !window.ShadyCSS.ApplyShim)) {
return;
}
// console.log(
// '%c Making ReactiveElement compatible with ShadyDOM/CSS.',
// 'color: lightgreen; font-style: italic'
// );
var elementProto = ReactiveElement.prototype;
// In noPatch mode, patch the ReactiveElement prototype so that no
// ReactiveElements must be wrapped.
if (window.ShadyDOM &&
window.ShadyDOM.inUse &&
window.ShadyDOM.noPatch === true) {
window.ShadyDOM.patchElementProto(elementProto);
}
/**
* Patch to apply adoptedStyleSheets via ShadyCSS
*/
var createRenderRoot = elementProto.createRenderRoot;
elementProto.createRenderRoot = function () {
var _a, _b, _c;
// Pass the scope to render options so that it gets to lit-html for proper
// scoping via ShadyCSS.
var name = this.localName;
// If using native Shadow DOM must adoptStyles normally,
// otherwise do nothing.
if (window.ShadyCSS.nativeShadow) {
return createRenderRoot.call(this);
}
else {
if (!this.constructor.hasOwnProperty(SCOPED)) {
this.constructor[SCOPED] =
true;
// Use ShadyCSS's `prepareAdoptedCssText` to shim adoptedStyleSheets.
var css = this.constructor.elementStyles.map(function (v) {
return v instanceof CSSStyleSheet
? Array.from(v.cssRules).reduce(function (a, r) { return (a += r.cssText); }, '')
: v.cssText;
});
(_b = (_a = window.ShadyCSS) === null || _a === void 0 ? void 0 : _a.ScopingShim) === null || _b === void 0 ? void 0 : _b.prepareAdoptedCssText(css, name);
if (this.constructor._$handlesPrepareStyles === undefined) {
window.ShadyCSS.prepareTemplateStyles(document.createElement('template'), name);
}
}
return ((_c = this.shadowRoot) !== null && _c !== void 0 ? _c : this.attachShadow(this.constructor
.shadowRootOptions));
}
};
/**
* Patch connectedCallback to apply ShadyCSS custom properties shimming.
*/
var connectedCallback = elementProto.connectedCallback;
elementProto.connectedCallback = function () {
connectedCallback.call(this);
// Note, must do first update separately so that we're ensured
// that rendering has completed before calling this.
if (this.hasUpdated) {
window.ShadyCSS.styleElement(this);
}
};
/**
* Patch update to apply ShadyCSS custom properties shimming for first
* update.
*/
var didUpdate = elementProto._$didUpdate;
elementProto._$didUpdate = function (changedProperties) {
// Note, must do first update here so rendering has completed before
// calling this and styles are correct by updated/firstUpdated.
if (!this.hasUpdated) {
window.ShadyCSS.styleElement(this);
}
didUpdate.call(this, changedProperties);
};
};
if (DEV_MODE) {
(_a = globalThis.reactiveElementPolyfillSupportDevMode) !== null && _a !== void 0 ? _a : (globalThis.reactiveElementPolyfillSupportDevMode = polyfillSupport);
}
else {
(_b = globalThis.reactiveElementPolyfillSupport) !== null && _b !== void 0 ? _b : (globalThis.reactiveElementPolyfillSupport = polyfillSupport);
}
export {};
//# sourceMappingURL=polyfill-support.js.map