@mux/mux-player 2.3.3 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -71,10 +71,6 @@ var gerwig_default = `<template id="media-theme-gerwig">
71
71
  --media-control-background: var(--_secondary-color);
72
72
  --media-control-hover-background: var(--_accent-color);
73
73
  --media-time-buffered-color: rgba(255, 255, 255, 0.4);
74
- --media-preview-thumbnail-border: 0;
75
- --media-preview-thumbnail-border-radius: 2px 2px 0 0;
76
- --media-preview-time-border-radius: 0 0 2px 2px;
77
- --media-preview-time-margin: 0 0 8px;
78
74
  --media-preview-time-text-shadow: none;
79
75
  --media-control-height: 14px;
80
76
  --media-control-padding: 6px;
@@ -87,8 +83,6 @@ var gerwig_default = `<template id="media-theme-gerwig">
87
83
 
88
84
  :host([audio]) {
89
85
  --_secondary-color: var(--media-secondary-color, black);
90
- --media-preview-time-border-radius: 3px;
91
- --media-preview-time-margin: 0 0 5px;
92
86
  --media-preview-time-text-shadow: none;
93
87
  }
94
88
 
@@ -127,6 +121,8 @@ var gerwig_default = `<template id="media-theme-gerwig">
127
121
  }
128
122
 
129
123
  media-time-range {
124
+ --media-box-padding-left: 6px;
125
+ --media-box-padding-right: 6px;
130
126
  --media-range-bar-color: var(--_accent-color);
131
127
  --media-time-range-buffered-color: var(--_primary-color);
132
128
  --media-range-track-color: transparent;
@@ -143,41 +139,27 @@ var gerwig_default = `<template id="media-theme-gerwig">
143
139
  --media-range-thumb-transform: scale(0);
144
140
  --media-range-thumb-transition: transform 0.3s;
145
141
  --media-range-thumb-opacity: 1;
146
- --media-preview-thumbnail-background: var(--_primary-color);
142
+ --media-preview-background: var(--_primary-color);
143
+ --media-box-arrow-background: var(--_primary-color);
147
144
  --media-preview-thumbnail-border: 5px solid var(--_primary-color);
148
- --media-preview-thumbnail-border-radius: 5px 5px 0 0;
149
- --media-preview-time-background: var(--_primary-color);
150
- --media-preview-time-border-radius: 0 0 5px 5px;
151
- --media-preview-time-margin: 0 0 10px;
152
- --media-preview-time-padding: 2px 0 6px;
145
+ --media-preview-border-radius: 5px;
153
146
  --media-text-color: var(--_text-color);
154
- --media-preview-thumbnail-max-width: 150px;
155
- --media-range-track-pointer-border-right: 2px solid #000;
156
147
  --media-control-hover-background: transparent;
157
148
  color: var(--_accent-color);
158
149
  padding: 0 6px;
159
150
  }
160
151
 
161
152
  :host([audio]) media-time-range {
162
- --media-preview-time-border-radius: 5px;
163
- --media-preview-time-padding: 5px;
153
+ --media-preview-time-padding: 1.5px 6px;
154
+ --media-preview-box-margin: 0 0 -5px;
164
155
  }
165
156
 
166
157
  media-time-range:hover {
167
158
  --media-range-thumb-transform: scale(1);
168
159
  }
169
160
 
