@outbook/webcomponents-player 1.4.5 → 1.4.7

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.
package/README.md CHANGED
@@ -13,8 +13,8 @@ npm install @outbook/webcomponents-player
13
13
  ### As a Lit Element
14
14
 
15
15
  ```javascript
16
- import {html} from 'lit';
17
- import {Player} from '@outbook/webcomponents-player';
16
+ import { html } from 'lit';
17
+ import { Player } from '@outbook/webcomponents-player';
18
18
 
19
19
  const myPlaylist = [
20
20
  {
@@ -23,7 +23,7 @@ const myPlaylist = [
23
23
  artist: 'Artist Name 1',
24
24
  album: 'Album Name 1',
25
25
  cover: {
26
- name: 'cover1.jpg', // or a URL
26
+ name: 'cover1.jpg' // or a URL
27
27
  // Other cover properties if available
28
28
  }
29
29
  },
@@ -33,7 +33,7 @@ const myPlaylist = [
33
33
  artist: 'Artist Name 2',
34
34
  album: 'Album Name 2',
35
35
  cover: {
36
- name: 'cover2.png', // or a URL
36
+ name: 'cover2.png' // or a URL
37
37
  // Other cover properties if available
38
38
  }
39
39
  }
@@ -42,13 +42,13 @@ const myPlaylist = [
42
42
  function render() {
43
43
  return html`
44
44
  ${Player({
45
- playlist: myPlaylist,
46
- lang: 'en',
47
- showFileExtension: true,
48
- showArtwork: true,
49
- showTrackNumber: true,
50
- playlistAlign: 'right'
51
- })}
45
+ playlist: myPlaylist,
46
+ lang: 'en',
47
+ showFileExtension: true,
48
+ showArtwork: true,
49
+ showTrackNumber: true,
50
+ playlistAlign: 'right'
51
+ })}
52
52
  `;
53
53
  }
54
54
  ```
@@ -99,15 +99,15 @@ This is the underlying web component. It can be used directly in HTML or in any
99
99
 
100
100
  ### Properties
101
101
 
102
- | Attribute | Property | Type | Default | Description |
103
- |---|---|---|---|---|
104
- | `lang` | `lang` | `String` | `'en'` | The language to use for localized strings. |
105
- | `playlist` | `playlist` | `Array` | `[]` | An array of track objects, each with `file`, `title`, `artist`, `album`, and `cover` properties. |
106
- | `extraClasses` | `extraClasses` | `String` | `undefined` | Classes to add to the host element. |
107
- | `show-file-extension` | `showFileExtension` | `Boolean` | `true` | Whether to display file extensions in the playlist. |
108
- | `show-artwork` | `showArtwork` | `Boolean` | `true` | Whether to display artwork in the playlist. |
109
- | `show-track-number` | `showTrackNumber` | `Boolean` | `true` | Whether to display track numbers in the playlist. |
110
- | `playlist-align` | `playlistAlign` | `String` | `'right'` | Aligns the playlist to 'left' or 'right' of the track info. |
102
+ | Attribute | Property | Type | Default | Description |
103
+ | --------------------- | ------------------- | --------- | ----------- | ------------------------------------------------------------------------------------------------ |
104
+ | `lang` | `lang` | `String` | `'en'` | The language to use for localized strings. |
105
+ | `playlist` | `playlist` | `Array` | `[]` | An array of track objects, each with `file`, `title`, `artist`, `album`, and `cover` properties. |
106
+ | `extraClasses` | `extraClasses` | `String` | `undefined` | Classes to add to the host element. |
107
+ | `show-file-extension` | `showFileExtension` | `Boolean` | `true` | Whether to display file extensions in the playlist. |
108
+ | `show-artwork` | `showArtwork` | `Boolean` | `true` | Whether to display artwork in the playlist. |
109
+ | `show-track-number` | `showTrackNumber` | `Boolean` | `true` | Whether to display track numbers in the playlist. |
110
+ | `playlist-align` | `playlistAlign` | `String` | `'right'` | Aligns the playlist to 'left' or 'right' of the track info. |
111
111
 
112
112
  ### Styling
113
113
 
@@ -117,21 +117,21 @@ This component uses Shadow DOM, and its styles are self-contained. The component
117
117
 
118
118
  Should not be used with css `light-dark` function.
119
119
 
