123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- /**
- * @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
|