170
- media-time-range::part(preview-box)::after {
171
- position: absolute;
172
- content: '';
173
- width: 0;
174
- height: 0;
175
- border-style: solid;
176
- border-width: 10px 8.5px 0 8.5px;
177
- border-color: var(--_primary-color) transparent transparent transparent;
178
- top: 100%;
179
- left: 50%;
180
- transform: translate(-50%, -10px);
161
+ media-preview-thumbnail {
162
+ border-bottom-width: 0;
181
163
  }
182
164
 
183
165
  [part~='listbox'] {
@@ -268,12 +250,20 @@ var gerwig_default = `<template id="media-theme-gerwig">
268
250
  pointer-events: none;
269
251
  }
270
252
 
253
+ media-control-bar {
254
+ --gradient-steps: hsl(0 0% 0% / 0) 0%, hsl(0 0% 0% / 0.013) 8.1%, hsl(0 0% 0% / 0.049) 15.5%,
255
+ hsl(0 0% 0% / 0.104) 22.5%, hsl(0 0% 0% / 0.175) 29%, hsl(0 0% 0% / 0.259) 35.3%, hsl(0 0% 0% / 0.352) 41.2%,
256
+ hsl(0 0% 0% / 0.45) 47.1%, hsl(0 0% 0% / 0.55) 52.9%, hsl(0 0% 0% / 0.648) 58.8%, hsl(0 0% 0% / 0.741) 64.7%,
257
+ hsl(0 0% 0% / 0.825) 71%, hsl(0 0% 0% / 0.896) 77.5%, hsl(0 0% 0% / 0.951) 84.5%, hsl(0 0% 0% / 0.987) 91.9%,
258
+ hsl(0 0% 0%) 100%;
259
+ }
260
+
271
261
  :host([title]:not([audio])) media-control-bar[slot='top-chrome']::before {
272
262
  content: '';
273
263
  position: absolute;
274
264
  width: 100%;
275
265
  padding-bottom: min(100px, 25%);
276
- background: linear-gradient(#000, transparent);
266
+ background: linear-gradient(to top, var(--gradient-steps));
277
267
  opacity: 0.8;
278
268
  pointer-events: none;
279
269
  }
@@ -285,7 +275,7 @@ var gerwig_default = `<template id="media-theme-gerwig">
285
275
  bottom: 0;
286
276
  left: 0;
287
277
  padding-bottom: min(100px, 25%);
288
- background: linear-gradient(transparent, #000);
278
+ background: linear-gradient(to bottom, var(--gradient-steps));
289
279
  opacity: 0.8;
290
280
  z-index: 1;
291
281
  pointer-events: none;
@@ -435,7 +425,7 @@ var gerwig_default = `<template id="media-theme-gerwig">
435
425
  }
436
426
 
437
427
  /* Intentionally don't target the div for transition but the children
438
- of the div. Prevents messing with media-chrome's autohide feature. */
428
+ of the div. Prevents messing with media-chrome's autohide feature. */
439
429
  media-loading-indicator + div * {
440
430
  transition: opacity 0.15s;
441
431
  opacity: 1;
@@ -832,7 +822,12 @@ var gerwig_default = `<template id="media-theme-gerwig">
832
822
  </template>
833
823
 
834
824
  <template partial="TimeRange">
835
- <media-time-range part="bottom time range" disabled="{{disabled}}" aria-disabled="{{disabled}}"></media-time-range>
825
+ <media-time-range part="bottom time range" disabled="{{disabled}}" aria-disabled="{{disabled}}">
826
+ <media-preview-thumbnail slot="preview"></media-preview-thumbnail>
827
+ <media-preview-chapter-display slot="preview"></media-preview-chapter-display>
828
+ <media-preview-time-display slot="preview"></media-preview-time-display>
829
+ <div slot="preview" part="arrow"></div>
830
+ </media-time-range>
836
831
  </template>
837
832
 
838
833
  <template partial="AudioTrackSelect">
@@ -922,6 +917,8 @@ var gerwig_default = `<template id="media-theme-gerwig">
922
917
  noautoseektolive="{{noautoseektolive}}"
923
918
  defaultsubtitles="{{defaultsubtitles}}"
924
919
  defaultduration="{{defaultduration ?? false}}"
920
+ keyboardforwardseekoffset="{{forwardseekoffset}}"
921
+ keyboardbackwardseekoffset="{{backwardseekoffset}}"
925
922
  exportparts="layer, media-layer, poster-layer, vertical-layer, centered-layer, gesture-layer"
926
923
  style="--_pre-playback-place:{{preplaybackplace ?? 'center'}}"
927
924
  >
@@ -1141,21 +1138,35 @@ var MediaUIProps = {
1141
1138
  MEDIA_AUDIO_TRACK_ENABLED: "mediaAudioTrackEnabled",
1142
1139
  MEDIA_CHAPTERS_CUES: "mediaChaptersCues"
1143
1140
  };
1144
- var MediaUIPropsEntries = Object.entries(MediaUIProps);
1145
- var MediaUIAttributes = MediaUIPropsEntries.reduce((dictObj, [key, propName]) => {
1146
- dictObj[key] = `${propName.toLowerCase()}`;
1147
- return dictObj;
1148
- }, {});
1149
- var MediaStateChangeEvents = MediaUIPropsEntries.reduce(
1150
- (dictObj, [key, propName]) => {
1151
- dictObj[key] = `${propName.toLowerCase()}`;
1152
- return dictObj;
1153
- },
1154
- {
1155
- USER_INACTIVE: "userinactivechange",
1156
- BREAKPOINTS_CHANGE: "breakpointchange",
1157
- BREAKPOINTS_COMPUTED: "breakpointscomputed"
1158
- }
1141
+ var MediaUIPropsEntries = (
1142
+ /** @type {[keyof MediaUIProps, string][]} */
1143
+ Object.entries(MediaUIProps)
1144
+ );
1145
+ var MediaUIAttributes = (
1146
+ /** @type {{ [k in keyof MediaUIProps]: string }} */
1147
+ MediaUIPropsEntries.reduce(
1148
+ (dictObj, [key, propName]) => {
1149
+ dictObj[key] = `${propName.toLowerCase()}`;
1150
+ return dictObj;
1151
+ },
1152
+ /** @type {Partial<{ [k in keyof MediaUIProps]: string }>} */
1153
+ {}
1154
+ )
1155
+ );
1156
+ var MediaStateChangeEvents = (
1157
+ /** @type {{ [k in keyof MediaUIProps | 'USER_INACTIVE' | 'BREAKPOINTS_CHANGE' | 'BREAKPOINTS_COMPUTED']: string }} */
1158
+ MediaUIPropsEntries.reduce(
1159
+ (dictObj, [key, propName]) => {
1160
+ dictObj[key] = `${propName.toLowerCase()}`;
1161
+ return dictObj;
1162
+ },
1163
+ /** @type {Partial<{ [k in keyof MediaUIProps | 'USER_INACTIVE' | 'BREAKPOINTS_CHANGE' | 'BREAKPOINTS_COMPUTED']: string }>} */
1164
+ {
1165
+ USER_INACTIVE: "userinactivechange",
1166
+ BREAKPOINTS_CHANGE: "breakpointchange",
1167
+ BREAKPOINTS_COMPUTED: "breakpointscomputed"
1168
+ }
1169
+ )
1159
1170
  );
1160
1171
  var StateChangeEventToAttributeMap = Object.entries(
1161
1172
  MediaStateChangeEvents
@@ -1192,6 +1203,8 @@ var EventTarget2 = class {
1192
1203
  return true;
1193
1204
  }
1194
1205
  };
1206
+ var Node = class extends EventTarget2 {
1207
+ };
1195
1208
  var ResizeObserver = class {
1196
1209
  observe() {
1197
1210
  }
@@ -1210,12 +1223,22 @@ var documentShim = {
1210
1223
  addEventListener() {
1211
1224
  },
1212
1225
  removeEventListener() {
1226
+ },
1227
+ /**
1228
+ *
1229
+ * @param {Event} event
1230
+ * @returns {boolean}
1231
+ */
1232
+ dispatchEvent(event) {
1233
+ return false;
1213
1234
  }
1235
+ // eslint-disable-line no-unused-vars
1214
1236
  };
1215
1237
  var globalThisShim2 = {
1216
1238
  ResizeObserver,
1217
1239
  document: documentShim,
1218
- HTMLElement: class HTMLElement2 extends EventTarget2 {
1240
+ Node,
1241
+ HTMLElement: class HTMLElement2 extends Node {
1219
1242
  },
1220
1243
  DocumentFragment: class DocumentFragment2 extends EventTarget2 {
1221
1244
  },
@@ -1227,6 +1250,29 @@ var globalThisShim2 = {
1227
1250
  whenDefined: function() {
1228
1251
  }
1229
1252
  },
1253
+ localStorage: {
1254
+ /**
1255
+ * @param {string} key
1256
+ * @returns {string|null}
1257
+ */
1258
+ getItem(key) {
1259
+ return null;
1260
+ },
1261
+ // eslint-disable-line no-unused-vars
1262
+ /**
1263
+ * @param {string} key
1264
+ * @param {string} value
1265
+ */
1266
+ setItem(key, value) {
1267
+ },
1268
+ // eslint-disable-line no-unused-vars
1269
+ /**
1270
+ * @param {string} key
1271
+ */
1272
+ removeItem(key) {
1273
+ }
1274
+ // eslint-disable-line no-unused-vars
1275
+ },
1230
1276
  CustomEvent: function CustomEvent2() {
1231
1277
  },
1232
1278
  getComputedStyle: function() {
@@ -1237,6 +1283,9 @@ var globalThisShim2 = {
1237
1283
  return "";
1238
1284
  }
1239
1285
  },
1286
+ /**
1287
+ * @param {string} media
1288
+ */
1240
1289
  matchMedia(media) {
1241
1290
  return {
1242
1291
  matches: false,
@@ -1480,6 +1529,7 @@ var AttrPart = class extends Part {
1480
1529
  );
1481
1530
  }
1482
1531
  }
1532
+ /** @type boolean */
1483
1533
  get booleanValue() {
1484
1534
  return __privateGet2(this, _element).hasAttributeNS(
1485
1535
  __privateGet2(this, _namespaceURI),
@@ -1521,6 +1571,7 @@ var ChildNodePart = class extends Part {
1521
1571
  get previousSibling() {
1522
1572
  return __privateGet2(this, _nodes)[0].previousSibling;
1523
1573
  }
1574
+ // FIXME: not sure why do we need string serialization here? Just because parent class has type DOMString?
1524
1575
  get value() {
1525
1576
  return __privateGet2(this, _nodes).map((node) => node.textContent).join("");
1526
1577
  }
@@ -1864,7 +1915,8 @@ var observedMediaAttributes = {
1864
1915
  mediastreamtype: "streamtype"
1865
1916
  };
1866
1917
  var prependTemplate = Document.createElement("template");
1867
- prependTemplate.innerHTML = `
1918
+ prependTemplate.innerHTML = /*html*/
1919
+ `
1868
1920
  <style>
1869
1921
  :host {
1870
1922
  display: inline-block;
@@ -1910,7 +1962,10 @@ var MediaThemeElement = class extends GlobalThis.HTMLElement {
1910
1962
  if (this.mediaController && !((_a2 = this.mediaController) == null ? void 0 : _a2.breakpointsComputed))
1911
1963
  return;
1912
1964
  if (mutationList.some((mutation) => {
1913
- const target = mutation.target;
1965
+ const target = (
1966
+ /** @type {HTMLElement} */
1967
+ mutation.target
1968
+ );
1914
1969
  if (target === this)
1915
1970
  return true;
1916
1971
  if (target.localName !== "media-controller")
@@ -1932,6 +1987,7 @@ var MediaThemeElement = class extends GlobalThis.HTMLElement {
1932
1987
  this.addEventListener(MediaStateChangeEvents.BREAKPOINTS_COMPUTED, this.render);
1933
1988
  __privateMethod(this, _upgradeProperty, upgradeProperty_fn).call(this, "template");
1934
1989
  }
1990
+ /** @type {HTMLElement & { breakpointsComputed?: boolean }} */
1935
1991
  get mediaController() {
1936
1992
  return this.renderRoot.querySelector("media-controller");
1937
1993
  }
@@ -1981,6 +2037,7 @@ var MediaThemeElement = class extends GlobalThis.HTMLElement {
1981
2037
  this.renderer = new TemplateInstance(
1982
2038
  this.template,
1983
2039
  this.props,
2040
+ // @ts-ignore
1984
2041
  this.constructor.processor
1985
2042
  );
1986
2043
  this.renderRoot.textContent = "";
@@ -2012,7 +2069,10 @@ updateTemplate_fn = function() {
2012
2069
  const templateId = this.getAttribute("template");
2013
2070
  if (!templateId || templateId === __privateGet3(this, _prevTemplateId))
2014
2071
  return;
2015
- const rootNode = this.getRootNode();
2072
+ const rootNode = (
2073
+ /** @type HTMLDocument | ShadowRoot */
2074
+ this.getRootNode()
2075
+ );
2016
2076
  const template2 = (_a2 = rootNode == null ? void 0 : rootNode.getElementById) == null ? void 0 : _a2.call(rootNode, templateId);
2017
2077
  if (template2) {
2018
2078
  __privateSet3(this, _prevTemplateId, templateId);
@@ -71,10 +71,6 @@ var mediaThemeGerwig = (() => {
71
71
  --media-control-background: var(--_secondary-color);
72
72
  --media-control-hover-background: var(--_accent-color);
73
73
  --media-time-buffered-color: rgba(255, 255, 255, 0.4);
74
- --media-preview-thumbnail-border: 0;
75
- --media-preview-thumbnail-border-radius: 2px 2px 0 0;
76
- --media-preview-time-border-radius: 0 0 2px 2px;
77
- --media-preview-time-margin: 0 0 8px;
78
74
  --media-preview-time-text-shadow: none;
79
75
  --media-control-height: 14px;
80
76
  --media-control-padding: 6px;
@@ -87,8 +83,6 @@ var mediaThemeGerwig = (() => {
87
83
 
88
84
  :host([audio]) {
89
85
  --_secondary-color: var(--media-secondary-color, black);
90
- --media-preview-time-border-radius: 3px;
91
- --media-preview-time-margin: 0 0 5px;
92
86
  --media-preview-time-text-shadow: none;
93
87
  }
94
88
 
@@ -127,6 +121,8 @@ var mediaThemeGerwig = (() => {
127
121
  }
128
122
 
129
123
  media-time-range {
124
+ --media-box-padding-left: 6px;
125
+ --media-box-padding-right: 6px;
130
126
  --media-range-bar-color: var(--_accent-color);
131
127
  --media-time-range-buffered-color: var(--_primary-color);
132
128
  --media-range-track-color: transparent;
@@ -143,41 +139,27 @@ var mediaThemeGerwig = (() => {
143
139
  --media-range-thumb-transform: scale(0);
144
140
  --media-range-thumb-transition: transform 0.3s;
145
141
  --media-range-thumb-opacity: 1;
146
- --media-preview-thumbnail-background: var(--_primary-color);
142
+ --media-preview-background: var(--_primary-color);
143
+ --media-box-arrow-background: var(--_primary-color);
147
144
  --media-preview-thumbnail-border: 5px solid var(--_primary-color);
148
- --media-preview-thumbnail-border-radius: 5px 5px 0 0;
149
- --media-preview-time-background: var(--_primary-color);
150
- --media-preview-time-border-radius: 0 0 5px 5px;
151
- --media-preview-time-margin: 0 0 10px;
152
- --media-preview-time-padding: 2px 0 6px;
145
+ --media-preview-border-radius: 5px;
153
146
  --media-text-color: var(--_text-color);
154
- --media-preview-thumbnail-max-width: 150px;
155
- --media-range-track-pointer-border-right: 2px solid #000;
156
147
  --media-control-hover-background: transparent;
157
148
  color: var(--_accent-color);
158
149
  padding: 0 6px;
159
150
  }
160
151
 
161
152
  :host([audio]) media-time-range {
162
- --media-preview-time-border-radius: 5px;
163
- --media-preview-time-padding: 5px;
153
+ --media-preview-time-padding: 1.5px 6px;
154
+ --media-preview-box-margin: 0 0 -5px;
164
155
  }
165
156
 
166
157
  media-time-range:hover {
167
158
  --media-range-thumb-transform: scale(1);
168
159
  }
169
160
 
170
- media-time-range::part(preview-box)::after {
171
- position: absolute;
172
- content: '';
173
- width: 0;
174
- height: 0;
175
- border-style: solid;
176
- border-width: 10px 8.5px 0 8.5px;
177
- border-color: var(--_primary-color) transparent transparent transparent;
178
- top: 100%;
179
- left: 50%;
180
- transform: translate(-50%, -10px);
161
+ media-preview-thumbnail {
162
+ border-bottom-width: 0;
181
163
  }
182
164
 
183
165
  [part~='listbox'] {
@@ -268,12 +250,20 @@ var mediaThemeGerwig = (() => {
268
250
  pointer-events: none;
269
251
  }
270
252
 
253
+ media-control-bar {
254
+ --gradient-steps: hsl(0 0% 0% / 0) 0%, hsl(0 0% 0% / 0.013) 8.1%, hsl(0 0% 0% / 0.049) 15.5%,
255
+ hsl(0 0% 0% / 0.104) 22.5%, hsl(0 0% 0% / 0.175) 29%, hsl(0 0% 0% / 0.259) 35.3%, hsl(0 0% 0% / 0.352) 41.2%,
256
+ hsl(0 0% 0% / 0.45) 47.1%, hsl(0 0% 0% / 0.55) 52.9%, hsl(0 0% 0% / 0.648) 58.8%, hsl(0 0% 0% / 0.741) 64.7%,
257
+ hsl(0 0% 0% / 0.825) 71%, hsl(0 0% 0% / 0.896) 77.5%, hsl(0 0% 0% / 0.951) 84.5%, hsl(0 0% 0% / 0.987) 91.9%,
258
+ hsl(0 0% 0%) 100%;
259
+ }
260
+
271
261
  :host([title]:not([audio])) media-control-bar[slot='top-chrome']::before {
272
262
  content: '';
273
263
  position: absolute;
274
264
  width: 100%;
275
265
  padding-bottom: min(100px, 25%);
276
- background: linear-gradient(#000, transparent);
266
+ background: linear-gradient(to top, var(--gradient-steps));
277
267
  opacity: 0.8;
278
268
  pointer-events: none;
279
269
  }
@@ -285,7 +275,7 @@ var mediaThemeGerwig = (() => {
285
275
  bottom: 0;
286
276
  left: 0;
287
277
  padding-bottom: min(100px, 25%);
288
- background: linear-gradient(transparent, #000);
278
+ background: linear-gradient(to bottom, var(--gradient-steps));
289
279
  opacity: 0.8;
290
280
  z-index: 1;
291
281
  pointer-events: none;
@@ -435,7 +425,7 @@ var mediaThemeGerwig = (() => {
435
425
  }
436
426
 
437
427
  /* Intentionally don't target the div for transition but the children
438
- of the div. Prevents messing with media-chrome's autohide feature. */
428
+ of the div. Prevents messing with media-chrome's autohide feature. */
439
429
  media-loading-indicator + div * {
440
430
  transition: opacity 0.15s;
441
431
  opacity: 1;
@@ -832,7 +822,12 @@ var mediaThemeGerwig = (() => {
832
822
  </template>
833
823
 
834
824
  <template partial="TimeRange">
835
- <media-time-range part="bottom time range" disabled="{{disabled}}" aria-disabled="{{disabled}}"></media-time-range>
825
+ <media-time-range part="bottom time range" disabled="{{disabled}}" aria-disabled="{{disabled}}">
826
+ <media-preview-thumbnail slot="preview"></media-preview-thumbnail>
827
+ <media-preview-chapter-display slot="preview"></media-preview-chapter-display>
828
+ <media-preview-time-display slot="preview"></media-preview-time-display>
829
+ <div slot="preview" part="arrow"></div>
830
+ </media-time-range>
836
831
  </template>
837
832
 
838
833
  <template partial="AudioTrackSelect">
@@ -922,6 +917,8 @@ var mediaThemeGerwig = (() => {
922
917
  noautoseektolive="{{noautoseektolive}}"
923
918
  defaultsubtitles="{{defaultsubtitles}}"
924
919
  defaultduration="{{defaultduration ?? false}}"
920
+ keyboardforwardseekoffset="{{forwardseekoffset}}"
921
+ keyboardbackwardseekoffset="{{backwardseekoffset}}"
925
922
  exportparts="layer, media-layer, poster-layer, vertical-layer, centered-layer, gesture-layer"
926
923
  style="--_pre-playback-place:{{preplaybackplace ?? 'center'}}"
927
924
  >
@@ -1141,21 +1138,35 @@ var mediaThemeGerwig = (() => {
1141
1138
  MEDIA_AUDIO_TRACK_ENABLED: "mediaAudioTrackEnabled",
1142
1139
  MEDIA_CHAPTERS_CUES: "mediaChaptersCues"
1143
1140
  };
1144
- var MediaUIPropsEntries = Object.entries(MediaUIProps);
1145
- var MediaUIAttributes = MediaUIPropsEntries.reduce((dictObj, [key, propName]) => {
1146
- dictObj[key] = `${propName.toLowerCase()}`;
1147
- return dictObj;
1148
- }, {});
1149
- var MediaStateChangeEvents = MediaUIPropsEntries.reduce(
1150
- (dictObj, [key, propName]) => {
1151
- dictObj[key] = `${propName.toLowerCase()}`;
1152
- return dictObj;
1153
- },
1154
- {
1155
- USER_INACTIVE: "userinactivechange",
1156
- BREAKPOINTS_CHANGE: "breakpointchange",
1157
- BREAKPOINTS_COMPUTED: "breakpointscomputed"
1158
- }
1141
+ var MediaUIPropsEntries = (
1142
+ /** @type {[keyof MediaUIProps, string][]} */
1143
+ Object.entries(MediaUIProps)
1144
+ );
1145
+ var MediaUIAttributes = (
1146
+ /** @type {{ [k in keyof MediaUIProps]: string }} */
1147
+ MediaUIPropsEntries.reduce(
1148
+ (dictObj, [key, propName]) => {
1149
+ dictObj[key] = `${propName.toLowerCase()}`;
1150
+ return dictObj;
1151
+ },
1152
+ /** @type {Partial<{ [k in keyof MediaUIProps]: string }>} */
1153
+ {}
1154
+ )
1155
+ );
1156
+ var MediaStateChangeEvents = (
1157
+ /** @type {{ [k in keyof MediaUIProps | 'USER_INACTIVE' | 'BREAKPOINTS_CHANGE' | 'BREAKPOINTS_COMPUTED']: string }} */
1158
+ MediaUIPropsEntries.reduce(
1159
+ (dictObj, [key, propName]) => {
1160
+ dictObj[key] = `${propName.toLowerCase()}`;
1161
+ return dictObj;
1162
+ },
1163
+ /** @type {Partial<{ [k in keyof MediaUIProps | 'USER_INACTIVE' | 'BREAKPOINTS_CHANGE' | 'BREAKPOINTS_COMPUTED']: string }>} */
1164
+ {
1165
+ USER_INACTIVE: "userinactivechange",
1166
+ BREAKPOINTS_CHANGE: "breakpointchange",
1167
+ BREAKPOINTS_COMPUTED: "breakpointscomputed"
1168
+ }
1169
+ )
1159
1170
  );
1160
1171
  var StateChangeEventToAttributeMap = Object.entries(
1161
1172
  MediaStateChangeEvents
@@ -1192,6 +1203,8 @@ var mediaThemeGerwig = (() => {
1192
1203
  return true;
1193
1204
  }
1194
1205
  };
1206
+ var Node = class extends EventTarget2 {
1207
+ };
1195
1208
  var ResizeObserver = class {
1196
1209
  observe() {
1197
1210
  }
@@ -1210,12 +1223,22 @@ var mediaThemeGerwig = (() => {
1210
1223
  addEventListener() {
1211
1224
  },
1212
1225
  removeEventListener() {
1226
+ },
1227
+ /**
1228
+ *
1229
+ * @param {Event} event
1230
+ * @returns {boolean}
1231
+ */
1232
+ dispatchEvent(event) {
1233
+ return false;
1213
1234
  }
1235
+ // eslint-disable-line no-unused-vars
1214
1236
  };
1215
1237
  var globalThisShim2 = {
1216
1238
  ResizeObserver,
1217
1239
  document: documentShim,
1218
- HTMLElement: class HTMLElement2 extends EventTarget2 {
1240
+ Node,
1241
+ HTMLElement: class HTMLElement2 extends Node {
1219
1242
  },
1220
1243
  DocumentFragment: class DocumentFragment2 extends EventTarget2 {
1221
1244
  },
@@ -1227,6 +1250,29 @@ var mediaThemeGerwig = (() => {
1227
1250
  whenDefined: function() {
1228
1251
  }
1229
1252
  },
1253
+ localStorage: {
1254
+ /**
1255
+ * @param {string} key
1256
+ * @returns {string|null}
1257
+ */
1258
+ getItem(key) {
1259
+ return null;
1260
+ },
1261
+ // eslint-disable-line no-unused-vars
1262
+ /**
1263
+ * @param {string} key
1264
+ * @param {string} value
1265
+ */
1266
+ setItem(key, value) {
1267
+ },
1268
+ // eslint-disable-line no-unused-vars
1269
+ /**
1270
+ * @param {string} key
1271
+ */
1272
+ removeItem(key) {
1273
+ }
1274
+ // eslint-disable-line no-unused-vars
1275
+ },
1230
1276
  CustomEvent: function CustomEvent2() {
1231
1277
  },
1232
1278
  getComputedStyle: function() {
@@ -1237,6 +1283,9 @@ var mediaThemeGerwig = (() => {
1237
1283
  return "";
1238
1284
  }
1239
1285
  },
1286
+ /**
1287
+ * @param {string} media
1288
+ */
1240
1289
  matchMedia(media) {
1241
1290
  return {
1242
1291
  matches: false,
@@ -1480,6 +1529,7 @@ var mediaThemeGerwig = (() => {
1480
1529
  );
1481
1530
  }
1482
1531
  }
1532
+ /** @type boolean */
1483
1533
  get booleanValue() {
1484
1534
  return __privateGet2(this, _element).hasAttributeNS(
1485
1535
  __privateGet2(this, _namespaceURI),
@@ -1521,6 +1571,7 @@ var mediaThemeGerwig = (() => {
1521
1571
  get previousSibling() {
1522
1572
  return __privateGet2(this, _nodes)[0].previousSibling;
1523
1573
  }
1574
+ // FIXME: not sure why do we need string serialization here? Just because parent class has type DOMString?
1524
1575
  get value() {
1525
1576
  return __privateGet2(this, _nodes).map((node) => node.textContent).join("");
1526
1577
  }
@@ -1864,7 +1915,8 @@ var mediaThemeGerwig = (() => {
1864
1915
  mediastreamtype: "streamtype"
1865
1916
  };
1866
1917
  var prependTemplate = Document.createElement("template");
1867
- prependTemplate.innerHTML = `
1918
+ prependTemplate.innerHTML = /*html*/
1919
+ `
1868
1920
  <style>
1869
1921
  :host {
1870
1922
  display: inline-block;
@@ -1910,7 +1962,10 @@ var mediaThemeGerwig = (() => {
1910
1962
  if (this.mediaController && !((_a2 = this.mediaController) == null ? void 0 : _a2.breakpointsComputed))
1911
1963
  return;
1912
1964
  if (mutationList.some((mutation) => {
1913
- const target = mutation.target;
1965
+ const target = (
1966
+ /** @type {HTMLElement} */
1967
+ mutation.target
1968
+ );
1914
1969
  if (target === this)
1915
1970
  return true;
1916
1971
  if (target.localName !== "media-controller")
@@ -1932,6 +1987,7 @@ var mediaThemeGerwig = (() => {
1932
1987
  this.addEventListener(MediaStateChangeEvents.BREAKPOINTS_COMPUTED, this.render);
1933
1988
  __privateMethod(this, _upgradeProperty, upgradeProperty_fn).call(this, "template");
1934
1989
  }
1990
+ /** @type {HTMLElement & { breakpointsComputed?: boolean }} */
1935
1991
  get mediaController() {
1936
1992
  return this.renderRoot.querySelector("media-controller");
1937
1993
  }
@@ -1981,6 +2037,7 @@ var mediaThemeGerwig = (() => {
1981
2037
  this.renderer = new TemplateInstance(
1982
2038
  this.template,
1983
2039
  this.props,
2040
+ // @ts-ignore
1984
2041
  this.constructor.processor
1985
2042
  );
1986
2043
  this.renderRoot.textContent = "";
@@ -2012,7 +2069,10 @@ var mediaThemeGerwig = (() => {
2012
2069
  const templateId = this.getAttribute("template");
2013
2070
  if (!templateId || templateId === __privateGet3(this, _prevTemplateId))
2014
2071
  return;
2015
- const rootNode = this.getRootNode();
2072
+ const rootNode = (
2073
+ /** @type HTMLDocument | ShadowRoot */
2074
+ this.getRootNode()
2075
+ );
2016
2076
  const template2 = (_a2 = rootNode == null ? void 0 : rootNode.getElementById) == null ? void 0 : _a2.call(rootNode, templateId);
2017
2077
  if (template2) {
2018
2078
  __privateSet3(this, _prevTemplateId, templateId);