120
- | Custom Property | Description |
121
- |-------------------------------------------------------|-----------------------------------------------|
122
- | `--outbook-player--color-accent-0` | Accent color 0. |
123
- | `--outbook-player--color-accent-50` | Accent color 50. |
124
- | `--outbook-player--color-accent-100` | Accent color 100. |
125
- | `--outbook-player--color-accent-200` | Accent color 200. |
126
- | `--outbook-player--color-accent-300` | Accent color 300. |
127
- | `--outbook-player--color-accent-400` | Accent color 400. |
128
- | `--outbook-player--color-accent-500` | Accent color 500. |
129
- | `--outbook-player--color-accent-600` | Accent color 600. |
130
- | `--outbook-player--color-accent-700` | Accent color 700. |
131
- | `--outbook-player--color-accent-800` | Accent color 800. |
132
- | `--outbook-player--color-accent-900` | Accent color 900. |
133
- | `--outbook-player--color-accent-950` | Accent color 950. |
134
- | `--outbook-player--color-accent-1000` | Accent color 1000. |
120
+ | Custom Property | Description |
121
+ | ------------------------------------- | ------------------ |
122
+ | `--outbook-player--color-accent-0` | Accent color 0. |
123
+ | `--outbook-player--color-accent-50` | Accent color 50. |
124
+ | `--outbook-player--color-accent-100` | Accent color 100. |
125
+ | `--outbook-player--color-accent-200` | Accent color 200. |
126
+ | `--outbook-player--color-accent-300` | Accent color 300. |
127
+ | `--outbook-player--color-accent-400` | Accent color 400. |
128
+ | `--outbook-player--color-accent-500` | Accent color 500. |
129
+ | `--outbook-player--color-accent-600` | Accent color 600. |
130
+ | `--outbook-player--color-accent-700` | Accent color 700. |
131
+ | `--outbook-player--color-accent-800` | Accent color 800. |
132
+ | `--outbook-player--color-accent-900` | Accent color 900. |
133
+ | `--outbook-player--color-accent-950` | Accent color 950. |
134
+ | `--outbook-player--color-accent-1000` | Accent color 1000. |
135
135
 
136
136
  ## License
137
137
 
package/_i18n/af.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Geen snit speel tans nie"
11
11
  }
12
- }
12
+ }
package/_i18n/ar.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "لا يوجد مسار قيد التشغيل"
11
11
  }
12
- }
12
+ }
package/_i18n/bg.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Няма пусната песен"
11
11
  }
12
- }
12
+ }
package/_i18n/bn.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "কোনো ট্র্যাক বাজছে না"
11
11
  }
12
- }
12
+ }
package/_i18n/ca.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Cap pista en reproducció"
11
11
  }
12
- }
12
+ }
package/_i18n/cs.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Žádná skladba se nepřehrává"
11
11
  }
12
- }
12
+ }
package/_i18n/da.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Intet nummer afspilles"
11
11
  }
12
- }
12
+ }
package/_i18n/de.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Kein Titel wird abgespielt"
11
11
  }
12
- }
12
+ }
package/_i18n/el.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Δεν υπάρχει κομμάτι σε αναπαραγωγή"
11
11
  }
12
- }
12
+ }
package/_i18n/es.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Ninguna pista en reproducción"
11
11
  }
12
- }
12
+ }
package/_i18n/eu.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Ez dago pistarik erreproduzitzen"
11
11
  }
12
- }
12
+ }
package/_i18n/fa.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "آهنگی در حال پخش نیست"
11
11
  }
12
- }
12
+ }
package/_i18n/fi.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Ei toistettavaa kappaletta"
11
11
  }
12
- }
12
+ }
package/_i18n/fr.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Aucune piste en cours de lecture"
11
11
  }
12
- }
12
+ }
package/_i18n/gl.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Ningunha pista en reprodución"
11
11
  }
12
- }
12
+ }
package/_i18n/ha.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Babu waƙa mai kunnawa"
11
11
  }
12
- }
12
+ }
package/_i18n/hi.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "कोई ट्रैक नहीं चल रहा है"
11
11
  }
12
- }
12
+ }
package/_i18n/hu.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Nincs lejátszott szám"
11
11
  }
12
- }
12
+ }
package/_i18n/id.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Tidak ada lagu yang diputar"
11
11
  }
12
- }
12
+ }
package/_i18n/it.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Nessun brano in riproduzione"
11
11
  }
12
- }
12
+ }
package/_i18n/ja.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "再生中のトラックはありません"
11
11
  }
12
- }
12
+ }
package/_i18n/km.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "មិនមានបទចាក់"
11
11
  }
12
- }
12
+ }
package/_i18n/ko.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "재생 중인 트랙 없음"
11
11
  }
12
- }
12
+ }
package/_i18n/lo.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "ບໍ່ມີເພງກຳລັງຫຼິ້ນ"
11
11
  }
