UNPKG

media-chrome

Version:

Custom elements (web components) for making audio and video player controls that look great in your website or app.

139 lines (135 loc) 4.95 kB
var __accessCheck = (obj, member, msg) => { if (!member.has(obj)) throw TypeError("Cannot " + msg); }; var __privateGet = (obj, member, getter) => { __accessCheck(obj, member, "read from private field"); return getter ? getter.call(obj) : member.get(obj); }; var __privateAdd = (obj, member, value) => { if (member.has(obj)) throw TypeError("Cannot add the same private member more than once"); member instanceof WeakSet ? member.add(obj) : member.set(obj, value); }; var __privateSet = (obj, member, value, setter) => { __accessCheck(obj, member, "write to private field"); setter ? setter.call(obj, value) : member.set(obj, value); return value; }; var _mediaController; import { MediaStateReceiverAttributes } from "./constants.js"; import { getOrInsertCSSRule, namedNodeMapToObject } from "./utils/element-utils.js"; import { globalThis } from "./utils/server-safe-globals.js"; function getTemplateHTML(_attrs, _props = {}) { return ( /*html*/ ` <style> :host { font: var(--media-font, var(--media-font-weight, normal) var(--media-font-size, 14px) / var(--media-text-content-height, var(--media-control-height, 24px)) var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif)); color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238))); background: var(--media-text-background, var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .7)))); padding: var(--media-control-padding, 10px); display: inline-flex; justify-content: center; align-items: center; vertical-align: middle; box-sizing: border-box; text-align: center; pointer-events: auto; } ${/* Only show outline when keyboard focusing. https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo */ ""} :host(:focus-visible) { box-shadow: var(--media-focus-box-shadow, inset 0 0 0 2px rgb(27 127 204 / .9)); outline: 0; } ${/* * hide default focus ring, particularly when using mouse */ ""} :host(:where(:focus)) { box-shadow: none; outline: 0; } </style> ${this.getSlotTemplateHTML(_attrs, _props)} ` ); } function getSlotTemplateHTML(_attrs, _props) { return ( /*html*/ ` <slot></slot> ` ); } class MediaTextDisplay extends globalThis.HTMLElement { constructor() { super(); __privateAdd(this, _mediaController, void 0); if (!this.shadowRoot) { this.attachShadow(this.constructor.shadowRootOptions); const attrs = namedNodeMapToObject(this.attributes); this.shadowRoot.innerHTML = this.constructor.getTemplateHTML(attrs); } } static get observedAttributes() { return [MediaStateReceiverAttributes.MEDIA_CONTROLLER]; } attributeChangedCallback(attrName, oldValue, newValue) { var _a, _b, _c, _d, _e; if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) { if (oldValue) { (_b = (_a = __privateGet(this, _mediaController)) == null ? void 0 : _a.unassociateElement) == null ? void 0 : _b.call(_a, this); __privateSet(this, _mediaController, null); } if (newValue && this.isConnected) { __privateSet(this, _mediaController, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue)); (_e = (_d = __privateGet(this, _mediaController)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e.call(_d, this); } } } connectedCallback() { var _a, _b, _c; const { style } = getOrInsertCSSRule(this.shadowRoot, ":host"); style.setProperty( "display", `var(--media-control-display, var(--${this.localName}-display, inline-flex))` ); const mediaControllerId = this.getAttribute( MediaStateReceiverAttributes.MEDIA_CONTROLLER ); if (mediaControllerId) { __privateSet(this, _mediaController, (_a = this.getRootNode()) == null ? void 0 : _a.getElementById( mediaControllerId )); (_c = (_b = __privateGet(this, _mediaController)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this); } } disconnectedCallback() { var _a, _b; (_b = (_a = __privateGet(this, _mediaController)) == null ? void 0 : _a.unassociateElement) == null ? void 0 : _b.call(_a, this); __privateSet(this, _mediaController, null); } } _mediaController = new WeakMap(); MediaTextDisplay.shadowRootOptions = { mode: "open" }; MediaTextDisplay.getTemplateHTML = getTemplateHTML; MediaTextDisplay.getSlotTemplateHTML = getSlotTemplateHTML; if (!globalThis.customElements.get("media-text-display")) { globalThis.customElements.define("media-text-display", MediaTextDisplay); } var media_text_display_default = MediaTextDisplay; export { MediaTextDisplay, media_text_display_default as default };