@ghchinoy/lit-audio-ui 0.4.19 → 0.5.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 +1648 -1364
- package/dist/components/atoms/ui-audio-next-button.js +13 -9
- package/dist/components/atoms/ui-audio-play-button.js +15 -15
- package/dist/components/atoms/ui-audio-player-error.js +14 -10
- package/dist/components/atoms/ui-audio-prev-button.js +13 -9
- package/dist/components/atoms/ui-audio-volume-slider.js +21 -17
- 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 +18 -14
- package/dist/components/atoms/ui-voice-waveform.js +19 -15
- package/dist/components/molecules/ui-live-waveform.js +5 -3
- package/dist/components/molecules/ui-mic-selector.js +18 -14
- package/dist/components/molecules/ui-moving-gradient.js +116 -0
- package/dist/components/molecules/ui-playlist.js +19 -15
- package/dist/components/molecules/ui-scrolling-waveform.js +5 -3
- package/dist/components/molecules/ui-spectrum-visualizer.js +4 -3
- package/dist/components/molecules/ui-speech-preview.js +20 -16
- package/dist/components/molecules/ui-voice-button.js +29 -25
- package/dist/components/molecules/ui-voice-picker.js +25 -21
- package/dist/components/molecules/ui-voice-pill.js +5 -5
- package/dist/components/molecules/ui-waveform.js +5 -3
- package/dist/components/providers/ui-audio-provider.js +8 -2
- package/dist/index.js +15 -14
- package/dist/scream-audio-ui.umd.js +176 -46
- package/dist/src/components/molecules/ui-live-waveform.d.ts +1 -1
- package/dist/src/components/molecules/ui-moving-gradient.d.ts +40 -0
- package/dist/src/components/molecules/ui-scrolling-waveform.d.ts +1 -1
- package/dist/src/components/molecules/ui-spectrum-visualizer.d.ts +1 -1
- package/dist/src/components/molecules/ui-waveform.d.ts +1 -1
- package/dist/src/components/providers/ui-audio-provider.d.ts +2 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/utils/audio-context.d.ts +1 -0
- package/dist/standalone/scream-audio-ui.standalone.js +1637 -1471
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/custom-elements.json
CHANGED
|
@@ -183,6 +183,14 @@
|
|
|
183
183
|
"module": "src/components/molecules/ui-orb.js"
|
|
184
184
|
}
|
|
185
185
|
},
|
|
186
|
+
{
|
|
187
|
+
"kind": "js",
|
|
188
|
+
"name": "*",
|
|
189
|
+
"declaration": {
|
|
190
|
+
"name": "*",
|
|
191
|
+
"module": "src/components/molecules/ui-moving-gradient.js"
|
|
192
|
+
}
|
|
193
|
+
},
|
|
186
194
|
{
|
|
187
195
|
"kind": "js",
|
|
188
196
|
"name": "*",
|
|
@@ -800,7 +808,7 @@
|
|
|
800
808
|
"kind": "field",
|
|
801
809
|
"name": "styles",
|
|
802
810
|
"static": true,
|
|
803
|
-
"default": "css` :host { display: inline-flex; position: relative; align-items: center; justify-content: center; font-family: inherit; } md-filled-icon-button { --md-filled-icon-button-container-color: var( --md-sys-color-primary, #0066cc ); --md-filled-icon-button-icon-color: var( --md-sys-color-on-primary, #ffffff ); --md-filled-icon-button-hover-icon-color: var( --md-sys-color-on-primary, #ffffff ); --md-filled-icon-button-focus-icon-color: var( --md-sys-color-on-primary, #ffffff ); --md-filled-icon-button-pressed-icon-color: var( --md-sys-color-on-primary, #ffffff ); --md-filled-icon-button-toggle-icon-color: var( --md-sys-color-on-primary, #ffffff ); --md-filled-icon-button-selected-container-color: var( --md-sys-color-primary, #0066cc ); --md-filled-icon-button-selected-icon-color: var( --md-sys-color-on-primary, #ffffff ); color: var(--md-sys-color-on-primary, #ffffff); } md-filled-icon-button.error { --md-filled-icon-button-container-color: var( --ui-audio-error-color, var(--md-sys-color-error, #ba1a1a) ); --md-filled-icon-button-icon-color: var(--md-sys-color-on-error, #ffffff); } md-circular-progress {
|
|
811
|
+
"default": "css` :host { display: inline-flex; position: relative; align-items: center; justify-content: center; font-family: inherit; } md-filled-icon-button { --md-filled-icon-button-container-color: var( --md-sys-color-primary, #0066cc ); --md-filled-icon-button-icon-color: var( --md-sys-color-on-primary, #ffffff ); --md-filled-icon-button-hover-icon-color: var( --md-sys-color-on-primary, #ffffff ); --md-filled-icon-button-focus-icon-color: var( --md-sys-color-on-primary, #ffffff ); --md-filled-icon-button-pressed-icon-color: var( --md-sys-color-on-primary, #ffffff ); --md-filled-icon-button-toggle-icon-color: var( --md-sys-color-on-primary, #ffffff ); --md-filled-icon-button-selected-container-color: var( --md-sys-color-primary, #0066cc ); --md-filled-icon-button-selected-icon-color: var( --md-sys-color-on-primary, #ffffff ); color: var(--md-sys-color-on-primary, #ffffff); } md-filled-icon-button.error { --md-filled-icon-button-container-color: var( --ui-audio-error-color, var(--md-sys-color-error, #ba1a1a) ); --md-filled-icon-button-icon-color: var(--md-sys-color-on-error, #ffffff); } md-circular-progress { --md-circular-progress-size: 24px; } `"
|
|
804
812
|
},
|
|
805
813
|
{
|
|
806
814
|
"kind": "method",
|
|
@@ -1743,29 +1751,43 @@
|
|
|
1743
1751
|
},
|
|
1744
1752
|
{
|
|
1745
1753
|
"kind": "javascript-module",
|
|
1746
|
-
"path": "src/components/
|
|
1754
|
+
"path": "src/components/molecules/scream-voice-button.ts",
|
|
1747
1755
|
"declarations": [
|
|
1748
1756
|
{
|
|
1749
1757
|
"kind": "class",
|
|
1750
|
-
"description": "A
|
|
1751
|
-
"name": "
|
|
1758
|
+
"description": "A basic demonstration of the ported audio button.",
|
|
1759
|
+
"name": "ScreamVoiceButton",
|
|
1752
1760
|
"members": [
|
|
1753
1761
|
{
|
|
1754
1762
|
"kind": "field",
|
|
1755
|
-
"name": "
|
|
1763
|
+
"name": "state",
|
|
1756
1764
|
"type": {
|
|
1757
|
-
"text": "
|
|
1758
|
-
}
|
|
1765
|
+
"text": "VoiceState"
|
|
1766
|
+
},
|
|
1767
|
+
"default": "'idle'"
|
|
1759
1768
|
},
|
|
1760
1769
|
{
|
|
1761
1770
|
"kind": "field",
|
|
1762
1771
|
"name": "styles",
|
|
1763
1772
|
"static": true,
|
|
1764
|
-
"default": "css` :host { display: inline-block;
|
|
1773
|
+
"default": "css` :host { display: inline-block; } md-filled-button { --md-filled-button-container-shape: 999px; } md-filled-button.recording { --md-filled-button-container-color: var(--md-sys-color-error, #ba1a1a); --md-filled-button-label-text-color: var( --md-sys-color-on-error, #ffffff ); } `"
|
|
1765
1774
|
},
|
|
1766
1775
|
{
|
|
1767
1776
|
"kind": "method",
|
|
1768
1777
|
"name": "render"
|
|
1778
|
+
},
|
|
1779
|
+
{
|
|
1780
|
+
"kind": "method",
|
|
1781
|
+
"name": "_handleClick",
|
|
1782
|
+
"privacy": "private"
|
|
1783
|
+
}
|
|
1784
|
+
],
|
|
1785
|
+
"events": [
|
|
1786
|
+
{
|
|
1787
|
+
"name": "voice-toggle",
|
|
1788
|
+
"type": {
|
|
1789
|
+
"text": "CustomEvent"
|
|
1790
|
+
}
|
|
1769
1791
|
}
|
|
1770
1792
|
],
|
|
1771
1793
|
"superclass": {
|
|
@@ -1778,532 +1800,572 @@
|
|
|
1778
1800
|
"exports": [
|
|
1779
1801
|
{
|
|
1780
1802
|
"kind": "js",
|
|
1781
|
-
"name": "
|
|
1803
|
+
"name": "ScreamVoiceButton",
|
|
1782
1804
|
"declaration": {
|
|
1783
|
-
"name": "
|
|
1784
|
-
"module": "src/components/
|
|
1805
|
+
"name": "ScreamVoiceButton",
|
|
1806
|
+
"module": "src/components/molecules/scream-voice-button.ts"
|
|
1785
1807
|
}
|
|
1786
1808
|
}
|
|
1787
1809
|
]
|
|
1788
1810
|
},
|
|
1789
1811
|
{
|
|
1790
1812
|
"kind": "javascript-module",
|
|
1791
|
-
"path": "src/components/
|
|
1813
|
+
"path": "src/components/molecules/ui-3d-flip.ts",
|
|
1792
1814
|
"declarations": [
|
|
1793
1815
|
{
|
|
1794
1816
|
"kind": "class",
|
|
1795
|
-
"description": "A
|
|
1796
|
-
"name": "
|
|
1817
|
+
"description": "A layout utility component that provides 3D card flipping functionality.",
|
|
1818
|
+
"name": "Ui3dFlip",
|
|
1797
1819
|
"members": [
|
|
1798
1820
|
{
|
|
1799
1821
|
"kind": "field",
|
|
1800
|
-
"name": "
|
|
1822
|
+
"name": "flipped",
|
|
1801
1823
|
"type": {
|
|
1802
|
-
"text": "
|
|
1824
|
+
"text": "boolean"
|
|
1803
1825
|
},
|
|
1804
|
-
"default": "
|
|
1826
|
+
"default": "false"
|
|
1805
1827
|
},
|
|
1806
1828
|
{
|
|
1807
1829
|
"kind": "field",
|
|
1808
|
-
"name": "
|
|
1830
|
+
"name": "axis",
|
|
1809
1831
|
"type": {
|
|
1810
|
-
"text": "
|
|
1832
|
+
"text": "'x' | 'y'"
|
|
1811
1833
|
},
|
|
1812
|
-
"default": "
|
|
1834
|
+
"default": "'y'"
|
|
1813
1835
|
},
|
|
1814
1836
|
{
|
|
1815
1837
|
"kind": "field",
|
|
1816
|
-
"name": "
|
|
1838
|
+
"name": "duration",
|
|
1817
1839
|
"type": {
|
|
1818
|
-
"text": "
|
|
1840
|
+
"text": "string"
|
|
1819
1841
|
},
|
|
1820
|
-
"default": "
|
|
1842
|
+
"default": "'0.6s'"
|
|
1821
1843
|
},
|
|
1822
1844
|
{
|
|
1823
1845
|
"kind": "field",
|
|
1824
|
-
"name": "
|
|
1825
|
-
"
|
|
1826
|
-
|
|
1827
|
-
},
|
|
1828
|
-
"privacy": "private"
|
|
1846
|
+
"name": "styles",
|
|
1847
|
+
"static": true,
|
|
1848
|
+
"default": "css` :host { display: block; perspective: 1000px; width: 100%; height: 100%; } .flip-container { position: relative; width: 100%; height: 100%; text-align: center; transition: transform var(--ui-3d-flip-duration, 0.6s); transform-style: preserve-3d; } :host([flipped]) .flip-container { transform: rotateY(180deg); } :host([flipped][axis='x']) .flip-container { transform: rotateX(180deg); } .front, .back { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; -webkit-backface-visibility: hidden; display: flex; flex-direction: column; border-radius: inherit; overflow: hidden; } .back { transform: rotateY(180deg); background: var(--md-sys-color-surface, #ffffff); } :host([axis='x']) .back { transform: rotateX(180deg); } .flip-trigger { position: absolute; top: 12px; right: 12px; z-index: 10; cursor: pointer; display: flex; align-items: center; justify-content: center; } `"
|
|
1829
1849
|
},
|
|
1830
1850
|
{
|
|
1831
|
-
"kind": "
|
|
1832
|
-
"name": "
|
|
1833
|
-
"type": {
|
|
1834
|
-
"text": "AudioContext | undefined"
|
|
1835
|
-
},
|
|
1836
|
-
"privacy": "private"
|
|
1851
|
+
"kind": "method",
|
|
1852
|
+
"name": "render"
|
|
1837
1853
|
},
|
|
1854
|
+
{
|
|
1855
|
+
"kind": "method",
|
|
1856
|
+
"name": "toggle",
|
|
1857
|
+
"privacy": "public"
|
|
1858
|
+
}
|
|
1859
|
+
],
|
|
1860
|
+
"events": [
|
|
1861
|
+
{
|
|
1862
|
+
"name": "flip-change",
|
|
1863
|
+
"type": {
|
|
1864
|
+
"text": "CustomEvent"
|
|
1865
|
+
}
|
|
1866
|
+
}
|
|
1867
|
+
],
|
|
1868
|
+
"superclass": {
|
|
1869
|
+
"name": "LitElement",
|
|
1870
|
+
"package": "lit"
|
|
1871
|
+
},
|
|
1872
|
+
"customElement": true
|
|
1873
|
+
}
|
|
1874
|
+
],
|
|
1875
|
+
"exports": [
|
|
1876
|
+
{
|
|
1877
|
+
"kind": "js",
|
|
1878
|
+
"name": "Ui3dFlip",
|
|
1879
|
+
"declaration": {
|
|
1880
|
+
"name": "Ui3dFlip",
|
|
1881
|
+
"module": "src/components/molecules/ui-3d-flip.ts"
|
|
1882
|
+
}
|
|
1883
|
+
}
|
|
1884
|
+
]
|
|
1885
|
+
},
|
|
1886
|
+
{
|
|
1887
|
+
"kind": "javascript-module",
|
|
1888
|
+
"path": "src/components/molecules/ui-chat-item.ts",
|
|
1889
|
+
"declarations": [
|
|
1890
|
+
{
|
|
1891
|
+
"kind": "class",
|
|
1892
|
+
"description": "A composite component representing a single chat message item.\nSupports avatars and alignment for inbound/outbound messages.",
|
|
1893
|
+
"name": "UiChatItem",
|
|
1894
|
+
"members": [
|
|
1838
1895
|
{
|
|
1839
1896
|
"kind": "field",
|
|
1840
|
-
"name": "
|
|
1897
|
+
"name": "direction",
|
|
1841
1898
|
"type": {
|
|
1842
|
-
"text": "
|
|
1899
|
+
"text": "'inbound' | 'outbound'"
|
|
1843
1900
|
},
|
|
1844
|
-
"
|
|
1901
|
+
"default": "'inbound'"
|
|
1845
1902
|
},
|
|
1846
1903
|
{
|
|
1847
1904
|
"kind": "field",
|
|
1848
|
-
"name": "
|
|
1905
|
+
"name": "variant",
|
|
1849
1906
|
"type": {
|
|
1850
|
-
"text": "
|
|
1907
|
+
"text": "'contained' | 'flat'"
|
|
1851
1908
|
},
|
|
1852
|
-
"
|
|
1909
|
+
"default": "'contained'"
|
|
1853
1910
|
},
|
|
1854
1911
|
{
|
|
1855
1912
|
"kind": "field",
|
|
1856
|
-
"name": "
|
|
1913
|
+
"name": "avatarSrc",
|
|
1857
1914
|
"type": {
|
|
1858
|
-
"text": "
|
|
1859
|
-
}
|
|
1860
|
-
"privacy": "private",
|
|
1861
|
-
"default": "0"
|
|
1915
|
+
"text": "string | undefined"
|
|
1916
|
+
}
|
|
1862
1917
|
},
|
|
1863
1918
|
{
|
|
1864
1919
|
"kind": "field",
|
|
1865
|
-
"name": "
|
|
1920
|
+
"name": "avatarName",
|
|
1866
1921
|
"type": {
|
|
1867
|
-
"text": "
|
|
1868
|
-
}
|
|
1869
|
-
"privacy": "public",
|
|
1870
|
-
"default": "{ src: '', isPlaying: false, isBuffering: false, currentTime: 0, duration: 0, volume: 1, muted: false, items: [], currentIndex: -1, autoAdvance: true, analyserNode: undefined, play: () => this.play(), pause: () => this.pause(), togglePlay: () => this._togglePlay(), seek: (time: number) => this._seek(time), setVolume: (volume: number) => this._setVolume(volume), toggleMute: () => this._toggleMute(), next: () => this.next(), previous: () => this.previous(), select: (index: number) => this.select(index), }"
|
|
1922
|
+
"text": "string | undefined"
|
|
1923
|
+
}
|
|
1871
1924
|
},
|
|
1872
1925
|
{
|
|
1873
1926
|
"kind": "field",
|
|
1874
1927
|
"name": "styles",
|
|
1875
1928
|
"static": true,
|
|
1876
|
-
"default": "css` :host { display:
|
|
1929
|
+
"default": "css` :host { display: block; margin-bottom: var(--ui-chat-item-margin-bottom, 8px); width: 100%; } .item-wrapper { display: flex; width: 100%; gap: var(--ui-chat-item-gap, 8px); align-items: flex-end; } .item-wrapper.outbound { flex-direction: row-reverse; } .item-wrapper.inbound { flex-direction: row; } .avatar { width: var(--ui-chat-item-avatar-size, 32px); height: var(--ui-chat-item-avatar-size, 32px); border-radius: 50%; background: var(--md-sys-color-surface-container-highest); display: flex; align-items: center; justify-content: center; flex-shrink: 0; overflow: hidden; font-size: 12px; font-weight: 500; color: var(--md-sys-color-on-surface-variant); border: 1px solid var(--md-sys-color-outline-variant); } .avatar img { width: 100%; height: 100%; object-fit: cover; } `"
|
|
1877
1930
|
},
|
|
1878
1931
|
{
|
|
1879
1932
|
"kind": "method",
|
|
1880
1933
|
"name": "render"
|
|
1934
|
+
}
|
|
1935
|
+
],
|
|
1936
|
+
"superclass": {
|
|
1937
|
+
"name": "LitElement",
|
|
1938
|
+
"package": "lit"
|
|
1939
|
+
},
|
|
1940
|
+
"customElement": true
|
|
1941
|
+
}
|
|
1942
|
+
],
|
|
1943
|
+
"exports": [
|
|
1944
|
+
{
|
|
1945
|
+
"kind": "js",
|
|
1946
|
+
"name": "UiChatItem",
|
|
1947
|
+
"declaration": {
|
|
1948
|
+
"name": "UiChatItem",
|
|
1949
|
+
"module": "src/components/molecules/ui-chat-item.ts"
|
|
1950
|
+
}
|
|
1951
|
+
}
|
|
1952
|
+
]
|
|
1953
|
+
},
|
|
1954
|
+
{
|
|
1955
|
+
"kind": "javascript-module",
|
|
1956
|
+
"path": "src/components/molecules/ui-chat-list.ts",
|
|
1957
|
+
"declarations": [
|
|
1958
|
+
{
|
|
1959
|
+
"kind": "class",
|
|
1960
|
+
"description": "MOLECULE: Chat List\nA scrollable container for ui-chat-items.\nAutomatically handles scrolling to the bottom when new children are added.",
|
|
1961
|
+
"name": "UiChatList",
|
|
1962
|
+
"members": [
|
|
1963
|
+
{
|
|
1964
|
+
"kind": "field",
|
|
1965
|
+
"name": "_container",
|
|
1966
|
+
"type": {
|
|
1967
|
+
"text": "HTMLDivElement"
|
|
1968
|
+
},
|
|
1969
|
+
"privacy": "private"
|
|
1881
1970
|
},
|
|
1882
1971
|
{
|
|
1883
|
-
"kind": "
|
|
1884
|
-
"name": "
|
|
1885
|
-
"
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
}
|
|
1891
|
-
}
|
|
1892
|
-
]
|
|
1972
|
+
"kind": "field",
|
|
1973
|
+
"name": "_isAtBottom",
|
|
1974
|
+
"type": {
|
|
1975
|
+
"text": "boolean"
|
|
1976
|
+
},
|
|
1977
|
+
"privacy": "private",
|
|
1978
|
+
"default": "true"
|
|
1893
1979
|
},
|
|
1894
1980
|
{
|
|
1895
|
-
"kind": "
|
|
1896
|
-
"name": "
|
|
1897
|
-
"
|
|
1898
|
-
|
|
1899
|
-
"name": "changed",
|
|
1900
|
-
"type": {
|
|
1901
|
-
"text": "Map<string, any>"
|
|
1902
|
-
}
|
|
1903
|
-
}
|
|
1904
|
-
]
|
|
1981
|
+
"kind": "field",
|
|
1982
|
+
"name": "styles",
|
|
1983
|
+
"static": true,
|
|
1984
|
+
"default": "css` :host { display: block; height: 100%; width: 100%; overflow: hidden; position: relative; } .scroll-container { height: 100%; width: 100%; overflow-y: auto; display: flex; flex-direction: column; padding: var(--ui-chat-list-padding, 1rem); box-sizing: border-box; scroll-behavior: smooth; } /* Scrollbar Styling */ .scroll-container::-webkit-scrollbar { width: 6px; } .scroll-container::-webkit-scrollbar-track { background: transparent; } .scroll-container::-webkit-scrollbar-thumb { background: var(--md-sys-color-outline-variant); border-radius: 10px; } .scroll-button { position: absolute; bottom: var(--ui-chat-list-scroll-btn-bottom, 16px); left: 50%; transform: translateX(-50%); background: var(--md-sys-color-surface-container-highest); border-radius: 50%; box-shadow: var(--md-sys-elevation-level2); z-index: 10; opacity: 0; visibility: hidden; transition: all 0.3s ease; } .scroll-button.visible { opacity: 1; visibility: visible; } `"
|
|
1905
1985
|
},
|
|
1906
1986
|
{
|
|
1907
1987
|
"kind": "method",
|
|
1908
|
-
"name": "
|
|
1909
|
-
"privacy": "
|
|
1988
|
+
"name": "updated",
|
|
1989
|
+
"privacy": "protected",
|
|
1910
1990
|
"parameters": [
|
|
1911
1991
|
{
|
|
1912
|
-
"name": "
|
|
1992
|
+
"name": "changedProperties",
|
|
1913
1993
|
"type": {
|
|
1914
|
-
"text": "
|
|
1994
|
+
"text": "PropertyValues"
|
|
1915
1995
|
}
|
|
1916
1996
|
}
|
|
1917
1997
|
]
|
|
1918
1998
|
},
|
|
1919
1999
|
{
|
|
1920
2000
|
"kind": "method",
|
|
1921
|
-
"name": "
|
|
1922
|
-
"privacy": "
|
|
1923
|
-
|
|
1924
|
-
{
|
|
1925
|
-
"kind": "method",
|
|
1926
|
-
"name": "play",
|
|
1927
|
-
"privacy": "public"
|
|
1928
|
-
},
|
|
1929
|
-
{
|
|
1930
|
-
"kind": "method",
|
|
1931
|
-
"name": "pause",
|
|
1932
|
-
"privacy": "public"
|
|
2001
|
+
"name": "scrollToBottom",
|
|
2002
|
+
"privacy": "public",
|
|
2003
|
+
"description": "Imperatively scroll to the most recent message."
|
|
1933
2004
|
},
|
|
1934
2005
|
{
|
|
1935
2006
|
"kind": "method",
|
|
1936
|
-
"name": "
|
|
2007
|
+
"name": "_handleScroll",
|
|
1937
2008
|
"privacy": "private"
|
|
1938
2009
|
},
|
|
1939
2010
|
{
|
|
1940
2011
|
"kind": "method",
|
|
1941
|
-
"name": "
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
2012
|
+
"name": "render"
|
|
2013
|
+
}
|
|
2014
|
+
],
|
|
2015
|
+
"superclass": {
|
|
2016
|
+
"name": "LitElement",
|
|
2017
|
+
"package": "lit"
|
|
2018
|
+
},
|
|
2019
|
+
"tagName": "ui-chat-list",
|
|
2020
|
+
"customElement": true
|
|
2021
|
+
}
|
|
2022
|
+
],
|
|
2023
|
+
"exports": [
|
|
2024
|
+
{
|
|
2025
|
+
"kind": "js",
|
|
2026
|
+
"name": "UiChatList",
|
|
2027
|
+
"declaration": {
|
|
2028
|
+
"name": "UiChatList",
|
|
2029
|
+
"module": "src/components/molecules/ui-chat-list.ts"
|
|
2030
|
+
}
|
|
2031
|
+
}
|
|
2032
|
+
]
|
|
2033
|
+
},
|
|
2034
|
+
{
|
|
2035
|
+
"kind": "javascript-module",
|
|
2036
|
+
"path": "src/components/molecules/ui-conversation-bar.ts",
|
|
2037
|
+
"declarations": [
|
|
2038
|
+
{
|
|
2039
|
+
"kind": "class",
|
|
2040
|
+
"description": "MOLECULE: Conversation Bar\nA specialized interaction bar for AI conversations.\nCombines mic selection, live visualization, and text input.",
|
|
2041
|
+
"name": "UiConversationBar",
|
|
2042
|
+
"members": [
|
|
1970
2043
|
{
|
|
1971
|
-
"kind": "
|
|
1972
|
-
"name": "
|
|
1973
|
-
"
|
|
2044
|
+
"kind": "field",
|
|
2045
|
+
"name": "agentId",
|
|
2046
|
+
"type": {
|
|
2047
|
+
"text": "string"
|
|
2048
|
+
},
|
|
2049
|
+
"default": "''",
|
|
2050
|
+
"description": "(Optional) ID of the AI agent."
|
|
1974
2051
|
},
|
|
1975
2052
|
{
|
|
1976
|
-
"kind": "
|
|
1977
|
-
"name": "
|
|
1978
|
-
"
|
|
2053
|
+
"kind": "field",
|
|
2054
|
+
"name": "simulation",
|
|
2055
|
+
"type": {
|
|
2056
|
+
"text": "boolean"
|
|
2057
|
+
},
|
|
2058
|
+
"default": "false",
|
|
2059
|
+
"description": "Enable mock transcription for demos."
|
|
1979
2060
|
},
|
|
1980
2061
|
{
|
|
1981
|
-
"kind": "
|
|
1982
|
-
"name": "
|
|
1983
|
-
"
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
"text": "number"
|
|
1989
|
-
}
|
|
1990
|
-
}
|
|
1991
|
-
]
|
|
2062
|
+
"kind": "field",
|
|
2063
|
+
"name": "_keyboardOpen",
|
|
2064
|
+
"type": {
|
|
2065
|
+
"text": "boolean"
|
|
2066
|
+
},
|
|
2067
|
+
"privacy": "private",
|
|
2068
|
+
"default": "false"
|
|
1992
2069
|
},
|
|
1993
2070
|
{
|
|
1994
|
-
"kind": "
|
|
1995
|
-
"name": "
|
|
1996
|
-
"
|
|
2071
|
+
"kind": "field",
|
|
2072
|
+
"name": "_textInput",
|
|
2073
|
+
"type": {
|
|
2074
|
+
"text": "string"
|
|
2075
|
+
},
|
|
2076
|
+
"privacy": "private",
|
|
2077
|
+
"default": "''"
|
|
1997
2078
|
},
|
|
1998
2079
|
{
|
|
1999
|
-
"kind": "
|
|
2000
|
-
"name": "
|
|
2001
|
-
"
|
|
2080
|
+
"kind": "field",
|
|
2081
|
+
"name": "_isMuted",
|
|
2082
|
+
"type": {
|
|
2083
|
+
"text": "boolean"
|
|
2084
|
+
},
|
|
2085
|
+
"privacy": "private",
|
|
2086
|
+
"default": "false"
|
|
2002
2087
|
},
|
|
2003
2088
|
{
|
|
2004
|
-
"kind": "
|
|
2005
|
-
"name": "
|
|
2006
|
-
"
|
|
2089
|
+
"kind": "field",
|
|
2090
|
+
"name": "styles",
|
|
2091
|
+
"static": true,
|
|
2092
|
+
"default": "css` :host { display: block; width: 100%; font-family: inherit; } .container { background: var(--md-sys-color-surface-container, #f3f3f3); border-radius: var(--ui-conversation-bar-radius, 24px); border: 1px solid var(--md-sys-color-outline-variant); box-shadow: var(--md-sys-elevation-level1); overflow: hidden; display: flex; flex-direction: column-reverse; transition: all 0.3s ease; } .toolbar { display: flex; align-items: center; justify-content: space-between; padding: var(--ui-conversation-bar-padding, 8px 16px); gap: 12px; color: var(--md-sys-color-on-surface, #1d1b20); } .visualizer-section { display: flex; align-items: center; gap: 12px; flex: 1; height: 40px; background: var(--md-sys-color-surface-container-high, #e2e2e2); border-radius: 12px; padding: 0 12px; overflow: hidden; color: var(--md-sys-color-on-surface, #1d1b20); } ui-mic-selector { --md-sys-color-on-surface: var(--md-sys-color-on-surface-variant, #49454f); } .waveform-wrapper { flex: 1; height: 24px; color: var(--md-sys-color-primary, #0066cc); } .controls { display: flex; align-items: center; gap: 4px; color: var(--md-sys-color-on-surface-variant, #49454f); } md-icon-button { --md-icon-button-icon-color: var(--md-sys-color-on-surface-variant, #49454f); } .input-area { max-height: 0; overflow: hidden; transition: max-height 0.3s ease-out; background: var(--md-sys-color-surface-container); } .input-area.open { max-height: 200px; } .input-container { padding: 16px; display: flex; gap: 8px; align-items: flex-end; } md-outlined-text-field { flex: 1; --md-outlined-text-field-container-shape: 16px; font-family: inherit; --md-outlined-text-field-input-text-font: inherit; --md-outlined-text-field-label-text-font: inherit; } .keyboard-toggle.active { background: var(--md-sys-color-secondary-container); color: var(--md-sys-color-on-secondary-container); } md-divider { margin: 0; } `"
|
|
2007
2093
|
},
|
|
2008
2094
|
{
|
|
2009
2095
|
"kind": "method",
|
|
2010
|
-
"name": "
|
|
2011
|
-
"privacy": "private"
|
|
2096
|
+
"name": "render"
|
|
2012
2097
|
},
|
|
2013
2098
|
{
|
|
2014
2099
|
"kind": "method",
|
|
2015
|
-
"name": "
|
|
2100
|
+
"name": "_handleKeyDown",
|
|
2016
2101
|
"privacy": "private",
|
|
2017
2102
|
"parameters": [
|
|
2018
2103
|
{
|
|
2019
2104
|
"name": "e",
|
|
2020
|
-
"optional": true,
|
|
2021
2105
|
"type": {
|
|
2022
|
-
"text": "
|
|
2106
|
+
"text": "KeyboardEvent"
|
|
2023
2107
|
}
|
|
2024
2108
|
}
|
|
2025
2109
|
]
|
|
2026
2110
|
},
|
|
2027
2111
|
{
|
|
2028
2112
|
"kind": "method",
|
|
2029
|
-
"name": "
|
|
2113
|
+
"name": "_sendMessage",
|
|
2114
|
+
"privacy": "private"
|
|
2115
|
+
},
|
|
2116
|
+
{
|
|
2117
|
+
"kind": "method",
|
|
2118
|
+
"name": "_handleCallToggle",
|
|
2030
2119
|
"privacy": "private"
|
|
2031
2120
|
}
|
|
2032
2121
|
],
|
|
2033
2122
|
"events": [
|
|
2034
2123
|
{
|
|
2035
|
-
"name": "
|
|
2124
|
+
"name": "message-sent",
|
|
2125
|
+
"type": {
|
|
2126
|
+
"text": "CustomEvent"
|
|
2127
|
+
},
|
|
2128
|
+
"description": "Dispatched when a text message is sent. detail: { message }"
|
|
2129
|
+
},
|
|
2130
|
+
{
|
|
2131
|
+
"name": "call-toggle",
|
|
2036
2132
|
"type": {
|
|
2037
2133
|
"text": "CustomEvent"
|
|
2038
2134
|
}
|
|
2135
|
+
},
|
|
2136
|
+
{
|
|
2137
|
+
"description": "Dispatched when the conversation state changes.",
|
|
2138
|
+
"name": "state-change"
|
|
2039
2139
|
}
|
|
2040
2140
|
],
|
|
2041
2141
|
"superclass": {
|
|
2042
2142
|
"name": "LitElement",
|
|
2043
2143
|
"package": "lit"
|
|
2044
2144
|
},
|
|
2145
|
+
"tagName": "ui-conversation-bar",
|
|
2045
2146
|
"customElement": true
|
|
2046
2147
|
}
|
|
2047
2148
|
],
|
|
2048
2149
|
"exports": [
|
|
2049
2150
|
{
|
|
2050
2151
|
"kind": "js",
|
|
2051
|
-
"name": "
|
|
2152
|
+
"name": "UiConversationBar",
|
|
2052
2153
|
"declaration": {
|
|
2053
|
-
"name": "
|
|
2054
|
-
"module": "src/components/
|
|
2154
|
+
"name": "UiConversationBar",
|
|
2155
|
+
"module": "src/components/molecules/ui-conversation-bar.ts"
|
|
2055
2156
|
}
|
|
2056
2157
|
}
|
|
2057
2158
|
]
|
|
2058
2159
|
},
|
|
2059
2160
|
{
|
|
2060
2161
|
"kind": "javascript-module",
|
|
2061
|
-
"path": "src/components/
|
|
2162
|
+
"path": "src/components/molecules/ui-live-waveform.ts",
|
|
2062
2163
|
"declarations": [
|
|
2063
2164
|
{
|
|
2064
2165
|
"kind": "class",
|
|
2065
|
-
"description": "A
|
|
2066
|
-
"name": "
|
|
2166
|
+
"description": "A real-time audio visualizer component.",
|
|
2167
|
+
"name": "UiLiveWaveform",
|
|
2067
2168
|
"members": [
|
|
2068
2169
|
{
|
|
2069
2170
|
"kind": "field",
|
|
2070
|
-
"name": "
|
|
2171
|
+
"name": "active",
|
|
2071
2172
|
"type": {
|
|
2072
|
-
"text": "
|
|
2173
|
+
"text": "boolean"
|
|
2073
2174
|
},
|
|
2074
|
-
"
|
|
2075
|
-
"default": "{ state: 'idle', transcript: '', partialTranscript: '', analyserNode: undefined, start: () => this.start(), stop: () => this.stop(), cancel: () => this.cancel(), }"
|
|
2175
|
+
"default": "false"
|
|
2076
2176
|
},
|
|
2077
2177
|
{
|
|
2078
2178
|
"kind": "field",
|
|
2079
|
-
"name": "
|
|
2179
|
+
"name": "processing",
|
|
2080
2180
|
"type": {
|
|
2081
|
-
"text": "
|
|
2181
|
+
"text": "boolean"
|
|
2082
2182
|
},
|
|
2083
|
-
"default": "
|
|
2084
|
-
"description": "The current recording state ('idle', 'connecting', 'recording', 'processing', 'success', 'error')."
|
|
2183
|
+
"default": "false"
|
|
2085
2184
|
},
|
|
2086
2185
|
{
|
|
2087
2186
|
"kind": "field",
|
|
2088
|
-
"name": "
|
|
2187
|
+
"name": "analyserNode",
|
|
2089
2188
|
"type": {
|
|
2090
|
-
"text": "
|
|
2189
|
+
"text": "AnalyserNode | undefined"
|
|
2190
|
+
}
|
|
2191
|
+
},
|
|
2192
|
+
{
|
|
2193
|
+
"kind": "field",
|
|
2194
|
+
"name": "barWidth",
|
|
2195
|
+
"type": {
|
|
2196
|
+
"text": "number"
|
|
2091
2197
|
},
|
|
2092
|
-
"default": "
|
|
2093
|
-
"description": "Enable mock transcription and audio data for demos."
|
|
2198
|
+
"default": "3"
|
|
2094
2199
|
},
|
|
2095
2200
|
{
|
|
2096
2201
|
"kind": "field",
|
|
2097
|
-
"name": "
|
|
2202
|
+
"name": "barHeight",
|
|
2098
2203
|
"type": {
|
|
2099
|
-
"text": "
|
|
2204
|
+
"text": "number"
|
|
2100
2205
|
},
|
|
2101
|
-
"default": "
|
|
2102
|
-
"description": "If true, the provider will not start recording automatically but will emit requests."
|
|
2206
|
+
"default": "4"
|
|
2103
2207
|
},
|
|
2104
2208
|
{
|
|
2105
2209
|
"kind": "field",
|
|
2106
|
-
"name": "
|
|
2210
|
+
"name": "barGap",
|
|
2107
2211
|
"type": {
|
|
2108
|
-
"text": "
|
|
2212
|
+
"text": "number"
|
|
2109
2213
|
},
|
|
2110
|
-
"default": "
|
|
2111
|
-
"description": "The final confirmed transcript."
|
|
2214
|
+
"default": "1"
|
|
2112
2215
|
},
|
|
2113
2216
|
{
|
|
2114
2217
|
"kind": "field",
|
|
2115
|
-
"name": "
|
|
2218
|
+
"name": "barRadius",
|
|
2116
2219
|
"type": {
|
|
2117
|
-
"text": "
|
|
2220
|
+
"text": "number"
|
|
2118
2221
|
},
|
|
2119
|
-
"default": "
|
|
2120
|
-
"description": "The live, interim transcript."
|
|
2222
|
+
"default": "1.5"
|
|
2121
2223
|
},
|
|
2122
2224
|
{
|
|
2123
2225
|
"kind": "field",
|
|
2124
|
-
"name": "
|
|
2226
|
+
"name": "barColor",
|
|
2125
2227
|
"type": {
|
|
2126
2228
|
"text": "string | undefined"
|
|
2127
2229
|
}
|
|
2128
2230
|
},
|
|
2129
2231
|
{
|
|
2130
2232
|
"kind": "field",
|
|
2131
|
-
"name": "
|
|
2233
|
+
"name": "fadeEdges",
|
|
2132
2234
|
"type": {
|
|
2133
|
-
"text": "
|
|
2235
|
+
"text": "boolean"
|
|
2134
2236
|
},
|
|
2135
|
-
"
|
|
2237
|
+
"default": "true"
|
|
2136
2238
|
},
|
|
2137
2239
|
{
|
|
2138
2240
|
"kind": "field",
|
|
2139
|
-
"name": "
|
|
2241
|
+
"name": "fadeWidth",
|
|
2140
2242
|
"type": {
|
|
2141
|
-
"text": "
|
|
2243
|
+
"text": "number"
|
|
2142
2244
|
},
|
|
2143
|
-
"
|
|
2245
|
+
"default": "24"
|
|
2144
2246
|
},
|
|
2145
2247
|
{
|
|
2146
2248
|
"kind": "field",
|
|
2147
|
-
"name": "
|
|
2249
|
+
"name": "height",
|
|
2148
2250
|
"type": {
|
|
2149
|
-
"text": "
|
|
2251
|
+
"text": "number | string | undefined"
|
|
2252
|
+
}
|
|
2253
|
+
},
|
|
2254
|
+
{
|
|
2255
|
+
"kind": "field",
|
|
2256
|
+
"name": "sensitivity",
|
|
2257
|
+
"type": {
|
|
2258
|
+
"text": "number"
|
|
2150
2259
|
},
|
|
2151
|
-
"
|
|
2260
|
+
"default": "1.0"
|
|
2152
2261
|
},
|
|
2153
2262
|
{
|
|
2154
2263
|
"kind": "field",
|
|
2155
|
-
"name": "
|
|
2264
|
+
"name": "updateRate",
|
|
2156
2265
|
"type": {
|
|
2157
|
-
"text": "
|
|
2266
|
+
"text": "number"
|
|
2267
|
+
},
|
|
2268
|
+
"default": "30"
|
|
2269
|
+
},
|
|
2270
|
+
{
|
|
2271
|
+
"kind": "field",
|
|
2272
|
+
"name": "_canvas",
|
|
2273
|
+
"type": {
|
|
2274
|
+
"text": "HTMLCanvasElement"
|
|
2158
2275
|
},
|
|
2159
2276
|
"privacy": "private"
|
|
2160
2277
|
},
|
|
2161
2278
|
{
|
|
2162
2279
|
"kind": "field",
|
|
2163
|
-
"name": "
|
|
2280
|
+
"name": "_container",
|
|
2164
2281
|
"type": {
|
|
2165
|
-
"text": "
|
|
2282
|
+
"text": "HTMLDivElement"
|
|
2166
2283
|
},
|
|
2167
|
-
"privacy": "private"
|
|
2168
|
-
"default": "[ 'I', ' am', ' recording', ' a', ' message', ' using', ' atomic', ' components...', ]"
|
|
2284
|
+
"privacy": "private"
|
|
2169
2285
|
},
|
|
2170
2286
|
{
|
|
2171
2287
|
"kind": "field",
|
|
2172
|
-
"name": "
|
|
2173
|
-
"
|
|
2174
|
-
|
|
2288
|
+
"name": "_animationFrameId",
|
|
2289
|
+
"type": {
|
|
2290
|
+
"text": "number"
|
|
2291
|
+
},
|
|
2292
|
+
"privacy": "private",
|
|
2293
|
+
"default": "0"
|
|
2175
2294
|
},
|
|
2176
2295
|
{
|
|
2177
|
-
"kind": "
|
|
2178
|
-
"name": "
|
|
2179
|
-
"
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
"type": {
|
|
2183
|
-
"text": "Map<string, any>"
|
|
2184
|
-
}
|
|
2185
|
-
}
|
|
2186
|
-
]
|
|
2187
|
-
},
|
|
2188
|
-
{
|
|
2189
|
-
"kind": "method",
|
|
2190
|
-
"name": "start"
|
|
2191
|
-
},
|
|
2192
|
-
{
|
|
2193
|
-
"kind": "method",
|
|
2194
|
-
"name": "stop"
|
|
2195
|
-
},
|
|
2196
|
-
{
|
|
2197
|
-
"kind": "method",
|
|
2198
|
-
"name": "cancel"
|
|
2199
|
-
},
|
|
2200
|
-
{
|
|
2201
|
-
"kind": "method",
|
|
2202
|
-
"name": "_cleanupStream",
|
|
2203
|
-
"privacy": "private"
|
|
2204
|
-
},
|
|
2205
|
-
{
|
|
2206
|
-
"kind": "method",
|
|
2207
|
-
"name": "_updateContext",
|
|
2296
|
+
"kind": "field",
|
|
2297
|
+
"name": "_lastUpdateTime",
|
|
2298
|
+
"type": {
|
|
2299
|
+
"text": "number"
|
|
2300
|
+
},
|
|
2208
2301
|
"privacy": "private",
|
|
2209
|
-
"
|
|
2210
|
-
{
|
|
2211
|
-
"name": "update",
|
|
2212
|
-
"type": {
|
|
2213
|
-
"text": "Partial<SpeechContext>"
|
|
2214
|
-
}
|
|
2215
|
-
}
|
|
2216
|
-
]
|
|
2302
|
+
"default": "0"
|
|
2217
2303
|
},
|
|
2218
2304
|
{
|
|
2219
|
-
"kind": "
|
|
2220
|
-
"name": "
|
|
2221
|
-
}
|
|
2222
|
-
],
|
|
2223
|
-
"events": [
|
|
2224
|
-
{
|
|
2225
|
-
"name": "speech-request-start",
|
|
2305
|
+
"kind": "field",
|
|
2306
|
+
"name": "_resizeObserver",
|
|
2226
2307
|
"type": {
|
|
2227
|
-
"text": "
|
|
2308
|
+
"text": "ResizeObserver | undefined"
|
|
2228
2309
|
},
|
|
2229
|
-
"
|
|
2310
|
+
"privacy": "private"
|
|
2230
2311
|
},
|
|
2231
2312
|
{
|
|
2232
|
-
"
|
|
2313
|
+
"kind": "field",
|
|
2314
|
+
"name": "_themeObserver",
|
|
2233
2315
|
"type": {
|
|
2234
|
-
"text": "
|
|
2316
|
+
"text": "MutationObserver | undefined"
|
|
2235
2317
|
},
|
|
2236
|
-
"
|
|
2318
|
+
"privacy": "private"
|
|
2237
2319
|
},
|
|
2238
2320
|
{
|
|
2239
|
-
"
|
|
2321
|
+
"kind": "field",
|
|
2322
|
+
"name": "_dataArray",
|
|
2240
2323
|
"type": {
|
|
2241
|
-
"text": "
|
|
2324
|
+
"text": "Uint8Array | undefined"
|
|
2242
2325
|
},
|
|
2243
|
-
"
|
|
2326
|
+
"privacy": "private"
|
|
2244
2327
|
},
|
|
2245
2328
|
{
|
|
2246
|
-
"
|
|
2329
|
+
"kind": "field",
|
|
2330
|
+
"name": "_currentBars",
|
|
2247
2331
|
"type": {
|
|
2248
|
-
"text": "
|
|
2332
|
+
"text": "number[]"
|
|
2249
2333
|
},
|
|
2250
|
-
"
|
|
2334
|
+
"privacy": "private",
|
|
2335
|
+
"default": "[]"
|
|
2251
2336
|
},
|
|
2252
2337
|
{
|
|
2253
|
-
"
|
|
2338
|
+
"kind": "field",
|
|
2339
|
+
"name": "_processingTime",
|
|
2254
2340
|
"type": {
|
|
2255
|
-
"text": "
|
|
2256
|
-
}
|
|
2341
|
+
"text": "number"
|
|
2342
|
+
},
|
|
2343
|
+
"privacy": "private",
|
|
2344
|
+
"default": "0"
|
|
2257
2345
|
},
|
|
2258
2346
|
{
|
|
2259
|
-
"
|
|
2347
|
+
"kind": "field",
|
|
2348
|
+
"name": "_transitionProgress",
|
|
2260
2349
|
"type": {
|
|
2261
|
-
"text": "
|
|
2350
|
+
"text": "number"
|
|
2262
2351
|
},
|
|
2263
|
-
"
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
"superclass": {
|
|
2267
|
-
"name": "LitElement",
|
|
2268
|
-
"package": "lit"
|
|
2269
|
-
},
|
|
2270
|
-
"tagName": "ui-speech-provider",
|
|
2271
|
-
"customElement": true
|
|
2272
|
-
}
|
|
2273
|
-
],
|
|
2274
|
-
"exports": [
|
|
2275
|
-
{
|
|
2276
|
-
"kind": "js",
|
|
2277
|
-
"name": "UiSpeechProvider",
|
|
2278
|
-
"declaration": {
|
|
2279
|
-
"name": "UiSpeechProvider",
|
|
2280
|
-
"module": "src/components/providers/ui-speech-provider.ts"
|
|
2281
|
-
}
|
|
2282
|
-
}
|
|
2283
|
-
]
|
|
2284
|
-
},
|
|
2285
|
-
{
|
|
2286
|
-
"kind": "javascript-module",
|
|
2287
|
-
"path": "src/components/molecules/scream-voice-button.ts",
|
|
2288
|
-
"declarations": [
|
|
2289
|
-
{
|
|
2290
|
-
"kind": "class",
|
|
2291
|
-
"description": "A basic demonstration of the ported audio button.",
|
|
2292
|
-
"name": "ScreamVoiceButton",
|
|
2293
|
-
"members": [
|
|
2352
|
+
"privacy": "private",
|
|
2353
|
+
"default": "0"
|
|
2354
|
+
},
|
|
2294
2355
|
{
|
|
2295
2356
|
"kind": "field",
|
|
2296
|
-
"name": "
|
|
2357
|
+
"name": "_lastActiveData",
|
|
2297
2358
|
"type": {
|
|
2298
|
-
"text": "
|
|
2359
|
+
"text": "number[]"
|
|
2299
2360
|
},
|
|
2300
|
-
"
|
|
2361
|
+
"privacy": "private",
|
|
2362
|
+
"default": "[]"
|
|
2301
2363
|
},
|
|
2302
2364
|
{
|
|
2303
2365
|
"kind": "field",
|
|
2304
2366
|
"name": "styles",
|
|
2305
2367
|
"static": true,
|
|
2306
|
-
"default": "css` :host { display:
|
|
2368
|
+
"default": "css` :host { display: block; width: 100%; height: 64px; /* default height, can be overridden by CSS */ } .container { position: relative; width: 100%; height: 100%; } canvas { position: absolute; top: 0; left: 0; display: block; height: 100%; width: 100%; } `"
|
|
2307
2369
|
},
|
|
2308
2370
|
{
|
|
2309
2371
|
"kind": "method",
|
|
@@ -2311,16 +2373,49 @@
|
|
|
2311
2373
|
},
|
|
2312
2374
|
{
|
|
2313
2375
|
"kind": "method",
|
|
2314
|
-
"name": "
|
|
2376
|
+
"name": "firstUpdated",
|
|
2377
|
+
"privacy": "protected"
|
|
2378
|
+
},
|
|
2379
|
+
{
|
|
2380
|
+
"kind": "method",
|
|
2381
|
+
"name": "updated",
|
|
2382
|
+
"privacy": "protected",
|
|
2383
|
+
"parameters": [
|
|
2384
|
+
{
|
|
2385
|
+
"name": "changedProperties",
|
|
2386
|
+
"type": {
|
|
2387
|
+
"text": "PropertyValues"
|
|
2388
|
+
}
|
|
2389
|
+
}
|
|
2390
|
+
]
|
|
2391
|
+
},
|
|
2392
|
+
{
|
|
2393
|
+
"kind": "method",
|
|
2394
|
+
"name": "_handleResize",
|
|
2315
2395
|
"privacy": "private"
|
|
2316
|
-
}
|
|
2317
|
-
],
|
|
2318
|
-
"events": [
|
|
2396
|
+
},
|
|
2319
2397
|
{
|
|
2320
|
-
"
|
|
2321
|
-
"
|
|
2322
|
-
|
|
2323
|
-
|
|
2398
|
+
"kind": "method",
|
|
2399
|
+
"name": "_startAnimationLoop",
|
|
2400
|
+
"privacy": "private"
|
|
2401
|
+
},
|
|
2402
|
+
{
|
|
2403
|
+
"kind": "method",
|
|
2404
|
+
"name": "_updateData",
|
|
2405
|
+
"privacy": "private",
|
|
2406
|
+
"parameters": [
|
|
2407
|
+
{
|
|
2408
|
+
"name": "timestamp",
|
|
2409
|
+
"type": {
|
|
2410
|
+
"text": "number"
|
|
2411
|
+
}
|
|
2412
|
+
}
|
|
2413
|
+
]
|
|
2414
|
+
},
|
|
2415
|
+
{
|
|
2416
|
+
"kind": "method",
|
|
2417
|
+
"name": "_renderFrame",
|
|
2418
|
+
"privacy": "private"
|
|
2324
2419
|
}
|
|
2325
2420
|
],
|
|
2326
2421
|
"superclass": {
|
|
@@ -2333,502 +2428,367 @@
|
|
|
2333
2428
|
"exports": [
|
|
2334
2429
|
{
|
|
2335
2430
|
"kind": "js",
|
|
2336
|
-
"name": "
|
|
2431
|
+
"name": "UiLiveWaveform",
|
|
2337
2432
|
"declaration": {
|
|
2338
|
-
"name": "
|
|
2339
|
-
"module": "src/components/molecules/
|
|
2433
|
+
"name": "UiLiveWaveform",
|
|
2434
|
+
"module": "src/components/molecules/ui-live-waveform.ts"
|
|
2340
2435
|
}
|
|
2341
2436
|
}
|
|
2342
2437
|
]
|
|
2343
2438
|
},
|
|
2344
2439
|
{
|
|
2345
2440
|
"kind": "javascript-module",
|
|
2346
|
-
"path": "src/components/molecules/ui-
|
|
2441
|
+
"path": "src/components/molecules/ui-mic-selector.ts",
|
|
2347
2442
|
"declarations": [
|
|
2348
2443
|
{
|
|
2349
2444
|
"kind": "class",
|
|
2350
|
-
"description": "A
|
|
2351
|
-
"name": "
|
|
2445
|
+
"description": "A native Lit WebComponent that provides a dropdown menu for selecting audio input devices.\nIt automatically handles permission requests, device enumeration, and provides a\nlive preview waveform of the selected input.",
|
|
2446
|
+
"name": "UiMicSelector",
|
|
2352
2447
|
"members": [
|
|
2353
2448
|
{
|
|
2354
2449
|
"kind": "field",
|
|
2355
|
-
"name": "
|
|
2450
|
+
"name": "value",
|
|
2356
2451
|
"type": {
|
|
2357
|
-
"text": "
|
|
2452
|
+
"text": "string"
|
|
2358
2453
|
},
|
|
2359
|
-
"
|
|
2454
|
+
"description": "The deviceId of the currently selected audio input."
|
|
2360
2455
|
},
|
|
2361
2456
|
{
|
|
2362
2457
|
"kind": "field",
|
|
2363
|
-
"name": "
|
|
2458
|
+
"name": "muted",
|
|
2364
2459
|
"type": {
|
|
2365
|
-
"text": "
|
|
2460
|
+
"text": "boolean"
|
|
2366
2461
|
},
|
|
2367
|
-
"default": "
|
|
2462
|
+
"default": "false",
|
|
2463
|
+
"description": "Whether the microphone is visually/logically muted in the selector."
|
|
2368
2464
|
},
|
|
2369
2465
|
{
|
|
2370
2466
|
"kind": "field",
|
|
2371
|
-
"name": "
|
|
2467
|
+
"name": "disabled",
|
|
2372
2468
|
"type": {
|
|
2373
|
-
"text": "
|
|
2469
|
+
"text": "boolean"
|
|
2374
2470
|
},
|
|
2375
|
-
"default": "
|
|
2471
|
+
"default": "false",
|
|
2472
|
+
"description": "Whether the selector interaction is disabled."
|
|
2376
2473
|
},
|
|
2377
2474
|
{
|
|
2378
2475
|
"kind": "field",
|
|
2379
|
-
"name": "
|
|
2380
|
-
"
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
"
|
|
2385
|
-
"name": "render"
|
|
2476
|
+
"name": "_devices",
|
|
2477
|
+
"type": {
|
|
2478
|
+
"text": "AudioDevice[]"
|
|
2479
|
+
},
|
|
2480
|
+
"privacy": "private",
|
|
2481
|
+
"default": "[]"
|
|
2386
2482
|
},
|
|
2387
2483
|
{
|
|
2388
|
-
"kind": "
|
|
2389
|
-
"name": "
|
|
2390
|
-
"privacy": "public"
|
|
2391
|
-
}
|
|
2392
|
-
],
|
|
2393
|
-
"events": [
|
|
2394
|
-
{
|
|
2395
|
-
"name": "flip-change",
|
|
2484
|
+
"kind": "field",
|
|
2485
|
+
"name": "_loading",
|
|
2396
2486
|
"type": {
|
|
2397
|
-
"text": "
|
|
2398
|
-
}
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
"name": "LitElement",
|
|
2403
|
-
"package": "lit"
|
|
2404
|
-
},
|
|
2405
|
-
"customElement": true
|
|
2406
|
-
}
|
|
2407
|
-
],
|
|
2408
|
-
"exports": [
|
|
2409
|
-
{
|
|
2410
|
-
"kind": "js",
|
|
2411
|
-
"name": "Ui3dFlip",
|
|
2412
|
-
"declaration": {
|
|
2413
|
-
"name": "Ui3dFlip",
|
|
2414
|
-
"module": "src/components/molecules/ui-3d-flip.ts"
|
|
2415
|
-
}
|
|
2416
|
-
}
|
|
2417
|
-
]
|
|
2418
|
-
},
|
|
2419
|
-
{
|
|
2420
|
-
"kind": "javascript-module",
|
|
2421
|
-
"path": "src/components/molecules/ui-chat-item.ts",
|
|
2422
|
-
"declarations": [
|
|
2423
|
-
{
|
|
2424
|
-
"kind": "class",
|
|
2425
|
-
"description": "A composite component representing a single chat message item.\nSupports avatars and alignment for inbound/outbound messages.",
|
|
2426
|
-
"name": "UiChatItem",
|
|
2427
|
-
"members": [
|
|
2487
|
+
"text": "boolean"
|
|
2488
|
+
},
|
|
2489
|
+
"privacy": "private",
|
|
2490
|
+
"default": "true"
|
|
2491
|
+
},
|
|
2428
2492
|
{
|
|
2429
2493
|
"kind": "field",
|
|
2430
|
-
"name": "
|
|
2494
|
+
"name": "_error",
|
|
2431
2495
|
"type": {
|
|
2432
|
-
"text": "
|
|
2496
|
+
"text": "string | null"
|
|
2433
2497
|
},
|
|
2434
|
-
"
|
|
2498
|
+
"privacy": "private",
|
|
2499
|
+
"default": "null"
|
|
2435
2500
|
},
|
|
2436
2501
|
{
|
|
2437
2502
|
"kind": "field",
|
|
2438
|
-
"name": "
|
|
2503
|
+
"name": "_hasPermission",
|
|
2439
2504
|
"type": {
|
|
2440
|
-
"text": "
|
|
2505
|
+
"text": "boolean"
|
|
2441
2506
|
},
|
|
2442
|
-
"
|
|
2507
|
+
"privacy": "private",
|
|
2508
|
+
"default": "false"
|
|
2443
2509
|
},
|
|
2444
2510
|
{
|
|
2445
2511
|
"kind": "field",
|
|
2446
|
-
"name": "
|
|
2512
|
+
"name": "_isMenuOpen",
|
|
2447
2513
|
"type": {
|
|
2448
|
-
"text": "
|
|
2449
|
-
}
|
|
2514
|
+
"text": "boolean"
|
|
2515
|
+
},
|
|
2516
|
+
"privacy": "private",
|
|
2517
|
+
"default": "false"
|
|
2450
2518
|
},
|
|
2451
2519
|
{
|
|
2452
2520
|
"kind": "field",
|
|
2453
|
-
"name": "
|
|
2521
|
+
"name": "_previewAnalyser",
|
|
2454
2522
|
"type": {
|
|
2455
|
-
"text": "
|
|
2456
|
-
}
|
|
2523
|
+
"text": "AnalyserNode | undefined"
|
|
2524
|
+
},
|
|
2525
|
+
"privacy": "private"
|
|
2457
2526
|
},
|
|
2458
2527
|
{
|
|
2459
2528
|
"kind": "field",
|
|
2460
|
-
"name": "
|
|
2461
|
-
"
|
|
2462
|
-
|
|
2529
|
+
"name": "_menuEl",
|
|
2530
|
+
"type": {
|
|
2531
|
+
"text": "any"
|
|
2532
|
+
},
|
|
2533
|
+
"privacy": "private"
|
|
2463
2534
|
},
|
|
2464
|
-
{
|
|
2465
|
-
"kind": "method",
|
|
2466
|
-
"name": "render"
|
|
2467
|
-
}
|
|
2468
|
-
],
|
|
2469
|
-
"superclass": {
|
|
2470
|
-
"name": "LitElement",
|
|
2471
|
-
"package": "lit"
|
|
2472
|
-
},
|
|
2473
|
-
"customElement": true
|
|
2474
|
-
}
|
|
2475
|
-
],
|
|
2476
|
-
"exports": [
|
|
2477
|
-
{
|
|
2478
|
-
"kind": "js",
|
|
2479
|
-
"name": "UiChatItem",
|
|
2480
|
-
"declaration": {
|
|
2481
|
-
"name": "UiChatItem",
|
|
2482
|
-
"module": "src/components/molecules/ui-chat-item.ts"
|
|
2483
|
-
}
|
|
2484
|
-
}
|
|
2485
|
-
]
|
|
2486
|
-
},
|
|
2487
|
-
{
|
|
2488
|
-
"kind": "javascript-module",
|
|
2489
|
-
"path": "src/components/molecules/ui-chat-list.ts",
|
|
2490
|
-
"declarations": [
|
|
2491
|
-
{
|
|
2492
|
-
"kind": "class",
|
|
2493
|
-
"description": "MOLECULE: Chat List\nA scrollable container for ui-chat-items.\nAutomatically handles scrolling to the bottom when new children are added.",
|
|
2494
|
-
"name": "UiChatList",
|
|
2495
|
-
"members": [
|
|
2496
2535
|
{
|
|
2497
2536
|
"kind": "field",
|
|
2498
|
-
"name": "
|
|
2537
|
+
"name": "_previewStream",
|
|
2499
2538
|
"type": {
|
|
2500
|
-
"text": "
|
|
2539
|
+
"text": "MediaStream | undefined"
|
|
2501
2540
|
},
|
|
2502
2541
|
"privacy": "private"
|
|
2503
2542
|
},
|
|
2504
2543
|
{
|
|
2505
2544
|
"kind": "field",
|
|
2506
|
-
"name": "
|
|
2545
|
+
"name": "_previewAudioContext",
|
|
2507
2546
|
"type": {
|
|
2508
|
-
"text": "
|
|
2547
|
+
"text": "AudioContext | undefined"
|
|
2509
2548
|
},
|
|
2510
|
-
"privacy": "private"
|
|
2511
|
-
"default": "true"
|
|
2549
|
+
"privacy": "private"
|
|
2512
2550
|
},
|
|
2513
2551
|
{
|
|
2514
2552
|
"kind": "field",
|
|
2515
2553
|
"name": "styles",
|
|
2516
2554
|
"static": true,
|
|
2517
|
-
"default": "css` :host { display: block;
|
|
2555
|
+
"default": "css` :host { display: inline-block; position: relative; font-family: inherit; color-scheme: light dark; } .anchor-button { display: flex; align-items: center; gap: var(--ui-mic-selector-gap, 8px); padding: var(--ui-mic-selector-padding, 8px 16px); background: var(--md-sys-color-surface-container-high, transparent); color: var(--md-sys-color-on-surface); border-radius: 999px; cursor: pointer; border: 1px solid var(--md-sys-color-outline-variant, currentColor); font-family: inherit; font-size: 14px; font-weight: 500; transition: background-color 0.2s; max-width: 250px; } .anchor-button:hover:not(:disabled) { background: var(--md-sys-color-surface-container-highest); } .anchor-button:disabled { opacity: 0.5; cursor: not-allowed; } .label-text { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: left; } md-menu { --md-menu-container-color: var( --md-sys-color-surface-container, var(--md-sys-color-surface) ); --md-menu-container-shape: 12px; min-width: 280px; font-family: inherit; /* Force typescale fonts to inherit project font */ --md-sys-typescale-body-medium-font: inherit; --md-sys-typescale-label-large-font: inherit; border: 1px solid var(--md-sys-color-outline-variant); } md-menu-item { font-family: inherit; --md-menu-item-label-text-font: inherit; --md-sys-typescale-label-large-font: inherit; } md-menu-item div[slot='headline'] { font-family: inherit; } .menu-footer { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; gap: 12px; font-family: inherit; } md-text-button { font-family: inherit; --md-text-button-label-text-font: inherit; --md-sys-typescale-label-large-font: inherit; } .preview-waveform { flex: 1; height: 24px; background: var( --md-sys-color-surface-variant, var(--md-sys-color-surface-container-highest) ); border-radius: 6px; overflow: hidden; display: flex; align-items: center; padding: 0 4px; } `"
|
|
2518
2556
|
},
|
|
2519
2557
|
{
|
|
2520
2558
|
"kind": "method",
|
|
2521
2559
|
"name": "updated",
|
|
2522
|
-
"privacy": "protected",
|
|
2523
2560
|
"parameters": [
|
|
2524
2561
|
{
|
|
2525
2562
|
"name": "changedProperties",
|
|
2526
2563
|
"type": {
|
|
2527
2564
|
"text": "PropertyValues"
|
|
2528
2565
|
}
|
|
2529
|
-
}
|
|
2530
|
-
]
|
|
2531
|
-
},
|
|
2532
|
-
{
|
|
2533
|
-
"kind": "method",
|
|
2534
|
-
"name": "scrollToBottom",
|
|
2535
|
-
"privacy": "public",
|
|
2536
|
-
"description": "Imperatively scroll to the most recent message."
|
|
2537
|
-
},
|
|
2538
|
-
{
|
|
2539
|
-
"kind": "method",
|
|
2540
|
-
"name": "_handleScroll",
|
|
2541
|
-
"privacy": "private"
|
|
2542
|
-
},
|
|
2543
|
-
{
|
|
2544
|
-
"kind": "method",
|
|
2545
|
-
"name": "render"
|
|
2546
|
-
}
|
|
2547
|
-
],
|
|
2548
|
-
"superclass": {
|
|
2549
|
-
"name": "LitElement",
|
|
2550
|
-
"package": "lit"
|
|
2551
|
-
},
|
|
2552
|
-
"tagName": "ui-chat-list",
|
|
2553
|
-
"customElement": true
|
|
2554
|
-
}
|
|
2555
|
-
],
|
|
2556
|
-
"exports": [
|
|
2557
|
-
{
|
|
2558
|
-
"kind": "js",
|
|
2559
|
-
"name": "UiChatList",
|
|
2560
|
-
"declaration": {
|
|
2561
|
-
"name": "UiChatList",
|
|
2562
|
-
"module": "src/components/molecules/ui-chat-list.ts"
|
|
2563
|
-
}
|
|
2564
|
-
}
|
|
2565
|
-
]
|
|
2566
|
-
},
|
|
2567
|
-
{
|
|
2568
|
-
"kind": "javascript-module",
|
|
2569
|
-
"path": "src/components/molecules/ui-conversation-bar.ts",
|
|
2570
|
-
"declarations": [
|
|
2571
|
-
{
|
|
2572
|
-
"kind": "class",
|
|
2573
|
-
"description": "MOLECULE: Conversation Bar\nA specialized interaction bar for AI conversations.\nCombines mic selection, live visualization, and text input.",
|
|
2574
|
-
"name": "UiConversationBar",
|
|
2575
|
-
"members": [
|
|
2576
|
-
{
|
|
2577
|
-
"kind": "field",
|
|
2578
|
-
"name": "agentId",
|
|
2579
|
-
"type": {
|
|
2580
|
-
"text": "string"
|
|
2581
|
-
},
|
|
2582
|
-
"default": "''",
|
|
2583
|
-
"description": "(Optional) ID of the AI agent."
|
|
2566
|
+
}
|
|
2567
|
+
]
|
|
2584
2568
|
},
|
|
2585
2569
|
{
|
|
2586
|
-
"kind": "
|
|
2587
|
-
"name": "
|
|
2588
|
-
"type": {
|
|
2589
|
-
"text": "boolean"
|
|
2590
|
-
},
|
|
2591
|
-
"default": "false",
|
|
2592
|
-
"description": "Enable mock transcription for demos."
|
|
2570
|
+
"kind": "method",
|
|
2571
|
+
"name": "render"
|
|
2593
2572
|
},
|
|
2594
2573
|
{
|
|
2595
|
-
"kind": "
|
|
2596
|
-
"name": "
|
|
2597
|
-
"
|
|
2598
|
-
"text": "boolean"
|
|
2599
|
-
},
|
|
2600
|
-
"privacy": "private",
|
|
2601
|
-
"default": "false"
|
|
2574
|
+
"kind": "method",
|
|
2575
|
+
"name": "_toggleMenu",
|
|
2576
|
+
"privacy": "private"
|
|
2602
2577
|
},
|
|
2603
2578
|
{
|
|
2604
|
-
"kind": "
|
|
2605
|
-
"name": "
|
|
2606
|
-
"type": {
|
|
2607
|
-
"text": "string"
|
|
2608
|
-
},
|
|
2579
|
+
"kind": "method",
|
|
2580
|
+
"name": "_selectDevice",
|
|
2609
2581
|
"privacy": "private",
|
|
2610
|
-
"
|
|
2582
|
+
"parameters": [
|
|
2583
|
+
{
|
|
2584
|
+
"name": "deviceId",
|
|
2585
|
+
"type": {
|
|
2586
|
+
"text": "string"
|
|
2587
|
+
}
|
|
2588
|
+
}
|
|
2589
|
+
]
|
|
2611
2590
|
},
|
|
2612
2591
|
{
|
|
2613
|
-
"kind": "
|
|
2614
|
-
"name": "
|
|
2615
|
-
"type": {
|
|
2616
|
-
"text": "boolean"
|
|
2617
|
-
},
|
|
2592
|
+
"kind": "method",
|
|
2593
|
+
"name": "_toggleMute",
|
|
2618
2594
|
"privacy": "private",
|
|
2619
|
-
"
|
|
2595
|
+
"parameters": [
|
|
2596
|
+
{
|
|
2597
|
+
"name": "e",
|
|
2598
|
+
"type": {
|
|
2599
|
+
"text": "Event"
|
|
2600
|
+
}
|
|
2601
|
+
}
|
|
2602
|
+
]
|
|
2620
2603
|
},
|
|
2621
2604
|
{
|
|
2622
2605
|
"kind": "field",
|
|
2623
|
-
"name": "
|
|
2624
|
-
"
|
|
2625
|
-
"default": "css` :host { display: block; width: 100%; font-family: inherit; } .container { background: var(--md-sys-color-surface-container, #f3f3f3); border-radius: var(--ui-conversation-bar-radius, 24px); border: 1px solid var(--md-sys-color-outline-variant); box-shadow: var(--md-sys-elevation-level1); overflow: hidden; display: flex; flex-direction: column-reverse; transition: all 0.3s ease; } .toolbar { display: flex; align-items: center; justify-content: space-between; padding: var(--ui-conversation-bar-padding, 8px 16px); gap: 12px; color: var(--md-sys-color-on-surface, #1d1b20); } .visualizer-section { display: flex; align-items: center; gap: 12px; flex: 1; height: 40px; background: var(--md-sys-color-surface-container-high, #e2e2e2); border-radius: 12px; padding: 0 12px; overflow: hidden; color: var(--md-sys-color-on-surface, #1d1b20); } ui-mic-selector { --md-sys-color-on-surface: var(--md-sys-color-on-surface-variant, #49454f); } .waveform-wrapper { flex: 1; height: 24px; color: var(--md-sys-color-primary, #0066cc); } .controls { display: flex; align-items: center; gap: 4px; color: var(--md-sys-color-on-surface-variant, #49454f); } md-icon-button { --md-icon-button-icon-color: var(--md-sys-color-on-surface-variant, #49454f); } .input-area { max-height: 0; overflow: hidden; transition: max-height 0.3s ease-out; background: var(--md-sys-color-surface-container); } .input-area.open { max-height: 200px; } .input-container { padding: 16px; display: flex; gap: 8px; align-items: flex-end; } md-outlined-text-field { flex: 1; --md-outlined-text-field-container-shape: 16px; font-family: inherit; --md-outlined-text-field-input-text-font: inherit; --md-outlined-text-field-label-text-font: inherit; } .keyboard-toggle.active { background: var(--md-sys-color-secondary-container); color: var(--md-sys-color-on-secondary-container); } md-divider { margin: 0; } `"
|
|
2606
|
+
"name": "_handleDeviceChange",
|
|
2607
|
+
"privacy": "private"
|
|
2626
2608
|
},
|
|
2627
2609
|
{
|
|
2628
2610
|
"kind": "method",
|
|
2629
|
-
"name": "
|
|
2611
|
+
"name": "_loadDevicesWithoutPermission",
|
|
2612
|
+
"privacy": "private"
|
|
2630
2613
|
},
|
|
2631
2614
|
{
|
|
2632
2615
|
"kind": "method",
|
|
2633
|
-
"name": "
|
|
2616
|
+
"name": "_loadDevicesWithPermission",
|
|
2617
|
+
"privacy": "private"
|
|
2618
|
+
},
|
|
2619
|
+
{
|
|
2620
|
+
"kind": "method",
|
|
2621
|
+
"name": "_parseDeviceList",
|
|
2634
2622
|
"privacy": "private",
|
|
2635
2623
|
"parameters": [
|
|
2636
2624
|
{
|
|
2637
|
-
"name": "
|
|
2625
|
+
"name": "deviceList",
|
|
2638
2626
|
"type": {
|
|
2639
|
-
"text": "
|
|
2627
|
+
"text": "MediaDeviceInfo[]"
|
|
2640
2628
|
}
|
|
2641
2629
|
}
|
|
2642
2630
|
]
|
|
2643
2631
|
},
|
|
2644
2632
|
{
|
|
2645
2633
|
"kind": "method",
|
|
2646
|
-
"name": "
|
|
2634
|
+
"name": "_startPreview",
|
|
2647
2635
|
"privacy": "private"
|
|
2648
2636
|
},
|
|
2649
2637
|
{
|
|
2650
2638
|
"kind": "method",
|
|
2651
|
-
"name": "
|
|
2639
|
+
"name": "_stopPreview",
|
|
2652
2640
|
"privacy": "private"
|
|
2653
2641
|
}
|
|
2654
2642
|
],
|
|
2655
2643
|
"events": [
|
|
2656
2644
|
{
|
|
2657
|
-
"name": "
|
|
2645
|
+
"name": "device-change",
|
|
2658
2646
|
"type": {
|
|
2659
2647
|
"text": "CustomEvent"
|
|
2660
2648
|
},
|
|
2661
|
-
"description": "Dispatched when a
|
|
2649
|
+
"description": "Dispatched when a new device is selected. detail: { deviceId }"
|
|
2662
2650
|
},
|
|
2663
2651
|
{
|
|
2664
|
-
"name": "
|
|
2652
|
+
"name": "mute-change",
|
|
2665
2653
|
"type": {
|
|
2666
2654
|
"text": "CustomEvent"
|
|
2667
|
-
}
|
|
2668
|
-
|
|
2669
|
-
{
|
|
2670
|
-
"description": "Dispatched when the conversation state changes.",
|
|
2671
|
-
"name": "state-change"
|
|
2655
|
+
},
|
|
2656
|
+
"description": "Dispatched when the mute state is toggled. detail: { muted }"
|
|
2672
2657
|
}
|
|
2673
2658
|
],
|
|
2674
2659
|
"superclass": {
|
|
2675
2660
|
"name": "LitElement",
|
|
2676
2661
|
"package": "lit"
|
|
2677
2662
|
},
|
|
2678
|
-
"tagName": "ui-
|
|
2663
|
+
"tagName": "ui-mic-selector",
|
|
2679
2664
|
"customElement": true
|
|
2680
2665
|
}
|
|
2681
2666
|
],
|
|
2682
2667
|
"exports": [
|
|
2683
2668
|
{
|
|
2684
2669
|
"kind": "js",
|
|
2685
|
-
"name": "
|
|
2670
|
+
"name": "UiMicSelector",
|
|
2686
2671
|
"declaration": {
|
|
2687
|
-
"name": "
|
|
2688
|
-
"module": "src/components/molecules/ui-
|
|
2672
|
+
"name": "UiMicSelector",
|
|
2673
|
+
"module": "src/components/molecules/ui-mic-selector.ts"
|
|
2689
2674
|
}
|
|
2690
2675
|
}
|
|
2691
2676
|
]
|
|
2692
2677
|
},
|
|
2693
2678
|
{
|
|
2694
2679
|
"kind": "javascript-module",
|
|
2695
|
-
"path": "src/components/molecules/ui-
|
|
2680
|
+
"path": "src/components/molecules/ui-moving-gradient.ts",
|
|
2696
2681
|
"declarations": [
|
|
2697
2682
|
{
|
|
2698
2683
|
"kind": "class",
|
|
2699
|
-
"description": "A
|
|
2700
|
-
"name": "
|
|
2684
|
+
"description": "A 3D WebGL 'Moving Gradient' component used to visualize AI agent states.",
|
|
2685
|
+
"name": "UiMovingGradient",
|
|
2701
2686
|
"members": [
|
|
2702
2687
|
{
|
|
2703
2688
|
"kind": "field",
|
|
2704
|
-
"name": "
|
|
2705
|
-
"type": {
|
|
2706
|
-
"text": "boolean"
|
|
2707
|
-
},
|
|
2708
|
-
"default": "false"
|
|
2709
|
-
},
|
|
2710
|
-
{
|
|
2711
|
-
"kind": "field",
|
|
2712
|
-
"name": "processing",
|
|
2713
|
-
"type": {
|
|
2714
|
-
"text": "boolean"
|
|
2715
|
-
},
|
|
2716
|
-
"default": "false"
|
|
2717
|
-
},
|
|
2718
|
-
{
|
|
2719
|
-
"kind": "field",
|
|
2720
|
-
"name": "analyserNode",
|
|
2689
|
+
"name": "colors",
|
|
2721
2690
|
"type": {
|
|
2722
|
-
"text": "
|
|
2691
|
+
"text": "[string, string, string] | undefined"
|
|
2723
2692
|
}
|
|
2724
2693
|
},
|
|
2725
2694
|
{
|
|
2726
2695
|
"kind": "field",
|
|
2727
|
-
"name": "
|
|
2696
|
+
"name": "stops",
|
|
2728
2697
|
"type": {
|
|
2729
|
-
"text": "number"
|
|
2730
|
-
}
|
|
2731
|
-
"default": "3"
|
|
2698
|
+
"text": "[number, number, number] | undefined"
|
|
2699
|
+
}
|
|
2732
2700
|
},
|
|
2733
2701
|
{
|
|
2734
2702
|
"kind": "field",
|
|
2735
|
-
"name": "
|
|
2703
|
+
"name": "agentState",
|
|
2736
2704
|
"type": {
|
|
2737
|
-
"text": "
|
|
2705
|
+
"text": "AgentState"
|
|
2738
2706
|
},
|
|
2739
|
-
"default": "
|
|
2707
|
+
"default": "null"
|
|
2740
2708
|
},
|
|
2741
2709
|
{
|
|
2742
2710
|
"kind": "field",
|
|
2743
|
-
"name": "
|
|
2711
|
+
"name": "inputVolume",
|
|
2744
2712
|
"type": {
|
|
2745
2713
|
"text": "number"
|
|
2746
2714
|
},
|
|
2747
|
-
"default": "
|
|
2715
|
+
"default": "0"
|
|
2748
2716
|
},
|
|
2749
2717
|
{
|
|
2750
2718
|
"kind": "field",
|
|
2751
|
-
"name": "
|
|
2719
|
+
"name": "outputVolume",
|
|
2752
2720
|
"type": {
|
|
2753
2721
|
"text": "number"
|
|
2754
2722
|
},
|
|
2755
|
-
"default": "
|
|
2756
|
-
},
|
|
2757
|
-
{
|
|
2758
|
-
"kind": "field",
|
|
2759
|
-
"name": "barColor",
|
|
2760
|
-
"type": {
|
|
2761
|
-
"text": "string | undefined"
|
|
2762
|
-
}
|
|
2723
|
+
"default": "0"
|
|
2763
2724
|
},
|
|
2764
2725
|
{
|
|
2765
2726
|
"kind": "field",
|
|
2766
|
-
"name": "
|
|
2727
|
+
"name": "volumeMode",
|
|
2767
2728
|
"type": {
|
|
2768
|
-
"text": "
|
|
2729
|
+
"text": "'auto' | 'manual'"
|
|
2769
2730
|
},
|
|
2770
|
-
"default": "
|
|
2731
|
+
"default": "'auto'"
|
|
2771
2732
|
},
|
|
2772
2733
|
{
|
|
2773
2734
|
"kind": "field",
|
|
2774
|
-
"name": "
|
|
2735
|
+
"name": "baseHeight",
|
|
2775
2736
|
"type": {
|
|
2776
2737
|
"text": "number"
|
|
2777
2738
|
},
|
|
2778
|
-
"default": "
|
|
2739
|
+
"default": "0.05"
|
|
2779
2740
|
},
|
|
2780
2741
|
{
|
|
2781
2742
|
"kind": "field",
|
|
2782
|
-
"name": "
|
|
2743
|
+
"name": "speed",
|
|
2783
2744
|
"type": {
|
|
2784
2745
|
"text": "number"
|
|
2785
2746
|
},
|
|
2786
|
-
"default": "
|
|
2747
|
+
"default": "1.0"
|
|
2787
2748
|
},
|
|
2788
2749
|
{
|
|
2789
2750
|
"kind": "field",
|
|
2790
|
-
"name": "
|
|
2751
|
+
"name": "_container",
|
|
2791
2752
|
"type": {
|
|
2792
|
-
"text": "
|
|
2753
|
+
"text": "HTMLDivElement"
|
|
2793
2754
|
},
|
|
2794
|
-
"
|
|
2755
|
+
"privacy": "private"
|
|
2795
2756
|
},
|
|
2796
2757
|
{
|
|
2797
2758
|
"kind": "field",
|
|
2798
|
-
"name": "
|
|
2759
|
+
"name": "_renderer",
|
|
2799
2760
|
"type": {
|
|
2800
|
-
"text": "
|
|
2761
|
+
"text": "THREE.WebGLRenderer | undefined"
|
|
2801
2762
|
},
|
|
2802
|
-
"
|
|
2763
|
+
"privacy": "private"
|
|
2803
2764
|
},
|
|
2804
2765
|
{
|
|
2805
2766
|
"kind": "field",
|
|
2806
|
-
"name": "
|
|
2767
|
+
"name": "_scene",
|
|
2807
2768
|
"type": {
|
|
2808
|
-
"text": "
|
|
2769
|
+
"text": "THREE.Scene | undefined"
|
|
2809
2770
|
},
|
|
2810
2771
|
"privacy": "private"
|
|
2811
2772
|
},
|
|
2812
2773
|
{
|
|
2813
2774
|
"kind": "field",
|
|
2814
|
-
"name": "
|
|
2775
|
+
"name": "_camera",
|
|
2815
2776
|
"type": {
|
|
2816
|
-
"text": "
|
|
2777
|
+
"text": "THREE.OrthographicCamera | undefined"
|
|
2817
2778
|
},
|
|
2818
2779
|
"privacy": "private"
|
|
2819
2780
|
},
|
|
2820
2781
|
{
|
|
2821
2782
|
"kind": "field",
|
|
2822
|
-
"name": "
|
|
2783
|
+
"name": "_mesh",
|
|
2823
2784
|
"type": {
|
|
2824
|
-
"text": "
|
|
2785
|
+
"text": "THREE.Mesh<THREE.PlaneGeometry, THREE.ShaderMaterial> | undefined"
|
|
2825
2786
|
},
|
|
2826
|
-
"privacy": "private"
|
|
2827
|
-
"default": "0"
|
|
2787
|
+
"privacy": "private"
|
|
2828
2788
|
},
|
|
2829
2789
|
{
|
|
2830
2790
|
"kind": "field",
|
|
2831
|
-
"name": "
|
|
2791
|
+
"name": "_animationFrameId",
|
|
2832
2792
|
"type": {
|
|
2833
2793
|
"text": "number"
|
|
2834
2794
|
},
|
|
@@ -2845,61 +2805,60 @@
|
|
|
2845
2805
|
},
|
|
2846
2806
|
{
|
|
2847
2807
|
"kind": "field",
|
|
2848
|
-
"name": "
|
|
2808
|
+
"name": "_animSpeed",
|
|
2849
2809
|
"type": {
|
|
2850
|
-
"text": "
|
|
2810
|
+
"text": "number"
|
|
2851
2811
|
},
|
|
2852
|
-
"privacy": "private"
|
|
2812
|
+
"privacy": "private",
|
|
2813
|
+
"default": "1.0"
|
|
2853
2814
|
},
|
|
2854
2815
|
{
|
|
2855
2816
|
"kind": "field",
|
|
2856
|
-
"name": "
|
|
2817
|
+
"name": "_curIn",
|
|
2857
2818
|
"type": {
|
|
2858
|
-
"text": "
|
|
2819
|
+
"text": "number"
|
|
2859
2820
|
},
|
|
2860
|
-
"privacy": "private"
|
|
2821
|
+
"privacy": "private",
|
|
2822
|
+
"default": "0"
|
|
2861
2823
|
},
|
|
2862
2824
|
{
|
|
2863
2825
|
"kind": "field",
|
|
2864
|
-
"name": "
|
|
2826
|
+
"name": "_curOut",
|
|
2865
2827
|
"type": {
|
|
2866
|
-
"text": "number
|
|
2828
|
+
"text": "number"
|
|
2867
2829
|
},
|
|
2868
2830
|
"privacy": "private",
|
|
2869
|
-
"default": "
|
|
2831
|
+
"default": "0"
|
|
2870
2832
|
},
|
|
2871
2833
|
{
|
|
2872
2834
|
"kind": "field",
|
|
2873
|
-
"name": "
|
|
2835
|
+
"name": "_targetColor1",
|
|
2874
2836
|
"type": {
|
|
2875
|
-
"text": "
|
|
2837
|
+
"text": "THREE.Color"
|
|
2876
2838
|
},
|
|
2877
|
-
"privacy": "private"
|
|
2878
|
-
"default": "0"
|
|
2839
|
+
"privacy": "private"
|
|
2879
2840
|
},
|
|
2880
2841
|
{
|
|
2881
2842
|
"kind": "field",
|
|
2882
|
-
"name": "
|
|
2843
|
+
"name": "_targetColor2",
|
|
2883
2844
|
"type": {
|
|
2884
|
-
"text": "
|
|
2845
|
+
"text": "THREE.Color"
|
|
2885
2846
|
},
|
|
2886
|
-
"privacy": "private"
|
|
2887
|
-
"default": "0"
|
|
2847
|
+
"privacy": "private"
|
|
2888
2848
|
},
|
|
2889
2849
|
{
|
|
2890
2850
|
"kind": "field",
|
|
2891
|
-
"name": "
|
|
2851
|
+
"name": "_targetColor3",
|
|
2892
2852
|
"type": {
|
|
2893
|
-
"text": "
|
|
2853
|
+
"text": "THREE.Color"
|
|
2894
2854
|
},
|
|
2895
|
-
"privacy": "private"
|
|
2896
|
-
"default": "[]"
|
|
2855
|
+
"privacy": "private"
|
|
2897
2856
|
},
|
|
2898
2857
|
{
|
|
2899
2858
|
"kind": "field",
|
|
2900
2859
|
"name": "styles",
|
|
2901
2860
|
"static": true,
|
|
2902
|
-
"default": "css` :host { display: block; width: 100%;
|
|
2861
|
+
"default": "css` :host { display: block; width: 100%; height: 100%; position: relative; background-color: #0E0E0F; } .container { width: 100%; height: 100%; } canvas { display: block; width: 100%; height: 100%; } `"
|
|
2903
2862
|
},
|
|
2904
2863
|
{
|
|
2905
2864
|
"kind": "method",
|
|
@@ -2918,28 +2877,42 @@
|
|
|
2918
2877
|
{
|
|
2919
2878
|
"name": "changedProperties",
|
|
2920
2879
|
"type": {
|
|
2921
|
-
"text": "
|
|
2880
|
+
"text": "Map<string, any>"
|
|
2922
2881
|
}
|
|
2923
2882
|
}
|
|
2924
2883
|
]
|
|
2925
2884
|
},
|
|
2926
2885
|
{
|
|
2927
2886
|
"kind": "method",
|
|
2928
|
-
"name": "
|
|
2887
|
+
"name": "_updateColors",
|
|
2929
2888
|
"privacy": "private"
|
|
2930
2889
|
},
|
|
2931
2890
|
{
|
|
2932
2891
|
"kind": "method",
|
|
2933
|
-
"name": "
|
|
2892
|
+
"name": "_initThree",
|
|
2934
2893
|
"privacy": "private"
|
|
2935
2894
|
},
|
|
2895
|
+
{
|
|
2896
|
+
"kind": "field",
|
|
2897
|
+
"name": "_lastTime",
|
|
2898
|
+
"type": {
|
|
2899
|
+
"text": "number"
|
|
2900
|
+
},
|
|
2901
|
+
"privacy": "private",
|
|
2902
|
+
"default": "0"
|
|
2903
|
+
},
|
|
2936
2904
|
{
|
|
2937
2905
|
"kind": "method",
|
|
2938
|
-
"name": "
|
|
2906
|
+
"name": "_animate",
|
|
2907
|
+
"privacy": "private"
|
|
2908
|
+
},
|
|
2909
|
+
{
|
|
2910
|
+
"kind": "method",
|
|
2911
|
+
"name": "_clamp01",
|
|
2939
2912
|
"privacy": "private",
|
|
2940
2913
|
"parameters": [
|
|
2941
2914
|
{
|
|
2942
|
-
"name": "
|
|
2915
|
+
"name": "n",
|
|
2943
2916
|
"type": {
|
|
2944
2917
|
"text": "number"
|
|
2945
2918
|
}
|
|
@@ -2947,9 +2920,16 @@
|
|
|
2947
2920
|
]
|
|
2948
2921
|
},
|
|
2949
2922
|
{
|
|
2950
|
-
"kind": "
|
|
2951
|
-
"name": "
|
|
2952
|
-
"privacy": "private"
|
|
2923
|
+
"kind": "field",
|
|
2924
|
+
"name": "_vertexShader",
|
|
2925
|
+
"privacy": "private",
|
|
2926
|
+
"default": "` varying vec2 vUv; void main() { vUv = uv; gl_Position = vec4(position, 1.0); } `"
|
|
2927
|
+
},
|
|
2928
|
+
{
|
|
2929
|
+
"kind": "field",
|
|
2930
|
+
"name": "_fragmentShader",
|
|
2931
|
+
"privacy": "private",
|
|
2932
|
+
"default": "` uniform float uTime; uniform vec3 uColor1; uniform vec3 uColor2; uniform vec3 uColor3; uniform float uInputVolume; uniform float uOutputVolume; uniform float uOpacity; uniform float uAspect; uniform float uBaseHeight; uniform float uStop1; uniform float uStop2; uniform float uStop3; varying vec2 vUv; // Simple 2D noise function vec3 permute(vec3 x) { return mod(((x*34.0)+1.0)*x, 289.0); } float snoise(vec2 v){ const vec4 C = vec4(0.211324865405187, 0.366025403784439, -0.577350269189626, 0.024390243902439); vec2 i = floor(v + dot(v, C.yy) ); vec2 x0 = v - i + dot(i, C.xx); vec2 i1; i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0); vec4 x12 = x0.xyxy + C.xxzz; x12.xy -= i1; i = mod(i, 289.0); vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 )) + i.x + vec3(0.0, i1.x, 1.0 )); vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0); m = m*m ; m = m*m ; vec3 x = 2.0 * fract(p * C.www) - 1.0; vec3 h = abs(x) - 0.5; vec3 ox = floor(x + 0.5); vec3 a0 = x - ox; m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h ); vec3 g; g.x = a0.x * x0.x + h.x * x0.y; g.yz = a0.yz * x12.xz + h.yz * x12.yw; return 130.0 * dot(m, g); } void main() { // Normalize coordinates vec2 uv = vUv; // Total combined activity (0.0 to ~1.0) float activity = max(uInputVolume, uOutputVolume); // Base glow height (how far up from the bottom it starts) // Idle is very low (uBaseHeight), active pushes it up (to uBaseHeight + 0.35) float baseHeight = uBaseHeight + (activity * 0.35); // Create an undulating wave effect along the X axis // Combine several sine waves and noise for a natural feel float wave1 = sin(uv.x * 3.0 + uTime * 0.5) * 0.02; float wave2 = cos(uv.x * 5.0 - uTime * 0.8) * 0.015; // Add noise that scales with activity float n = snoise(vec2(uv.x * 2.0 - uTime * 0.2, uTime * 0.1)); float noiseWave = n * (0.02 + activity * 0.08); // Calculate the threshold y-value for this x position float yThreshold = baseHeight + wave1 + wave2 + noiseWave; // Smooth gradient from the bottom up to the threshold // Softness expands slightly when active float softness = 0.2 + (activity * 0.1); // Distance from the \"top\" of the wave. // > 0 means below the wave (solid), < 0 means above (transparent) float dist = yThreshold - uv.y; // Alpha falls off smoothly above the wave threshold, and is solid below it float alpha = smoothstep(-softness, 0.05, dist); // If it's the very bottom of the screen, force opacity up so it doesn't detach alpha = max(alpha, smoothstep(0.05, 0.0, uv.y) * 0.5); // Mix colors based on height and X position to give the gradient a \"sweep\" float colorMix = smoothstep(0.0, yThreshold, uv.y) + (sin(uv.x * 2.0 + uTime) * 0.2); // map the 0.0 -> 1.0 range of colorMix to the 3 colors using the stops float c = clamp(colorMix, 0.0, 1.0); vec3 finalColor; if (c <= uStop2) { float t = (c - uStop1) / max(0.001, uStop2 - uStop1); finalColor = mix(uColor1, uColor2, clamp(t, 0.0, 1.0)); } else { float t = (c - uStop2) / max(0.001, uStop3 - uStop2); finalColor = mix(uColor2, uColor3, clamp(t, 0.0, 1.0)); } // Add a slight bright rim at the edge of the wave when active float rim = smoothstep(0.0, 0.05, dist) * smoothstep(0.1, 0.0, dist); finalColor += vec3(rim * activity * 0.3); // Add brightness at the rim gl_FragColor = vec4(finalColor, alpha * uOpacity); } `"
|
|
2953
2933
|
}
|
|
2954
2934
|
],
|
|
2955
2935
|
"superclass": {
|
|
@@ -2962,123 +2942,177 @@
|
|
|
2962
2942
|
"exports": [
|
|
2963
2943
|
{
|
|
2964
2944
|
"kind": "js",
|
|
2965
|
-
"name": "
|
|
2945
|
+
"name": "UiMovingGradient",
|
|
2966
2946
|
"declaration": {
|
|
2967
|
-
"name": "
|
|
2968
|
-
"module": "src/components/molecules/ui-
|
|
2947
|
+
"name": "UiMovingGradient",
|
|
2948
|
+
"module": "src/components/molecules/ui-moving-gradient.ts"
|
|
2969
2949
|
}
|
|
2970
2950
|
}
|
|
2971
2951
|
]
|
|
2972
2952
|
},
|
|
2973
2953
|
{
|
|
2974
2954
|
"kind": "javascript-module",
|
|
2975
|
-
"path": "src/components/molecules/ui-
|
|
2955
|
+
"path": "src/components/molecules/ui-orb.ts",
|
|
2976
2956
|
"declarations": [
|
|
2977
2957
|
{
|
|
2978
2958
|
"kind": "class",
|
|
2979
|
-
"description": "A
|
|
2980
|
-
"name": "
|
|
2959
|
+
"description": "A 3D WebGL 'Orb' component used to visualize AI agent states.",
|
|
2960
|
+
"name": "UiOrb",
|
|
2981
2961
|
"members": [
|
|
2982
2962
|
{
|
|
2983
2963
|
"kind": "field",
|
|
2984
|
-
"name": "
|
|
2964
|
+
"name": "colors",
|
|
2985
2965
|
"type": {
|
|
2986
|
-
"text": "string"
|
|
2966
|
+
"text": "[string, string] | undefined"
|
|
2967
|
+
}
|
|
2968
|
+
},
|
|
2969
|
+
{
|
|
2970
|
+
"kind": "field",
|
|
2971
|
+
"name": "agentState",
|
|
2972
|
+
"type": {
|
|
2973
|
+
"text": "AgentState"
|
|
2987
2974
|
},
|
|
2988
|
-
"
|
|
2975
|
+
"default": "null"
|
|
2989
2976
|
},
|
|
2990
2977
|
{
|
|
2991
2978
|
"kind": "field",
|
|
2992
|
-
"name": "
|
|
2979
|
+
"name": "inputVolume",
|
|
2993
2980
|
"type": {
|
|
2994
|
-
"text": "
|
|
2981
|
+
"text": "number"
|
|
2995
2982
|
},
|
|
2996
|
-
"default": "
|
|
2997
|
-
"description": "Whether the microphone is visually/logically muted in the selector."
|
|
2983
|
+
"default": "0"
|
|
2998
2984
|
},
|
|
2999
2985
|
{
|
|
3000
2986
|
"kind": "field",
|
|
3001
|
-
"name": "
|
|
2987
|
+
"name": "outputVolume",
|
|
3002
2988
|
"type": {
|
|
3003
|
-
"text": "
|
|
2989
|
+
"text": "number"
|
|
3004
2990
|
},
|
|
3005
|
-
"default": "
|
|
3006
|
-
"description": "Whether the selector interaction is disabled."
|
|
2991
|
+
"default": "0"
|
|
3007
2992
|
},
|
|
3008
2993
|
{
|
|
3009
2994
|
"kind": "field",
|
|
3010
|
-
"name": "
|
|
2995
|
+
"name": "volumeMode",
|
|
3011
2996
|
"type": {
|
|
3012
|
-
"text": "
|
|
2997
|
+
"text": "'auto' | 'manual'"
|
|
3013
2998
|
},
|
|
3014
|
-
"
|
|
3015
|
-
"default": "[]"
|
|
2999
|
+
"default": "'auto'"
|
|
3016
3000
|
},
|
|
3017
3001
|
{
|
|
3018
3002
|
"kind": "field",
|
|
3019
|
-
"name": "
|
|
3003
|
+
"name": "seed"
|
|
3004
|
+
},
|
|
3005
|
+
{
|
|
3006
|
+
"kind": "field",
|
|
3007
|
+
"name": "_container",
|
|
3020
3008
|
"type": {
|
|
3021
|
-
"text": "
|
|
3009
|
+
"text": "HTMLDivElement"
|
|
3022
3010
|
},
|
|
3023
|
-
"privacy": "private"
|
|
3024
|
-
"default": "true"
|
|
3011
|
+
"privacy": "private"
|
|
3025
3012
|
},
|
|
3026
3013
|
{
|
|
3027
3014
|
"kind": "field",
|
|
3028
|
-
"name": "
|
|
3015
|
+
"name": "_renderer",
|
|
3029
3016
|
"type": {
|
|
3030
|
-
"text": "
|
|
3017
|
+
"text": "THREE.WebGLRenderer | undefined"
|
|
3018
|
+
},
|
|
3019
|
+
"privacy": "private"
|
|
3020
|
+
},
|
|
3021
|
+
{
|
|
3022
|
+
"kind": "field",
|
|
3023
|
+
"name": "_scene",
|
|
3024
|
+
"type": {
|
|
3025
|
+
"text": "THREE.Scene | undefined"
|
|
3026
|
+
},
|
|
3027
|
+
"privacy": "private"
|
|
3028
|
+
},
|
|
3029
|
+
{
|
|
3030
|
+
"kind": "field",
|
|
3031
|
+
"name": "_camera",
|
|
3032
|
+
"type": {
|
|
3033
|
+
"text": "THREE.OrthographicCamera | undefined"
|
|
3034
|
+
},
|
|
3035
|
+
"privacy": "private"
|
|
3036
|
+
},
|
|
3037
|
+
{
|
|
3038
|
+
"kind": "field",
|
|
3039
|
+
"name": "_mesh",
|
|
3040
|
+
"type": {
|
|
3041
|
+
"text": "THREE.Mesh<THREE.CircleGeometry, THREE.ShaderMaterial> | undefined"
|
|
3042
|
+
},
|
|
3043
|
+
"privacy": "private"
|
|
3044
|
+
},
|
|
3045
|
+
{
|
|
3046
|
+
"kind": "field",
|
|
3047
|
+
"name": "_animationFrameId",
|
|
3048
|
+
"type": {
|
|
3049
|
+
"text": "number"
|
|
3031
3050
|
},
|
|
3032
3051
|
"privacy": "private",
|
|
3033
|
-
"default": "
|
|
3052
|
+
"default": "0"
|
|
3034
3053
|
},
|
|
3035
3054
|
{
|
|
3036
3055
|
"kind": "field",
|
|
3037
|
-
"name": "
|
|
3056
|
+
"name": "_resizeObserver",
|
|
3038
3057
|
"type": {
|
|
3039
|
-
"text": "
|
|
3058
|
+
"text": "ResizeObserver | undefined"
|
|
3059
|
+
},
|
|
3060
|
+
"privacy": "private"
|
|
3061
|
+
},
|
|
3062
|
+
{
|
|
3063
|
+
"kind": "field",
|
|
3064
|
+
"name": "_animSpeed",
|
|
3065
|
+
"type": {
|
|
3066
|
+
"text": "number"
|
|
3040
3067
|
},
|
|
3041
3068
|
"privacy": "private",
|
|
3042
|
-
"default": "
|
|
3069
|
+
"default": "0.1"
|
|
3043
3070
|
},
|
|
3044
3071
|
{
|
|
3045
3072
|
"kind": "field",
|
|
3046
|
-
"name": "
|
|
3073
|
+
"name": "_curIn",
|
|
3047
3074
|
"type": {
|
|
3048
|
-
"text": "
|
|
3075
|
+
"text": "number"
|
|
3049
3076
|
},
|
|
3050
3077
|
"privacy": "private",
|
|
3051
|
-
"default": "
|
|
3078
|
+
"default": "0"
|
|
3052
3079
|
},
|
|
3053
3080
|
{
|
|
3054
3081
|
"kind": "field",
|
|
3055
|
-
"name": "
|
|
3082
|
+
"name": "_curOut",
|
|
3056
3083
|
"type": {
|
|
3057
|
-
"text": "
|
|
3084
|
+
"text": "number"
|
|
3058
3085
|
},
|
|
3059
|
-
"privacy": "private"
|
|
3086
|
+
"privacy": "private",
|
|
3087
|
+
"default": "0"
|
|
3060
3088
|
},
|
|
3061
3089
|
{
|
|
3062
3090
|
"kind": "field",
|
|
3063
|
-
"name": "
|
|
3091
|
+
"name": "_targetColor1",
|
|
3064
3092
|
"type": {
|
|
3065
|
-
"text": "
|
|
3093
|
+
"text": "THREE.Color"
|
|
3066
3094
|
},
|
|
3067
3095
|
"privacy": "private"
|
|
3068
3096
|
},
|
|
3069
3097
|
{
|
|
3070
3098
|
"kind": "field",
|
|
3071
|
-
"name": "
|
|
3099
|
+
"name": "_targetColor2",
|
|
3072
3100
|
"type": {
|
|
3073
|
-
"text": "
|
|
3101
|
+
"text": "THREE.Color"
|
|
3074
3102
|
},
|
|
3075
3103
|
"privacy": "private"
|
|
3076
3104
|
},
|
|
3077
3105
|
{
|
|
3078
3106
|
"kind": "field",
|
|
3079
|
-
"name": "
|
|
3107
|
+
"name": "_textureLoader",
|
|
3108
|
+
"privacy": "private",
|
|
3109
|
+
"default": "new THREE.TextureLoader()"
|
|
3110
|
+
},
|
|
3111
|
+
{
|
|
3112
|
+
"kind": "field",
|
|
3113
|
+
"name": "_perlinNoiseTexture",
|
|
3080
3114
|
"type": {
|
|
3081
|
-
"text": "
|
|
3115
|
+
"text": "THREE.Texture | undefined"
|
|
3082
3116
|
},
|
|
3083
3117
|
"privacy": "private"
|
|
3084
3118
|
},
|
|
@@ -3086,250 +3120,332 @@
|
|
|
3086
3120
|
"kind": "field",
|
|
3087
3121
|
"name": "styles",
|
|
3088
3122
|
"static": true,
|
|
3089
|
-
"default": "css` :host { display:
|
|
3123
|
+
"default": "css` :host { display: block; width: 100%; height: 100%; position: relative; } .container { width: 100%; height: 100%; } canvas { display: block; width: 100%; height: 100%; } `"
|
|
3124
|
+
},
|
|
3125
|
+
{
|
|
3126
|
+
"kind": "method",
|
|
3127
|
+
"name": "render"
|
|
3128
|
+
},
|
|
3129
|
+
{
|
|
3130
|
+
"kind": "method",
|
|
3131
|
+
"name": "firstUpdated",
|
|
3132
|
+
"privacy": "protected"
|
|
3090
3133
|
},
|
|
3091
3134
|
{
|
|
3092
3135
|
"kind": "method",
|
|
3093
3136
|
"name": "updated",
|
|
3137
|
+
"privacy": "protected",
|
|
3094
3138
|
"parameters": [
|
|
3095
3139
|
{
|
|
3096
3140
|
"name": "changedProperties",
|
|
3097
3141
|
"type": {
|
|
3098
|
-
"text": "
|
|
3142
|
+
"text": "Map<string, any>"
|
|
3099
3143
|
}
|
|
3100
3144
|
}
|
|
3101
3145
|
]
|
|
3102
3146
|
},
|
|
3103
3147
|
{
|
|
3104
3148
|
"kind": "method",
|
|
3105
|
-
"name": "
|
|
3149
|
+
"name": "_updateSeed",
|
|
3150
|
+
"privacy": "private"
|
|
3106
3151
|
},
|
|
3107
3152
|
{
|
|
3108
3153
|
"kind": "method",
|
|
3109
|
-
"name": "
|
|
3154
|
+
"name": "_updateColors",
|
|
3110
3155
|
"privacy": "private"
|
|
3111
3156
|
},
|
|
3112
3157
|
{
|
|
3113
3158
|
"kind": "method",
|
|
3114
|
-
"name": "
|
|
3159
|
+
"name": "_initThree",
|
|
3160
|
+
"privacy": "private"
|
|
3161
|
+
},
|
|
3162
|
+
{
|
|
3163
|
+
"kind": "field",
|
|
3164
|
+
"name": "_lastTime",
|
|
3165
|
+
"type": {
|
|
3166
|
+
"text": "number"
|
|
3167
|
+
},
|
|
3115
3168
|
"privacy": "private",
|
|
3116
|
-
"
|
|
3117
|
-
{
|
|
3118
|
-
"name": "deviceId",
|
|
3119
|
-
"type": {
|
|
3120
|
-
"text": "string"
|
|
3121
|
-
}
|
|
3122
|
-
}
|
|
3123
|
-
]
|
|
3169
|
+
"default": "0"
|
|
3124
3170
|
},
|
|
3125
3171
|
{
|
|
3126
3172
|
"kind": "method",
|
|
3127
|
-
"name": "
|
|
3173
|
+
"name": "_animate",
|
|
3174
|
+
"privacy": "private"
|
|
3175
|
+
},
|
|
3176
|
+
{
|
|
3177
|
+
"kind": "method",
|
|
3178
|
+
"name": "_splitmix32",
|
|
3128
3179
|
"privacy": "private",
|
|
3129
3180
|
"parameters": [
|
|
3130
3181
|
{
|
|
3131
|
-
"name": "
|
|
3182
|
+
"name": "a",
|
|
3132
3183
|
"type": {
|
|
3133
|
-
"text": "
|
|
3184
|
+
"text": "number"
|
|
3134
3185
|
}
|
|
3135
3186
|
}
|
|
3136
3187
|
]
|
|
3137
3188
|
},
|
|
3138
|
-
{
|
|
3139
|
-
"kind": "field",
|
|
3140
|
-
"name": "_handleDeviceChange",
|
|
3141
|
-
"privacy": "private"
|
|
3142
|
-
},
|
|
3143
|
-
{
|
|
3144
|
-
"kind": "method",
|
|
3145
|
-
"name": "_loadDevicesWithoutPermission",
|
|
3146
|
-
"privacy": "private"
|
|
3147
|
-
},
|
|
3148
|
-
{
|
|
3149
|
-
"kind": "method",
|
|
3150
|
-
"name": "_loadDevicesWithPermission",
|
|
3151
|
-
"privacy": "private"
|
|
3152
|
-
},
|
|
3153
3189
|
{
|
|
3154
3190
|
"kind": "method",
|
|
3155
|
-
"name": "
|
|
3191
|
+
"name": "_clamp01",
|
|
3156
3192
|
"privacy": "private",
|
|
3157
3193
|
"parameters": [
|
|
3158
3194
|
{
|
|
3159
|
-
"name": "
|
|
3195
|
+
"name": "n",
|
|
3160
3196
|
"type": {
|
|
3161
|
-
"text": "
|
|
3197
|
+
"text": "number"
|
|
3162
3198
|
}
|
|
3163
3199
|
}
|
|
3164
3200
|
]
|
|
3165
3201
|
},
|
|
3166
3202
|
{
|
|
3167
|
-
"kind": "
|
|
3168
|
-
"name": "
|
|
3169
|
-
"privacy": "private"
|
|
3203
|
+
"kind": "field",
|
|
3204
|
+
"name": "_vertexShader",
|
|
3205
|
+
"privacy": "private",
|
|
3206
|
+
"default": "` uniform float uTime; varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); } `"
|
|
3170
3207
|
},
|
|
3171
3208
|
{
|
|
3172
|
-
"kind": "
|
|
3173
|
-
"name": "
|
|
3209
|
+
"kind": "field",
|
|
3210
|
+
"name": "_fragmentShader",
|
|
3211
|
+
"privacy": "private",
|
|
3212
|
+
"default": "` uniform float uTime; uniform float uAnimation; uniform float uInverted; uniform float uOffsets[7]; uniform vec3 uColor1; uniform vec3 uColor2; uniform float uInputVolume; uniform float uOutputVolume; uniform float uOpacity; uniform sampler2D uPerlinTexture; varying vec2 vUv; const float PI = 3.14159265358979323846; bool drawOval(vec2 polarUv, vec2 polarCenter, float a, float b, bool reverseGradient, float softness, out vec4 color) { vec2 p = polarUv - polarCenter; float oval = (p.x * p.x) / (a * a) + (p.y * p.y) / (b * b); float edge = smoothstep(1.0, 1.0 - softness, oval); if (edge > 0.0) { float gradient = reverseGradient ? (1.0 - (p.x / a + 1.0) / 2.0) : ((p.x / a + 1.0) / 2.0); gradient = mix(0.5, gradient, 0.1); color = vec4(vec3(gradient), 0.85 * edge); return true; } return false; } vec3 colorRamp(float grayscale, vec3 color1, vec3 color2, vec3 color3, vec3 color4) { if (grayscale < 0.33) { return mix(color1, color2, grayscale * 3.0); } else if (grayscale < 0.66) { return mix(color2, color3, (grayscale - 0.33) * 3.0); } else { return mix(color3, color4, (grayscale - 0.66) * 3.0); } } vec2 hash2(vec2 p) { return fract(sin(vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)))) * 43758.5453); } float noise2D(vec2 p) { vec2 i = floor(p); vec2 f = fract(p); vec2 u = f * f * (3.0 - 2.0 * f); float n = mix( mix(dot(hash2(i + vec2(0.0, 0.0)), f - vec2(0.0, 0.0)), dot(hash2(i + vec2(1.0, 0.0)), f - vec2(1.0, 0.0)), u.x), mix(dot(hash2(i + vec2(0.0, 1.0)), f - vec2(0.0, 1.0)), dot(hash2(i + vec2(1.0, 1.0)), f - vec2(1.0, 1.0)), u.x), u.y ); return 0.5 + 0.5 * n; } float sharpRing(vec3 decomposed, float time) { float ringStart = 1.0; float ringWidth = 0.3; float noiseScale = 5.0; float noise = mix( noise2D(vec2(decomposed.x, time) * noiseScale), noise2D(vec2(decomposed.y, time) * noiseScale), decomposed.z ); noise = (noise - 0.5) * 2.5; return ringStart + noise * ringWidth * 1.5; } float smoothRing(vec3 decomposed, float time) { float ringStart = 0.9; float ringWidth = 0.2; float noiseScale = 6.0; float noise = mix( noise2D(vec2(decomposed.x, time) * noiseScale), noise2D(vec2(decomposed.y, time) * noiseScale), decomposed.z ); noise = (noise - 0.5) * 5.0; return ringStart + noise * ringWidth; } float flow(vec3 decomposed, float time) { return mix( texture(uPerlinTexture, vec2(time, decomposed.x / 2.0)).r, texture(uPerlinTexture, vec2(time, decomposed.y / 2.0)).r, decomposed.z ); } void main() { vec2 uv = vUv * 2.0 - 1.0; float radius = length(uv); float theta = atan(uv.y, uv.x); if (theta < 0.0) theta += 2.0 * PI; vec3 decomposed = vec3( theta / (2.0 * PI), mod(theta / (2.0 * PI) + 0.5, 1.0) + 1.0, abs(theta / PI - 1.0) ); float noise = flow(decomposed, radius * 0.03 - uAnimation * 0.2) - 0.5; theta += noise * mix(0.08, 0.25, uOutputVolume); vec4 color = vec4(1.0, 1.0, 1.0, 1.0); float originalCenters[7] = float[7](0.0, 0.5 * PI, 1.0 * PI, 1.5 * PI, 2.0 * PI, 2.5 * PI, 3.0 * PI); float centers[7]; for (int i = 0; i < 7; i++) { centers[i] = originalCenters[i] + 0.5 * sin(uTime / 20.0 + uOffsets[i]); } float a, b; vec4 ovalColor; for (int i = 0; i < 7; i++) { float noise = texture(uPerlinTexture, vec2(mod(centers[i] + uTime * 0.05, 1.0), 0.5)).r; a = 0.5 + noise * 0.3; b = noise * mix(3.5, 2.5, uInputVolume); bool reverseGradient = (i % 2 == 1); float distTheta = min( abs(theta - centers[i]), min(abs(theta + 2.0 * PI - centers[i]), abs(theta - 2.0 * PI - centers[i])) ); if (drawOval(vec2(distTheta, radius), vec2(0.0, 0.0), a, b, reverseGradient, 0.6, ovalColor)) { color.rgb = mix(color.rgb, ovalColor.rgb, ovalColor.a); color.a = max(color.a, ovalColor.a); } } vec3 color1 = vec3(0.0, 0.0, 0.0); vec3 color2 = uColor1; vec3 color3 = uColor2; vec3 color4 = vec3(1.0, 1.0, 1.0); float luminance = mix(color.r, 1.0 - color.r, uInverted); color.rgb = colorRamp(luminance, color1, color2, color3, color4); color.a *= uOpacity; gl_FragColor = color; } `"
|
|
3213
|
+
}
|
|
3214
|
+
],
|
|
3215
|
+
"superclass": {
|
|
3216
|
+
"name": "LitElement",
|
|
3217
|
+
"package": "lit"
|
|
3218
|
+
},
|
|
3219
|
+
"customElement": true
|
|
3220
|
+
}
|
|
3221
|
+
],
|
|
3222
|
+
"exports": [
|
|
3223
|
+
{
|
|
3224
|
+
"kind": "js",
|
|
3225
|
+
"name": "UiOrb",
|
|
3226
|
+
"declaration": {
|
|
3227
|
+
"name": "UiOrb",
|
|
3228
|
+
"module": "src/components/molecules/ui-orb.ts"
|
|
3229
|
+
}
|
|
3230
|
+
}
|
|
3231
|
+
]
|
|
3232
|
+
},
|
|
3233
|
+
{
|
|
3234
|
+
"kind": "javascript-module",
|
|
3235
|
+
"path": "src/components/molecules/ui-playlist.ts",
|
|
3236
|
+
"declarations": [
|
|
3237
|
+
{
|
|
3238
|
+
"kind": "class",
|
|
3239
|
+
"description": "A reactive list component that displays and manages a playlist.\nConsumes AudioPlayerState from the nearest ui-audio-provider.",
|
|
3240
|
+
"name": "UiPlaylist",
|
|
3241
|
+
"members": [
|
|
3242
|
+
{
|
|
3243
|
+
"kind": "field",
|
|
3244
|
+
"name": "playerState",
|
|
3245
|
+
"type": {
|
|
3246
|
+
"text": "AudioPlayerState | undefined"
|
|
3247
|
+
},
|
|
3174
3248
|
"privacy": "private"
|
|
3175
|
-
}
|
|
3176
|
-
],
|
|
3177
|
-
"events": [
|
|
3249
|
+
},
|
|
3178
3250
|
{
|
|
3179
|
-
"
|
|
3251
|
+
"kind": "field",
|
|
3252
|
+
"name": "header",
|
|
3180
3253
|
"type": {
|
|
3181
|
-
"text": "
|
|
3254
|
+
"text": "string"
|
|
3182
3255
|
},
|
|
3183
|
-
"
|
|
3256
|
+
"default": "'Queue'",
|
|
3257
|
+
"description": "Title for the playlist header (default: 'Queue')."
|
|
3184
3258
|
},
|
|
3185
3259
|
{
|
|
3186
|
-
"
|
|
3260
|
+
"kind": "field",
|
|
3261
|
+
"name": "emptyText",
|
|
3187
3262
|
"type": {
|
|
3188
|
-
"text": "
|
|
3263
|
+
"text": "string"
|
|
3189
3264
|
},
|
|
3190
|
-
"
|
|
3265
|
+
"default": "'No tracks in queue'",
|
|
3266
|
+
"description": "Message to show when the playlist is empty."
|
|
3267
|
+
},
|
|
3268
|
+
{
|
|
3269
|
+
"kind": "field",
|
|
3270
|
+
"name": "styles",
|
|
3271
|
+
"static": true,
|
|
3272
|
+
"default": "css` :host { display: block; background: var(--md-sys-color-surface-container-low, transparent); border-radius: 12px; overflow: hidden; font-family: inherit; color-scheme: light dark; } .playlist-header { padding: var(--ui-playlist-header-padding, 16px 20px); font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--md-sys-color-primary, #0066cc); background: var(--md-sys-color-surface-container-low); border-bottom: 1px solid var(--md-sys-color-outline-variant); } md-list { background: transparent; --md-list-container-color: transparent; } md-list-item { --md-list-item-label-text-font: inherit; --md-list-item-supporting-text-font: inherit; --md-list-item-label-text-color: var(--md-sys-color-on-surface); --md-list-item-supporting-text-color: var( --md-sys-color-on-surface-variant ); cursor: pointer; } md-list-item[selected] { --md-list-item-label-text-color: var(--md-sys-color-primary); background: var(--md-sys-color-primary-container); } .now-playing-icon { color: var(--md-sys-color-primary); font-size: 18px; } .empty-state { padding: var(--ui-playlist-empty-padding, 32px); text-align: center; color: var(--md-sys-color-on-surface-variant); font-size: 0.9rem; } `"
|
|
3273
|
+
},
|
|
3274
|
+
{
|
|
3275
|
+
"kind": "method",
|
|
3276
|
+
"name": "render"
|
|
3191
3277
|
}
|
|
3192
3278
|
],
|
|
3193
3279
|
"superclass": {
|
|
3194
3280
|
"name": "LitElement",
|
|
3195
3281
|
"package": "lit"
|
|
3196
3282
|
},
|
|
3197
|
-
"tagName": "ui-
|
|
3283
|
+
"tagName": "ui-playlist",
|
|
3198
3284
|
"customElement": true
|
|
3199
3285
|
}
|
|
3200
3286
|
],
|
|
3201
3287
|
"exports": [
|
|
3202
3288
|
{
|
|
3203
3289
|
"kind": "js",
|
|
3204
|
-
"name": "
|
|
3290
|
+
"name": "UiPlaylist",
|
|
3205
3291
|
"declaration": {
|
|
3206
|
-
"name": "
|
|
3207
|
-
"module": "src/components/molecules/ui-
|
|
3292
|
+
"name": "UiPlaylist",
|
|
3293
|
+
"module": "src/components/molecules/ui-playlist.ts"
|
|
3208
3294
|
}
|
|
3209
3295
|
}
|
|
3210
3296
|
]
|
|
3211
3297
|
},
|
|
3212
3298
|
{
|
|
3213
3299
|
"kind": "javascript-module",
|
|
3214
|
-
"path": "src/components/molecules/ui-
|
|
3300
|
+
"path": "src/components/molecules/ui-scrolling-waveform.ts",
|
|
3215
3301
|
"declarations": [
|
|
3216
3302
|
{
|
|
3217
3303
|
"kind": "class",
|
|
3218
|
-
"description": "A
|
|
3219
|
-
"name": "
|
|
3304
|
+
"description": "A native Lit WebComponent that provides a smooth, infinitely scrolling audio waveform animation.\nReplaces the React/ElevenLabs ScrollingWaveform.",
|
|
3305
|
+
"name": "UiScrollingWaveform",
|
|
3220
3306
|
"members": [
|
|
3221
3307
|
{
|
|
3222
3308
|
"kind": "field",
|
|
3223
|
-
"name": "
|
|
3309
|
+
"name": "speed",
|
|
3224
3310
|
"type": {
|
|
3225
|
-
"text": "
|
|
3226
|
-
}
|
|
3311
|
+
"text": "number"
|
|
3312
|
+
},
|
|
3313
|
+
"default": "50"
|
|
3227
3314
|
},
|
|
3228
3315
|
{
|
|
3229
3316
|
"kind": "field",
|
|
3230
|
-
"name": "
|
|
3317
|
+
"name": "barCount",
|
|
3231
3318
|
"type": {
|
|
3232
|
-
"text": "
|
|
3319
|
+
"text": "number"
|
|
3233
3320
|
},
|
|
3234
|
-
"default": "
|
|
3321
|
+
"default": "60"
|
|
3235
3322
|
},
|
|
3236
3323
|
{
|
|
3237
3324
|
"kind": "field",
|
|
3238
|
-
"name": "
|
|
3325
|
+
"name": "barWidth",
|
|
3239
3326
|
"type": {
|
|
3240
3327
|
"text": "number"
|
|
3241
3328
|
},
|
|
3242
|
-
"default": "
|
|
3329
|
+
"default": "4"
|
|
3243
3330
|
},
|
|
3244
3331
|
{
|
|
3245
3332
|
"kind": "field",
|
|
3246
|
-
"name": "
|
|
3333
|
+
"name": "barHeight",
|
|
3247
3334
|
"type": {
|
|
3248
3335
|
"text": "number"
|
|
3249
3336
|
},
|
|
3250
|
-
"default": "
|
|
3337
|
+
"default": "4"
|
|
3251
3338
|
},
|
|
3252
3339
|
{
|
|
3253
3340
|
"kind": "field",
|
|
3254
|
-
"name": "
|
|
3341
|
+
"name": "barGap",
|
|
3255
3342
|
"type": {
|
|
3256
|
-
"text": "
|
|
3343
|
+
"text": "number"
|
|
3257
3344
|
},
|
|
3258
|
-
"default": "
|
|
3345
|
+
"default": "2"
|
|
3259
3346
|
},
|
|
3260
3347
|
{
|
|
3261
3348
|
"kind": "field",
|
|
3262
|
-
"name": "
|
|
3349
|
+
"name": "barRadius",
|
|
3350
|
+
"type": {
|
|
3351
|
+
"text": "number"
|
|
3352
|
+
},
|
|
3353
|
+
"default": "2"
|
|
3263
3354
|
},
|
|
3264
3355
|
{
|
|
3265
3356
|
"kind": "field",
|
|
3266
|
-
"name": "
|
|
3357
|
+
"name": "barColor",
|
|
3267
3358
|
"type": {
|
|
3268
|
-
"text": "
|
|
3269
|
-
}
|
|
3270
|
-
"privacy": "private"
|
|
3359
|
+
"text": "string | undefined"
|
|
3360
|
+
}
|
|
3271
3361
|
},
|
|
3272
3362
|
{
|
|
3273
3363
|
"kind": "field",
|
|
3274
|
-
"name": "
|
|
3364
|
+
"name": "fadeEdges",
|
|
3275
3365
|
"type": {
|
|
3276
|
-
"text": "
|
|
3366
|
+
"text": "boolean"
|
|
3277
3367
|
},
|
|
3278
|
-
"
|
|
3368
|
+
"default": "true"
|
|
3279
3369
|
},
|
|
3280
3370
|
{
|
|
3281
3371
|
"kind": "field",
|
|
3282
|
-
"name": "
|
|
3372
|
+
"name": "fadeWidth",
|
|
3283
3373
|
"type": {
|
|
3284
|
-
"text": "
|
|
3374
|
+
"text": "number"
|
|
3285
3375
|
},
|
|
3286
|
-
"
|
|
3376
|
+
"default": "24"
|
|
3287
3377
|
},
|
|
3288
3378
|
{
|
|
3289
3379
|
"kind": "field",
|
|
3290
|
-
"name": "
|
|
3380
|
+
"name": "height",
|
|
3291
3381
|
"type": {
|
|
3292
|
-
"text": "
|
|
3382
|
+
"text": "number | string | undefined"
|
|
3383
|
+
}
|
|
3384
|
+
},
|
|
3385
|
+
{
|
|
3386
|
+
"kind": "field",
|
|
3387
|
+
"name": "align",
|
|
3388
|
+
"type": {
|
|
3389
|
+
"text": "'center' | 'bottom' | 'top'"
|
|
3293
3390
|
},
|
|
3294
|
-
"
|
|
3391
|
+
"default": "'center'"
|
|
3295
3392
|
},
|
|
3296
3393
|
{
|
|
3297
3394
|
"kind": "field",
|
|
3298
|
-
"name": "
|
|
3395
|
+
"name": "data",
|
|
3299
3396
|
"type": {
|
|
3300
|
-
"text": "
|
|
3397
|
+
"text": "number[] | undefined"
|
|
3398
|
+
}
|
|
3399
|
+
},
|
|
3400
|
+
{
|
|
3401
|
+
"kind": "field",
|
|
3402
|
+
"name": "peaks",
|
|
3403
|
+
"type": {
|
|
3404
|
+
"text": "number[] | undefined"
|
|
3405
|
+
}
|
|
3406
|
+
},
|
|
3407
|
+
{
|
|
3408
|
+
"kind": "field",
|
|
3409
|
+
"name": "analyserNode",
|
|
3410
|
+
"type": {
|
|
3411
|
+
"text": "AnalyserNode | undefined"
|
|
3412
|
+
}
|
|
3413
|
+
},
|
|
3414
|
+
{
|
|
3415
|
+
"kind": "field",
|
|
3416
|
+
"name": "active",
|
|
3417
|
+
"type": {
|
|
3418
|
+
"text": "boolean"
|
|
3301
3419
|
},
|
|
3302
|
-
"
|
|
3420
|
+
"default": "true"
|
|
3303
3421
|
},
|
|
3304
3422
|
{
|
|
3305
3423
|
"kind": "field",
|
|
3306
|
-
"name": "
|
|
3424
|
+
"name": "_canvas",
|
|
3307
3425
|
"type": {
|
|
3308
|
-
"text": "
|
|
3426
|
+
"text": "HTMLCanvasElement"
|
|
3309
3427
|
},
|
|
3310
|
-
"privacy": "private"
|
|
3311
|
-
"default": "0"
|
|
3428
|
+
"privacy": "private"
|
|
3312
3429
|
},
|
|
3313
3430
|
{
|
|
3314
3431
|
"kind": "field",
|
|
3315
|
-
"name": "
|
|
3432
|
+
"name": "_container",
|
|
3316
3433
|
"type": {
|
|
3317
|
-
"text": "
|
|
3434
|
+
"text": "HTMLDivElement"
|
|
3318
3435
|
},
|
|
3319
3436
|
"privacy": "private"
|
|
3320
3437
|
},
|
|
3321
3438
|
{
|
|
3322
3439
|
"kind": "field",
|
|
3323
|
-
"name": "
|
|
3440
|
+
"name": "_resizeObserver",
|
|
3324
3441
|
"type": {
|
|
3325
|
-
"text": "
|
|
3442
|
+
"text": "ResizeObserver | undefined"
|
|
3326
3443
|
},
|
|
3327
|
-
"privacy": "private"
|
|
3328
|
-
"default": "0.1"
|
|
3444
|
+
"privacy": "private"
|
|
3329
3445
|
},
|
|
3330
3446
|
{
|
|
3331
3447
|
"kind": "field",
|
|
3332
|
-
"name": "
|
|
3448
|
+
"name": "_animationFrameId",
|
|
3333
3449
|
"type": {
|
|
3334
3450
|
"text": "number"
|
|
3335
3451
|
},
|
|
@@ -3338,7 +3454,7 @@
|
|
|
3338
3454
|
},
|
|
3339
3455
|
{
|
|
3340
3456
|
"kind": "field",
|
|
3341
|
-
"name": "
|
|
3457
|
+
"name": "_lastTime",
|
|
3342
3458
|
"type": {
|
|
3343
3459
|
"text": "number"
|
|
3344
3460
|
},
|
|
@@ -3347,39 +3463,40 @@
|
|
|
3347
3463
|
},
|
|
3348
3464
|
{
|
|
3349
3465
|
"kind": "field",
|
|
3350
|
-
"name": "
|
|
3466
|
+
"name": "_dataArray",
|
|
3351
3467
|
"type": {
|
|
3352
|
-
"text": "
|
|
3468
|
+
"text": "Uint8Array | undefined"
|
|
3353
3469
|
},
|
|
3354
3470
|
"privacy": "private"
|
|
3355
3471
|
},
|
|
3356
3472
|
{
|
|
3357
3473
|
"kind": "field",
|
|
3358
|
-
"name": "
|
|
3474
|
+
"name": "_bars",
|
|
3359
3475
|
"type": {
|
|
3360
|
-
"text": "
|
|
3476
|
+
"text": "BarData[]"
|
|
3361
3477
|
},
|
|
3362
|
-
"privacy": "private"
|
|
3478
|
+
"privacy": "private",
|
|
3479
|
+
"default": "[]"
|
|
3363
3480
|
},
|
|
3364
3481
|
{
|
|
3365
3482
|
"kind": "field",
|
|
3366
|
-
"name": "
|
|
3367
|
-
"privacy": "private"
|
|
3368
|
-
"default": "new THREE.TextureLoader()"
|
|
3483
|
+
"name": "_seed",
|
|
3484
|
+
"privacy": "private"
|
|
3369
3485
|
},
|
|
3370
3486
|
{
|
|
3371
3487
|
"kind": "field",
|
|
3372
|
-
"name": "
|
|
3488
|
+
"name": "_dataIndex",
|
|
3373
3489
|
"type": {
|
|
3374
|
-
"text": "
|
|
3490
|
+
"text": "number"
|
|
3375
3491
|
},
|
|
3376
|
-
"privacy": "private"
|
|
3492
|
+
"privacy": "private",
|
|
3493
|
+
"default": "0"
|
|
3377
3494
|
},
|
|
3378
3495
|
{
|
|
3379
3496
|
"kind": "field",
|
|
3380
3497
|
"name": "styles",
|
|
3381
3498
|
"static": true,
|
|
3382
|
-
"default": "css` :host { display: block; width: 100%; height:
|
|
3499
|
+
"default": "css` :host { display: block; width: 100%; height: 128px; /* default height, can be overridden by CSS */ } .container { position: relative; width: 100%; height: 100%; overflow: hidden; } canvas { position: absolute; top: 0; left: 0; display: block; height: 100%; width: 100%; } `"
|
|
3383
3500
|
},
|
|
3384
3501
|
{
|
|
3385
3502
|
"kind": "method",
|
|
@@ -3387,58 +3504,20 @@
|
|
|
3387
3504
|
},
|
|
3388
3505
|
{
|
|
3389
3506
|
"kind": "method",
|
|
3390
|
-
"name": "firstUpdated"
|
|
3391
|
-
"privacy": "protected"
|
|
3392
|
-
},
|
|
3393
|
-
{
|
|
3394
|
-
"kind": "method",
|
|
3395
|
-
"name": "updated",
|
|
3396
|
-
"privacy": "protected",
|
|
3397
|
-
"parameters": [
|
|
3398
|
-
{
|
|
3399
|
-
"name": "changedProperties",
|
|
3400
|
-
"type": {
|
|
3401
|
-
"text": "Map<string, any>"
|
|
3402
|
-
}
|
|
3403
|
-
}
|
|
3404
|
-
]
|
|
3405
|
-
},
|
|
3406
|
-
{
|
|
3407
|
-
"kind": "method",
|
|
3408
|
-
"name": "_updateSeed",
|
|
3409
|
-
"privacy": "private"
|
|
3410
|
-
},
|
|
3411
|
-
{
|
|
3412
|
-
"kind": "method",
|
|
3413
|
-
"name": "_updateColors",
|
|
3414
|
-
"privacy": "private"
|
|
3415
|
-
},
|
|
3416
|
-
{
|
|
3417
|
-
"kind": "method",
|
|
3418
|
-
"name": "_initThree",
|
|
3419
|
-
"privacy": "private"
|
|
3420
|
-
},
|
|
3421
|
-
{
|
|
3422
|
-
"kind": "field",
|
|
3423
|
-
"name": "_lastTime",
|
|
3424
|
-
"type": {
|
|
3425
|
-
"text": "number"
|
|
3426
|
-
},
|
|
3427
|
-
"privacy": "private",
|
|
3428
|
-
"default": "0"
|
|
3507
|
+
"name": "firstUpdated"
|
|
3429
3508
|
},
|
|
3430
3509
|
{
|
|
3431
3510
|
"kind": "method",
|
|
3432
|
-
"name": "
|
|
3511
|
+
"name": "_handleResize",
|
|
3433
3512
|
"privacy": "private"
|
|
3434
3513
|
},
|
|
3435
3514
|
{
|
|
3436
3515
|
"kind": "method",
|
|
3437
|
-
"name": "
|
|
3516
|
+
"name": "_seededRandom",
|
|
3438
3517
|
"privacy": "private",
|
|
3439
3518
|
"parameters": [
|
|
3440
3519
|
{
|
|
3441
|
-
"name": "
|
|
3520
|
+
"name": "index",
|
|
3442
3521
|
"type": {
|
|
3443
3522
|
"text": "number"
|
|
3444
3523
|
}
|
|
@@ -3447,28 +3526,13 @@
|
|
|
3447
3526
|
},
|
|
3448
3527
|
{
|
|
3449
3528
|
"kind": "method",
|
|
3450
|
-
"name": "
|
|
3451
|
-
"privacy": "private"
|
|
3452
|
-
"parameters": [
|
|
3453
|
-
{
|
|
3454
|
-
"name": "n",
|
|
3455
|
-
"type": {
|
|
3456
|
-
"text": "number"
|
|
3457
|
-
}
|
|
3458
|
-
}
|
|
3459
|
-
]
|
|
3460
|
-
},
|
|
3461
|
-
{
|
|
3462
|
-
"kind": "field",
|
|
3463
|
-
"name": "_vertexShader",
|
|
3464
|
-
"privacy": "private",
|
|
3465
|
-
"default": "` uniform float uTime; varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); } `"
|
|
3529
|
+
"name": "_populateInitialBars",
|
|
3530
|
+
"privacy": "private"
|
|
3466
3531
|
},
|
|
3467
3532
|
{
|
|
3468
|
-
"kind": "
|
|
3469
|
-
"name": "
|
|
3470
|
-
"privacy": "private"
|
|
3471
|
-
"default": "` uniform float uTime; uniform float uAnimation; uniform float uInverted; uniform float uOffsets[7]; uniform vec3 uColor1; uniform vec3 uColor2; uniform float uInputVolume; uniform float uOutputVolume; uniform float uOpacity; uniform sampler2D uPerlinTexture; varying vec2 vUv; const float PI = 3.14159265358979323846; bool drawOval(vec2 polarUv, vec2 polarCenter, float a, float b, bool reverseGradient, float softness, out vec4 color) { vec2 p = polarUv - polarCenter; float oval = (p.x * p.x) / (a * a) + (p.y * p.y) / (b * b); float edge = smoothstep(1.0, 1.0 - softness, oval); if (edge > 0.0) { float gradient = reverseGradient ? (1.0 - (p.x / a + 1.0) / 2.0) : ((p.x / a + 1.0) / 2.0); gradient = mix(0.5, gradient, 0.1); color = vec4(vec3(gradient), 0.85 * edge); return true; } return false; } vec3 colorRamp(float grayscale, vec3 color1, vec3 color2, vec3 color3, vec3 color4) { if (grayscale < 0.33) { return mix(color1, color2, grayscale * 3.0); } else if (grayscale < 0.66) { return mix(color2, color3, (grayscale - 0.33) * 3.0); } else { return mix(color3, color4, (grayscale - 0.66) * 3.0); } } vec2 hash2(vec2 p) { return fract(sin(vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)))) * 43758.5453); } float noise2D(vec2 p) { vec2 i = floor(p); vec2 f = fract(p); vec2 u = f * f * (3.0 - 2.0 * f); float n = mix( mix(dot(hash2(i + vec2(0.0, 0.0)), f - vec2(0.0, 0.0)), dot(hash2(i + vec2(1.0, 0.0)), f - vec2(1.0, 0.0)), u.x), mix(dot(hash2(i + vec2(0.0, 1.0)), f - vec2(0.0, 1.0)), dot(hash2(i + vec2(1.0, 1.0)), f - vec2(1.0, 1.0)), u.x), u.y ); return 0.5 + 0.5 * n; } float sharpRing(vec3 decomposed, float time) { float ringStart = 1.0; float ringWidth = 0.3; float noiseScale = 5.0; float noise = mix( noise2D(vec2(decomposed.x, time) * noiseScale), noise2D(vec2(decomposed.y, time) * noiseScale), decomposed.z ); noise = (noise - 0.5) * 2.5; return ringStart + noise * ringWidth * 1.5; } float smoothRing(vec3 decomposed, float time) { float ringStart = 0.9; float ringWidth = 0.2; float noiseScale = 6.0; float noise = mix( noise2D(vec2(decomposed.x, time) * noiseScale), noise2D(vec2(decomposed.y, time) * noiseScale), decomposed.z ); noise = (noise - 0.5) * 5.0; return ringStart + noise * ringWidth; } float flow(vec3 decomposed, float time) { return mix( texture(uPerlinTexture, vec2(time, decomposed.x / 2.0)).r, texture(uPerlinTexture, vec2(time, decomposed.y / 2.0)).r, decomposed.z ); } void main() { vec2 uv = vUv * 2.0 - 1.0; float radius = length(uv); float theta = atan(uv.y, uv.x); if (theta < 0.0) theta += 2.0 * PI; vec3 decomposed = vec3( theta / (2.0 * PI), mod(theta / (2.0 * PI) + 0.5, 1.0) + 1.0, abs(theta / PI - 1.0) ); float noise = flow(decomposed, radius * 0.03 - uAnimation * 0.2) - 0.5; theta += noise * mix(0.08, 0.25, uOutputVolume); vec4 color = vec4(1.0, 1.0, 1.0, 1.0); float originalCenters[7] = float[7](0.0, 0.5 * PI, 1.0 * PI, 1.5 * PI, 2.0 * PI, 2.5 * PI, 3.0 * PI); float centers[7]; for (int i = 0; i < 7; i++) { centers[i] = originalCenters[i] + 0.5 * sin(uTime / 20.0 + uOffsets[i]); } float a, b; vec4 ovalColor; for (int i = 0; i < 7; i++) { float noise = texture(uPerlinTexture, vec2(mod(centers[i] + uTime * 0.05, 1.0), 0.5)).r; a = 0.5 + noise * 0.3; b = noise * mix(3.5, 2.5, uInputVolume); bool reverseGradient = (i % 2 == 1); float distTheta = min( abs(theta - centers[i]), min(abs(theta + 2.0 * PI - centers[i]), abs(theta - 2.0 * PI - centers[i])) ); if (drawOval(vec2(distTheta, radius), vec2(0.0, 0.0), a, b, reverseGradient, 0.6, ovalColor)) { color.rgb = mix(color.rgb, ovalColor.rgb, ovalColor.a); color.a = max(color.a, ovalColor.a); } } vec3 color1 = vec3(0.0, 0.0, 0.0); vec3 color2 = uColor1; vec3 color3 = uColor2; vec3 color4 = vec3(1.0, 1.0, 1.0); float luminance = mix(color.r, 1.0 - color.r, uInverted); color.rgb = colorRamp(luminance, color1, color2, color3, color4); color.a *= uOpacity; gl_FragColor = color; } `"
|
|
3533
|
+
"kind": "method",
|
|
3534
|
+
"name": "_startAnimation",
|
|
3535
|
+
"privacy": "private"
|
|
3472
3536
|
}
|
|
3473
3537
|
],
|
|
3474
3538
|
"superclass": {
|
|
@@ -3481,54 +3545,52 @@
|
|
|
3481
3545
|
"exports": [
|
|
3482
3546
|
{
|
|
3483
3547
|
"kind": "js",
|
|
3484
|
-
"name": "
|
|
3548
|
+
"name": "UiScrollingWaveform",
|
|
3485
3549
|
"declaration": {
|
|
3486
|
-
"name": "
|
|
3487
|
-
"module": "src/components/molecules/ui-
|
|
3550
|
+
"name": "UiScrollingWaveform",
|
|
3551
|
+
"module": "src/components/molecules/ui-scrolling-waveform.ts"
|
|
3488
3552
|
}
|
|
3489
3553
|
}
|
|
3490
3554
|
]
|
|
3491
3555
|
},
|
|
3492
3556
|
{
|
|
3493
3557
|
"kind": "javascript-module",
|
|
3494
|
-
"path": "src/components/molecules/ui-
|
|
3558
|
+
"path": "src/components/molecules/ui-showcase-card.ts",
|
|
3495
3559
|
"declarations": [
|
|
3496
3560
|
{
|
|
3497
3561
|
"kind": "class",
|
|
3498
|
-
"description": "A
|
|
3499
|
-
"name": "
|
|
3562
|
+
"description": "A container component used in the demo to showcase individual components.",
|
|
3563
|
+
"name": "UiShowcaseCard",
|
|
3500
3564
|
"members": [
|
|
3501
3565
|
{
|
|
3502
3566
|
"kind": "field",
|
|
3503
|
-
"name": "
|
|
3567
|
+
"name": "title",
|
|
3504
3568
|
"type": {
|
|
3505
|
-
"text": "
|
|
3569
|
+
"text": "string"
|
|
3506
3570
|
},
|
|
3507
|
-
"
|
|
3571
|
+
"default": "'Component'"
|
|
3508
3572
|
},
|
|
3509
3573
|
{
|
|
3510
3574
|
"kind": "field",
|
|
3511
|
-
"name": "
|
|
3575
|
+
"name": "description",
|
|
3512
3576
|
"type": {
|
|
3513
3577
|
"text": "string"
|
|
3514
3578
|
},
|
|
3515
|
-
"default": "'
|
|
3516
|
-
"description": "Title for the playlist header (default: 'Queue')."
|
|
3579
|
+
"default": "''"
|
|
3517
3580
|
},
|
|
3518
3581
|
{
|
|
3519
3582
|
"kind": "field",
|
|
3520
|
-
"name": "
|
|
3583
|
+
"name": "mode",
|
|
3521
3584
|
"type": {
|
|
3522
|
-
"text": "
|
|
3585
|
+
"text": "'preview' | 'code'"
|
|
3523
3586
|
},
|
|
3524
|
-
"default": "'
|
|
3525
|
-
"description": "Message to show when the playlist is empty."
|
|
3587
|
+
"default": "'preview'"
|
|
3526
3588
|
},
|
|
3527
3589
|
{
|
|
3528
3590
|
"kind": "field",
|
|
3529
3591
|
"name": "styles",
|
|
3530
3592
|
"static": true,
|
|
3531
|
-
"default": "css` :host { display: block; background: var(--md-sys-color-surface-container-low,
|
|
3593
|
+
"default": "css` :host { display: block; border-radius: 12px; background: var(--md-sys-color-surface-container-low, #f7f9fc); border: 1px solid var(--md-sys-color-outline-variant, #e0e0e0); overflow: hidden; margin-bottom: var(--ui-showcase-card-margin-bottom, 24px); } .header { padding: var(--ui-showcase-card-header-padding, 16px 20px); border-bottom: 1px solid var(--md-sys-color-outline-variant, #e0e0e0); display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; } .title-group h3 { margin: 0; font-size: 1.1rem; color: var(--md-sys-color-on-surface, #1e1e1e); } .title-group p { margin: 4px 0 0; font-size: 0.85rem; color: var(--md-sys-color-on-surface-variant, #444); } .tabs { display: flex; gap: 8px; } .tab-btn { padding: 6px 12px; background: transparent; border: 1px solid var(--md-sys-color-outline, #79747e); border-radius: 8px; color: var(--md-sys-color-on-surface-variant, #444); font-family: inherit; font-weight: 500; font-size: 0.85rem; cursor: pointer; transition: all 0.2s; } .tab-btn:hover { background: var(--md-sys-color-surface-container-highest, #e3e3e3); } .tab-btn.active { background: var(--md-sys-color-secondary-container, #e8def8); color: var(--md-sys-color-on-secondary-container, #1d192b); border-color: transparent; } .content { padding: var(--ui-showcase-card-content-padding, 24px); min-height: 100px; position: relative; } .preview-panel { display: flex; flex-direction: column; align-items: stretch; justify-content: center; gap: 16px; } :host([mode='code']) .preview-panel { position: absolute; visibility: hidden; pointer-events: none; height: 0; overflow: hidden; } .code-panel { display: none; background: var(--md-sys-color-surface-container-highest, #1e1e1e); color: var(--md-sys-color-on-surface, #e3e3e3); padding: 16px; border-radius: 8px; overflow-x: auto; font-family: 'Courier New', Courier, monospace; font-size: 0.85rem; line-height: 1.5; margin: 0; border: 1px solid var(--md-sys-color-outline-variant, #e0e0e0); } :host([mode='code']) .code-panel { display: block; } `"
|
|
3532
3594
|
},
|
|
3533
3595
|
{
|
|
3534
3596
|
"kind": "method",
|
|
@@ -3539,260 +3601,356 @@
|
|
|
3539
3601
|
"name": "LitElement",
|
|
3540
3602
|
"package": "lit"
|
|
3541
3603
|
},
|
|
3542
|
-
"tagName": "ui-playlist",
|
|
3543
3604
|
"customElement": true
|
|
3544
3605
|
}
|
|
3545
3606
|
],
|
|
3546
3607
|
"exports": [
|
|
3547
3608
|
{
|
|
3548
3609
|
"kind": "js",
|
|
3549
|
-
"name": "
|
|
3610
|
+
"name": "UiShowcaseCard",
|
|
3550
3611
|
"declaration": {
|
|
3551
|
-
"name": "
|
|
3552
|
-
"module": "src/components/molecules/ui-
|
|
3612
|
+
"name": "UiShowcaseCard",
|
|
3613
|
+
"module": "src/components/molecules/ui-showcase-card.ts"
|
|
3553
3614
|
}
|
|
3554
3615
|
}
|
|
3555
3616
|
]
|
|
3556
3617
|
},
|
|
3557
3618
|
{
|
|
3558
3619
|
"kind": "javascript-module",
|
|
3559
|
-
"path": "src/components/molecules/ui-
|
|
3620
|
+
"path": "src/components/molecules/ui-spectrum-visualizer.ts",
|
|
3560
3621
|
"declarations": [
|
|
3561
3622
|
{
|
|
3562
3623
|
"kind": "class",
|
|
3563
|
-
"description": "A
|
|
3564
|
-
"name": "
|
|
3624
|
+
"description": "A standard frequency spectrum visualizer (bars).\nAutomatically consumes AudioPlayerState from the nearest ui-audio-provider.",
|
|
3625
|
+
"name": "UiSpectrumVisualizer",
|
|
3565
3626
|
"members": [
|
|
3566
3627
|
{
|
|
3567
3628
|
"kind": "field",
|
|
3568
|
-
"name": "
|
|
3629
|
+
"name": "playerState",
|
|
3569
3630
|
"type": {
|
|
3570
|
-
"text": "
|
|
3631
|
+
"text": "AudioPlayerState | undefined"
|
|
3571
3632
|
},
|
|
3572
|
-
"
|
|
3633
|
+
"privacy": "private"
|
|
3573
3634
|
},
|
|
3574
3635
|
{
|
|
3575
3636
|
"kind": "field",
|
|
3576
|
-
"name": "
|
|
3637
|
+
"name": "barWidth",
|
|
3577
3638
|
"type": {
|
|
3578
3639
|
"text": "number"
|
|
3579
3640
|
},
|
|
3580
|
-
"default": "
|
|
3641
|
+
"default": "4",
|
|
3642
|
+
"description": "Width of each spectrum bar (default: 4)."
|
|
3581
3643
|
},
|
|
3582
3644
|
{
|
|
3583
3645
|
"kind": "field",
|
|
3584
|
-
"name": "
|
|
3646
|
+
"name": "barGap",
|
|
3585
3647
|
"type": {
|
|
3586
3648
|
"text": "number"
|
|
3587
3649
|
},
|
|
3588
|
-
"default": "
|
|
3650
|
+
"default": "2",
|
|
3651
|
+
"description": "Gap between bars (default: 2)."
|
|
3589
3652
|
},
|
|
3590
3653
|
{
|
|
3591
3654
|
"kind": "field",
|
|
3592
|
-
"name": "
|
|
3655
|
+
"name": "height",
|
|
3593
3656
|
"type": {
|
|
3594
3657
|
"text": "number"
|
|
3595
3658
|
},
|
|
3596
|
-
"
|
|
3659
|
+
"description": "Container height (default: 100)."
|
|
3597
3660
|
},
|
|
3598
3661
|
{
|
|
3599
3662
|
"kind": "field",
|
|
3600
|
-
"name": "
|
|
3663
|
+
"name": "color",
|
|
3601
3664
|
"type": {
|
|
3602
|
-
"text": "
|
|
3665
|
+
"text": "string"
|
|
3603
3666
|
},
|
|
3604
|
-
"
|
|
3667
|
+
"description": "Bar color. Falls back to --md-sys-color-primary."
|
|
3605
3668
|
},
|
|
3606
3669
|
{
|
|
3607
3670
|
"kind": "field",
|
|
3608
|
-
"name": "
|
|
3671
|
+
"name": "_canvas",
|
|
3609
3672
|
"type": {
|
|
3610
|
-
"text": "
|
|
3673
|
+
"text": "HTMLCanvasElement"
|
|
3611
3674
|
},
|
|
3612
|
-
"
|
|
3675
|
+
"privacy": "private"
|
|
3613
3676
|
},
|
|
3614
3677
|
{
|
|
3615
3678
|
"kind": "field",
|
|
3616
|
-
"name": "
|
|
3679
|
+
"name": "_animationFrameId",
|
|
3617
3680
|
"type": {
|
|
3618
|
-
"text": "
|
|
3619
|
-
}
|
|
3681
|
+
"text": "number"
|
|
3682
|
+
},
|
|
3683
|
+
"privacy": "private",
|
|
3684
|
+
"default": "0"
|
|
3620
3685
|
},
|
|
3621
3686
|
{
|
|
3622
3687
|
"kind": "field",
|
|
3623
|
-
"name": "
|
|
3688
|
+
"name": "_dataArray",
|
|
3624
3689
|
"type": {
|
|
3625
|
-
"text": "
|
|
3690
|
+
"text": "Uint8Array | undefined"
|
|
3626
3691
|
},
|
|
3627
|
-
"
|
|
3692
|
+
"privacy": "private"
|
|
3628
3693
|
},
|
|
3629
3694
|
{
|
|
3630
3695
|
"kind": "field",
|
|
3631
|
-
"name": "
|
|
3632
|
-
"
|
|
3633
|
-
|
|
3634
|
-
},
|
|
3635
|
-
"default": "24"
|
|
3696
|
+
"name": "styles",
|
|
3697
|
+
"static": true,
|
|
3698
|
+
"default": "css` :host { display: block; width: 100%; height: 100px; /* default height, can be overridden by CSS */ overflow: hidden; } canvas { display: block; width: 100%; height: 100%; } `"
|
|
3636
3699
|
},
|
|
3637
3700
|
{
|
|
3638
|
-
"kind": "
|
|
3639
|
-
"name": "
|
|
3640
|
-
|
|
3641
|
-
|
|
3642
|
-
|
|
3643
|
-
"
|
|
3701
|
+
"kind": "method",
|
|
3702
|
+
"name": "render"
|
|
3703
|
+
},
|
|
3704
|
+
{
|
|
3705
|
+
"kind": "method",
|
|
3706
|
+
"name": "firstUpdated"
|
|
3707
|
+
},
|
|
3708
|
+
{
|
|
3709
|
+
"kind": "method",
|
|
3710
|
+
"name": "_startLoop",
|
|
3711
|
+
"privacy": "private"
|
|
3644
3712
|
},
|
|
3713
|
+
{
|
|
3714
|
+
"kind": "method",
|
|
3715
|
+
"name": "_renderFrame",
|
|
3716
|
+
"privacy": "private"
|
|
3717
|
+
}
|
|
3718
|
+
],
|
|
3719
|
+
"superclass": {
|
|
3720
|
+
"name": "LitElement",
|
|
3721
|
+
"package": "lit"
|
|
3722
|
+
},
|
|
3723
|
+
"tagName": "ui-spectrum-visualizer",
|
|
3724
|
+
"customElement": true
|
|
3725
|
+
}
|
|
3726
|
+
],
|
|
3727
|
+
"exports": [
|
|
3728
|
+
{
|
|
3729
|
+
"kind": "js",
|
|
3730
|
+
"name": "UiSpectrumVisualizer",
|
|
3731
|
+
"declaration": {
|
|
3732
|
+
"name": "UiSpectrumVisualizer",
|
|
3733
|
+
"module": "src/components/molecules/ui-spectrum-visualizer.ts"
|
|
3734
|
+
}
|
|
3735
|
+
}
|
|
3736
|
+
]
|
|
3737
|
+
},
|
|
3738
|
+
{
|
|
3739
|
+
"kind": "javascript-module",
|
|
3740
|
+
"path": "src/components/molecules/ui-speech-preview.ts",
|
|
3741
|
+
"declarations": [
|
|
3742
|
+
{
|
|
3743
|
+
"kind": "class",
|
|
3744
|
+
"description": "",
|
|
3745
|
+
"name": "UiSpeechPreview",
|
|
3746
|
+
"members": [
|
|
3645
3747
|
{
|
|
3646
3748
|
"kind": "field",
|
|
3647
|
-
"name": "
|
|
3749
|
+
"name": "_context",
|
|
3648
3750
|
"type": {
|
|
3649
|
-
"text": "
|
|
3751
|
+
"text": "SpeechContext | undefined"
|
|
3650
3752
|
},
|
|
3651
|
-
"
|
|
3753
|
+
"privacy": "private"
|
|
3652
3754
|
},
|
|
3653
3755
|
{
|
|
3654
3756
|
"kind": "field",
|
|
3655
|
-
"name": "
|
|
3757
|
+
"name": "placeholder",
|
|
3656
3758
|
"type": {
|
|
3657
|
-
"text": "
|
|
3658
|
-
}
|
|
3759
|
+
"text": "string"
|
|
3760
|
+
},
|
|
3761
|
+
"default": "'Jot down some thoughts...'"
|
|
3659
3762
|
},
|
|
3660
3763
|
{
|
|
3661
3764
|
"kind": "field",
|
|
3662
|
-
"name": "
|
|
3663
|
-
"
|
|
3664
|
-
|
|
3665
|
-
}
|
|
3765
|
+
"name": "styles",
|
|
3766
|
+
"static": true,
|
|
3767
|
+
"default": "css` :host { display: inline-flex; align-items: center; gap: var(--ui-speech-preview-gap, 8px); font-family: inherit; min-width: 0; color: var(--md-sys-color-primary); } .transcript { font-size: var(--ui-speech-preview-font-size, 14px); font-family: var(--ui-speech-preview-font-family, inherit); color: var(--md-sys-color-on-surface); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1; } .placeholder { color: var(--md-sys-color-on-surface-variant); opacity: 0.7; font-style: italic; } .waveform-container { width: 32px; height: 24px; display: flex; align-items: center; justify-content: center; background: transparent; border-radius: 4px; transition: all 0.3s ease; } .hidden { width: 0; opacity: 0; pointer-events: none; margin-left: -8px; } `"
|
|
3666
3768
|
},
|
|
3769
|
+
{
|
|
3770
|
+
"kind": "method",
|
|
3771
|
+
"name": "render"
|
|
3772
|
+
}
|
|
3773
|
+
],
|
|
3774
|
+
"superclass": {
|
|
3775
|
+
"name": "LitElement",
|
|
3776
|
+
"package": "lit"
|
|
3777
|
+
},
|
|
3778
|
+
"customElement": true
|
|
3779
|
+
}
|
|
3780
|
+
],
|
|
3781
|
+
"exports": [
|
|
3782
|
+
{
|
|
3783
|
+
"kind": "js",
|
|
3784
|
+
"name": "UiSpeechPreview",
|
|
3785
|
+
"declaration": {
|
|
3786
|
+
"name": "UiSpeechPreview",
|
|
3787
|
+
"module": "src/components/molecules/ui-speech-preview.ts"
|
|
3788
|
+
}
|
|
3789
|
+
}
|
|
3790
|
+
]
|
|
3791
|
+
},
|
|
3792
|
+
{
|
|
3793
|
+
"kind": "javascript-module",
|
|
3794
|
+
"path": "src/components/molecules/ui-typing-indicator.ts",
|
|
3795
|
+
"declarations": [
|
|
3796
|
+
{
|
|
3797
|
+
"kind": "class",
|
|
3798
|
+
"description": "MOLECULE: Typing Indicator\nA group of animated dots indicating active 'typing' or 'thinking' state.",
|
|
3799
|
+
"name": "UiTypingIndicator",
|
|
3800
|
+
"members": [
|
|
3667
3801
|
{
|
|
3668
3802
|
"kind": "field",
|
|
3669
|
-
"name": "
|
|
3670
|
-
"
|
|
3671
|
-
|
|
3672
|
-
}
|
|
3803
|
+
"name": "styles",
|
|
3804
|
+
"static": true,
|
|
3805
|
+
"default": "css` :host { display: inline-flex; align-items: center; gap: var(--ui-typing-indicator-gap, 4px); padding: var(--ui-typing-indicator-padding, 8px 12px); background: var(--md-sys-color-surface-container-low); border-radius: 12px; border-bottom-left-radius: 4px; } `"
|
|
3673
3806
|
},
|
|
3807
|
+
{
|
|
3808
|
+
"kind": "method",
|
|
3809
|
+
"name": "render"
|
|
3810
|
+
}
|
|
3811
|
+
],
|
|
3812
|
+
"superclass": {
|
|
3813
|
+
"name": "LitElement",
|
|
3814
|
+
"package": "lit"
|
|
3815
|
+
},
|
|
3816
|
+
"tagName": "ui-typing-indicator",
|
|
3817
|
+
"customElement": true
|
|
3818
|
+
}
|
|
3819
|
+
],
|
|
3820
|
+
"exports": [
|
|
3821
|
+
{
|
|
3822
|
+
"kind": "js",
|
|
3823
|
+
"name": "UiTypingIndicator",
|
|
3824
|
+
"declaration": {
|
|
3825
|
+
"name": "UiTypingIndicator",
|
|
3826
|
+
"module": "src/components/molecules/ui-typing-indicator.ts"
|
|
3827
|
+
}
|
|
3828
|
+
}
|
|
3829
|
+
]
|
|
3830
|
+
},
|
|
3831
|
+
{
|
|
3832
|
+
"kind": "javascript-module",
|
|
3833
|
+
"path": "src/components/molecules/ui-voice-button.ts",
|
|
3834
|
+
"declarations": [
|
|
3835
|
+
{
|
|
3836
|
+
"kind": "class",
|
|
3837
|
+
"description": "A native Lit WebComponent replacement for the ElevenLabs React voice-button.\nNow refactored to consume speechContext but maintains backward compatibility\nfor manual state control.",
|
|
3838
|
+
"name": "UiVoiceButton",
|
|
3839
|
+
"members": [
|
|
3674
3840
|
{
|
|
3675
3841
|
"kind": "field",
|
|
3676
|
-
"name": "
|
|
3842
|
+
"name": "_context",
|
|
3677
3843
|
"type": {
|
|
3678
|
-
"text": "
|
|
3844
|
+
"text": "SpeechContext | undefined"
|
|
3679
3845
|
},
|
|
3680
|
-
"
|
|
3846
|
+
"privacy": "private"
|
|
3681
3847
|
},
|
|
3682
3848
|
{
|
|
3683
3849
|
"kind": "field",
|
|
3684
|
-
"name": "
|
|
3850
|
+
"name": "state",
|
|
3685
3851
|
"type": {
|
|
3686
|
-
"text": "
|
|
3852
|
+
"text": "VoiceButtonState"
|
|
3687
3853
|
},
|
|
3688
|
-
"
|
|
3854
|
+
"default": "'idle'"
|
|
3689
3855
|
},
|
|
3690
3856
|
{
|
|
3691
3857
|
"kind": "field",
|
|
3692
|
-
"name": "
|
|
3858
|
+
"name": "label",
|
|
3693
3859
|
"type": {
|
|
3694
|
-
"text": "
|
|
3695
|
-
}
|
|
3696
|
-
"privacy": "private"
|
|
3860
|
+
"text": "string | undefined"
|
|
3861
|
+
}
|
|
3697
3862
|
},
|
|
3698
3863
|
{
|
|
3699
3864
|
"kind": "field",
|
|
3700
|
-
"name": "
|
|
3865
|
+
"name": "trailing",
|
|
3701
3866
|
"type": {
|
|
3702
|
-
"text": "
|
|
3703
|
-
}
|
|
3704
|
-
"privacy": "private"
|
|
3867
|
+
"text": "string | undefined"
|
|
3868
|
+
}
|
|
3705
3869
|
},
|
|
3706
3870
|
{
|
|
3707
3871
|
"kind": "field",
|
|
3708
|
-
"name": "
|
|
3872
|
+
"name": "disabled",
|
|
3709
3873
|
"type": {
|
|
3710
|
-
"text": "
|
|
3874
|
+
"text": "boolean"
|
|
3711
3875
|
},
|
|
3712
|
-
"
|
|
3713
|
-
"default": "0"
|
|
3876
|
+
"default": "false"
|
|
3714
3877
|
},
|
|
3715
3878
|
{
|
|
3716
3879
|
"kind": "field",
|
|
3717
|
-
"name": "
|
|
3880
|
+
"name": "analyserNode",
|
|
3718
3881
|
"type": {
|
|
3719
|
-
"text": "
|
|
3720
|
-
}
|
|
3721
|
-
"privacy": "private",
|
|
3722
|
-
"default": "0"
|
|
3882
|
+
"text": "AnalyserNode | undefined"
|
|
3883
|
+
}
|
|
3723
3884
|
},
|
|
3724
3885
|
{
|
|
3725
3886
|
"kind": "field",
|
|
3726
|
-
"name": "
|
|
3887
|
+
"name": "_showFeedback",
|
|
3727
3888
|
"type": {
|
|
3728
|
-
"text": "
|
|
3889
|
+
"text": "boolean"
|
|
3729
3890
|
},
|
|
3730
|
-
"privacy": "private"
|
|
3891
|
+
"privacy": "private",
|
|
3892
|
+
"default": "false"
|
|
3731
3893
|
},
|
|
3732
3894
|
{
|
|
3733
3895
|
"kind": "field",
|
|
3734
|
-
"name": "
|
|
3896
|
+
"name": "_feedbackType",
|
|
3735
3897
|
"type": {
|
|
3736
|
-
"text": "
|
|
3898
|
+
"text": "'success' | 'error' | null"
|
|
3737
3899
|
},
|
|
3738
3900
|
"privacy": "private",
|
|
3739
|
-
"default": "
|
|
3740
|
-
},
|
|
3741
|
-
{
|
|
3742
|
-
"kind": "field",
|
|
3743
|
-
"name": "_seed",
|
|
3744
|
-
"privacy": "private"
|
|
3901
|
+
"default": "null"
|
|
3745
3902
|
},
|
|
3746
3903
|
{
|
|
3747
3904
|
"kind": "field",
|
|
3748
|
-
"name": "
|
|
3905
|
+
"name": "_feedbackTimeout",
|
|
3749
3906
|
"type": {
|
|
3750
|
-
"text": "
|
|
3907
|
+
"text": "ReturnType<typeof setTimeout> | undefined"
|
|
3751
3908
|
},
|
|
3752
|
-
"privacy": "private"
|
|
3753
|
-
"default": "0"
|
|
3909
|
+
"privacy": "private"
|
|
3754
3910
|
},
|
|
3755
3911
|
{
|
|
3756
3912
|
"kind": "field",
|
|
3757
3913
|
"name": "styles",
|
|
3758
3914
|
"static": true,
|
|
3759
|
-
"default": "css` :host { display: block; width: 100%; } .container { position: relative; width:
|
|
3760
|
-
},
|
|
3761
|
-
{
|
|
3762
|
-
"kind": "method",
|
|
3763
|
-
"name": "render"
|
|
3915
|
+
"default": "css` :host { display: inline-block; --ui-waveform-height: 24px; --ui-waveform-width: 96px; } .wrapper { display: flex; align-items: center; justify-content: center; /* Dynamic gap based on state to ensure perfect centering */ gap: 0; min-width: 100%; transition: gap 0.3s ease; } .wrapper.active { gap: 12px; } md-filled-button, md-outlined-button { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); font-family: inherit; min-width: 140px; } md-filled-button.recording { --md-filled-button-container-color: var( --ui-speech-record-color, #ffdad6 ); --md-filled-button-label-text-color: #410002; } .waveform-slot { position: relative; width: 0; height: var(--ui-waveform-height); border-radius: 4px; overflow: hidden; display: flex; align-items: center; justify-content: center; background: transparent; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); flex-shrink: 0; opacity: 0; } .waveform-slot.active { width: var(--ui-waveform-width); opacity: 1; } .feedback-overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: inherit; border-radius: inherit; animation: fadeIn 0.3s ease forwards; pointer-events: none; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 0.9; } } `"
|
|
3764
3916
|
},
|
|
3765
3917
|
{
|
|
3766
3918
|
"kind": "method",
|
|
3767
|
-
"name": "
|
|
3919
|
+
"name": "updated",
|
|
3920
|
+
"privacy": "protected",
|
|
3921
|
+
"parameters": [
|
|
3922
|
+
{
|
|
3923
|
+
"name": "changedProperties",
|
|
3924
|
+
"type": {
|
|
3925
|
+
"text": "PropertyValues"
|
|
3926
|
+
}
|
|
3927
|
+
}
|
|
3928
|
+
]
|
|
3768
3929
|
},
|
|
3769
3930
|
{
|
|
3770
3931
|
"kind": "method",
|
|
3771
|
-
"name": "
|
|
3772
|
-
"privacy": "private"
|
|
3932
|
+
"name": "render"
|
|
3773
3933
|
},
|
|
3774
3934
|
{
|
|
3775
3935
|
"kind": "method",
|
|
3776
|
-
"name": "
|
|
3936
|
+
"name": "_handleClick",
|
|
3777
3937
|
"privacy": "private",
|
|
3778
3938
|
"parameters": [
|
|
3779
3939
|
{
|
|
3780
|
-
"name": "
|
|
3940
|
+
"name": "_e",
|
|
3781
3941
|
"type": {
|
|
3782
|
-
"text": "
|
|
3942
|
+
"text": "Event"
|
|
3783
3943
|
}
|
|
3784
3944
|
}
|
|
3785
3945
|
]
|
|
3786
|
-
}
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
"name": "_populateInitialBars",
|
|
3790
|
-
"privacy": "private"
|
|
3791
|
-
},
|
|
3946
|
+
}
|
|
3947
|
+
],
|
|
3948
|
+
"events": [
|
|
3792
3949
|
{
|
|
3793
|
-
"
|
|
3794
|
-
"
|
|
3795
|
-
|
|
3950
|
+
"name": "voice-button-click",
|
|
3951
|
+
"type": {
|
|
3952
|
+
"text": "CustomEvent"
|
|
3953
|
+
}
|
|
3796
3954
|
}
|
|
3797
3955
|
],
|
|
3798
3956
|
"superclass": {
|
|
@@ -3805,150 +3963,132 @@
|
|
|
3805
3963
|
"exports": [
|
|
3806
3964
|
{
|
|
3807
3965
|
"kind": "js",
|
|
3808
|
-
"name": "
|
|
3966
|
+
"name": "UiVoiceButton",
|
|
3809
3967
|
"declaration": {
|
|
3810
|
-
"name": "
|
|
3811
|
-
"module": "src/components/molecules/ui-
|
|
3968
|
+
"name": "UiVoiceButton",
|
|
3969
|
+
"module": "src/components/molecules/ui-voice-button.ts"
|
|
3812
3970
|
}
|
|
3813
3971
|
}
|
|
3814
3972
|
]
|
|
3815
3973
|
},
|
|
3816
3974
|
{
|
|
3817
3975
|
"kind": "javascript-module",
|
|
3818
|
-
"path": "src/components/molecules/ui-
|
|
3976
|
+
"path": "src/components/molecules/ui-voice-picker.ts",
|
|
3819
3977
|
"declarations": [
|
|
3820
3978
|
{
|
|
3821
3979
|
"kind": "class",
|
|
3822
|
-
"description": "A
|
|
3823
|
-
"name": "
|
|
3980
|
+
"description": "A native Lit WebComponent that provides a searchable dropdown menu for selecting\na voice persona. It supports custom data mapping, optional 3D 'Orb' avatars,\nand built-in audio preview capabilities.",
|
|
3981
|
+
"name": "UiVoicePicker",
|
|
3824
3982
|
"members": [
|
|
3825
3983
|
{
|
|
3826
3984
|
"kind": "field",
|
|
3827
|
-
"name": "
|
|
3985
|
+
"name": "voices",
|
|
3828
3986
|
"type": {
|
|
3829
|
-
"text": "
|
|
3987
|
+
"text": "Array"
|
|
3830
3988
|
},
|
|
3831
|
-
"default": "
|
|
3989
|
+
"default": "[]",
|
|
3990
|
+
"description": "The list of voice objects to display."
|
|
3832
3991
|
},
|
|
3833
3992
|
{
|
|
3834
3993
|
"kind": "field",
|
|
3835
|
-
"name": "
|
|
3994
|
+
"name": "value",
|
|
3836
3995
|
"type": {
|
|
3837
3996
|
"text": "string"
|
|
3838
3997
|
},
|
|
3839
|
-
"
|
|
3998
|
+
"description": "The ID of the currently selected voice."
|
|
3840
3999
|
},
|
|
3841
4000
|
{
|
|
3842
4001
|
"kind": "field",
|
|
3843
|
-
"name": "
|
|
4002
|
+
"name": "placeholder",
|
|
3844
4003
|
"type": {
|
|
3845
|
-
"text": "
|
|
4004
|
+
"text": "string"
|
|
3846
4005
|
},
|
|
3847
|
-
"default": "'
|
|
4006
|
+
"default": "'Select a voice...'",
|
|
4007
|
+
"description": "Text to display when no voice is selected."
|
|
3848
4008
|
},
|
|
3849
4009
|
{
|
|
3850
4010
|
"kind": "field",
|
|
3851
|
-
"name": "
|
|
3852
|
-
"
|
|
3853
|
-
|
|
4011
|
+
"name": "idKey",
|
|
4012
|
+
"type": {
|
|
4013
|
+
"text": "string"
|
|
4014
|
+
},
|
|
4015
|
+
"default": "'voiceId'",
|
|
4016
|
+
"description": "Key in the voice object to use as the unique ID (default: 'voiceId')."
|
|
3854
4017
|
},
|
|
3855
4018
|
{
|
|
3856
|
-
"kind": "
|
|
3857
|
-
"name": "
|
|
3858
|
-
|
|
3859
|
-
|
|
3860
|
-
|
|
3861
|
-
|
|
3862
|
-
|
|
3863
|
-
|
|
3864
|
-
"customElement": true
|
|
3865
|
-
}
|
|
3866
|
-
],
|
|
3867
|
-
"exports": [
|
|
3868
|
-
{
|
|
3869
|
-
"kind": "js",
|
|
3870
|
-
"name": "UiShowcaseCard",
|
|
3871
|
-
"declaration": {
|
|
3872
|
-
"name": "UiShowcaseCard",
|
|
3873
|
-
"module": "src/components/molecules/ui-showcase-card.ts"
|
|
3874
|
-
}
|
|
3875
|
-
}
|
|
3876
|
-
]
|
|
3877
|
-
},
|
|
3878
|
-
{
|
|
3879
|
-
"kind": "javascript-module",
|
|
3880
|
-
"path": "src/components/molecules/ui-spectrum-visualizer.ts",
|
|
3881
|
-
"declarations": [
|
|
3882
|
-
{
|
|
3883
|
-
"kind": "class",
|
|
3884
|
-
"description": "A standard frequency spectrum visualizer (bars).\nAutomatically consumes AudioPlayerState from the nearest ui-audio-provider.",
|
|
3885
|
-
"name": "UiSpectrumVisualizer",
|
|
3886
|
-
"members": [
|
|
4019
|
+
"kind": "field",
|
|
4020
|
+
"name": "titleKey",
|
|
4021
|
+
"type": {
|
|
4022
|
+
"text": "string"
|
|
4023
|
+
},
|
|
4024
|
+
"default": "'name'",
|
|
4025
|
+
"description": "Key in the voice object to use as the display name (default: 'name')."
|
|
4026
|
+
},
|
|
3887
4027
|
{
|
|
3888
4028
|
"kind": "field",
|
|
3889
|
-
"name": "
|
|
4029
|
+
"name": "subtitleKey",
|
|
3890
4030
|
"type": {
|
|
3891
|
-
"text": "
|
|
4031
|
+
"text": "string"
|
|
3892
4032
|
},
|
|
3893
|
-
"
|
|
4033
|
+
"default": "'category'",
|
|
4034
|
+
"description": "Key in the voice object to use as the category/subtitle (default: 'category')."
|
|
3894
4035
|
},
|
|
3895
4036
|
{
|
|
3896
4037
|
"kind": "field",
|
|
3897
|
-
"name": "
|
|
4038
|
+
"name": "previewUrlKey",
|
|
3898
4039
|
"type": {
|
|
3899
|
-
"text": "
|
|
4040
|
+
"text": "string"
|
|
3900
4041
|
},
|
|
3901
|
-
"default": "
|
|
3902
|
-
"description": "
|
|
4042
|
+
"default": "'previewUrl'",
|
|
4043
|
+
"description": "Key in the voice object containing the preview audio URL."
|
|
3903
4044
|
},
|
|
3904
4045
|
{
|
|
3905
4046
|
"kind": "field",
|
|
3906
|
-
"name": "
|
|
4047
|
+
"name": "useOrbs",
|
|
3907
4048
|
"type": {
|
|
3908
|
-
"text": "
|
|
4049
|
+
"text": "boolean"
|
|
3909
4050
|
},
|
|
3910
|
-
"default": "
|
|
3911
|
-
"description": "
|
|
4051
|
+
"default": "false",
|
|
4052
|
+
"description": "Whether to display 3D ui-orb avatars for each voice."
|
|
3912
4053
|
},
|
|
3913
4054
|
{
|
|
3914
4055
|
"kind": "field",
|
|
3915
|
-
"name": "
|
|
4056
|
+
"name": "colorKey",
|
|
3916
4057
|
"type": {
|
|
3917
|
-
"text": "
|
|
4058
|
+
"text": "string"
|
|
3918
4059
|
},
|
|
3919
|
-
"default": "
|
|
3920
|
-
"description": "Container height (default: 100)."
|
|
4060
|
+
"default": "'colors'"
|
|
3921
4061
|
},
|
|
3922
4062
|
{
|
|
3923
4063
|
"kind": "field",
|
|
3924
|
-
"name": "
|
|
4064
|
+
"name": "_searchQuery",
|
|
3925
4065
|
"type": {
|
|
3926
4066
|
"text": "string"
|
|
3927
4067
|
},
|
|
3928
|
-
"
|
|
4068
|
+
"privacy": "private",
|
|
4069
|
+
"default": "''"
|
|
3929
4070
|
},
|
|
3930
4071
|
{
|
|
3931
4072
|
"kind": "field",
|
|
3932
|
-
"name": "
|
|
4073
|
+
"name": "_previewingVoiceId",
|
|
3933
4074
|
"type": {
|
|
3934
|
-
"text": "
|
|
4075
|
+
"text": "string | undefined"
|
|
3935
4076
|
},
|
|
3936
4077
|
"privacy": "private"
|
|
3937
4078
|
},
|
|
3938
4079
|
{
|
|
3939
4080
|
"kind": "field",
|
|
3940
|
-
"name": "
|
|
4081
|
+
"name": "_menuEl",
|
|
3941
4082
|
"type": {
|
|
3942
|
-
"text": "
|
|
4083
|
+
"text": "any"
|
|
3943
4084
|
},
|
|
3944
|
-
"privacy": "private"
|
|
3945
|
-
"default": "0"
|
|
4085
|
+
"privacy": "private"
|
|
3946
4086
|
},
|
|
3947
4087
|
{
|
|
3948
4088
|
"kind": "field",
|
|
3949
|
-
"name": "
|
|
4089
|
+
"name": "_audioEl",
|
|
3950
4090
|
"type": {
|
|
3951
|
-
"text": "
|
|
4091
|
+
"text": "HTMLAudioElement"
|
|
3952
4092
|
},
|
|
3953
4093
|
"privacy": "private"
|
|
3954
4094
|
},
|
|
@@ -3956,7 +4096,7 @@
|
|
|
3956
4096
|
"kind": "field",
|
|
3957
4097
|
"name": "styles",
|
|
3958
4098
|
"static": true,
|
|
3959
|
-
"default": "css` :host { display: block; width: 100%; overflow: hidden; }
|
|
4099
|
+
"default": "css` :host { display: inline-block; width: 100%; font-family: inherit; color-scheme: light dark; } .anchor-button { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: var(--ui-voice-picker-padding, 8px 16px); background: var( --ui-voice-picker-anchor-bg, var(--md-sys-color-surface-container-high, transparent) ); border: 1px solid var(--md-sys-color-outline-variant, currentColor); border-radius: 8px; color: var(--md-sys-color-on-surface); cursor: pointer; font-family: inherit; font-size: 14px; min-height: 48px; transition: background-color 0.2s, border-color 0.2s; } .anchor-button:hover { background: var(--md-sys-color-surface-container-highest); } .anchor-button:focus-visible { outline: none; border-color: var(--md-sys-color-primary); box-shadow: 0 0 0 1px var(--md-sys-color-primary); } .trigger-content { display: flex; align-items: center; justify-content: space-between; width: 100%; min-width: 100%; padding: 4px 0; } .trigger-left { display: flex; align-items: center; gap: var(--ui-voice-picker-trigger-gap, 12px); overflow: hidden; } .trigger-icon { width: 24px; height: 24px; border-radius: 50%; background: var(--md-sys-color-primary-container); color: var(--md-sys-color-on-primary-container); display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .trigger-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--md-sys-color-on-surface); } md-menu { --md-menu-container-shape: 12px; --md-menu-container-color: var( --md-sys-color-surface-container, var(--md-sys-color-surface) ); max-width: 400px; font-family: inherit; --md-sys-typescale-body-medium-font: inherit; border: 1px solid var(--md-sys-color-outline-variant); } .search-container { padding: 8px 12px; background: var(--md-sys-color-surface-container); border-bottom: 1px solid var(--md-sys-color-outline-variant); font-family: inherit; } md-outlined-text-field { width: 100%; --md-outlined-text-field-container-shape: 8px; font-family: inherit; --md-outlined-text-field-label-text-font: inherit; --md-outlined-text-field-input-text-font: inherit; --md-sys-typescale-body-large-font: inherit; } md-menu-item { --md-menu-item-hover-state-layer-color: var( --md-sys-color-on-surface-variant ); --md-menu-item-focus-state-layer-color: var( --md-sys-color-on-surface-variant ); --md-menu-item-label-text-color: var(--md-sys-color-on-surface); --md-menu-item-label-text-font: inherit; --md-sys-typescale-label-large-font: inherit; font-family: inherit; } .voice-item-content { display: flex; align-items: center; gap: var(--ui-voice-picker-item-gap, 16px); width: 100%; padding: var(--ui-voice-picker-item-padding, 8px 0); } .voice-avatar { position: relative; width: 32px; height: 32px; border-radius: 50%; background: var(--md-sys-color-surface-variant); display: flex; align-items: center; justify-content: center; flex-shrink: 0; cursor: pointer; overflow: hidden; color: var(--md-sys-color-on-surface-variant); z-index: 2; /* Keep above the menu item ripple */ } .voice-avatar:hover .play-overlay { opacity: 1; } .play-overlay { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.4); display: flex; align-items: center; justify-content: center; color: white; opacity: 0; transition: opacity 0.2s; border-radius: 50%; } .play-overlay.active { opacity: 1; background: rgba(0, 0, 0, 0.6); } .voice-info { display: flex; flex-direction: column; gap: 2px; flex: 1; overflow: hidden; } .voice-name { font-weight: 500; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--md-sys-color-on-surface); } .voice-labels { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--md-sys-color-on-surface-variant); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .label-dot { font-size: 8px; } .empty-state { padding: 24px; text-align: center; color: var(--md-sys-color-on-surface-variant); font-size: 14px; } `"
|
|
3960
4100
|
},
|
|
3961
4101
|
{
|
|
3962
4102
|
"kind": "method",
|
|
@@ -3964,46 +4104,88 @@
|
|
|
3964
4104
|
},
|
|
3965
4105
|
{
|
|
3966
4106
|
"kind": "method",
|
|
3967
|
-
"name": "
|
|
4107
|
+
"name": "_toggleMenu",
|
|
4108
|
+
"privacy": "private"
|
|
3968
4109
|
},
|
|
3969
4110
|
{
|
|
3970
4111
|
"kind": "method",
|
|
3971
|
-
"name": "
|
|
4112
|
+
"name": "_handleMenuClosed",
|
|
3972
4113
|
"privacy": "private"
|
|
3973
4114
|
},
|
|
3974
4115
|
{
|
|
3975
4116
|
"kind": "method",
|
|
3976
|
-
"name": "
|
|
4117
|
+
"name": "_selectVoice",
|
|
4118
|
+
"privacy": "private",
|
|
4119
|
+
"parameters": [
|
|
4120
|
+
{
|
|
4121
|
+
"name": "voiceId",
|
|
4122
|
+
"type": {
|
|
4123
|
+
"text": "string"
|
|
4124
|
+
}
|
|
4125
|
+
}
|
|
4126
|
+
]
|
|
4127
|
+
},
|
|
4128
|
+
{
|
|
4129
|
+
"kind": "method",
|
|
4130
|
+
"name": "_togglePreview",
|
|
4131
|
+
"privacy": "private",
|
|
4132
|
+
"parameters": [
|
|
4133
|
+
{
|
|
4134
|
+
"name": "e",
|
|
4135
|
+
"type": {
|
|
4136
|
+
"text": "Event"
|
|
4137
|
+
}
|
|
4138
|
+
},
|
|
4139
|
+
{
|
|
4140
|
+
"name": "voice",
|
|
4141
|
+
"type": {
|
|
4142
|
+
"text": "VoiceItem"
|
|
4143
|
+
}
|
|
4144
|
+
}
|
|
4145
|
+
]
|
|
4146
|
+
},
|
|
4147
|
+
{
|
|
4148
|
+
"kind": "method",
|
|
4149
|
+
"name": "_stopPreview",
|
|
3977
4150
|
"privacy": "private"
|
|
3978
4151
|
}
|
|
3979
4152
|
],
|
|
4153
|
+
"events": [
|
|
4154
|
+
{
|
|
4155
|
+
"name": "voice-change",
|
|
4156
|
+
"type": {
|
|
4157
|
+
"text": "CustomEvent"
|
|
4158
|
+
},
|
|
4159
|
+
"description": "Dispatched when a voice is selected. detail: { voiceId }"
|
|
4160
|
+
}
|
|
4161
|
+
],
|
|
3980
4162
|
"superclass": {
|
|
3981
4163
|
"name": "LitElement",
|
|
3982
4164
|
"package": "lit"
|
|
3983
4165
|
},
|
|
3984
|
-
"tagName": "ui-
|
|
4166
|
+
"tagName": "ui-voice-picker",
|
|
3985
4167
|
"customElement": true
|
|
3986
4168
|
}
|
|
3987
4169
|
],
|
|
3988
4170
|
"exports": [
|
|
3989
4171
|
{
|
|
3990
4172
|
"kind": "js",
|
|
3991
|
-
"name": "
|
|
4173
|
+
"name": "UiVoicePicker",
|
|
3992
4174
|
"declaration": {
|
|
3993
|
-
"name": "
|
|
3994
|
-
"module": "src/components/molecules/ui-
|
|
4175
|
+
"name": "UiVoicePicker",
|
|
4176
|
+
"module": "src/components/molecules/ui-voice-picker.ts"
|
|
3995
4177
|
}
|
|
3996
4178
|
}
|
|
3997
4179
|
]
|
|
3998
4180
|
},
|
|
3999
4181
|
{
|
|
4000
4182
|
"kind": "javascript-module",
|
|
4001
|
-
"path": "src/components/molecules/ui-
|
|
4183
|
+
"path": "src/components/molecules/ui-voice-pill.ts",
|
|
4002
4184
|
"declarations": [
|
|
4003
4185
|
{
|
|
4004
4186
|
"kind": "class",
|
|
4005
|
-
"description": "",
|
|
4006
|
-
"name": "
|
|
4187
|
+
"description": "A composite \"Pill\" style voice interaction component.\nIt combines the recording button, a live waveform, and a cancel button\ninto a single cohesive UI element.",
|
|
4188
|
+
"name": "UiVoicePill",
|
|
4007
4189
|
"members": [
|
|
4008
4190
|
{
|
|
4009
4191
|
"kind": "field",
|
|
@@ -4015,55 +4197,63 @@
|
|
|
4015
4197
|
},
|
|
4016
4198
|
{
|
|
4017
4199
|
"kind": "field",
|
|
4018
|
-
"name": "
|
|
4200
|
+
"name": "label",
|
|
4019
4201
|
"type": {
|
|
4020
|
-
"text": "string"
|
|
4202
|
+
"text": "string | undefined"
|
|
4203
|
+
}
|
|
4204
|
+
},
|
|
4205
|
+
{
|
|
4206
|
+
"kind": "field",
|
|
4207
|
+
"name": "disabled",
|
|
4208
|
+
"type": {
|
|
4209
|
+
"text": "boolean"
|
|
4021
4210
|
},
|
|
4022
|
-
"default": "
|
|
4211
|
+
"default": "false"
|
|
4023
4212
|
},
|
|
4024
4213
|
{
|
|
4025
4214
|
"kind": "field",
|
|
4026
|
-
"name": "
|
|
4027
|
-
"
|
|
4028
|
-
|
|
4215
|
+
"name": "_showFeedback",
|
|
4216
|
+
"type": {
|
|
4217
|
+
"text": "boolean"
|
|
4218
|
+
},
|
|
4219
|
+
"privacy": "private",
|
|
4220
|
+
"default": "false"
|
|
4029
4221
|
},
|
|
4030
4222
|
{
|
|
4031
|
-
"kind": "
|
|
4032
|
-
"name": "
|
|
4033
|
-
|
|
4034
|
-
|
|
4035
|
-
|
|
4036
|
-
|
|
4037
|
-
|
|
4038
|
-
|
|
4039
|
-
|
|
4040
|
-
|
|
4041
|
-
|
|
4042
|
-
|
|
4043
|
-
|
|
4044
|
-
|
|
4045
|
-
|
|
4046
|
-
|
|
4047
|
-
"name": "UiSpeechPreview",
|
|
4048
|
-
"module": "src/components/molecules/ui-speech-preview.ts"
|
|
4049
|
-
}
|
|
4050
|
-
}
|
|
4051
|
-
]
|
|
4052
|
-
},
|
|
4053
|
-
{
|
|
4054
|
-
"kind": "javascript-module",
|
|
4055
|
-
"path": "src/components/molecules/ui-typing-indicator.ts",
|
|
4056
|
-
"declarations": [
|
|
4057
|
-
{
|
|
4058
|
-
"kind": "class",
|
|
4059
|
-
"description": "MOLECULE: Typing Indicator\nA group of animated dots indicating active 'typing' or 'thinking' state.",
|
|
4060
|
-
"name": "UiTypingIndicator",
|
|
4061
|
-
"members": [
|
|
4223
|
+
"kind": "field",
|
|
4224
|
+
"name": "_feedbackType",
|
|
4225
|
+
"type": {
|
|
4226
|
+
"text": "'success' | 'error' | null"
|
|
4227
|
+
},
|
|
4228
|
+
"privacy": "private",
|
|
4229
|
+
"default": "null"
|
|
4230
|
+
},
|
|
4231
|
+
{
|
|
4232
|
+
"kind": "field",
|
|
4233
|
+
"name": "_feedbackTimeout",
|
|
4234
|
+
"type": {
|
|
4235
|
+
"text": "ReturnType<typeof setTimeout> | undefined"
|
|
4236
|
+
},
|
|
4237
|
+
"privacy": "private"
|
|
4238
|
+
},
|
|
4062
4239
|
{
|
|
4063
4240
|
"kind": "field",
|
|
4064
4241
|
"name": "styles",
|
|
4065
4242
|
"static": true,
|
|
4066
|
-
"default": "css` :host { display: inline-flex; align-items: center;
|
|
4243
|
+
"default": "css` :host { display: inline-block; } .pill { display: flex; align-items: center; background: var(--md-sys-color-surface-container-highest, #e6e0e9); border-radius: 100px; padding: var(--ui-voice-pill-padding, 4px); gap: var(--ui-voice-pill-gap, 8px); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; } .label { padding-left: 12px; font-family: inherit; font-weight: 500; color: var(--md-sys-color-on-surface, #1d1b20); white-space: nowrap; } .waveform-container { width: 0; overflow: hidden; transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .active .waveform-container { width: 80px; } .feedback-overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: var(--md-sys-color-surface-container-highest); border-radius: inherit; animation: fadeIn 0.3s ease forwards; pointer-events: none; z-index: 2; } .feedback-overlay.success md-icon { color: var(--md-sys-color-primary, #0066cc); } .feedback-overlay.error md-icon { color: var(--md-sys-color-error, #ba1a1a); } @keyframes fadeIn { from { opacity: 0; } to { opacity: 0.9; } } `"
|
|
4244
|
+
},
|
|
4245
|
+
{
|
|
4246
|
+
"kind": "method",
|
|
4247
|
+
"name": "updated",
|
|
4248
|
+
"privacy": "protected",
|
|
4249
|
+
"parameters": [
|
|
4250
|
+
{
|
|
4251
|
+
"name": "changedProperties",
|
|
4252
|
+
"type": {
|
|
4253
|
+
"text": "PropertyValues"
|
|
4254
|
+
}
|
|
4255
|
+
}
|
|
4256
|
+
]
|
|
4067
4257
|
},
|
|
4068
4258
|
{
|
|
4069
4259
|
"kind": "method",
|
|
@@ -4074,98 +4264,136 @@
|
|
|
4074
4264
|
"name": "LitElement",
|
|
4075
4265
|
"package": "lit"
|
|
4076
4266
|
},
|
|
4077
|
-
"tagName": "ui-
|
|
4267
|
+
"tagName": "ui-voice-pill",
|
|
4078
4268
|
"customElement": true
|
|
4079
4269
|
}
|
|
4080
4270
|
],
|
|
4081
4271
|
"exports": [
|
|
4082
4272
|
{
|
|
4083
4273
|
"kind": "js",
|
|
4084
|
-
"name": "
|
|
4274
|
+
"name": "UiVoicePill",
|
|
4085
4275
|
"declaration": {
|
|
4086
|
-
"name": "
|
|
4087
|
-
"module": "src/components/molecules/ui-
|
|
4276
|
+
"name": "UiVoicePill",
|
|
4277
|
+
"module": "src/components/molecules/ui-voice-pill.ts"
|
|
4088
4278
|
}
|
|
4089
4279
|
}
|
|
4090
4280
|
]
|
|
4091
4281
|
},
|
|
4092
4282
|
{
|
|
4093
4283
|
"kind": "javascript-module",
|
|
4094
|
-
"path": "src/components/molecules/ui-
|
|
4284
|
+
"path": "src/components/molecules/ui-waveform.ts",
|
|
4095
4285
|
"declarations": [
|
|
4096
4286
|
{
|
|
4097
4287
|
"kind": "class",
|
|
4098
|
-
"description": "
|
|
4099
|
-
"name": "
|
|
4288
|
+
"description": "",
|
|
4289
|
+
"name": "UiWaveform",
|
|
4100
4290
|
"members": [
|
|
4101
4291
|
{
|
|
4102
4292
|
"kind": "field",
|
|
4103
|
-
"name": "
|
|
4293
|
+
"name": "data",
|
|
4104
4294
|
"type": {
|
|
4105
|
-
"text": "
|
|
4295
|
+
"text": "number[]"
|
|
4106
4296
|
},
|
|
4107
|
-
"
|
|
4297
|
+
"default": "[]"
|
|
4108
4298
|
},
|
|
4109
4299
|
{
|
|
4110
4300
|
"kind": "field",
|
|
4111
|
-
"name": "
|
|
4301
|
+
"name": "peaks",
|
|
4112
4302
|
"type": {
|
|
4113
|
-
"text": "
|
|
4303
|
+
"text": "number[] | undefined"
|
|
4304
|
+
}
|
|
4305
|
+
},
|
|
4306
|
+
{
|
|
4307
|
+
"kind": "field",
|
|
4308
|
+
"name": "barWidth",
|
|
4309
|
+
"type": {
|
|
4310
|
+
"text": "number"
|
|
4114
4311
|
},
|
|
4115
|
-
"default": "
|
|
4312
|
+
"default": "4"
|
|
4116
4313
|
},
|
|
4117
4314
|
{
|
|
4118
4315
|
"kind": "field",
|
|
4119
|
-
"name": "
|
|
4316
|
+
"name": "barHeight",
|
|
4120
4317
|
"type": {
|
|
4121
|
-
"text": "
|
|
4122
|
-
}
|
|
4318
|
+
"text": "number"
|
|
4319
|
+
},
|
|
4320
|
+
"default": "4"
|
|
4123
4321
|
},
|
|
4124
4322
|
{
|
|
4125
4323
|
"kind": "field",
|
|
4126
|
-
"name": "
|
|
4324
|
+
"name": "barGap",
|
|
4325
|
+
"type": {
|
|
4326
|
+
"text": "number"
|
|
4327
|
+
},
|
|
4328
|
+
"default": "2"
|
|
4329
|
+
},
|
|
4330
|
+
{
|
|
4331
|
+
"kind": "field",
|
|
4332
|
+
"name": "barRadius",
|
|
4333
|
+
"type": {
|
|
4334
|
+
"text": "number"
|
|
4335
|
+
},
|
|
4336
|
+
"default": "2"
|
|
4337
|
+
},
|
|
4338
|
+
{
|
|
4339
|
+
"kind": "field",
|
|
4340
|
+
"name": "barColor",
|
|
4127
4341
|
"type": {
|
|
4128
4342
|
"text": "string | undefined"
|
|
4129
4343
|
}
|
|
4130
4344
|
},
|
|
4131
4345
|
{
|
|
4132
4346
|
"kind": "field",
|
|
4133
|
-
"name": "
|
|
4347
|
+
"name": "align",
|
|
4348
|
+
"type": {
|
|
4349
|
+
"text": "'center' | 'bottom' | 'top'"
|
|
4350
|
+
},
|
|
4351
|
+
"default": "'center'"
|
|
4352
|
+
},
|
|
4353
|
+
{
|
|
4354
|
+
"kind": "field",
|
|
4355
|
+
"name": "fadeEdges",
|
|
4134
4356
|
"type": {
|
|
4135
4357
|
"text": "boolean"
|
|
4136
4358
|
},
|
|
4137
|
-
"default": "
|
|
4359
|
+
"default": "true"
|
|
4138
4360
|
},
|
|
4139
4361
|
{
|
|
4140
4362
|
"kind": "field",
|
|
4141
|
-
"name": "
|
|
4363
|
+
"name": "fadeWidth",
|
|
4142
4364
|
"type": {
|
|
4143
|
-
"text": "
|
|
4365
|
+
"text": "number"
|
|
4366
|
+
},
|
|
4367
|
+
"default": "24"
|
|
4368
|
+
},
|
|
4369
|
+
{
|
|
4370
|
+
"kind": "field",
|
|
4371
|
+
"name": "height",
|
|
4372
|
+
"type": {
|
|
4373
|
+
"text": "number | string | undefined"
|
|
4144
4374
|
}
|
|
4145
4375
|
},
|
|
4146
4376
|
{
|
|
4147
4377
|
"kind": "field",
|
|
4148
|
-
"name": "
|
|
4378
|
+
"name": "_canvas",
|
|
4149
4379
|
"type": {
|
|
4150
|
-
"text": "
|
|
4380
|
+
"text": "HTMLCanvasElement"
|
|
4151
4381
|
},
|
|
4152
|
-
"privacy": "private"
|
|
4153
|
-
"default": "false"
|
|
4382
|
+
"privacy": "private"
|
|
4154
4383
|
},
|
|
4155
4384
|
{
|
|
4156
4385
|
"kind": "field",
|
|
4157
|
-
"name": "
|
|
4386
|
+
"name": "_container",
|
|
4158
4387
|
"type": {
|
|
4159
|
-
"text": "
|
|
4388
|
+
"text": "HTMLDivElement"
|
|
4160
4389
|
},
|
|
4161
|
-
"privacy": "private"
|
|
4162
|
-
"default": "null"
|
|
4390
|
+
"privacy": "private"
|
|
4163
4391
|
},
|
|
4164
4392
|
{
|
|
4165
4393
|
"kind": "field",
|
|
4166
|
-
"name": "
|
|
4394
|
+
"name": "_resizeObserver",
|
|
4167
4395
|
"type": {
|
|
4168
|
-
"text": "
|
|
4396
|
+
"text": "ResizeObserver | undefined"
|
|
4169
4397
|
},
|
|
4170
4398
|
"privacy": "private"
|
|
4171
4399
|
},
|
|
@@ -4173,12 +4401,19 @@
|
|
|
4173
4401
|
"kind": "field",
|
|
4174
4402
|
"name": "styles",
|
|
4175
4403
|
"static": true,
|
|
4176
|
-
"default": "css` :host { display:
|
|
4404
|
+
"default": "css` :host { display: block; width: 100%; height: 128px; /* default height, can be overridden by CSS */ } .container { position: relative; width: 100%; height: 100%; } canvas { position: absolute; top: 0; left: 0; display: block; height: 100%; width: 100%; } `"
|
|
4405
|
+
},
|
|
4406
|
+
{
|
|
4407
|
+
"kind": "method",
|
|
4408
|
+
"name": "render"
|
|
4409
|
+
},
|
|
4410
|
+
{
|
|
4411
|
+
"kind": "method",
|
|
4412
|
+
"name": "firstUpdated"
|
|
4177
4413
|
},
|
|
4178
4414
|
{
|
|
4179
4415
|
"kind": "method",
|
|
4180
4416
|
"name": "updated",
|
|
4181
|
-
"privacy": "protected",
|
|
4182
4417
|
"parameters": [
|
|
4183
4418
|
{
|
|
4184
4419
|
"name": "changedProperties",
|
|
@@ -4190,28 +4425,58 @@
|
|
|
4190
4425
|
},
|
|
4191
4426
|
{
|
|
4192
4427
|
"kind": "method",
|
|
4193
|
-
"name": "
|
|
4428
|
+
"name": "_handleResize",
|
|
4429
|
+
"privacy": "private"
|
|
4194
4430
|
},
|
|
4195
4431
|
{
|
|
4196
4432
|
"kind": "method",
|
|
4197
|
-
"name": "
|
|
4198
|
-
"privacy": "private"
|
|
4199
|
-
"parameters": [
|
|
4200
|
-
{
|
|
4201
|
-
"name": "_e",
|
|
4202
|
-
"type": {
|
|
4203
|
-
"text": "Event"
|
|
4204
|
-
}
|
|
4205
|
-
}
|
|
4206
|
-
]
|
|
4433
|
+
"name": "_renderWaveform",
|
|
4434
|
+
"privacy": "private"
|
|
4207
4435
|
}
|
|
4208
4436
|
],
|
|
4209
|
-
"
|
|
4437
|
+
"superclass": {
|
|
4438
|
+
"name": "LitElement",
|
|
4439
|
+
"package": "lit"
|
|
4440
|
+
},
|
|
4441
|
+
"customElement": true
|
|
4442
|
+
}
|
|
4443
|
+
],
|
|
4444
|
+
"exports": [
|
|
4445
|
+
{
|
|
4446
|
+
"kind": "js",
|
|
4447
|
+
"name": "UiWaveform",
|
|
4448
|
+
"declaration": {
|
|
4449
|
+
"name": "UiWaveform",
|
|
4450
|
+
"module": "src/components/molecules/ui-waveform.ts"
|
|
4451
|
+
}
|
|
4452
|
+
}
|
|
4453
|
+
]
|
|
4454
|
+
},
|
|
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": [
|
|
4210
4464
|
{
|
|
4211
|
-
"
|
|
4465
|
+
"kind": "field",
|
|
4466
|
+
"name": "item",
|
|
4212
4467
|
"type": {
|
|
4213
|
-
"text": "
|
|
4468
|
+
"text": "AudioPlayerItem | undefined"
|
|
4214
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"
|
|
4215
4480
|
}
|
|
4216
4481
|
],
|
|
4217
4482
|
"superclass": {
|
|
@@ -4224,492 +4489,511 @@
|
|
|
4224
4489
|
"exports": [
|
|
4225
4490
|
{
|
|
4226
4491
|
"kind": "js",
|
|
4227
|
-
"name": "
|
|
4492
|
+
"name": "UiAudioPlayer",
|
|
4228
4493
|
"declaration": {
|
|
4229
|
-
"name": "
|
|
4230
|
-
"module": "src/components/
|
|
4494
|
+
"name": "UiAudioPlayer",
|
|
4495
|
+
"module": "src/components/organisms/ui-audio-player.ts"
|
|
4231
4496
|
}
|
|
4232
4497
|
}
|
|
4233
4498
|
]
|
|
4234
4499
|
},
|
|
4235
4500
|
{
|
|
4236
4501
|
"kind": "javascript-module",
|
|
4237
|
-
"path": "src/components/
|
|
4502
|
+
"path": "src/components/providers/ui-audio-provider.ts",
|
|
4238
4503
|
"declarations": [
|
|
4239
4504
|
{
|
|
4240
4505
|
"kind": "class",
|
|
4241
|
-
"description": "A
|
|
4242
|
-
"name": "
|
|
4506
|
+
"description": "A headless (invisible) WebComponent that manages an internal <audio> tag\nand provides state to any child components via",
|
|
4507
|
+
"name": "UiAudioProvider",
|
|
4243
4508
|
"members": [
|
|
4244
4509
|
{
|
|
4245
4510
|
"kind": "field",
|
|
4246
|
-
"name": "
|
|
4247
|
-
"type": {
|
|
4248
|
-
"text": "Array"
|
|
4249
|
-
},
|
|
4250
|
-
"default": "[]",
|
|
4251
|
-
"description": "The list of voice objects to display."
|
|
4252
|
-
},
|
|
4253
|
-
{
|
|
4254
|
-
"kind": "field",
|
|
4255
|
-
"name": "value",
|
|
4511
|
+
"name": "src",
|
|
4256
4512
|
"type": {
|
|
4257
4513
|
"text": "string"
|
|
4258
4514
|
},
|
|
4259
|
-
"
|
|
4515
|
+
"default": "''"
|
|
4260
4516
|
},
|
|
4261
4517
|
{
|
|
4262
4518
|
"kind": "field",
|
|
4263
|
-
"name": "
|
|
4519
|
+
"name": "items",
|
|
4264
4520
|
"type": {
|
|
4265
|
-
"text": "
|
|
4521
|
+
"text": "PlaylistTrack[]"
|
|
4266
4522
|
},
|
|
4267
|
-
"default": "
|
|
4268
|
-
"description": "Text to display when no voice is selected."
|
|
4523
|
+
"default": "[]"
|
|
4269
4524
|
},
|
|
4270
4525
|
{
|
|
4271
4526
|
"kind": "field",
|
|
4272
|
-
"name": "
|
|
4527
|
+
"name": "autoAdvance",
|
|
4273
4528
|
"type": {
|
|
4274
|
-
"text": "
|
|
4529
|
+
"text": "boolean"
|
|
4275
4530
|
},
|
|
4276
|
-
"default": "
|
|
4277
|
-
"description": "Key in the voice object to use as the unique ID (default: 'voiceId')."
|
|
4531
|
+
"default": "true"
|
|
4278
4532
|
},
|
|
4279
4533
|
{
|
|
4280
4534
|
"kind": "field",
|
|
4281
|
-
"name": "
|
|
4535
|
+
"name": "_audioEl",
|
|
4282
4536
|
"type": {
|
|
4283
|
-
"text": "
|
|
4537
|
+
"text": "HTMLAudioElement"
|
|
4284
4538
|
},
|
|
4285
|
-
"
|
|
4286
|
-
"description": "Key in the voice object to use as the display name (default: 'name')."
|
|
4539
|
+
"privacy": "private"
|
|
4287
4540
|
},
|
|
4288
4541
|
{
|
|
4289
4542
|
"kind": "field",
|
|
4290
|
-
"name": "
|
|
4543
|
+
"name": "_audioContext",
|
|
4291
4544
|
"type": {
|
|
4292
|
-
"text": "
|
|
4545
|
+
"text": "AudioContext | undefined"
|
|
4293
4546
|
},
|
|
4294
|
-
"
|
|
4295
|
-
"description": "Key in the voice object to use as the category/subtitle (default: 'category')."
|
|
4547
|
+
"privacy": "private"
|
|
4296
4548
|
},
|
|
4297
4549
|
{
|
|
4298
4550
|
"kind": "field",
|
|
4299
|
-
"name": "
|
|
4551
|
+
"name": "_analyserNode",
|
|
4300
4552
|
"type": {
|
|
4301
|
-
"text": "
|
|
4553
|
+
"text": "AnalyserNode | undefined"
|
|
4302
4554
|
},
|
|
4303
|
-
"
|
|
4304
|
-
"description": "Key in the voice object containing the preview audio URL."
|
|
4555
|
+
"privacy": "private"
|
|
4305
4556
|
},
|
|
4306
4557
|
{
|
|
4307
4558
|
"kind": "field",
|
|
4308
|
-
"name": "
|
|
4559
|
+
"name": "_mediaSource",
|
|
4309
4560
|
"type": {
|
|
4310
|
-
"text": "
|
|
4561
|
+
"text": "MediaElementAudioSourceNode | undefined"
|
|
4311
4562
|
},
|
|
4312
|
-
"
|
|
4313
|
-
"description": "Whether to display 3D ui-orb avatars for each voice."
|
|
4563
|
+
"privacy": "private"
|
|
4314
4564
|
},
|
|
4315
4565
|
{
|
|
4316
4566
|
"kind": "field",
|
|
4317
|
-
"name": "
|
|
4567
|
+
"name": "_animationFrameId",
|
|
4318
4568
|
"type": {
|
|
4319
|
-
"text": "
|
|
4569
|
+
"text": "number"
|
|
4320
4570
|
},
|
|
4321
|
-
"
|
|
4571
|
+
"privacy": "private",
|
|
4572
|
+
"default": "0"
|
|
4322
4573
|
},
|
|
4323
4574
|
{
|
|
4324
4575
|
"kind": "field",
|
|
4325
|
-
"name": "
|
|
4576
|
+
"name": "state",
|
|
4326
4577
|
"type": {
|
|
4327
|
-
"text": "
|
|
4578
|
+
"text": "AudioPlayerState"
|
|
4328
4579
|
},
|
|
4329
|
-
"privacy": "
|
|
4330
|
-
"default": "''"
|
|
4580
|
+
"privacy": "public",
|
|
4581
|
+
"default": "{ src: '', isPlaying: false, isBuffering: false, currentTime: 0, duration: 0, volume: 1, muted: false, items: [], currentIndex: -1, autoAdvance: true, analyserNode: undefined, play: () => this.play(), pause: () => this.pause(), togglePlay: () => this._togglePlay(), seek: (time: number) => this.seek(time), reset: () => this.reset(), setVolume: (volume: number) => this._setVolume(volume), toggleMute: () => this._toggleMute(), next: () => this.next(), previous: () => this.previous(), select: (index: number) => this.select(index), }"
|
|
4331
4582
|
},
|
|
4332
4583
|
{
|
|
4333
4584
|
"kind": "field",
|
|
4334
|
-
"name": "
|
|
4335
|
-
"
|
|
4336
|
-
|
|
4337
|
-
},
|
|
4338
|
-
"privacy": "private"
|
|
4585
|
+
"name": "styles",
|
|
4586
|
+
"static": true,
|
|
4587
|
+
"default": "css` :host { display: contents; /* We are completely invisible, just wrapping children */ } audio { display: none; } `"
|
|
4339
4588
|
},
|
|
4340
4589
|
{
|
|
4341
|
-
"kind": "
|
|
4342
|
-
"name": "
|
|
4343
|
-
"type": {
|
|
4344
|
-
"text": "any"
|
|
4345
|
-
},
|
|
4346
|
-
"privacy": "private"
|
|
4590
|
+
"kind": "method",
|
|
4591
|
+
"name": "render"
|
|
4347
4592
|
},
|
|
4348
4593
|
{
|
|
4349
|
-
"kind": "
|
|
4350
|
-
"name": "
|
|
4351
|
-
"
|
|
4352
|
-
|
|
4353
|
-
|
|
4354
|
-
|
|
4594
|
+
"kind": "method",
|
|
4595
|
+
"name": "willUpdate",
|
|
4596
|
+
"parameters": [
|
|
4597
|
+
{
|
|
4598
|
+
"name": "changed",
|
|
4599
|
+
"type": {
|
|
4600
|
+
"text": "Map<string, any>"
|
|
4601
|
+
}
|
|
4602
|
+
}
|
|
4603
|
+
]
|
|
4355
4604
|
},
|
|
4356
4605
|
{
|
|
4357
|
-
"kind": "
|
|
4358
|
-
"name": "
|
|
4359
|
-
"
|
|
4360
|
-
|
|
4606
|
+
"kind": "method",
|
|
4607
|
+
"name": "updated",
|
|
4608
|
+
"parameters": [
|
|
4609
|
+
{
|
|
4610
|
+
"name": "changed",
|
|
4611
|
+
"type": {
|
|
4612
|
+
"text": "Map<string, any>"
|
|
4613
|
+
}
|
|
4614
|
+
}
|
|
4615
|
+
]
|
|
4361
4616
|
},
|
|
4362
4617
|
{
|
|
4363
4618
|
"kind": "method",
|
|
4364
|
-
"name": "
|
|
4619
|
+
"name": "_updateState",
|
|
4620
|
+
"privacy": "private",
|
|
4621
|
+
"parameters": [
|
|
4622
|
+
{
|
|
4623
|
+
"name": "updates",
|
|
4624
|
+
"type": {
|
|
4625
|
+
"text": "Partial<AudioPlayerState>"
|
|
4626
|
+
}
|
|
4627
|
+
}
|
|
4628
|
+
]
|
|
4365
4629
|
},
|
|
4366
4630
|
{
|
|
4367
4631
|
"kind": "method",
|
|
4368
|
-
"name": "
|
|
4632
|
+
"name": "_setupAudioContext",
|
|
4369
4633
|
"privacy": "private"
|
|
4370
4634
|
},
|
|
4371
4635
|
{
|
|
4372
4636
|
"kind": "method",
|
|
4373
|
-
"name": "
|
|
4637
|
+
"name": "play",
|
|
4638
|
+
"privacy": "public"
|
|
4639
|
+
},
|
|
4640
|
+
{
|
|
4641
|
+
"kind": "method",
|
|
4642
|
+
"name": "pause",
|
|
4643
|
+
"privacy": "public"
|
|
4644
|
+
},
|
|
4645
|
+
{
|
|
4646
|
+
"kind": "method",
|
|
4647
|
+
"name": "_togglePlay",
|
|
4374
4648
|
"privacy": "private"
|
|
4375
4649
|
},
|
|
4376
4650
|
{
|
|
4377
4651
|
"kind": "method",
|
|
4378
|
-
"name": "
|
|
4379
|
-
"privacy": "
|
|
4652
|
+
"name": "seek",
|
|
4653
|
+
"privacy": "public",
|
|
4380
4654
|
"parameters": [
|
|
4381
4655
|
{
|
|
4382
|
-
"name": "
|
|
4656
|
+
"name": "time",
|
|
4383
4657
|
"type": {
|
|
4384
|
-
"text": "
|
|
4658
|
+
"text": "number"
|
|
4385
4659
|
}
|
|
4386
4660
|
}
|
|
4387
4661
|
]
|
|
4388
4662
|
},
|
|
4389
4663
|
{
|
|
4390
4664
|
"kind": "method",
|
|
4391
|
-
"name": "
|
|
4665
|
+
"name": "reset",
|
|
4666
|
+
"privacy": "public"
|
|
4667
|
+
},
|
|
4668
|
+
{
|
|
4669
|
+
"kind": "method",
|
|
4670
|
+
"name": "_setVolume",
|
|
4392
4671
|
"privacy": "private",
|
|
4393
4672
|
"parameters": [
|
|
4394
4673
|
{
|
|
4395
|
-
"name": "
|
|
4396
|
-
"type": {
|
|
4397
|
-
"text": "Event"
|
|
4398
|
-
}
|
|
4399
|
-
},
|
|
4400
|
-
{
|
|
4401
|
-
"name": "voice",
|
|
4674
|
+
"name": "volume",
|
|
4402
4675
|
"type": {
|
|
4403
|
-
"text": "
|
|
4676
|
+
"text": "number"
|
|
4404
4677
|
}
|
|
4405
4678
|
}
|
|
4406
4679
|
]
|
|
4407
4680
|
},
|
|
4408
4681
|
{
|
|
4409
4682
|
"kind": "method",
|
|
4410
|
-
"name": "
|
|
4411
|
-
"privacy": "private"
|
|
4412
|
-
}
|
|
4413
|
-
],
|
|
4414
|
-
"events": [
|
|
4415
|
-
{
|
|
4416
|
-
"name": "voice-change",
|
|
4417
|
-
"type": {
|
|
4418
|
-
"text": "CustomEvent"
|
|
4419
|
-
},
|
|
4420
|
-
"description": "Dispatched when a voice is selected. detail: { voiceId }"
|
|
4421
|
-
}
|
|
4422
|
-
],
|
|
4423
|
-
"superclass": {
|
|
4424
|
-
"name": "LitElement",
|
|
4425
|
-
"package": "lit"
|
|
4426
|
-
},
|
|
4427
|
-
"tagName": "ui-voice-picker",
|
|
4428
|
-
"customElement": true
|
|
4429
|
-
}
|
|
4430
|
-
],
|
|
4431
|
-
"exports": [
|
|
4432
|
-
{
|
|
4433
|
-
"kind": "js",
|
|
4434
|
-
"name": "UiVoicePicker",
|
|
4435
|
-
"declaration": {
|
|
4436
|
-
"name": "UiVoicePicker",
|
|
4437
|
-
"module": "src/components/molecules/ui-voice-picker.ts"
|
|
4438
|
-
}
|
|
4439
|
-
}
|
|
4440
|
-
]
|
|
4441
|
-
},
|
|
4442
|
-
{
|
|
4443
|
-
"kind": "javascript-module",
|
|
4444
|
-
"path": "src/components/molecules/ui-voice-pill.ts",
|
|
4445
|
-
"declarations": [
|
|
4446
|
-
{
|
|
4447
|
-
"kind": "class",
|
|
4448
|
-
"description": "A composite \"Pill\" style voice interaction component.\nIt combines the recording button, a live waveform, and a cancel button\ninto a single cohesive UI element.",
|
|
4449
|
-
"name": "UiVoicePill",
|
|
4450
|
-
"members": [
|
|
4451
|
-
{
|
|
4452
|
-
"kind": "field",
|
|
4453
|
-
"name": "_context",
|
|
4454
|
-
"type": {
|
|
4455
|
-
"text": "SpeechContext | undefined"
|
|
4456
|
-
},
|
|
4683
|
+
"name": "_toggleMute",
|
|
4457
4684
|
"privacy": "private"
|
|
4458
4685
|
},
|
|
4459
4686
|
{
|
|
4460
|
-
"kind": "
|
|
4461
|
-
"name": "
|
|
4462
|
-
"
|
|
4463
|
-
"text": "string | undefined"
|
|
4464
|
-
}
|
|
4687
|
+
"kind": "method",
|
|
4688
|
+
"name": "next",
|
|
4689
|
+
"privacy": "public"
|
|
4465
4690
|
},
|
|
4466
4691
|
{
|
|
4467
|
-
"kind": "
|
|
4468
|
-
"name": "
|
|
4469
|
-
"
|
|
4470
|
-
"text": "boolean"
|
|
4471
|
-
},
|
|
4472
|
-
"default": "false"
|
|
4692
|
+
"kind": "method",
|
|
4693
|
+
"name": "previous",
|
|
4694
|
+
"privacy": "public"
|
|
4473
4695
|
},
|
|
4474
4696
|
{
|
|
4475
|
-
"kind": "
|
|
4476
|
-
"name": "
|
|
4477
|
-
"
|
|
4478
|
-
|
|
4479
|
-
|
|
4480
|
-
|
|
4481
|
-
|
|
4697
|
+
"kind": "method",
|
|
4698
|
+
"name": "select",
|
|
4699
|
+
"privacy": "public",
|
|
4700
|
+
"parameters": [
|
|
4701
|
+
{
|
|
4702
|
+
"name": "index",
|
|
4703
|
+
"type": {
|
|
4704
|
+
"text": "number"
|
|
4705
|
+
}
|
|
4706
|
+
}
|
|
4707
|
+
]
|
|
4482
4708
|
},
|
|
4483
4709
|
{
|
|
4484
|
-
"kind": "
|
|
4485
|
-
"name": "
|
|
4486
|
-
"
|
|
4487
|
-
"text": "'success' | 'error' | null"
|
|
4488
|
-
},
|
|
4489
|
-
"privacy": "private",
|
|
4490
|
-
"default": "null"
|
|
4710
|
+
"kind": "method",
|
|
4711
|
+
"name": "_handleLoadedMetadata",
|
|
4712
|
+
"privacy": "private"
|
|
4491
4713
|
},
|
|
4492
4714
|
{
|
|
4493
|
-
"kind": "
|
|
4494
|
-
"name": "
|
|
4495
|
-
"type": {
|
|
4496
|
-
"text": "ReturnType<typeof setTimeout> | undefined"
|
|
4497
|
-
},
|
|
4715
|
+
"kind": "method",
|
|
4716
|
+
"name": "_handleEnded",
|
|
4498
4717
|
"privacy": "private"
|
|
4499
4718
|
},
|
|
4500
4719
|
{
|
|
4501
|
-
"kind": "
|
|
4502
|
-
"name": "
|
|
4503
|
-
"
|
|
4504
|
-
"default": "css` :host { display: inline-block; } .pill { display: flex; align-items: center; background: var(--md-sys-color-surface-container-highest, #e6e0e9); border-radius: 100px; padding: var(--ui-voice-pill-padding, 4px); gap: var(--ui-voice-pill-gap, 8px); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; } .label { padding-left: 12px; font-family: inherit; font-weight: 500; color: var(--md-sys-color-on-surface, #1d1b20); white-space: nowrap; } .waveform-container { width: 0; overflow: hidden; transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .active .waveform-container { width: 80px; } .feedback-overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: var(--md-sys-color-surface-container-highest); border-radius: inherit; animation: fadeIn 0.3s ease forwards; pointer-events: none; z-index: 2; } .feedback-overlay.success md-icon { color: var(--md-sys-color-primary, #0066cc); } .feedback-overlay.error md-icon { color: var(--md-sys-color-error, #ba1a1a); } @keyframes fadeIn { from { opacity: 0; } to { opacity: 0.9; } } `"
|
|
4720
|
+
"kind": "method",
|
|
4721
|
+
"name": "_handlePlaying",
|
|
4722
|
+
"privacy": "private"
|
|
4505
4723
|
},
|
|
4506
4724
|
{
|
|
4507
4725
|
"kind": "method",
|
|
4508
|
-
"name": "
|
|
4509
|
-
"privacy": "
|
|
4726
|
+
"name": "_handlePause",
|
|
4727
|
+
"privacy": "private"
|
|
4728
|
+
},
|
|
4729
|
+
{
|
|
4730
|
+
"kind": "method",
|
|
4731
|
+
"name": "_handleError",
|
|
4732
|
+
"privacy": "private",
|
|
4510
4733
|
"parameters": [
|
|
4511
4734
|
{
|
|
4512
|
-
"name": "
|
|
4735
|
+
"name": "e",
|
|
4736
|
+
"optional": true,
|
|
4513
4737
|
"type": {
|
|
4514
|
-
"text": "
|
|
4738
|
+
"text": "Event"
|
|
4515
4739
|
}
|
|
4516
4740
|
}
|
|
4517
4741
|
]
|
|
4518
4742
|
},
|
|
4519
4743
|
{
|
|
4520
4744
|
"kind": "method",
|
|
4521
|
-
"name": "
|
|
4745
|
+
"name": "_startTrackingTime",
|
|
4746
|
+
"privacy": "private"
|
|
4747
|
+
}
|
|
4748
|
+
],
|
|
4749
|
+
"events": [
|
|
4750
|
+
{
|
|
4751
|
+
"name": "state-change",
|
|
4752
|
+
"type": {
|
|
4753
|
+
"text": "CustomEvent"
|
|
4754
|
+
}
|
|
4522
4755
|
}
|
|
4523
4756
|
],
|
|
4524
4757
|
"superclass": {
|
|
4525
4758
|
"name": "LitElement",
|
|
4526
4759
|
"package": "lit"
|
|
4527
4760
|
},
|
|
4528
|
-
"tagName": "ui-voice-pill",
|
|
4529
4761
|
"customElement": true
|
|
4530
4762
|
}
|
|
4531
4763
|
],
|
|
4532
4764
|
"exports": [
|
|
4533
4765
|
{
|
|
4534
4766
|
"kind": "js",
|
|
4535
|
-
"name": "
|
|
4767
|
+
"name": "UiAudioProvider",
|
|
4536
4768
|
"declaration": {
|
|
4537
|
-
"name": "
|
|
4538
|
-
"module": "src/components/
|
|
4769
|
+
"name": "UiAudioProvider",
|
|
4770
|
+
"module": "src/components/providers/ui-audio-provider.ts"
|
|
4539
4771
|
}
|
|
4540
4772
|
}
|
|
4541
4773
|
]
|
|
4542
4774
|
},
|
|
4543
4775
|
{
|
|
4544
4776
|
"kind": "javascript-module",
|
|
4545
|
-
"path": "src/components/
|
|
4777
|
+
"path": "src/components/providers/ui-speech-provider.ts",
|
|
4546
4778
|
"declarations": [
|
|
4547
4779
|
{
|
|
4548
4780
|
"kind": "class",
|
|
4549
|
-
"description": "",
|
|
4550
|
-
"name": "
|
|
4781
|
+
"description": "A headless provider component that manages the speech recording lifecycle.\nIt provides a `SpeechContext` to all children components, allowing them to\nreact to recording states and access transcripts.\n\nIt supports three modes:\n1. Auto (Default): Handles getUserMedia and provides a real MediaStream.\n2. Simulation: Provides a mock AnalyserNode and fake transcription for demos.\n3. Manual: Only emits intent events, leaving state management to a backend/agent.",
|
|
4782
|
+
"name": "UiSpeechProvider",
|
|
4551
4783
|
"members": [
|
|
4552
4784
|
{
|
|
4553
4785
|
"kind": "field",
|
|
4554
|
-
"name": "
|
|
4786
|
+
"name": "_context",
|
|
4555
4787
|
"type": {
|
|
4556
|
-
"text": "
|
|
4788
|
+
"text": "SpeechContext"
|
|
4557
4789
|
},
|
|
4558
|
-
"
|
|
4790
|
+
"privacy": "private",
|
|
4791
|
+
"default": "{ state: 'idle', transcript: '', partialTranscript: '', analyserNode: undefined, start: () => this.start(), stop: () => this.stop(), cancel: () => this.cancel(), }"
|
|
4559
4792
|
},
|
|
4560
4793
|
{
|
|
4561
4794
|
"kind": "field",
|
|
4562
|
-
"name": "
|
|
4795
|
+
"name": "state",
|
|
4563
4796
|
"type": {
|
|
4564
|
-
"text": "
|
|
4565
|
-
}
|
|
4797
|
+
"text": "string"
|
|
4798
|
+
},
|
|
4799
|
+
"default": "'idle'",
|
|
4800
|
+
"description": "The current recording state ('idle', 'connecting', 'recording', 'processing', 'success', 'error')."
|
|
4566
4801
|
},
|
|
4567
4802
|
{
|
|
4568
4803
|
"kind": "field",
|
|
4569
|
-
"name": "
|
|
4804
|
+
"name": "simulation",
|
|
4570
4805
|
"type": {
|
|
4571
|
-
"text": "
|
|
4806
|
+
"text": "boolean"
|
|
4572
4807
|
},
|
|
4573
|
-
"default": "
|
|
4808
|
+
"default": "false",
|
|
4809
|
+
"description": "Enable mock transcription and audio data for demos."
|
|
4574
4810
|
},
|
|
4575
4811
|
{
|
|
4576
4812
|
"kind": "field",
|
|
4577
|
-
"name": "
|
|
4813
|
+
"name": "manual",
|
|
4578
4814
|
"type": {
|
|
4579
|
-
"text": "
|
|
4815
|
+
"text": "boolean"
|
|
4580
4816
|
},
|
|
4581
|
-
"default": "
|
|
4817
|
+
"default": "false",
|
|
4818
|
+
"description": "If true, the provider will not start recording automatically but will emit requests."
|
|
4582
4819
|
},
|
|
4583
4820
|
{
|
|
4584
4821
|
"kind": "field",
|
|
4585
|
-
"name": "
|
|
4822
|
+
"name": "transcript",
|
|
4586
4823
|
"type": {
|
|
4587
|
-
"text": "
|
|
4824
|
+
"text": "string"
|
|
4588
4825
|
},
|
|
4589
|
-
"default": "
|
|
4826
|
+
"default": "''",
|
|
4827
|
+
"description": "The final confirmed transcript."
|
|
4590
4828
|
},
|
|
4591
4829
|
{
|
|
4592
4830
|
"kind": "field",
|
|
4593
|
-
"name": "
|
|
4831
|
+
"name": "partialTranscript",
|
|
4594
4832
|
"type": {
|
|
4595
|
-
"text": "
|
|
4833
|
+
"text": "string"
|
|
4596
4834
|
},
|
|
4597
|
-
"default": "
|
|
4835
|
+
"default": "''",
|
|
4836
|
+
"description": "The live, interim transcript."
|
|
4598
4837
|
},
|
|
4599
4838
|
{
|
|
4600
4839
|
"kind": "field",
|
|
4601
|
-
"name": "
|
|
4840
|
+
"name": "deviceId",
|
|
4602
4841
|
"type": {
|
|
4603
4842
|
"text": "string | undefined"
|
|
4604
4843
|
}
|
|
4605
4844
|
},
|
|
4606
4845
|
{
|
|
4607
4846
|
"kind": "field",
|
|
4608
|
-
"name": "
|
|
4609
|
-
"type": {
|
|
4610
|
-
"text": "'center' | 'bottom' | 'top'"
|
|
4611
|
-
},
|
|
4612
|
-
"default": "'center'"
|
|
4613
|
-
},
|
|
4614
|
-
{
|
|
4615
|
-
"kind": "field",
|
|
4616
|
-
"name": "fadeEdges",
|
|
4617
|
-
"type": {
|
|
4618
|
-
"text": "boolean"
|
|
4619
|
-
},
|
|
4620
|
-
"default": "true"
|
|
4621
|
-
},
|
|
4622
|
-
{
|
|
4623
|
-
"kind": "field",
|
|
4624
|
-
"name": "fadeWidth",
|
|
4847
|
+
"name": "_stream",
|
|
4625
4848
|
"type": {
|
|
4626
|
-
"text": "
|
|
4849
|
+
"text": "MediaStream | undefined"
|
|
4627
4850
|
},
|
|
4628
|
-
"
|
|
4851
|
+
"privacy": "private"
|
|
4629
4852
|
},
|
|
4630
4853
|
{
|
|
4631
4854
|
"kind": "field",
|
|
4632
|
-
"name": "
|
|
4855
|
+
"name": "_audioCtx",
|
|
4633
4856
|
"type": {
|
|
4634
|
-
"text": "
|
|
4857
|
+
"text": "AudioContext | undefined"
|
|
4635
4858
|
},
|
|
4636
|
-
"
|
|
4859
|
+
"privacy": "private"
|
|
4637
4860
|
},
|
|
4638
4861
|
{
|
|
4639
4862
|
"kind": "field",
|
|
4640
|
-
"name": "
|
|
4863
|
+
"name": "_analyser",
|
|
4641
4864
|
"type": {
|
|
4642
|
-
"text": "
|
|
4865
|
+
"text": "AnalyserNode | undefined"
|
|
4643
4866
|
},
|
|
4644
4867
|
"privacy": "private"
|
|
4645
4868
|
},
|
|
4646
4869
|
{
|
|
4647
4870
|
"kind": "field",
|
|
4648
|
-
"name": "
|
|
4871
|
+
"name": "_transcriptInterval",
|
|
4649
4872
|
"type": {
|
|
4650
|
-
"text": "
|
|
4873
|
+
"text": "any | undefined"
|
|
4651
4874
|
},
|
|
4652
4875
|
"privacy": "private"
|
|
4653
4876
|
},
|
|
4654
4877
|
{
|
|
4655
4878
|
"kind": "field",
|
|
4656
|
-
"name": "
|
|
4879
|
+
"name": "_fakeTranscript",
|
|
4657
4880
|
"type": {
|
|
4658
|
-
"text": "
|
|
4881
|
+
"text": "array"
|
|
4659
4882
|
},
|
|
4660
|
-
"privacy": "private"
|
|
4883
|
+
"privacy": "private",
|
|
4884
|
+
"default": "[ 'I', ' am', ' recording', ' a', ' message', ' using', ' atomic', ' components...', ]"
|
|
4661
4885
|
},
|
|
4662
4886
|
{
|
|
4663
4887
|
"kind": "field",
|
|
4664
4888
|
"name": "styles",
|
|
4665
4889
|
"static": true,
|
|
4666
|
-
"default": "css` :host { display:
|
|
4890
|
+
"default": "css` :host { display: contents; } `"
|
|
4667
4891
|
},
|
|
4668
4892
|
{
|
|
4669
4893
|
"kind": "method",
|
|
4670
|
-
"name": "
|
|
4894
|
+
"name": "willUpdate",
|
|
4895
|
+
"parameters": [
|
|
4896
|
+
{
|
|
4897
|
+
"name": "changedProperties",
|
|
4898
|
+
"type": {
|
|
4899
|
+
"text": "Map<string, any>"
|
|
4900
|
+
}
|
|
4901
|
+
}
|
|
4902
|
+
]
|
|
4671
4903
|
},
|
|
4672
4904
|
{
|
|
4673
4905
|
"kind": "method",
|
|
4674
|
-
"name": "
|
|
4906
|
+
"name": "start"
|
|
4675
4907
|
},
|
|
4676
4908
|
{
|
|
4677
4909
|
"kind": "method",
|
|
4678
|
-
"name": "
|
|
4910
|
+
"name": "stop"
|
|
4911
|
+
},
|
|
4912
|
+
{
|
|
4913
|
+
"kind": "method",
|
|
4914
|
+
"name": "cancel"
|
|
4915
|
+
},
|
|
4916
|
+
{
|
|
4917
|
+
"kind": "method",
|
|
4918
|
+
"name": "_cleanupStream",
|
|
4919
|
+
"privacy": "private"
|
|
4920
|
+
},
|
|
4921
|
+
{
|
|
4922
|
+
"kind": "method",
|
|
4923
|
+
"name": "_updateContext",
|
|
4924
|
+
"privacy": "private",
|
|
4679
4925
|
"parameters": [
|
|
4680
4926
|
{
|
|
4681
|
-
"name": "
|
|
4927
|
+
"name": "update",
|
|
4682
4928
|
"type": {
|
|
4683
|
-
"text": "
|
|
4929
|
+
"text": "Partial<SpeechContext>"
|
|
4684
4930
|
}
|
|
4685
4931
|
}
|
|
4686
4932
|
]
|
|
4687
4933
|
},
|
|
4688
4934
|
{
|
|
4689
4935
|
"kind": "method",
|
|
4690
|
-
"name": "
|
|
4691
|
-
|
|
4936
|
+
"name": "render"
|
|
4937
|
+
}
|
|
4938
|
+
],
|
|
4939
|
+
"events": [
|
|
4940
|
+
{
|
|
4941
|
+
"name": "speech-request-start",
|
|
4942
|
+
"type": {
|
|
4943
|
+
"text": "CustomEvent"
|
|
4944
|
+
},
|
|
4945
|
+
"description": "Dispatched in 'manual' mode when a child wants to start."
|
|
4692
4946
|
},
|
|
4693
4947
|
{
|
|
4694
|
-
"
|
|
4695
|
-
"
|
|
4696
|
-
|
|
4948
|
+
"name": "speech-start",
|
|
4949
|
+
"type": {
|
|
4950
|
+
"text": "CustomEvent"
|
|
4951
|
+
},
|
|
4952
|
+
"description": "Dispatched when recording actually begins."
|
|
4953
|
+
},
|
|
4954
|
+
{
|
|
4955
|
+
"name": "speech-request-stop",
|
|
4956
|
+
"type": {
|
|
4957
|
+
"text": "CustomEvent"
|
|
4958
|
+
},
|
|
4959
|
+
"description": "Dispatched in 'manual' mode when a child wants to stop."
|
|
4960
|
+
},
|
|
4961
|
+
{
|
|
4962
|
+
"name": "speech-stop",
|
|
4963
|
+
"type": {
|
|
4964
|
+
"text": "CustomEvent"
|
|
4965
|
+
},
|
|
4966
|
+
"description": "Dispatched when recording is stopped."
|
|
4967
|
+
},
|
|
4968
|
+
{
|
|
4969
|
+
"name": "speech-cancel",
|
|
4970
|
+
"type": {
|
|
4971
|
+
"text": "CustomEvent"
|
|
4972
|
+
}
|
|
4973
|
+
},
|
|
4974
|
+
{
|
|
4975
|
+
"name": "state-change",
|
|
4976
|
+
"type": {
|
|
4977
|
+
"text": "CustomEvent"
|
|
4978
|
+
},
|
|
4979
|
+
"description": "Dispatched whenever the internal context state changes."
|
|
4697
4980
|
}
|
|
4698
4981
|
],
|
|
4699
4982
|
"superclass": {
|
|
4700
4983
|
"name": "LitElement",
|
|
4701
4984
|
"package": "lit"
|
|
4702
4985
|
},
|
|
4986
|
+
"tagName": "ui-speech-provider",
|
|
4703
4987
|
"customElement": true
|
|
4704
4988
|
}
|
|
4705
4989
|
],
|
|
4706
4990
|
"exports": [
|
|
4707
4991
|
{
|
|
4708
4992
|
"kind": "js",
|
|
4709
|
-
"name": "
|
|
4993
|
+
"name": "UiSpeechProvider",
|
|
4710
4994
|
"declaration": {
|
|
4711
|
-
"name": "
|
|
4712
|
-
"module": "src/components/
|
|
4995
|
+
"name": "UiSpeechProvider",
|
|
4996
|
+
"module": "src/components/providers/ui-speech-provider.ts"
|
|
4713
4997
|
}
|
|
4714
4998
|
}
|
|
4715
4999
|
]
|