12
- }
12
+ }
package/_i18n/ms.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Tiada lagu dimainkan"
11
11
  }
12
- }
12
+ }
package/_i18n/no.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Ingen spor spilles av"
11
11
  }
12
- }
12
+ }
package/_i18n/pl.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Brak odtwarzanego utworu"
11
11
  }
12
- }
12
+ }
package/_i18n/pt.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Nenhuma faixa em reprodução"
11
11
  }
12
- }
12
+ }
package/_i18n/ro.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Nicio piesă în redare"
11
11
  }
12
- }
12
+ }
package/_i18n/ru.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Нет воспроизводимого трека"
11
11
  }
12
- }
12
+ }
package/_i18n/sk.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Neprehráva sa žiadna skladba"
11
11
  }
12
- }
12
+ }
package/_i18n/sv.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Inget spår spelas"
11
11
  }
12
- }
12
+ }
package/_i18n/sw.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Hakuna wimbo unaocheza"
11
11
  }
12
- }
12
+ }
package/_i18n/th.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "ไม่มีเพลงที่กำลังเล่นอยู่"
11
11
  }
12
- }
12
+ }
package/_i18n/tl.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Walang tumutugtog na track"
11
11
  }
12
- }
12
+ }
package/_i18n/tr.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Çalan parça yok"
11
11
  }
12
- }
12
+ }
package/_i18n/uk.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Немає відтворюваного треку"
11
11
  }
12
- }
12
+ }
package/_i18n/vi.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Không có bài hát nào đang phát"
11
11
  }
12
- }
12
+ }
package/_i18n/zh.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "没有正在播放的曲目"
11
11
  }
12
- }
12
+ }
package/_i18n/zu.json CHANGED
@@ -9,4 +9,4 @@
9
9
  "trackInfo": {
10
10
  "noPlaying": "Ayikho ingoma edlalayo"
11
11
  }
12
- }
12
+ }
@@ -8,7 +8,7 @@ import {
8
8
  stop
9
9
  } from '@outbook/icons';
10
10
  import { ifDefined } from 'lit/directives/if-defined.js';
11
- import { isEventClick, isKeyEnterOrKeySpace } from 'a11y-key-conjurer';
11
+ import { isEventClick, isKeyEnterOrKeySpace } from '@outbook/a11y';
12
12
  import { classMap } from 'lit/directives/class-map.js';
13
13
 
14
14
  export function Controls({ props, handleAudio, literals = {} }) {
@@ -1,6 +1,6 @@
1
1
  import { virtual } from 'haunted';
2
2
  import { html, nothing } from 'lit';
3
- import { isKeyEnterOrKeySpace, isEventClick } from 'a11y-key-conjurer';
3
+ import { isKeyEnterOrKeySpace, isEventClick } from '@outbook/a11y';
4
4
  import { classMap } from 'lit/directives/class-map.js';
5
5
  import { TrackText } from '../track-text/index.js';
6
6
  import { TypeIcon } from '@outbook/webcomponents-type-icon/shadow';
@@ -2,7 +2,7 @@ import { html } from 'lit';
2
2
  import {
3
3
  readable as formatTime,
4
4
  iso as formatTimeDuration
5
- } from 'mystic-format-time';
5
+ } from '@outbook/format-time';
6
6
 
