UNPKG

@material/web

Version:
46 lines 1.41 kB
/** * @license * Copyright 2023 Google LLC * SPDX-License-Identifier: Apache-2.0 */ /** * A unique symbol used for protected access to an instance's * `ElementInternals`. * * @example * ```ts * class MyElement extends mixinElementInternals(LitElement) { * constructor() { * super(); * this[internals].role = 'button'; * } * } * ``` */ export const internals = Symbol('internals'); // Private symbols const privateInternals = Symbol('privateInternals'); /** * Mixes in an attached `ElementInternals` instance. * * This mixin is only needed when other shared code needs access to a * component's `ElementInternals`, such as form-associated mixins. * * @param base The class to mix functionality into. * @return The provided class with `WithElementInternals` mixed in. */ export function mixinElementInternals(base) { class WithElementInternalsElement extends base { get [internals]() { // Create internals in getter so that it can be used in methods called on // construction in `ReactiveElement`, such as `requestUpdate()`. if (!this[privateInternals]) { // Cast needed for closure this[privateInternals] = this.attachInternals(); } return this[privateInternals]; } } return WithElementInternalsElement; } //# sourceMappingURL=element-internals.js.map