@ghchinoy/lit-audio-ui 0.5.0 → 0.6.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.
- package/custom-elements.json +133 -45
- package/dist/components/atoms/ui-audio-next-button.js +9 -13
- package/dist/components/atoms/ui-audio-play-button.js +10 -14
- package/dist/components/atoms/ui-audio-player-error.js +10 -14
- package/dist/components/atoms/ui-audio-prev-button.js +9 -13
- package/dist/components/atoms/ui-audio-progress-slider.js +16 -20
- package/dist/components/atoms/ui-audio-time-display.js +15 -19
- package/dist/components/atoms/ui-audio-volume-slider.js +17 -21
- package/dist/components/atoms/ui-speech-cancel-button.js +5 -5
- package/dist/components/atoms/ui-speech-record-button.js +5 -5
- package/dist/components/atoms/ui-timed-text.js +14 -18
- package/dist/components/atoms/ui-voice-waveform.js +15 -19
- package/dist/components/molecules/ui-live-waveform.js +33 -32
- package/dist/components/molecules/ui-mic-selector.js +14 -18
- package/dist/components/molecules/ui-playlist.js +15 -19
- package/dist/components/molecules/ui-scrolling-waveform.js +30 -29
- package/dist/components/molecules/ui-spectrum-visualizer.js +23 -25
- package/dist/components/molecules/ui-speech-preview.js +16 -20
- package/dist/components/molecules/ui-voice-button.js +25 -29
- package/dist/components/molecules/ui-voice-picker.js +21 -25
- package/dist/components/molecules/ui-voice-pill.js +5 -5
- package/dist/components/molecules/ui-waveform.js +46 -36
- package/dist/components/organisms/ui-audio-player.js +7 -11
- package/dist/components/providers/ui-audio-provider.js +15 -15
- package/dist/components/providers/ui-speech-provider.js +13 -17
- package/dist/index.js +36 -36
- package/dist/node_modules/@chenglou/pretext/dist/analysis.js +456 -0
- package/dist/node_modules/@chenglou/pretext/dist/bidi.js +62 -0
- package/dist/node_modules/@chenglou/pretext/dist/layout.js +190 -0
- package/dist/node_modules/@chenglou/pretext/dist/line-break.js +234 -0
- package/dist/node_modules/@chenglou/pretext/dist/measurement.js +106 -0
- package/dist/scream-audio-ui.umd.js +45 -41
- package/dist/src/components/molecules/ui-waveform.d.ts +7 -1
- package/dist/src/components/providers/ui-audio-provider.d.ts +2 -0
- package/dist/src/utils/audio-utils.d.ts +8 -0
- package/dist/standalone/scream-audio-ui.standalone.js +2644 -1658
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/audio-utils.js +27 -16
- package/package.json +7 -4
package/custom-elements.json
CHANGED
|
@@ -667,6 +667,33 @@
|
|
|
667
667
|
}
|
|
668
668
|
],
|
|
669
669
|
"description": "Formats a duration in seconds into a standard MM:SS or HH:MM:SS string."
|
|
670
|
+
},
|
|
671
|
+
{
|
|
672
|
+
"kind": "function",
|
|
673
|
+
"name": "computeAudioPeaks",
|
|
674
|
+
"return": {
|
|
675
|
+
"type": {
|
|
676
|
+
"text": ""
|
|
677
|
+
}
|
|
678
|
+
},
|
|
679
|
+
"parameters": [
|
|
680
|
+
{
|
|
681
|
+
"name": "audioUrl",
|
|
682
|
+
"type": {
|
|
683
|
+
"text": "string"
|
|
684
|
+
},
|
|
685
|
+
"description": "The URL of the audio file."
|
|
686
|
+
},
|
|
687
|
+
{
|
|
688
|
+
"name": "numPeaks",
|
|
689
|
+
"default": "100",
|
|
690
|
+
"type": {
|
|
691
|
+
"text": "number"
|
|
692
|
+
},
|
|
693
|
+
"description": "The number of peaks to generate."
|
|
694
|
+
}
|
|
695
|
+
],
|
|
696
|
+
"description": "Computes an array of normalized RMS peaks from an audio URL using the Web Audio API."
|
|
670
697
|
}
|
|
671
698
|
],
|
|
672
699
|
"exports": [
|
|
@@ -717,6 +744,14 @@
|
|
|
717
744
|
"name": "formatAudioTime",
|
|
718
745
|
"module": "src/utils/audio-utils.ts"
|
|
719
746
|
}
|
|
747
|
+
},
|
|
748
|
+
{
|
|
749
|
+
"kind": "js",
|
|
750
|
+
"name": "computeAudioPeaks",
|
|
751
|
+
"declaration": {
|
|
752
|
+
"name": "computeAudioPeaks",
|
|
753
|
+
"module": "src/utils/audio-utils.ts"
|
|
754
|
+
}
|
|
720
755
|
}
|
|
721
756
|
]
|
|
722
757
|
},
|
|
@@ -1749,6 +1784,51 @@
|
|
|
1749
1784
|
}
|
|
1750
1785
|
]
|
|
1751
1786
|
},
|
|
1787
|
+
{
|
|
1788
|
+
"kind": "javascript-module",
|
|
1789
|
+
"path": "src/components/organisms/ui-audio-player.ts",
|
|
1790
|
+
"declarations": [
|
|
1791
|
+
{
|
|
1792
|
+
"kind": "class",
|
|
1793
|
+
"description": "A monolithic backward-compatibility wrapper that renders the classic ElevenLabs\npill-shaped audio player. Internally, it relies completely on the new\ncompound <ui-audio-provider> architecture.",
|
|
1794
|
+
"name": "UiAudioPlayer",
|
|
1795
|
+
"members": [
|
|
1796
|
+
{
|
|
1797
|
+
"kind": "field",
|
|
1798
|
+
"name": "item",
|
|
1799
|
+
"type": {
|
|
1800
|
+
"text": "AudioPlayerItem | undefined"
|
|
1801
|
+
}
|
|
1802
|
+
},
|
|
1803
|
+
{
|
|
1804
|
+
"kind": "field",
|
|
1805
|
+
"name": "styles",
|
|
1806
|
+
"static": true,
|
|
1807
|
+
"default": "css` :host { display: inline-block; width: 100%; max-width: 400px; } .player-pill { display: flex; align-items: center; gap: var(--ui-audio-player-gap, 16px); padding: var(--ui-audio-player-padding, 12px 24px); background: var(--md-sys-color-surface-container-high, #e2e2e2); border-radius: 999px; /* Pill shape */ width: fit-content; font-family: inherit; } .time-container { min-width: 85px; /* prevent jitter when times change */ } .slider-container { width: 200px; display: flex; align-items: center; } `"
|
|
1808
|
+
},
|
|
1809
|
+
{
|
|
1810
|
+
"kind": "method",
|
|
1811
|
+
"name": "render"
|
|
1812
|
+
}
|
|
1813
|
+
],
|
|
1814
|
+
"superclass": {
|
|
1815
|
+
"name": "LitElement",
|
|
1816
|
+
"package": "lit"
|
|
1817
|
+
},
|
|
1818
|
+
"customElement": true
|
|
1819
|
+
}
|
|
1820
|
+
],
|
|
1821
|
+
"exports": [
|
|
1822
|
+
{
|
|
1823
|
+
"kind": "js",
|
|
1824
|
+
"name": "UiAudioPlayer",
|
|
1825
|
+
"declaration": {
|
|
1826
|
+
"name": "UiAudioPlayer",
|
|
1827
|
+
"module": "src/components/organisms/ui-audio-player.ts"
|
|
1828
|
+
}
|
|
1829
|
+
}
|
|
1830
|
+
]
|
|
1831
|
+
},
|
|
1752
1832
|
{
|
|
1753
1833
|
"kind": "javascript-module",
|
|
1754
1834
|
"path": "src/components/molecules/scream-voice-button.ts",
|
|
@@ -4288,6 +4368,13 @@
|
|
|
4288
4368
|
"description": "",
|
|
4289
4369
|
"name": "UiWaveform",
|
|
4290
4370
|
"members": [
|
|
4371
|
+
{
|
|
4372
|
+
"kind": "field",
|
|
4373
|
+
"name": "src",
|
|
4374
|
+
"type": {
|
|
4375
|
+
"text": "string | undefined"
|
|
4376
|
+
}
|
|
4377
|
+
},
|
|
4291
4378
|
{
|
|
4292
4379
|
"kind": "field",
|
|
4293
4380
|
"name": "data",
|
|
@@ -4373,6 +4460,47 @@
|
|
|
4373
4460
|
"text": "number | string | undefined"
|
|
4374
4461
|
}
|
|
4375
4462
|
},
|
|
4463
|
+
{
|
|
4464
|
+
"kind": "field",
|
|
4465
|
+
"name": "overlayText",
|
|
4466
|
+
"type": {
|
|
4467
|
+
"text": "string | undefined"
|
|
4468
|
+
}
|
|
4469
|
+
},
|
|
4470
|
+
{
|
|
4471
|
+
"kind": "field",
|
|
4472
|
+
"name": "overlayFont",
|
|
4473
|
+
"type": {
|
|
4474
|
+
"text": "string"
|
|
4475
|
+
},
|
|
4476
|
+
"default": "'14px Inter, sans-serif'"
|
|
4477
|
+
},
|
|
4478
|
+
{
|
|
4479
|
+
"kind": "field",
|
|
4480
|
+
"name": "overlayColor",
|
|
4481
|
+
"type": {
|
|
4482
|
+
"text": "string"
|
|
4483
|
+
},
|
|
4484
|
+
"default": "'#ffffff'"
|
|
4485
|
+
},
|
|
4486
|
+
{
|
|
4487
|
+
"kind": "field",
|
|
4488
|
+
"name": "_computedPeaks",
|
|
4489
|
+
"type": {
|
|
4490
|
+
"text": "number[] | null"
|
|
4491
|
+
},
|
|
4492
|
+
"privacy": "private",
|
|
4493
|
+
"default": "null"
|
|
4494
|
+
},
|
|
4495
|
+
{
|
|
4496
|
+
"kind": "field",
|
|
4497
|
+
"name": "_preparedOverlayText",
|
|
4498
|
+
"type": {
|
|
4499
|
+
"text": "PreparedTextWithSegments | null"
|
|
4500
|
+
},
|
|
4501
|
+
"privacy": "private",
|
|
4502
|
+
"default": "null"
|
|
4503
|
+
},
|
|
4376
4504
|
{
|
|
4377
4505
|
"kind": "field",
|
|
4378
4506
|
"name": "_canvas",
|
|
@@ -4452,51 +4580,6 @@
|
|
|
4452
4580
|
}
|
|
4453
4581
|
]
|
|
4454
4582
|
},
|
|
4455
|
-
{
|
|
4456
|
-
"kind": "javascript-module",
|
|
4457
|
-
"path": "src/components/organisms/ui-audio-player.ts",
|
|
4458
|
-
"declarations": [
|
|
4459
|
-
{
|
|
4460
|
-
"kind": "class",
|
|
4461
|
-
"description": "A monolithic backward-compatibility wrapper that renders the classic ElevenLabs\npill-shaped audio player. Internally, it relies completely on the new\ncompound <ui-audio-provider> architecture.",
|
|
4462
|
-
"name": "UiAudioPlayer",
|
|
4463
|
-
"members": [
|
|
4464
|
-
{
|
|
4465
|
-
"kind": "field",
|
|
4466
|
-
"name": "item",
|
|
4467
|
-
"type": {
|
|
4468
|
-
"text": "AudioPlayerItem | undefined"
|
|
4469
|
-
}
|
|
4470
|
-
},
|
|
4471
|
-
{
|
|
4472
|
-
"kind": "field",
|
|
4473
|
-
"name": "styles",
|
|
4474
|
-
"static": true,
|
|
4475
|
-
"default": "css` :host { display: inline-block; width: 100%; max-width: 400px; } .player-pill { display: flex; align-items: center; gap: var(--ui-audio-player-gap, 16px); padding: var(--ui-audio-player-padding, 12px 24px); background: var(--md-sys-color-surface-container-high, #e2e2e2); border-radius: 999px; /* Pill shape */ width: fit-content; font-family: inherit; } .time-container { min-width: 85px; /* prevent jitter when times change */ } .slider-container { width: 200px; display: flex; align-items: center; } `"
|
|
4476
|
-
},
|
|
4477
|
-
{
|
|
4478
|
-
"kind": "method",
|
|
4479
|
-
"name": "render"
|
|
4480
|
-
}
|
|
4481
|
-
],
|
|
4482
|
-
"superclass": {
|
|
4483
|
-
"name": "LitElement",
|
|
4484
|
-
"package": "lit"
|
|
4485
|
-
},
|
|
4486
|
-
"customElement": true
|
|
4487
|
-
}
|
|
4488
|
-
],
|
|
4489
|
-
"exports": [
|
|
4490
|
-
{
|
|
4491
|
-
"kind": "js",
|
|
4492
|
-
"name": "UiAudioPlayer",
|
|
4493
|
-
"declaration": {
|
|
4494
|
-
"name": "UiAudioPlayer",
|
|
4495
|
-
"module": "src/components/organisms/ui-audio-player.ts"
|
|
4496
|
-
}
|
|
4497
|
-
}
|
|
4498
|
-
]
|
|
4499
|
-
},
|
|
4500
4583
|
{
|
|
4501
4584
|
"kind": "javascript-module",
|
|
4502
4585
|
"path": "src/components/providers/ui-audio-provider.ts",
|
|
@@ -4586,6 +4669,11 @@
|
|
|
4586
4669
|
"static": true,
|
|
4587
4670
|
"default": "css` :host { display: contents; /* We are completely invisible, just wrapping children */ } audio { display: none; } `"
|
|
4588
4671
|
},
|
|
4672
|
+
{
|
|
4673
|
+
"kind": "method",
|
|
4674
|
+
"name": "clearTextCache",
|
|
4675
|
+
"privacy": "public"
|
|
4676
|
+
},
|
|
4589
4677
|
{
|
|
4590
4678
|
"kind": "method",
|
|
4591
4679
|
"name": "render"
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { audioPlayerContext as e } from "../../utils/audio-context.js";
|
|
2
|
+
import { __decorate as t } from "../../_virtual/_@oxc-project_runtime@0.113.0/helpers/decorate.js";
|
|
2
3
|
import "@material/web/icon/icon.js";
|
|
3
|
-
import { LitElement as
|
|
4
|
-
import { customElement as
|
|
5
|
-
import { consume as
|
|
4
|
+
import { LitElement as n, css as r, html as i } from "lit";
|
|
5
|
+
import { customElement as a } from "lit/decorators.js";
|
|
6
|
+
import { consume as o } from "@lit/context";
|
|
6
7
|
import "@material/web/iconbutton/icon-button.js";
|
|
7
8
|
/**
|
|
8
9
|
* Copyright 2026 Google LLC
|
|
@@ -19,21 +20,16 @@ import "@material/web/iconbutton/icon-button.js";
|
|
|
19
20
|
* See the License for the specific language governing permissions and
|
|
20
21
|
* limitations under the License.
|
|
21
22
|
*/
|
|
22
|
-
var
|
|
23
|
-
var i = arguments.length, a = i < 3 ? t : r === null ? r = Object.getOwnPropertyDescriptor(t, n) : r, o;
|
|
24
|
-
if (typeof Reflect == "object" && typeof Reflect.decorate == "function") a = Reflect.decorate(e, t, n, r);
|
|
25
|
-
else for (var s = e.length - 1; s >= 0; s--) (o = e[s]) && (a = (i < 3 ? o(a) : i > 3 ? o(t, n, a) : o(t, n)) || a);
|
|
26
|
-
return i > 3 && a && Object.defineProperty(t, n, a), a;
|
|
27
|
-
}, s = class extends t {
|
|
23
|
+
var s = class extends n {
|
|
28
24
|
static {
|
|
29
|
-
this.styles =
|
|
25
|
+
this.styles = r`
|
|
30
26
|
:host {
|
|
31
27
|
display: inline-block;
|
|
32
28
|
}
|
|
33
29
|
`;
|
|
34
30
|
}
|
|
35
31
|
render() {
|
|
36
|
-
return
|
|
32
|
+
return i`
|
|
37
33
|
<md-icon-button
|
|
38
34
|
aria-label="Next track"
|
|
39
35
|
?disabled=${!(this.playerState && this.playerState.items.length > 0 && (this.playerState.currentIndex < this.playerState.items.length - 1 || this.playerState.autoAdvance))}
|
|
@@ -44,8 +40,8 @@ var o = function(e, t, n, r) {
|
|
|
44
40
|
`;
|
|
45
41
|
}
|
|
46
42
|
};
|
|
47
|
-
|
|
43
|
+
t([o({
|
|
48
44
|
context: e,
|
|
49
45
|
subscribe: !0
|
|
50
|
-
})], s.prototype, "playerState", void 0), s =
|
|
46
|
+
})], s.prototype, "playerState", void 0), s = t([a("ui-audio-next-button")], s);
|
|
51
47
|
export { s as UiAudioNextButton };
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import { audioPlayerContext as e } from "../../utils/audio-context.js";
|
|
2
|
+
import { __decorate as t } from "../../_virtual/_@oxc-project_runtime@0.113.0/helpers/decorate.js";
|
|
2
3
|
import "@material/web/icon/icon.js";
|
|
3
|
-
import { LitElement as
|
|
4
|
-
import { customElement as
|
|
5
|
-
import { consume as
|
|
4
|
+
import { LitElement as n, css as r, html as i } from "lit";
|
|
5
|
+
import { customElement as a, property as o } from "lit/decorators.js";
|
|
6
|
+
import { consume as s } from "@lit/context";
|
|
6
7
|
import "@material/web/iconbutton/filled-icon-button.js";
|
|
7
8
|
import "@material/web/progress/circular-progress.js";
|
|
8
|
-
var
|
|
9
|
-
var i = arguments.length, a = i < 3 ? t : r === null ? r = Object.getOwnPropertyDescriptor(t, n) : r, o;
|
|
10
|
-
if (typeof Reflect == "object" && typeof Reflect.decorate == "function") a = Reflect.decorate(e, t, n, r);
|
|
11
|
-
else for (var s = e.length - 1; s >= 0; s--) (o = e[s]) && (a = (i < 3 ? o(a) : i > 3 ? o(t, n, a) : o(t, n)) || a);
|
|
12
|
-
return i > 3 && a && Object.defineProperty(t, n, a), a;
|
|
13
|
-
}, c = class extends t {
|
|
9
|
+
var c = class extends n {
|
|
14
10
|
static {
|
|
15
|
-
this.styles =
|
|
11
|
+
this.styles = r`
|
|
16
12
|
:host {
|
|
17
13
|
display: inline-flex;
|
|
18
14
|
position: relative;
|
|
@@ -73,7 +69,7 @@ var s = function(e, t, n, r) {
|
|
|
73
69
|
}
|
|
74
70
|
render() {
|
|
75
71
|
let e = this.playerState?.isPlaying ?? !1, t = this.playerState?.isBuffering ?? !1, n = !!this.playerState?.error;
|
|
76
|
-
return
|
|
72
|
+
return i`
|
|
77
73
|
<md-filled-icon-button
|
|
78
74
|
part="button"
|
|
79
75
|
class="${n ? "error" : ""}"
|
|
@@ -81,7 +77,7 @@ var s = function(e, t, n, r) {
|
|
|
81
77
|
@click="${this._handleClick}"
|
|
82
78
|
?disabled="${!this.playerState?.src}"
|
|
83
79
|
>
|
|
84
|
-
${t && e && !n ?
|
|
80
|
+
${t && e && !n ? i`<md-circular-progress indeterminate></md-circular-progress>` : i`<md-icon>${n ? "error" : e ? "pause" : "play_arrow"}</md-icon>`}
|
|
85
81
|
</md-filled-icon-button>
|
|
86
82
|
`;
|
|
87
83
|
}
|
|
@@ -89,8 +85,8 @@ var s = function(e, t, n, r) {
|
|
|
89
85
|
this.playerState && this.playerState.togglePlay();
|
|
90
86
|
}
|
|
91
87
|
};
|
|
92
|
-
|
|
88
|
+
t([s({
|
|
93
89
|
context: e,
|
|
94
90
|
subscribe: !0
|
|
95
|
-
}),
|
|
91
|
+
}), o({ attribute: !1 })], c.prototype, "playerState", void 0), c = t([a("ui-audio-play-button")], c);
|
|
96
92
|
export { c as UiAudioPlayButton };
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
import { audioPlayerContext as e } from "../../utils/audio-context.js";
|
|
2
|
+
import { __decorate as t } from "../../_virtual/_@oxc-project_runtime@0.113.0/helpers/decorate.js";
|
|
2
3
|
import "@material/web/icon/icon.js";
|
|
3
|
-
import { LitElement as
|
|
4
|
-
import { customElement as
|
|
5
|
-
import { consume as
|
|
4
|
+
import { LitElement as n, css as r, html as i } from "lit";
|
|
5
|
+
import { customElement as a, property as o } from "lit/decorators.js";
|
|
6
|
+
import { consume as s } from "@lit/context";
|
|
6
7
|
/**
|
|
7
8
|
* Copyright 2026 Google LLC
|
|
8
9
|
*/
|
|
9
|
-
var
|
|
10
|
-
var i = arguments.length, a = i < 3 ? t : r === null ? r = Object.getOwnPropertyDescriptor(t, n) : r, o;
|
|
11
|
-
if (typeof Reflect == "object" && typeof Reflect.decorate == "function") a = Reflect.decorate(e, t, n, r);
|
|
12
|
-
else for (var s = e.length - 1; s >= 0; s--) (o = e[s]) && (a = (i < 3 ? o(a) : i > 3 ? o(t, n, a) : o(t, n)) || a);
|
|
13
|
-
return i > 3 && a && Object.defineProperty(t, n, a), a;
|
|
14
|
-
}, c = class extends t {
|
|
10
|
+
var c = class extends n {
|
|
15
11
|
static {
|
|
16
|
-
this.styles =
|
|
12
|
+
this.styles = r`
|
|
17
13
|
:host {
|
|
18
14
|
display: inline-flex;
|
|
19
15
|
align-items: center;
|
|
@@ -49,14 +45,14 @@ var s = function(e, t, n, r) {
|
|
|
49
45
|
}
|
|
50
46
|
render() {
|
|
51
47
|
let e = this.playerState?.error;
|
|
52
|
-
return e ?
|
|
48
|
+
return e ? i`
|
|
53
49
|
<md-icon class="error-icon">error</md-icon>
|
|
54
50
|
<span class="error-text" title="${e}">${e}</span>
|
|
55
|
-
` :
|
|
51
|
+
` : i``;
|
|
56
52
|
}
|
|
57
53
|
};
|
|
58
|
-
|
|
54
|
+
t([s({
|
|
59
55
|
context: e,
|
|
60
56
|
subscribe: !0
|
|
61
|
-
}),
|
|
57
|
+
}), o({ attribute: !1 })], c.prototype, "playerState", void 0), c = t([a("ui-audio-player-error")], c);
|
|
62
58
|
export { c as UiAudioPlayerError };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { audioPlayerContext as e } from "../../utils/audio-context.js";
|
|
2
|
+
import { __decorate as t } from "../../_virtual/_@oxc-project_runtime@0.113.0/helpers/decorate.js";
|
|
2
3
|
import "@material/web/icon/icon.js";
|
|
3
|
-
import { LitElement as
|
|
4
|
-
import { customElement as
|
|
5
|
-
import { consume as
|
|
4
|
+
import { LitElement as n, css as r, html as i } from "lit";
|
|
5
|
+
import { customElement as a } from "lit/decorators.js";
|
|
6
|
+
import { consume as o } from "@lit/context";
|
|
6
7
|
import "@material/web/iconbutton/icon-button.js";
|
|
7
8
|
/**
|
|
8
9
|
* Copyright 2026 Google LLC
|
|
@@ -19,21 +20,16 @@ import "@material/web/iconbutton/icon-button.js";
|
|
|
19
20
|
* See the License for the specific language governing permissions and
|
|
20
21
|
* limitations under the License.
|
|
21
22
|
*/
|
|
22
|
-
var
|
|
23
|
-
var i = arguments.length, a = i < 3 ? t : r === null ? r = Object.getOwnPropertyDescriptor(t, n) : r, o;
|
|
24
|
-
if (typeof Reflect == "object" && typeof Reflect.decorate == "function") a = Reflect.decorate(e, t, n, r);
|
|
25
|
-
else for (var s = e.length - 1; s >= 0; s--) (o = e[s]) && (a = (i < 3 ? o(a) : i > 3 ? o(t, n, a) : o(t, n)) || a);
|
|
26
|
-
return i > 3 && a && Object.defineProperty(t, n, a), a;
|
|
27
|
-
}, s = class extends t {
|
|
23
|
+
var s = class extends n {
|
|
28
24
|
static {
|
|
29
|
-
this.styles =
|
|
25
|
+
this.styles = r`
|
|
30
26
|
:host {
|
|
31
27
|
display: inline-block;
|
|
32
28
|
}
|
|
33
29
|
`;
|
|
34
30
|
}
|
|
35
31
|
render() {
|
|
36
|
-
return
|
|
32
|
+
return i`
|
|
37
33
|
<md-icon-button
|
|
38
34
|
aria-label="Previous track"
|
|
39
35
|
?disabled=${!(this.playerState && this.playerState.items.length > 0 && (this.playerState.currentIndex > 0 || this.playerState.autoAdvance))}
|
|
@@ -44,8 +40,8 @@ var o = function(e, t, n, r) {
|
|
|
44
40
|
`;
|
|
45
41
|
}
|
|
46
42
|
};
|
|
47
|
-
|
|
43
|
+
t([o({
|
|
48
44
|
context: e,
|
|
49
45
|
subscribe: !0
|
|
50
|
-
})], s.prototype, "playerState", void 0), s =
|
|
46
|
+
})], s.prototype, "playerState", void 0), s = t([a("ui-audio-prev-button")], s);
|
|
51
47
|
export { s as UiAudioPrevButton };
|
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
import { audioPlayerContext as e } from "../../utils/audio-context.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { __decorate as t } from "../../_virtual/_@oxc-project_runtime@0.113.0/helpers/decorate.js";
|
|
3
|
+
import { formatAudioTime as n } from "../../utils/audio-utils.js";
|
|
4
|
+
import { LitElement as r, css as i, html as a } from "lit";
|
|
5
|
+
import { customElement as o, property as s, query as c, state as l } from "lit/decorators.js";
|
|
6
|
+
import { consume as u } from "@lit/context";
|
|
6
7
|
import "@material/web/slider/slider.js";
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
else for (var s = e.length - 1; s >= 0; s--) (o = e[s]) && (a = (i < 3 ? o(a) : i > 3 ? o(t, n, a) : o(t, n)) || a);
|
|
11
|
-
return i > 3 && a && Object.defineProperty(t, n, a), a;
|
|
12
|
-
}, d = class extends n {
|
|
13
|
-
constructor() {
|
|
14
|
-
super(...arguments), this._isDragging = !1, this._dragValue = 0, this.hoverTimestamp = !1, this._hoverX = 0, this._showHover = !1, this._hoverTime = 0;
|
|
8
|
+
var d = class extends r {
|
|
9
|
+
constructor(...e) {
|
|
10
|
+
super(...e), this._isDragging = !1, this._dragValue = 0, this.hoverTimestamp = !1, this._hoverX = 0, this._showHover = !1, this._hoverTime = 0;
|
|
15
11
|
}
|
|
16
12
|
static {
|
|
17
|
-
this.styles =
|
|
13
|
+
this.styles = i`
|
|
18
14
|
|
|
19
15
|
|
|
20
16
|
:host {
|
|
@@ -69,20 +65,20 @@ var u = function(e, t, n, r) {
|
|
|
69
65
|
`;
|
|
70
66
|
}
|
|
71
67
|
render() {
|
|
72
|
-
let e = this.playerState?.duration || 0,
|
|
73
|
-
return
|
|
68
|
+
let e = this.playerState?.duration || 0, t = e === 0 || !this.playerState?.src, r = this._isDragging ? this._dragValue : this.playerState?.currentTime || 0;
|
|
69
|
+
return a`
|
|
74
70
|
<div
|
|
75
71
|
style="position: relative; width: 100%; display: flex; align-items: center;"
|
|
76
72
|
@mousemove="${this._handleMouseMove}"
|
|
77
73
|
@mouseenter="${() => this._showHover = !0}"
|
|
78
74
|
@mouseleave="${() => this._showHover = !1}"
|
|
79
75
|
>
|
|
80
|
-
${this.hoverTimestamp && this.playerState?.src ?
|
|
76
|
+
${this.hoverTimestamp && this.playerState?.src ? a`
|
|
81
77
|
<div
|
|
82
78
|
class="hover-tooltip ${this._showHover ? "show" : ""}"
|
|
83
79
|
style="left: ${this._hoverX}px;"
|
|
84
80
|
>
|
|
85
|
-
${
|
|
81
|
+
${n(this._hoverTime)}
|
|
86
82
|
</div>
|
|
87
83
|
` : ""}
|
|
88
84
|
<md-slider
|
|
@@ -92,7 +88,7 @@ var u = function(e, t, n, r) {
|
|
|
92
88
|
max="${e || 100}"
|
|
93
89
|
value="${r}"
|
|
94
90
|
step="0.1"
|
|
95
|
-
?disabled="${
|
|
91
|
+
?disabled="${t}"
|
|
96
92
|
@input="${this._handleInput}"
|
|
97
93
|
@change="${this._handleChange}"
|
|
98
94
|
></md-slider>
|
|
@@ -111,8 +107,8 @@ var u = function(e, t, n, r) {
|
|
|
111
107
|
this._dragValue = e.target.value, this.playerState && this.playerState.seek(this._dragValue), this._isDragging = !1;
|
|
112
108
|
}
|
|
113
109
|
};
|
|
114
|
-
|
|
110
|
+
t([u({
|
|
115
111
|
context: e,
|
|
116
112
|
subscribe: !0
|
|
117
|
-
}),
|
|
113
|
+
}), s({ attribute: !1 })], d.prototype, "playerState", void 0), t([s({ type: Boolean })], d.prototype, "hoverTimestamp", void 0), t([l()], d.prototype, "_hoverX", void 0), t([l()], d.prototype, "_showHover", void 0), t([l()], d.prototype, "_hoverTime", void 0), t([c("md-slider")], d.prototype, "_sliderEl", void 0), d = t([o("ui-audio-progress-slider")], d);
|
|
118
114
|
export { d as UiAudioProgressSlider };
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
import { audioPlayerContext as e } from "../../utils/audio-context.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return i > 3 && a && Object.defineProperty(t, n, a), a;
|
|
11
|
-
}, l = class extends n {
|
|
12
|
-
constructor() {
|
|
13
|
-
super(...arguments), this.format = "combined", this.separator = " / ", this.compact = !1;
|
|
2
|
+
import { __decorate as t } from "../../_virtual/_@oxc-project_runtime@0.113.0/helpers/decorate.js";
|
|
3
|
+
import { formatAudioTime as n } from "../../utils/audio-utils.js";
|
|
4
|
+
import { LitElement as r, css as i, html as a } from "lit";
|
|
5
|
+
import { customElement as o, property as s } from "lit/decorators.js";
|
|
6
|
+
import { consume as c } from "@lit/context";
|
|
7
|
+
var l = class extends r {
|
|
8
|
+
constructor(...e) {
|
|
9
|
+
super(...e), this.format = "combined", this.separator = " / ", this.compact = !1;
|
|
14
10
|
}
|
|
15
11
|
static {
|
|
16
|
-
this.styles =
|
|
12
|
+
this.styles = i`
|
|
17
13
|
:host {
|
|
18
14
|
display: inline-block;
|
|
19
15
|
font-variant-numeric: tabular-nums;
|
|
@@ -25,18 +21,18 @@ var c = function(e, t, n, r) {
|
|
|
25
21
|
}
|
|
26
22
|
render() {
|
|
27
23
|
let e = this.playerState?.currentTime || 0, t = this.playerState?.duration || 0;
|
|
28
|
-
if (this.format === "elapsed") return
|
|
24
|
+
if (this.format === "elapsed") return a`${this._formatTime(e)}`;
|
|
29
25
|
if (this.format === "remaining") {
|
|
30
26
|
let n = Math.max(0, t - e);
|
|
31
|
-
return
|
|
32
|
-
} else return
|
|
27
|
+
return a`-${this._formatTime(n)}`;
|
|
28
|
+
} else return a`${this._formatTime(e)}${this.separator}${t ? this._formatTime(t) : "--:--"}`;
|
|
33
29
|
}
|
|
34
30
|
_formatTime(e) {
|
|
35
|
-
return
|
|
31
|
+
return n(e);
|
|
36
32
|
}
|
|
37
33
|
};
|
|
38
|
-
|
|
34
|
+
t([c({
|
|
39
35
|
context: e,
|
|
40
36
|
subscribe: !0
|
|
41
|
-
}),
|
|
37
|
+
}), s({ attribute: !1 })], l.prototype, "playerState", void 0), t([s({ type: String })], l.prototype, "format", void 0), t([s({ type: String })], l.prototype, "separator", void 0), t([s({ type: Boolean })], l.prototype, "compact", void 0), l = t([o("ui-audio-time-display")], l);
|
|
42
38
|
export { l as UiAudioTimeDisplay };
|
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
import { audioPlayerContext as e } from "../../utils/audio-context.js";
|
|
2
|
+
import { __decorate as t } from "../../_virtual/_@oxc-project_runtime@0.113.0/helpers/decorate.js";
|
|
2
3
|
import "@material/web/icon/icon.js";
|
|
3
|
-
import { LitElement as
|
|
4
|
-
import { customElement as
|
|
5
|
-
import { consume as
|
|
4
|
+
import { LitElement as n, css as r, html as i } from "lit";
|
|
5
|
+
import { customElement as a, property as o } from "lit/decorators.js";
|
|
6
|
+
import { consume as s } from "@lit/context";
|
|
6
7
|
import "@material/web/iconbutton/icon-button.js";
|
|
7
8
|
import "@material/web/slider/slider.js";
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
else for (var s = e.length - 1; s >= 0; s--) (o = e[s]) && (a = (i < 3 ? o(a) : i > 3 ? o(t, n, a) : o(t, n)) || a);
|
|
12
|
-
return i > 3 && a && Object.defineProperty(t, n, a), a;
|
|
13
|
-
}, c = class extends t {
|
|
14
|
-
constructor() {
|
|
15
|
-
super(...arguments), this.variant = "inline", this._isOpen = !1;
|
|
9
|
+
var c = class extends n {
|
|
10
|
+
constructor(...e) {
|
|
11
|
+
super(...e), this.variant = "inline", this._isOpen = !1;
|
|
16
12
|
}
|
|
17
13
|
static {
|
|
18
|
-
this.styles =
|
|
14
|
+
this.styles = r`
|
|
19
15
|
:host([variant="popover"]) {
|
|
20
16
|
display: inline-block;
|
|
21
17
|
width: auto;
|
|
@@ -105,8 +101,8 @@ var s = function(e, t, n, r) {
|
|
|
105
101
|
render() {
|
|
106
102
|
let e = this.playerState?.volume ?? 1, t = this.playerState?.muted ?? !1, n = "volume_up";
|
|
107
103
|
t || e === 0 ? n = "volume_off" : e < .5 && (n = "volume_down");
|
|
108
|
-
let
|
|
109
|
-
return this.variant === "popover" ?
|
|
104
|
+
let r = t ? "Unmute audio" : "Mute audio";
|
|
105
|
+
return this.variant === "popover" ? i`
|
|
110
106
|
<div
|
|
111
107
|
@mouseenter="${() => this._isOpen = !0}"
|
|
112
108
|
@mouseleave="${() => this._isOpen = !1}"
|
|
@@ -115,7 +111,7 @@ var s = function(e, t, n, r) {
|
|
|
115
111
|
<md-icon-button
|
|
116
112
|
@click="${this._toggleMute}"
|
|
117
113
|
part="button"
|
|
118
|
-
aria-label="${
|
|
114
|
+
aria-label="${r}"
|
|
119
115
|
>
|
|
120
116
|
<md-icon>${n}</md-icon>
|
|
121
117
|
</md-icon-button>
|
|
@@ -133,11 +129,11 @@ var s = function(e, t, n, r) {
|
|
|
133
129
|
</div>
|
|
134
130
|
</div>
|
|
135
131
|
</div>
|
|
136
|
-
` :
|
|
132
|
+
` : i`
|
|
137
133
|
<md-icon-button
|
|
138
134
|
@click="${this._toggleMute}"
|
|
139
135
|
part="button"
|
|
140
|
-
aria-label="${
|
|
136
|
+
aria-label="${r}"
|
|
141
137
|
>
|
|
142
138
|
<md-icon>${n}</md-icon>
|
|
143
139
|
</md-icon-button>
|
|
@@ -161,14 +157,14 @@ var s = function(e, t, n, r) {
|
|
|
161
157
|
this.playerState && this.playerState.toggleMute();
|
|
162
158
|
}
|
|
163
159
|
};
|
|
164
|
-
|
|
160
|
+
t([s({
|
|
165
161
|
context: e,
|
|
166
162
|
subscribe: !0
|
|
167
|
-
}),
|
|
163
|
+
}), o({ attribute: !1 })], c.prototype, "playerState", void 0), t([o({
|
|
168
164
|
type: String,
|
|
169
165
|
reflect: !0
|
|
170
|
-
})], c.prototype, "variant", void 0),
|
|
166
|
+
})], c.prototype, "variant", void 0), t([o({
|
|
171
167
|
type: Boolean,
|
|
172
168
|
state: !0
|
|
173
|
-
})], c.prototype, "_isOpen", void 0), c =
|
|
169
|
+
})], c.prototype, "_isOpen", void 0), c = t([a("ui-audio-volume-slider")], c);
|
|
174
170
|
export { c as UiAudioVolumeSlider };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { __decorate as e } from "../../_virtual/_@oxc-project_runtime@0.113.0/helpers/decorate.js";
|
|
2
|
+
import { speechContext as t } from "../../utils/speech-context.js";
|
|
3
3
|
import "@material/web/icon/icon.js";
|
|
4
4
|
import { LitElement as n, css as r, html as i } from "lit";
|
|
5
5
|
import { customElement as a } from "lit/decorators.js";
|
|
@@ -40,8 +40,8 @@ var s = class extends n {
|
|
|
40
40
|
this._context?.cancel();
|
|
41
41
|
}
|
|
42
42
|
};
|
|
43
|
-
|
|
44
|
-
context:
|
|
43
|
+
e([o({
|
|
44
|
+
context: t,
|
|
45
45
|
subscribe: !0
|
|
46
|
-
})], s.prototype, "_context", void 0), s =
|
|
46
|
+
})], s.prototype, "_context", void 0), s = e([a("ui-speech-cancel-button")], s);
|
|
47
47
|
export { s as UiSpeechCancelButton };
|