7
7
  export function ItemDuration({ duration }) {
8
8
  return html`
@@ -1,4 +1,4 @@
1
1
  /* eslint-disable */
2
2
  import { css } from 'lit';
3
3
 
4
- export default css`.skeleton-loader{--pulse-bg-start: blue;--pulse-bg-end: red}@keyframes colorPulse{from{background-color:var(--pulse-bg-start)}to{background-color:var(--pulse-bg-end)}}.skeleton-loader{background-color:var(--pulse-bg-start);animation:colorPulse 3.2s ease infinite alternate-reverse;opacity:.3}:host{display:block;color-scheme:inherit;width:100%;--_main-height: var(--outbook-player--height, 32rem);--_accent-0: var(--outbook-player--color-accent-0, oklch(100% 0 0deg));--_accent-50: var(--outbook-player--color-accent-50, oklch(98.5% 0 0deg));--_accent-100: var(--outbook-player--color-accent-100, oklch(97% 0 0deg));--_accent-200: var(--outbook-player--color-accent-200, oklch(92.2% 0 0deg));--_accent-300: var(--outbook-player--color-accent-300, oklch(87% 0 0deg));--_accent-400: var(--outbook-player--color-accent-400, oklch(70.8% 0 0deg));--_accent-500: var(--outbook-player--color-accent-500, oklch(55.6% 0 0deg));--_accent-600: var(--outbook-player--color-accent-600, oklch(43.9% 0 0deg));--_accent-700: var(--outbook-player--color-accent-700, oklch(37.1% 0 0deg));--_accent-800: var(--outbook-player--color-accent-800, oklch(26.9% 0 0deg));--_accent-900: var(--outbook-player--color-accent-900, oklch(20.5% 0 0deg));--_accent-950: var(--outbook-player--color-accent-950, oklch(14.5% 0 0deg));--_accent-1000: var(--outbook-player--color-accent-1000, oklch(0% 0 0deg));--pulse-bg-start: light-dark( var(--_accent-100), var(--_accent-600) );--pulse-bg-end: light-dark( var(--_accent-600), var(--_accent-500) );--outbook-badge-file-extension--border-color: light-dark( oklch(37.1% 0 0deg), oklch(87% 0 0deg) );--outbook-badge-file-extension--text-color: light-dark( oklch(14.5% 0 0deg), oklch(100% 0 0deg) );--outbook-player-artwork--background-color: light-dark( var(--_accent-200), var(--_accent-700) );--outbook-player-artwork--text-color: light-dark( var(--_accent-900), var(--_accent-50) );--outbook-player-artwork--crystal-background: light-dark( var(--_accent-100), var(--_accent-900) );--outbook-player-artwork--crystal-border: light-dark( var(--_accent-200), var(--_accent-600) );--outbook-scrollable--indicator-color: light-dark( var(--_accent-900), var(--_accent-200) );--outbook-player-timeline--background: light-dark( var(--_accent-200), var(--_accent-800) );--outbook-player-timeline--background-completed: light-dark( var(--_accent-800), var(--_accent-200) );--outbook-player-timeline--chapter--mark-color: light-dark( oklch(14.5% 0 0deg), oklch(98.5% 0 0deg) );--outbook-player-timeline--chapter-played-mark-color: light-dark( oklch(98.5% 0 0deg), oklch(14.5% 0 0deg) );--_text-color: light-dark(oklch(20.5% 0 0deg), oklch(100% 0 0deg));--_background-color: light-dark(oklch(98.5% 0 0deg), oklch(20.5% 0 0deg));--_separator-color: light-dark(oklch(92.2% 0 0deg), oklch(43.9% 0 0deg));--_link-color: light-dark(var(--_accent-700), var(--_accent-200));--_link-color-hover: light-dark(var(--_accent-500), var(--_accent-50))}*{box-sizing:border-box;padding:0;margin:0}ul,ol,li{list-style:none}a,button,[role=button],[role=link]{cursor:pointer}a[disabled],button[disabled],[role=button][disabled],[role=link][disabled]{cursor:default}.player{container-name:player;container-type:inline-size;height:var(--_main-height);background-color:var(--_background-color);padding:0.25rem;position:relative}.player::after,.player::before{content:"";height:100%;width:100%;position:absolute;left:0;top:0}.player.has-gradient::after{opacity:.65;background-color:var(--_background-color)}.player::before{opacity:.45;background:linear-gradient(145deg, var(--_accent-400) 0%, var(--_accent-500) 25%, var(--_accent-600) 50%, var(--_accent-700) 75%, var(--_accent-800) 100%)}.player.has-gradient::before{opacity:1;background:linear-gradient(145deg, var(--player--main-color-0) 0%, var(--player--main-color-1) 25%, var(--player--main-color-2) 50%, var(--player--main-color-3) 75%, var(--player--main-color-4) 100%)}@container player (width < 768px){.player__inner{--player--flex-direction: column;--_secondary-block-width: unset;--_secondary-block-min-width: unset}}@container player (width >= 768px){.player__inner{--player--flex-direction: row;--_secondary-block-width: 25%;--_secondary-block-min-width: 20rem}.playlist-align-left .player__inner{--player--flex-direction: row-reverse}}.player__inner{display:flex;flex-direction:column;height:100%;color:var(--_text-color);position:relative;z-index:2}.player__body{display:flex;flex-direction:var(--player--flex-direction);flex:1 0 0;overflow:hidden}.player__playlist{overflow:hidden;padding:0 0 0 0.5rem;display:flex;flex:1 0 0}.player__track-info{width:var(--_secondary-block-width);min-width:var(--_secondary-block-min-width);padding:0.5rem}.player__controls{display:flex;justify-content:center;margin-top:-1rem}.player__controls,.player__timeline{position:relative}.player__timeline{padding:0 0.5rem}.player-controls{--_controls-color: light-dark( var(--_accent-950), var(--_accent-100) );--_controls-size: 3rem}@container player (width >= 768px){.player-controls{--_controls-size: 3.5rem}}@container player (width >= 1024px){.player-controls{--_controls-size: 4rem}}.player-controls,.player-controls__items{width:auto}.player-controls__items{display:flex}.player-controls__button{background:rgba(0,0,0,0);border:0;color:var(--_controls-color)}.player-controls__button:focus-visible{outline:var(--outbook-outline--color, light-dark(oklch(48.8% 0.243 264.376deg), oklch(88.2% 0.059 254.128deg))) solid 2px;outline-offset:-4px}.player-controls__button.is-disabled{opacity:.4}.player-controls__icon{width:var(--_controls-size);height:var(--_controls-size)}.player-playlist{--_playlist-font-weight: normal;--_playlist-font-size: 0.75rem;--_playlist-font-size-small: 0.625rem;--_playlist-item-background-color: transparent;--_playlist-item-image-size: 3rem}.player-playlist .is-playing{--_playlist-font-weight: 600;--_playlist-item-background-color: var(--_accent-200)}.ambient-dark .player-playlist .is-playing{--_playlist-item-background-color: var(--_accent-700)}@container player (width >= 768px){.player-playlist{--_playlist-font-size: 0.875rem;--_playlist-font-size-small: 0.75rem}}@container player (width >= 1024px){.player-playlist{--_playlist-font-size: 1rem;--_playlist-font-size-small: 0.875rem;--_playlist-item-image-size: 4rem}}.player-playlist .track-text__item{font-weight:var(--_playlist-font-weight);font-size:var(--_playlist-font-size);line-height:150%}.player-playlist .track-text__item.size-small{font-size:var(--_playlist-font-size-small)}.player-playlist__items{padding:0;position:relative}.player-playlist__item{position:relative;border-bottom:1px solid var(--_separator-color)}.player-playlist__item.is-playing:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.45}@keyframes colorPulse{from{background-color:var(--pulse-bg-start)}to{background-color:var(--pulse-bg-end)}}.player-playlist__item.is-playing:before{background-color:var(--pulse-bg-start);animation:colorPulse 3.2s ease infinite alternate-reverse;opacity:.3}.player-playlist__item:last-child{border-bottom:0}.player-playlist__item-button{display:flex;padding:0.5rem;position:relative;align-items:center}.player-playlist__item-button:focus-visible{outline:var(--outbook-outline--color, light-dark(oklch(48.8% 0.243 264.376deg), oklch(88.2% 0.059 254.128deg))) solid 2px;outline-offset:-4px}.player-playlist__item-group,.player-playlist__item-block{display:flex;align-items:center;margin-left:1rem;height:var(--_playlist-item-image-size)}.player-playlist__item-group:first-child,.player-playlist__item-block:first-child{margin-left:0}.player-playlist__item-group.is-last-right,.player-playlist__item-block.is-last-right{margin-left:auto;padding-left:0.5rem}.player-playlist__item-image{width:var(--_playlist-item-image-size);height:var(--_playlist-item-image-size);flex-shrink:0}.player-playlist__item-playing-icon{width:1rem;height:1rem;display:flex;align-items:center}.player-playlist__item-playing-icon-inner{width:100%;aspect-ratio:1/1}.track-info{--track-info--flex-direction: row;--track-info--image-width: 4rem;--track-info--image-separation-horizontal: 1rem;--track-info--image-separation-vertical: 0;--track-info--height: 4rem}@container player (width >= 768px){.track-info{--track-info--flex-direction: column;--track-info--image-width: 100%;--track-info--image-separation-horizontal: 0;--track-info--image-separation-vertical: 1rem;--track-info--height: auto}}.track-info__inner{display:flex;flex-direction:var(--track-info--flex-direction);height:var(--track-info--height)}.track-info__inner .track-text__item{font-size:1rem;line-height:150%}.track-info__inner .track-text__item.size-small{font-size:0.75rem}.track-info__image{width:var(--track-info--image-width);flex-shrink:0;display:flex;align-items:center;margin-right:var(--track-info--image-separation-horizontal);margin-bottom:var(--track-info--image-separation-vertical)}.track-info__image>*{width:100%}.track-info__data{display:flex;align-items:center}`;
4
+ export default css`.skeleton-loader{--pulse-bg-start: blue;--pulse-bg-end: red}@keyframes colorPulse{from{background-color:var(--pulse-bg-start)}to{background-color:var(--pulse-bg-end)}}.skeleton-loader{background-color:var(--pulse-bg-start);animation:colorPulse 3.2s ease infinite alternate-reverse;opacity:.3}:host{display:block;color-scheme:inherit;width:100%;--_main-height: var(--outbook-player--height, 32rem);--_accent-0: var(--outbook-player--color-accent-0, oklch(100% 0 0deg));--_accent-50: var(--outbook-player--color-accent-50, oklch(98.5% 0 0deg));--_accent-100: var( --outbook-player--color-accent-100, oklch(97% 0 0deg) );--_accent-200: var( --outbook-player--color-accent-200, oklch(92.2% 0 0deg) );--_accent-300: var( --outbook-player--color-accent-300, oklch(87% 0 0deg) );--_accent-400: var( --outbook-player--color-accent-400, oklch(70.8% 0 0deg) );--_accent-500: var( --outbook-player--color-accent-500, oklch(55.6% 0 0deg) );--_accent-600: var( --outbook-player--color-accent-600, oklch(43.9% 0 0deg) );--_accent-700: var( --outbook-player--color-accent-700, oklch(37.1% 0 0deg) );--_accent-800: var( --outbook-player--color-accent-800, oklch(26.9% 0 0deg) );--_accent-900: var( --outbook-player--color-accent-900, oklch(20.5% 0 0deg) );--_accent-950: var( --outbook-player--color-accent-950, oklch(14.5% 0 0deg) );--_accent-1000: var(--outbook-player--color-accent-1000, oklch(0% 0 0deg));--pulse-bg-start: light-dark(var(--_accent-100), var(--_accent-600));--pulse-bg-end: light-dark(var(--_accent-600), var(--_accent-500));--outbook-badge-file-extension--border-color: light-dark( oklch(37.1% 0 0deg), oklch(87% 0 0deg) );--outbook-badge-file-extension--text-color: light-dark( oklch(14.5% 0 0deg), oklch(100% 0 0deg) );--outbook-player-artwork--background-color: light-dark( var(--_accent-200), var(--_accent-700) );--outbook-player-artwork--text-color: light-dark( var(--_accent-900), var(--_accent-50) );--outbook-player-artwork--crystal-background: light-dark( var(--_accent-100), var(--_accent-900) );--outbook-player-artwork--crystal-border: light-dark( var(--_accent-200), var(--_accent-600) );--outbook-scrollable--indicator-color: light-dark( var(--_accent-900), var(--_accent-200) );--outbook-player-timeline--background: light-dark( var(--_accent-200), var(--_accent-800) );--outbook-player-timeline--background-completed: light-dark( var(--_accent-800), var(--_accent-200) );--outbook-player-timeline--chapter--mark-color: light-dark( oklch(14.5% 0 0deg), oklch(98.5% 0 0deg) );--outbook-player-timeline--chapter-played-mark-color: light-dark( oklch(98.5% 0 0deg), oklch(14.5% 0 0deg) );--_text-color: light-dark(oklch(20.5% 0 0deg), oklch(100% 0 0deg));--_background-color: light-dark( oklch(98.5% 0 0deg), oklch(20.5% 0 0deg) );--_separator-color: light-dark( oklch(92.2% 0 0deg), oklch(43.9% 0 0deg) );--_link-color: light-dark(var(--_accent-700), var(--_accent-200));--_link-color-hover: light-dark(var(--_accent-500), var(--_accent-50))}*{box-sizing:border-box;padding:0;margin:0}ul,ol,li{list-style:none}a,button,[role=button],[role=link]{cursor:pointer}a[disabled],button[disabled],[role=button][disabled],[role=link][disabled]{cursor:default}.player{container-name:player;container-type:inline-size;height:var(--_main-height);background-color:var(--_background-color);padding:0.25rem;position:relative}.player::after,.player::before{content:"";height:100%;width:100%;position:absolute;left:0;top:0}.player.has-gradient::after{opacity:.65;background-color:var(--_background-color)}.player::before{opacity:.45;background:linear-gradient(145deg, var(--_accent-400) 0%, var(--_accent-500) 25%, var(--_accent-600) 50%, var(--_accent-700) 75%, var(--_accent-800) 100%)}.player.has-gradient::before{opacity:1;background:linear-gradient(145deg, var(--player--main-color-0) 0%, var(--player--main-color-1) 25%, var(--player--main-color-2) 50%, var(--player--main-color-3) 75%, var(--player--main-color-4) 100%)}@container player (width < 768px){.player__inner{--player--flex-direction: column;--_secondary-block-width: unset;--_secondary-block-min-width: unset}}@container player (width >= 768px){.player__inner{--player--flex-direction: row;--_secondary-block-width: 25%;--_secondary-block-min-width: 20rem}.playlist-align-left .player__inner{--player--flex-direction: row-reverse}}.player__inner{display:flex;flex-direction:column;height:100%;color:var(--_text-color);position:relative;z-index:2}.player__body{display:flex;flex-direction:var(--player--flex-direction);flex:1 0 0;overflow:hidden}.player__playlist{overflow:hidden;padding:0 0 0 0.5rem;display:flex;flex:1 0 0}.player__track-info{width:var(--_secondary-block-width);min-width:var(--_secondary-block-min-width);padding:0.5rem}.player__controls{display:flex;justify-content:center;margin-top:-1rem}.player__controls,.player__timeline{position:relative}.player__timeline{padding:0 0.5rem}.player-controls{--_controls-color: light-dark(var(--_accent-950), var(--_accent-100));--_controls-size: 3rem}@container player (width >= 768px){.player-controls{--_controls-size: 3.5rem}}@container player (width >= 1024px){.player-controls{--_controls-size: 4rem}}.player-controls,.player-controls__items{width:auto}.player-controls__items{display:flex}.player-controls__button{background:rgba(0,0,0,0);border:0;color:var(--_controls-color)}.player-controls__button:focus-visible{outline:var(--outbook-outline--color, light-dark(oklch(48.8% 0.243 264.376deg), oklch(88.2% 0.059 254.128deg))) solid 2px;outline-offset:-4px}.player-controls__button.is-disabled{opacity:.4}.player-controls__icon{width:var(--_controls-size);height:var(--_controls-size)}.player-playlist{--_playlist-font-weight: normal;--_playlist-font-size: 0.75rem;--_playlist-font-size-small: 0.625rem;--_playlist-item-background-color: transparent;--_playlist-item-image-size: 3rem}.player-playlist .is-playing{--_playlist-font-weight: 600;--_playlist-item-background-color: var(--_accent-200)}.ambient-dark .player-playlist .is-playing{--_playlist-item-background-color: var(--_accent-700)}@container player (width >= 768px){.player-playlist{--_playlist-font-size: 0.875rem;--_playlist-font-size-small: 0.75rem}}@container player (width >= 1024px){.player-playlist{--_playlist-font-size: 1rem;--_playlist-font-size-small: 0.875rem;--_playlist-item-image-size: 4rem}}.player-playlist .track-text__item{font-weight:var(--_playlist-font-weight);font-size:var(--_playlist-font-size);line-height:150%}.player-playlist .track-text__item.size-small{font-size:var(--_playlist-font-size-small)}.player-playlist__items{padding:0;position:relative}.player-playlist__item{position:relative;border-bottom:1px solid var(--_separator-color)}.player-playlist__item.is-playing:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.45}@keyframes colorPulse{from{background-color:var(--pulse-bg-start)}to{background-color:var(--pulse-bg-end)}}.player-playlist__item.is-playing:before{background-color:var(--pulse-bg-start);animation:colorPulse 3.2s ease infinite alternate-reverse;opacity:.3}.player-playlist__item:last-child{border-bottom:0}.player-playlist__item-button{display:flex;padding:0.5rem;position:relative;align-items:center}.player-playlist__item-button:focus-visible{outline:var(--outbook-outline--color, light-dark(oklch(48.8% 0.243 264.376deg), oklch(88.2% 0.059 254.128deg))) solid 2px;outline-offset:-4px}.player-playlist__item-group,.player-playlist__item-block{display:flex;align-items:center;margin-left:1rem;height:var(--_playlist-item-image-size)}.player-playlist__item-group:first-child,.player-playlist__item-block:first-child{margin-left:0}.player-playlist__item-group.is-last-right,.player-playlist__item-block.is-last-right{margin-left:auto;padding-left:0.5rem}.player-playlist__item-image{width:var(--_playlist-item-image-size);height:var(--_playlist-item-image-size);flex-shrink:0}.player-playlist__item-playing-icon{width:1rem;height:1rem;display:flex;align-items:center}.player-playlist__item-playing-icon-inner{width:100%;aspect-ratio:1/1}.track-info{--track-info--flex-direction: row;--track-info--image-width: 4rem;--track-info--image-separation-horizontal: 1rem;--track-info--image-separation-vertical: 0;--track-info--height: 4rem}@container player (width >= 768px){.track-info{--track-info--flex-direction: column;--track-info--image-width: 100%;--track-info--image-separation-horizontal: 0;--track-info--image-separation-vertical: 1rem;--track-info--height: auto}}.track-info__inner{display:flex;flex-direction:var(--track-info--flex-direction);height:var(--track-info--height)}.track-info__inner .track-text__item{font-size:1rem;line-height:150%}.track-info__inner .track-text__item.size-small{font-size:0.75rem}.track-info__image{width:var(--track-info--image-width);flex-shrink:0;display:flex;align-items:center;margin-right:var(--track-info--image-separation-horizontal);margin-bottom:var(--track-info--image-separation-vertical)}.track-info__image>*{width:100%}.track-info__data{display:flex;align-items:center}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outbook/webcomponents-player",
3
- "version": "1.4.5",
3
+ "version": "1.4.7",
4
4
  "main": "player.js",
5
5
  "type": "module",
6
6
  "private": false,
@@ -21,28 +21,28 @@
21
21
  "folder": "pkg/web-components/player"
22
22
  },
23
23
  "publishConfig": {
24
- "registry": "https://registry.npmjs.com/"
24
+ "registry": "https://registry.npmjs.com/",
25
+ "access": "public"
25
26
  },
26
27
  "author": "Antonio Rodríguez",
27
28
  "license": "Apache-2.0",
28
29
  "description": "Web component media player (formerly mythical-player)",
29
30
  "dependencies": {
30
- "a11y-key-conjurer": "1.1.2",
31
+ "@outbook/a11y": ">=1.2.1",
31
32
  "color.js": "1.2.0",
32
33
  "custom-event-conjurer": "1.0.0",
33
- "mystic-format-time": "1.0.2",
34
+ "@outbook/format-time": "1.0.4",
34
35
  "@outbook/webcomponents-scrollable": ">=1.0.2",
35
- "@outbook/webcomponents-type-icon": ">=1.1.3",
36
+ "@outbook/webcomponents-type-icon": ">=1.1.4",
36
37
  "@outbook/webcomponents-badge-file-extension": ">=1.2.2",
37
- "@outbook/webcomponents-player-artwork": ">=1.1.2",
38
+ "@outbook/webcomponents-player-artwork": ">=1.1.3",
38
39
  "@outbook/webcomponents-player-timeline": ">=1.0.2",
39
- "@outbook/icons": ">=1.3.1"
40
+ "@outbook/icons": ">=1.3.1",
41
+ "@outbook/webcomponents-player-audio-decoy": ">=1.0.0"
40
42
  },
41
43
  "devDependencies": {
42
44
  "@outbook/colorful": ">=1.1.4",
43
- "@outbook/design-decisions": ">=1.1.7",
44
- "@outbook/webcomponents-player-artwork": ">=1.0.0",
45
- "@outbook/webcomponents-player-timeline": ">=1.0.3"
45
+ "@outbook/design-decisions": ">=1.1.9"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "lit": "^3.0.0",
package/player.js CHANGED
@@ -16,6 +16,7 @@ import { loadLiterals } from './_i18n/i18n.js';
16
16
  import _literals from './_i18n/en.json';
17
17
  import { useLangObserver } from '@outbook/hooks';
18
18
  import { toBoolean } from './_lib/to-boolean.js';
19
+ import { PlayerAudioDecoy } from '@outbook/webcomponents-player-audio-decoy';
19
20
 
20
21
  function ComponentPlayer(element) {
21
22
  const {
@@ -105,8 +106,16 @@ function ComponentPlayer(element) {
105
106
  previous: handleSessionPrevious
106
107
  }
107
108
  });
109
+ navigator.mediaSession.setActionHandler('nexttrack', () => {
110
+ handleSessionNext();
111
+ });
112
+ navigator.mediaSession.setActionHandler('previoustrack', () => {
113
+ handleSessionPrevious();
114
+ });
108
115
  } else if (navigator.mediaSession) {
109
116
  navigator.mediaSession.metadata = null;
117
+ navigator.mediaSession.setActionHandler('nexttrack', null);
118
+ navigator.mediaSession.setActionHandler('previoustrack', null);
110
119
  }
111
120
  }, [indexSelected]);
112
121
 
@@ -163,6 +172,7 @@ function ComponentPlayer(element) {
163
172
  setTotalTime(0);
164
173
  setCurrentTime(0); // Set zero on stop
165
174
  setHasProminentColors(false);
175
+ setIsPlaying(false);
166
176
 
167
177
  if (navigator.mediaSession) {
168
178
  navigator.mediaSession.metadata = null;
@@ -301,6 +311,7 @@ function ComponentPlayer(element) {
301
311
  </div>
302
312
  </div>
303
313
  </div>
314
+ ${isPlaying ? html`${PlayerAudioDecoy({ mode: 'auto' })}` : nothing}
304
315
  ${Number.isInteger(indexSelected)
305
316
  ? html`
306
317
  <audio