@vocalstack/player 0.1.0-alpha.10 → 0.1.0-alpha.12
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/dist/index.js +936 -929
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/ui/VocalStackPlayer.d.ts +2 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
1
|
+
var Ma = Object.defineProperty;
|
|
2
|
+
var ga = (t, e, n) => e in t ? Ma(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
|
|
3
|
+
var he = (t, e, n) => ga(t, typeof e != "symbol" ? e + "" : e, n);
|
|
4
4
|
import { jsx as i, jsxs as f, Fragment as Pe } from "react/jsx-runtime";
|
|
5
|
-
import { useState as O, useRef as z, useEffect as Y, useLayoutEffect as Qt, createContext as
|
|
6
|
-
import { createPortal as
|
|
7
|
-
import { VocalStackError as
|
|
8
|
-
const ni = "https://vocalstack.com", ma = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDUxLjY5MDciIGhlaWdodD0iMTU1LjMwNjQxIiB2aWV3Qm94PSIwIDAgMTA1MS42OTA2IDE1NS4zMDY0MSI+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMC44ODczNDc3MSwwLDAsMC44OTExODY4MiwtNDIuNzE2NjMsLTEyMy44NTM4OCkiPjxwYXRoIHN0eWxlPSJmaWxsOiM1NWFiZTU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLXdpZHRoOjAuMzcyOTYyIiBkPSJtIDE2NS43NDM2OSwzMTIuMzQ1MTQgYyAtMy42NTkwNCwtMC45NTg2MSAtNi44OTEzMSwtMy4zNTM0OCAtOS4yMTQ5NCwtNi44Mjc1OSAtMS45MTIyNiwtMi44NTkwOCAtMi4zOTcwNSwtNC41Njk3MSAtMi4zOTcwNSwtOC40NTgzNiAwLC0zLjk5MjU0IDAuMDgyNCwtNC4yNzU3IDQuMjMwMTIsLTE0LjU0NTUzIDQuMDA5MjMsLTkuOTI2ODEgMTEuNzQ1OTcsLTI5LjYwODA0IDE0LjE3MjU0LC0zNi4wNTMwMiAxLjA1NTUsLTIuODAzNDQgNC42MzU3OSwtMTIuMDkwMiA3Ljk1NjE5LC0yMC42MzcyNSAzLjMyMDQsLTguNTQ3MDYgOS40NzI2NSwtMjQuNDkxMiAxMy42NzE2OCwtMzUuNDMxNDMgOS40MTE2MywtMjQuNTIxMjUgMTIuMTUxMjQsLTMxLjM5NjE0IDE0LjE5MjIyLC0zNS42MTQ1NSAxLjMzMjI5LC0yLjc1MzY0IDEuODc4NjcsLTMuNTkyNTggMy4zNDU0NiwtNS4xMzY3MiAxLjk2ODIyLC0yLjA3MjAzIDQuMDk4NCwtMy41NjI1MyA2LjQ2Njg3LC00LjUyNDkzIDEuMjcxMzgsLTAuNTE2NiAyLjI1NzYzLC0wLjY5MzAyIDQuODI2NzksLTAuODYzNCA1LjIxODMsLTAuMzQ2MDcgMjQuNTc0NjIsLTAuNTU0NTggMjQuOTg1MDgsLTAuMjY5MTQgMC40Mzc5NywwLjMwNDU2IDEuMTMxMzEsLTEuNTAwMjEgLTE1LjE1NDEyLDM5LjQ0Njc4IC0yMC42ODg0Miw1Mi4wMTc1NyAtMjguOTYxODUsNzIuOTgyNjUgLTM2Ljc1MTgxLDkzLjEzMDA0IC04LjQwMzU2LDIxLjczNDM0IC05LjM5NDk1LDI0LjIwNzY0IC0xMC43NjMxNiwyNi44NTE2NSAtMi4zNTQ1LDQuNTUgLTYuMzgyNCw3Ljc4MzMxIC0xMS4yNzY2MSw5LjA1MjA3IC0yLjA3MjU5LDAuNTM3MjkgLTYuMDAwMTUsMC40ODEwOSAtOC4yODkyNiwtMC4xMTg2MiB6Ii8+PHBhdGggc3R5bGU9ImZpbGw6IzU1YWJlNTtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MC4zNzI5NjIiIGQ9Im0gMTIyLjQ5MjIsMzEyLjU4OTE2IGMgLTQuMDc5NTYsLTAuNzMyNTggLTguNjUxMjMsLTMuOTM0MSAtMTEuMjMyNTgsLTcuODY2MTYgLTAuNzMwMDQsLTEuMTEyMDMgLTEuODU0NTksLTMuNDgzMjYgLTIuODQzMDksLTUuOTk0OTYgLTAuODk5NDMsLTIuMjg1NCAtNC43NjI4NywtMTIuMTU1MyAtOC41ODU0MDksLTIxLjkzMzEzIC0zLjgyMjU0LC05Ljc3NzgzIC04LjQ3OTA3MiwtMjEuNjM4MDMgLTEwLjM0Nzg1MiwtMjYuMzU2MDEgLTEuODY4NzgsLTQuNzE3OTcgLTcuNDA0OTY4LC0xOC44MTU5NSAtMTIuMzAyNjQ2LC0zMS4zMjg4NCAtNC44OTc2ODEsLTEyLjUxMjg4IC0xMC44NjE5MjMsLTI3LjcyOTc1IC0xMy4yNTM4NzYsLTMzLjgxNTI1IC0yLjM5MTk1MywtNi4wODU1IC01LjY2NTIxNiwtMTQuNDc3MTUgLTcuMjczOTE4LC0xOC42NDgxMSAtMS42MDg2OTgsLTQuMTcwOTcgLTQuMjM1OTUsLTEwLjg0ODI2IC01LjgzODMzNCwtMTQuODM4NDMgLTIuMDcyNzc5LC01LjE2MTUzIC0yLjgzNjUwOSwtNy4zMzE3NyAtMi42NDY4NjksLTcuNTIxNCAwLjM0NzkwMywtMC4zNDc5MSAyMC44Mjg4ODcsLTAuMzU5MTcgMjQuNzMyODc0LC0wLjAxMzYgNC42NDkyNTYsMC40MTE1NCA3LjAxMjg0OCwxLjUyODExIDEwLjUxNzU0Niw0Ljk2ODUyIDEuNDUwODE5LDEuNDI0MjEgMi4zOTgsMi42MDIxMyAyLjkwNDM3NSwzLjYxMTkgMS43OTg2OTMsMy41ODY3OCA4LjQxODEwMywyMC4wMjg2OSAxOC42NjYyNzksNDYuMzY1MDYgMy42OTgzOSw5LjUwNDMyIDExLjE2MDY3LDI4LjQxMzUxIDE2LjU4Mjg1LDQyLjAyMDQyIDE0LjYzNDMzLDM2LjcyNDY3IDE4Ljc0NzUzLDQ3LjEzNzY1IDE5LjUzOTc1LDQ5LjQ2Njg3IDIuMjI5ODEsNi41NTU4OSAxLjA1NTMzLDEyLjcwMjE0IC0zLjMwNDI2LDE3LjI5MTc2IC0zLjEwMzU5LDMuMjY3MzYgLTYuMjIwNDMsNC42MDg0NSAtMTEuMDIxNzgsNC43NDI0IC0xLjY0MzMxLDAuMDQ1OCAtMy41NzUxOCwtMC4wMjIxIC00LjI5MzA2LC0wLjE1MTAzIHoiLz48cmVjdCBzdHlsZT0iZmlsbDojZWM2MzRkIiB3aWR0aD0iMTEuMjY5NTQiIGhlaWdodD0iNDIuMDk3NjIyIiB4PSIxNjQuODgwMTQiIHk9IjE3Ni4yNTkwOSIgcnk9IjUuNjEwNDk2Ii8+PHJlY3Qgc3R5bGU9ImZpbGw6I2VjNjM0ZCIgd2lkdGg9IjExLjYyMTU2IiBoZWlnaHQ9Ijg3LjAzODYwNSIgeD0iMTQyLjE1ODY4IiB5PSIxNTMuNzg4NiIgcnk9IjUuNjEwNDk2Ii8+PHJlY3Qgc3R5bGU9ImZpbGw6I2VjNjM0ZCIgd2lkdGg9IjExLjI2OTU0IiBoZWlnaHQ9IjQyLjA5NzYyMiIgeD0iMTE5Ljc4OTI0IiB5PSIxNzYuMjU5MDkiIHJ5PSI1LjYxMDQ5NiIvPjwvZz48cGF0aCBzdHlsZT0iZmlsbDojZmZmZmZmIiBkPSJtIDIyMi4yNTEzMiw2OC40Nzk4OTcgcSAtMTIuNzk5OTgsMCAtMjEuNzU5OTcsOC45NTk5ODYgLTguOTU5OTgsOC45NTk5ODYgLTguOTU5OTgsMjEuNzU5OTY1IDAsMTIuNTg2NjQyIDguOTU5OTgsMjEuNTQ2NjMyIDQuMjY2NjYsNC40Nzk5OSA5LjgxMzMyLDYuODI2NjYgNS43NTk5OSwyLjEzMzMzIDExLjk0NjY1LDIuMTMzMzMgNi4xODY2NiwwIDExLjczMzMxLC0yLjEzMzMzIDUuNTQ2NjYsLTIuMzQ2NjcgMTAuMDI2NjUsLTYuODI2NjYgOC45NTk5OSwtOC45NTk5OSA4Ljk1OTk5LC0yMS41NDY2MzIgMCwtMTIuNzk5OTc5IC04Ljk1OTk5LC0yMS43NTk5NjUgLTkuMzg2NjUsLTguOTU5OTg2IC0yMS43NTk5NiwtOC45NTk5ODYgeiBtIDAsLTI1LjU5OTk1OSBxIDExLjczMzMxLDAgMjEuOTczMyw0LjQ3OTk5MyAxMC4yMzk5OCw0LjI2NjY2IDE3LjkxOTk3LDExLjk0NjY0OCA3LjY3OTk5LDcuNjc5OTg3IDExLjk0NjY1LDE3LjkxOTk3MSA0LjQ3OTk5LDEwLjIzOTk4NCA0LjQ3OTk5LDIxLjk3MzI5OCAwLDExLjUxOTk4MiAtNC40Nzk5OSwyMS43NTk5NjIgLTQuMjY2NjYsMTAuMjM5OTkgLTExLjk0NjY1LDE3LjkxOTk3IC03LjY3OTk5LDcuNjc5OTkgLTE3LjkxOTk3LDEyLjE1OTk5IC0xMC4yMzk5OSw0LjI2NjY2IC0yMS45NzMzLDQuMjY2NjYgLTExLjczMzMyLDAgLTIxLjk3MzMsLTQuMjY2NjYgLTEwLjIzOTk4LC00LjQ4IC0xNy45MTk5NywtMTIuMTU5OTkgLTcuNjc5OTksLTcuNjc5OTggLTEyLjE1OTk4LC0xNy45MTk5NyAtNC4yNjY2NiwtMTAuMjM5OTggLTQuMjY2NjYsLTIxLjc1OTk2MiAwLC0xMS43MzMzMTQgNC4yNjY2NiwtMjEuOTczMjk4IDQuNDc5OTksLTEwLjIzOTk4NCAxMi4xNTk5OCwtMTcuOTE5OTcxIDcuNjc5OTksLTcuNjc5OTg4IDE3LjkxOTk3LC0xMS45NDY2NDggMTAuMjM5OTgsLTQuNDc5OTkzIDIxLjk3MzMsLTQuNDc5OTkzIHogTSAzODMuMzE3OSwxMzguODc5NzggcSAtNy42Nzk5OSw3LjY3OTk5IC0xNy45MTk5NywxMi4xNTk5OSAtMTAuMjM5OTksNC4yNjY2NiAtMjEuOTczMyw0LjI2NjY2IC0xMS43MzMzMiwwIC0yMS45NzMzLC00LjI2NjY2IC0xMC4yMzk5OCwtNC40OCAtMTcuOTE5OTcsLTEyLjE1OTk5IC03LjY3OTk5LC03LjY3OTk4IC0xMi4xNTk5OCwtMTcuOTE5OTcgLTQuMjY2NjYsLTEwLjIzOTk4IC00LjI2NjY2LC0yMS43NTk5NjIgMCwtMTEuNzMzMzE0IDQuMjY2NjYsLTIxLjk3MzI5OCA0LjQ3OTk5LC0xMC4yMzk5ODQgMTIuMTU5OTgsLTE3LjkxOTk3MSA3LjY3OTk5LC03LjY3OTk4OCAxNy45MTk5NywtMTEuOTQ2NjQ4IDEwLjIzOTk4LC00LjQ3OTk5MyAyMS45NzMzLC00LjQ3OTk5MyAxMS43MzMzMSwwIDIxLjk3MzMsNC40Nzk5OTMgMTAuMjM5OTgsNC4yNjY2NiAxNy45MTk5NywxMS45NDY2NDggbCAtMTguMTMzMzEsMTguMTMzMzA0IHEgLTguOTU5OTgsLTguOTU5OTg2IC0yMS43NTk5NiwtOC45NTk5ODYgLTEyLjM3MzMyLDAgLTIxLjc1OTk3LDguOTU5OTg2IC04Ljk1OTk4LDguOTU5OTg2IC04Ljk1OTk4LDIxLjc1OTk2NSAwLDEyLjU4NjY0MiA4Ljk1OTk4LDIxLjU0NjYzMiA0LjQ4LDQuNDc5OTkgMTAuMDI2NjUsNi44MjY2NiA1LjU0NjY2LDIuMTMzMzMgMTEuNzMzMzIsMi4xMzMzMyAxMy4wMTMzMSwwIDIxLjc1OTk2LC04Ljk1OTk5IHogTSA0OTguMDkxMTQsNDUuNjUzMjY3IFYgMTUyLjUzMzEgSCA0NzIuNDkxMTggViA5OS4xOTk4NDggcSAwLC0xMi43OTk5NzkgLTguOTU5OTgsLTIxLjc1OTk2NSAtOC45NTk5OSwtOC45NTk5ODYgLTIxLjc1OTk3LC04Ljk1OTk4NiAtNi4xODY2NiwwIC0xMS45NDY2NSwyLjM0NjY2MyAtNS41NDY2NSwyLjM0NjY2MyAtOS44MTMzMSw2LjYxMzMyMyAtOC45NTk5OSw4Ljk1OTk4NiAtOC45NTk5OSwyMS43NTk5NjUgMCwxMi41ODY2NDIgOC45NTk5OSwyMS41NDY2MzIgNC4yNjY2Niw0LjQ3OTk5IDkuODEzMzEsNi44MjY2NiA1Ljc1OTk5LDIuMTMzMzMgMTEuOTQ2NjUsMi4xMzMzMyA2LjM5OTk5LDAgMTEuNTE5OTgsLTIuMTMzMzMgbCA5LjE3MzMyLDIyLjgyNjYzIHEgLTkuODEzMzIsNC45MDY2NiAtMjIuODI2NjMsNC45MDY2NiAtMTEuNzMzMzEsMCAtMjEuNzU5OTYsLTQuMjY2NjYgLTkuODEzMzIsLTQuNDggLTE3LjA2NjY0LC0xMi4xNTk5OSAtNy4yNTMzMiwtNy42Nzk5OCAtMTEuMzA2NjUsLTE3LjkxOTk3IC00LjA1MzMzLC0xMC4yMzk5OCAtNC4wNTMzMywtMjEuNzU5OTYyIDAsLTExLjczMzMxNCA0LjA1MzMzLC0yMS45NzMyOTggNC4wNTMzMywtMTAuMjM5OTg0IDExLjMwNjY1LC0xNy45MTk5NzEgNy4yNTMzMiwtNy42Nzk5ODggMTcuMDY2NjQsLTExLjk0NjY0OCAxMC4wMjY2NSwtNC40Nzk5OTMgMjEuNzU5OTYsLTQuNDc5OTkzIDEwLjQ1MzMyLDAgMTguNTU5OTcsMy4xOTk5OTUgOC4xMDY2NiwzLjE5OTk5NSAxNC4yOTMzMSw4LjEwNjY1NCB2IC04LjUzMzMyIHogTSA1MzguNjI0NDYsMTUyLjUzMzEgSCA1MTMuMDI0NSBWIDMuMjAwMDAxNSBoIDI1LjU5OTk2IFYgMTUyLjUzMzEgWiBtIDEyMC4xMDY1OSwtNDIuNjY2NiBxIDAsMTAuNDUzMzEgLTMuNDEzMzMsMTguOTg2NjMgLTMuNDEzMzIsOC4zMTk5OSAtOS44MTMzMSwxNC4yOTMzMSAtNi4xODY2Niw1Ljc2IC0xNS4xNDY2NSw4Ljk1OTk5IC04Ljk1OTk4LDMuMiAtMjAuMDUzMywzLjIgLTE3LjcwNjY0LDAgLTMxLjU3MzI4LC01LjU0NjY2IC0xMy44NjY2NCwtNS43NTk5OSAtMjIuODI2NjMsLTEzLjAxMzMyIGwgMTcuNzA2NjQsLTE3LjcwNjYzIHEgNy4wMzk5OSw2LjM5OTk5IDE1Ljc4NjY0LDkuODEzMzEgNS4zMzMzMiwyLjEzMzMzIDEwLjAyNjY1LDIuNzczMzMgNC42OTMzMywwLjY0IDcuNjc5OTksMC42NCA1LjU0NjY2LDAgMTAuMDI2NjUsLTEuMjggNC42OTMzMiwtMS40OTMzMyA4LjEwNjY1LC0zLjgzOTk5IDcuMjUzMzIsLTUuMzMzMzIgNy4yNTMzMiwtMTQuMDc5OTggMCwtNS4zMzMzMiAtMy44Mzk5OSwtOS41OTk5OCAtMi45ODY2NiwtMy40MTMzMyAtNy42Nzk5OSwtNS41NDY2NiAtMy44Mzk5OSwtMi4xMzMzMyAtOC4xMDY2NSwtMy40MTMzMjggLTQuMjY2NjYsLTEuMjc5OTk4IC03LjY3OTk5LC0yLjM0NjY2MyAtMS4wNjY2NiwtMC40MjY2NjYgLTEuOTIsLTAuNDI2NjY2IC0wLjg1MzMzLC0wLjIxMzMzMyAtMS40OTMzMywtMC42Mzk5OTkgLTAuNDI2NjYsMCAtMS4yNzk5OSwtMC40MjY2NjYgLTQuNDgsLTEuMjc5OTk3IC0xMy4wMTMzMiwtNC40Nzk5OTIgLTguMzE5OTgsLTMuMTk5OTk1IC0xNi42Mzk5NywtOC43NDY2NTMgLTE5LjQxMzMsLTEzLjAxMzMxMyAtMTkuNDEzMywtMzEuOTk5OTQ5IDAsLTEyLjU4NjY0NyA0LjI2NjY2LC0yMS4xMTk5NjYgNC40Nzk5OSwtOC43NDY2NTMgMTEuNTE5OTgsLTE0LjA3OTk3OCA3LjAzOTk5LC01LjU0NjY1NzUgMTUuNTczMzEsLTcuODkzMzIwNCBRIDU5MS41MzExNiw2LjYzNzU3MzNlLTYgNTk5Ljg1MTE1LDYuNjM3NTczM2UtNiBxIDE1LjM1OTk3LDAgMjUuODEzMjksMy42MjY2NjA4NjI0MjY3IDEwLjQ1MzMyLDMuNjI2NjYwOSAxNi42Mzk5Nyw3LjI1MzMyMTUgMy4yLDEuOTE5OTk3IDUuMzMzMzMsMy44Mzk5OTQgMi4zNDY2NiwxLjcwNjY2NCA0LjA1MzMyLDMuMTk5OTk1IGwgLTE4LjEzMzMsMTguMzQ2NjM3IHEgLTUuNzU5OTksLTUuNzU5OTkgLTExLjczMzMyLC04Ljc0NjY1MiAtOC45NTk5OCwtNC4yNjY2NiAtMTguNzczMywtNC4yNjY2NiAtNC4yNjY2NiwwIC04LjUzMzMyLDEuMDY2NjY1IC00LjI2NjY2LDEuMDY2NjY1IC03LjQ2NjY1LDIuNzczMzI5IC05LjM4NjY1LDUuNzU5OTkgLTkuMzg2NjUsMTUuMTQ2NjQyIDAsNS43NTk5OTEgMy44Mzk5OSw5LjgxMzMxOCAyLjc3MzMzLDMuMTk5OTk1IDcuNjc5OTksNS43NTk5OTEgNC4wNTMzMiwyLjEzMzMzIDguNTMzMzIsMy40MTMzMjggNC40Nzk5OSwxLjI3OTk5NyA4LjMxOTk4LDIuMzQ2NjYyIGwgMi41NiwwLjYzOTk5OSBxIDEuMDY2NjYsMC40MjY2NjYgNC4wNTMzMywxLjI3OTk5OCAyLjk4NjY2LDAuODUzMzMyIDcuMDM5OTgsMi41NTk5OTYgNC4wNTMzMywxLjcwNjY2NCA4Ljc0NjY2LDQuMDUzMzI3IDQuOTA2NjYsMi4zNDY2NjMgOS41OTk5OCw1LjU0NjY1OCAyMC42OTMzLDEzLjY1MzMxMSAyMC42OTMzLDMyLjIxMzI4NCB6IG0gNjkuMTE5NzcsNDIuNjY2NiBoIC0yMy40NjY2MyBxIC03LjI1MzMyLDAgLTEzLjY1MzMxLC0yLjc3MzMzIC02LjM5OTk5LC0yLjc3MzMzIC0xMS4wOTMzMiwtNy40NjY2NiAtNC42OTMzMiwtNC45MDY2NiAtNy40NjY2NSwtMTEuMzA2NjUgLTIuNzczMzMsLTYuMzk5OTkgLTIuNzczMzMsLTEzLjY1MzMxIFYgMjQuMzE5OTY4IGwgMjUuNTk5OTYsLTYuMzk5OTkgViA1OC42NjY1OCBoIDE0LjkzMzMxIGwgNi4zOTk5OSwyNS41OTk5NTkgaCAtMjEuMzMzMyB2IDMzLjA2NjYxMSBxIDAsNC4wNTMzMyAyLjc3MzMzLDYuODI2NjYgMi43NzMzMywyLjc3MzMzIDYuNjEzMzIsMi43NzMzMyBoIDE3LjA2NjY0IHogbSAxMTEuMzYsLTEwNi44Nzk4MzMgViAxNTIuNTMzMSBIIDgxMy42MTA4NiBWIDk5LjE5OTg0OCBxIDAsLTEyLjc5OTk3OSAtOC45NTk5OSwtMjEuNzU5OTY1IC04Ljk1OTk4LC04Ljk1OTk4NiAtMjEuNzU5OTYsLTguOTU5OTg2IC02LjE4NjY2LDAgLTExLjk0NjY1LDIuMzQ2NjYzIC01LjU0NjY2LDIuMzQ2NjYzIC05LjgxMzMyLDYuNjEzMzIzIC04Ljk1OTk4LDguOTU5OTg2IC04Ljk1OTk4LDIxLjc1OTk2NSAwLDEyLjU4NjY0MiA4Ljk1OTk4LDIxLjU0NjYzMiA0LjI2NjY2LDQuNDc5OTkgOS44MTMzMiw2LjgyNjY2IDUuNzU5OTksMi4xMzMzMyAxMS45NDY2NSwyLjEzMzMzIDYuMzk5OTksMCAxMS41MTk5OCwtMi4xMzMzMyBsIDkuMTczMzIsMjIuODI2NjMgcSAtOS44MTMzMiw0LjkwNjY2IC0yMi44MjY2Myw0LjkwNjY2IC0xMS43MzMzMiwwIC0yMS43NTk5NywtNC4yNjY2NiAtOS44MTMzMiwtNC40OCAtMTcuMDY2NjQsLTEyLjE1OTk5IC03LjI1MzMyLC03LjY3OTk4IC0xMS4zMDY2NSwtMTcuOTE5OTcgLTQuMDUzMzIsLTEwLjIzOTk4IC00LjA1MzMyLC0yMS43NTk5NjIgMCwtMTEuNzMzMzE0IDQuMDUzMzIsLTIxLjk3MzI5OCA0LjA1MzMzLC0xMC4yMzk5ODQgMTEuMzA2NjUsLTE3LjkxOTk3MSA3LjI1MzMyLC03LjY3OTk4OCAxNy4wNjY2NCwtMTEuOTQ2NjQ4IDEwLjAyNjY1LC00LjQ3OTk5MyAyMS43NTk5NywtNC40Nzk5OTMgMTAuNDUzMzEsMCAxOC41NTk5NywzLjE5OTk5NSA4LjEwNjY1LDMuMTk5OTk1IDE0LjI5MzMxLDguMTA2NjU0IHYgLTguNTMzMzIgeiBtIDEwNy45NDY1Miw5My4yMjY1MTMgcSAtNy42Nzk5OCw3LjY3OTk5IC0xNy45MTk5NywxMi4xNTk5OSAtMTAuMjM5OTgsNC4yNjY2NiAtMjEuOTczMjksNC4yNjY2NiAtMTEuNzMzMzIsMCAtMjEuOTczMywtNC4yNjY2NiAtMTAuMjM5OTksLTQuNDggLTE3LjkxOTk3LC0xMi4xNTk5OSAtNy42Nzk5OSwtNy42Nzk5OCAtMTIuMTU5OTgsLTE3LjkxOTk3IC00LjI2NjY2LC0xMC4yMzk5OCAtNC4yNjY2NiwtMjEuNzU5OTYyIDAsLTExLjczMzMxNCA0LjI2NjY2LC0yMS45NzMyOTggNC40Nzk5OSwtMTAuMjM5OTg0IDEyLjE1OTk4LC0xNy45MTk5NzEgNy42Nzk5OCwtNy42Nzk5ODggMTcuOTE5OTcsLTExLjk0NjY0OCAxMC4yMzk5OCwtNC40Nzk5OTMgMjEuOTczMywtNC40Nzk5OTMgMTEuNzMzMzEsMCAyMS45NzMyOSw0LjQ3OTk5MyAxMC4yMzk5OSw0LjI2NjY2IDE3LjkxOTk3LDExLjk0NjY0OCBsIC0xOC4xMzMzLDE4LjEzMzMwNCBxIC04Ljk1OTk5LC04Ljk1OTk4NiAtMjEuNzU5OTYsLTguOTU5OTg2IC0xMi4zNzMzMiwwIC0yMS43NTk5Nyw4Ljk1OTk4NiAtOC45NTk5OSw4Ljk1OTk4NiAtOC45NTk5OSwyMS43NTk5NjUgMCwxMi41ODY2NDIgOC45NTk5OSwyMS41NDY2MzIgNC40Nzk5OSw0LjQ3OTk5IDEwLjAyNjY1LDYuODI2NjYgNS41NDY2NiwyLjEzMzMzIDExLjczMzMyLDIuMTMzMzMgMTMuMDEzMzEsMCAyMS43NTk5NiwtOC45NTk5OSB6IE0gMTA1MS42OTA3LDQ1Ljg2NjYgOTk4LjM1NzQsOTkuMTk5ODQ4IDEwNTEuNjkwNywxNTIuNTMzMSBoIC0zNi4wNTMzIEwgOTgwLjIyNDEsMTE3LjExOTgyIFYgMTUyLjUzMzEgSCA5NTQuNjI0MTQgViAzLjIwMDAwMTUgSCA5ODAuMjI0MSBWIDgxLjA2NjU0NCBMIDEwMTUuNDI0LDQ1Ljg2NjYgaCAzNi4yNjY3IHoiLz48L3N2Zz4=", ya = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDUxLjY5MDciIGhlaWdodD0iMTU1LjMwNjQxIiB2aWV3Qm94PSIwIDAgMTA1MS42OTA2IDE1NS4zMDY0MSI+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMC44ODczNDc3MSwwLDAsMC44OTExODY4MiwtNDIuNzE2NjMsLTEyMy44NTM4OCkiPjxwYXRoIHN0eWxlPSJmaWxsOiMyNDVCOEY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLXdpZHRoOjAuMzcyOTYyIiBkPSJtIDE2NS43NDM2OSwzMTIuMzQ1MTQgYyAtMy42NTkwNCwtMC45NTg2MSAtNi44OTEzMSwtMy4zNTM0OCAtOS4yMTQ5NCwtNi44Mjc1OSAtMS45MTIyNiwtMi44NTkwOCAtMi4zOTcwNSwtNC41Njk3MSAtMi4zOTcwNSwtOC40NTgzNiAwLC0zLjk5MjU0IDAuMDgyNCwtNC4yNzU3IDQuMjMwMTIsLTE0LjU0NTUzIDQuMDA5MjMsLTkuOTI2ODEgMTEuNzQ1OTcsLTI5LjYwODA0IDE0LjE3MjU0LC0zNi4wNTMwMiAxLjA1NTUsLTIuODAzNDQgNC42MzU3OSwtMTIuMDkwMiA3Ljk1NjE5LC0yMC42MzcyNSAzLjMyMDQsLTguNTQ3MDYgOS40NzI2NSwtMjQuNDkxMiAxMy42NzE2OCwtMzUuNDMxNDMgOS40MTE2MywtMjQuNTIxMjUgMTIuMTUxMjQsLTMxLjM5NjE0IDE0LjE5MjIyLC0zNS42MTQ1NSAxLjMzMjI5LC0yLjc1MzY0IDEuODc4NjcsLTMuNTkyNTggMy4zNDU0NiwtNS4xMzY3MiAxLjk2ODIyLC0yLjA3MjAzIDQuMDk4NCwtMy41NjI1MyA2LjQ2Njg3LC00LjUyNDkzIDEuMjcxMzgsLTAuNTE2NiAyLjI1NzYzLC0wLjY5MzAyIDQuODI2NzksLTAuODYzNCA1LjIxODMsLTAuMzQ2MDcgMjQuNTc0NjIsLTAuNTU0NTggMjQuOTg1MDgsLTAuMjY5MTQgMC40Mzc5NywwLjMwNDU2IDEuMTMxMzEsLTEuNTAwMjEgLTE1LjE1NDEyLDM5LjQ0Njc4IC0yMC42ODg0Miw1Mi4wMTc1NyAtMjguOTYxODUsNzIuOTgyNjUgLTM2Ljc1MTgxLDkzLjEzMDA0IC04LjQwMzU2LDIxLjczNDM0IC05LjM5NDk1LDI0LjIwNzY0IC0xMC43NjMxNiwyNi44NTE2NSAtMi4zNTQ1LDQuNTUgLTYuMzgyNCw3Ljc4MzMxIC0xMS4yNzY2MSw5LjA1MjA3IC0yLjA3MjU5LDAuNTM3MjkgLTYuMDAwMTUsMC40ODEwOSAtOC4yODkyNiwtMC4xMTg2MiB6Ii8+PHBhdGggc3R5bGU9ImZpbGw6IzI0NUI4RjtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MC4zNzI5NjIiIGQ9Im0gMTIyLjQ5MjIsMzEyLjU4OTE2IGMgLTQuMDc5NTYsLTAuNzMyNTggLTguNjUxMjMsLTMuOTM0MSAtMTEuMjMyNTgsLTcuODY2MTYgLTAuNzMwMDQsLTEuMTEyMDMgLTEuODU0NTksLTMuNDgzMjYgLTIuODQzMDksLTUuOTk0OTYgLTAuODk5NDMsLTIuMjg1NCAtNC43NjI4NywtMTIuMTU1MyAtOC41ODU0MDksLTIxLjkzMzEzIC0zLjgyMjU0LC05Ljc3NzgzIC04LjQ3OTA3MiwtMjEuNjM4MDMgLTEwLjM0Nzg1MiwtMjYuMzU2MDEgLTEuODY4NzgsLTQuNzE3OTcgLTcuNDA0OTY4LC0xOC44MTU5NSAtMTIuMzAyNjQ2LC0zMS4zMjg4NCAtNC44OTc2ODEsLTEyLjUxMjg4IC0xMC44NjE5MjMsLTI3LjcyOTc1IC0xMy4yNTM4NzYsLTMzLjgxNTI1IC0yLjM5MTk1MywtNi4wODU1IC01LjY2NTIxNiwtMTQuNDc3MTUgLTcuMjczOTE4LC0xOC42NDgxMSAtMS42MDg2OTgsLTQuMTcwOTcgLTQuMjM1OTUsLTEwLjg0ODI2IC01LjgzODMzNCwtMTQuODM4NDMgLTIuMDcyNzc5LC01LjE2MTUzIC0yLjgzNjUwOSwtNy4zMzE3NyAtMi42NDY4NjksLTcuNTIxNCAwLjM0NzkwMywtMC4zNDc5MSAyMC44Mjg4ODcsLTAuMzU5MTcgMjQuNzMyODc0LC0wLjAxMzYgNC42NDkyNTYsMC40MTE1NCA3LjAxMjg0OCwxLjUyODExIDEwLjUxNzU0Niw0Ljk2ODUyIDEuNDUwODE5LDEuNDI0MjEgMi4zOTgsMi42MDIxMyAyLjkwNDM3NSwzLjYxMTkgMS43OTg2OTMsMy41ODY3OCA4LjQxODEwMywyMC4wMjg2OSAxOC42NjYyNzksNDYuMzY1MDYgMy42OTgzOSw5LjUwNDMyIDExLjE2MDY3LDI4LjQxMzUxIDE2LjU4Mjg1LDQyLjAyMDQyIDE0LjYzNDMzLDM2LjcyNDY3IDE4Ljc0NzUzLDQ3LjEzNzY1IDE5LjUzOTc1LDQ5LjQ2Njg3IDIuMjI5ODEsNi41NTU4OSAxLjA1NTMzLDEyLjcwMjE0IC0zLjMwNDI2LDE3LjI5MTc2IC0zLjEwMzU5LDMuMjY3MzYgLTYuMjIwNDMsNC42MDg0NSAtMTEuMDIxNzgsNC43NDI0IC0xLjY0MzMxLDAuMDQ1OCAtMy41NzUxOCwtMC4wMjIxIC00LjI5MzA2LC0wLjE1MTAzIHoiLz48cmVjdCBzdHlsZT0iZmlsbDojZWM2MzRkIiB3aWR0aD0iMTEuMjY5NTQiIGhlaWdodD0iNDIuMDk3NjIyIiB4PSIxNjQuODgwMTQiIHk9IjE3Ni4yNTkwOSIgcnk9IjUuNjEwNDk2Ii8+PHJlY3Qgc3R5bGU9ImZpbGw6I2VjNjM0ZCIgd2lkdGg9IjExLjYyMTU2IiBoZWlnaHQ9Ijg3LjAzODYwNSIgeD0iMTQyLjE1ODY4IiB5PSIxNTMuNzg4NiIgcnk9IjUuNjEwNDk2Ii8+PHJlY3Qgc3R5bGU9ImZpbGw6I2VjNjM0ZCIgd2lkdGg9IjExLjI2OTU0IiBoZWlnaHQ9IjQyLjA5NzYyMiIgeD0iMTE5Ljc4OTI0IiB5PSIxNzYuMjU5MDkiIHJ5PSI1LjYxMDQ5NiIvPjwvZz48cGF0aCBzdHlsZT0iZmlsbDojZWM2MzRkIiBkPSJtIDIyMi4yNTEzMiw2OC40Nzk4OTcgcSAtMTIuNzk5OTgsMCAtMjEuNzU5OTcsOC45NTk5ODYgLTguOTU5OTgsOC45NTk5ODYgLTguOTU5OTgsMjEuNzU5OTY1IDAsMTIuNTg2NjQyIDguOTU5OTgsMjEuNTQ2NjMyIDQuMjY2NjYsNC40Nzk5OSA5LjgxMzMyLDYuODI2NjYgNS43NTk5OSwyLjEzMzMzIDExLjk0NjY1LDIuMTMzMzMgNi4xODY2NiwwIDExLjczMzMxLC0yLjEzMzMzIDUuNTQ2NjYsLTIuMzQ2NjcgMTAuMDI2NjUsLTYuODI2NjYgOC45NTk5OSwtOC45NTk5OSA4Ljk1OTk5LC0yMS41NDY2MzIgMCwtMTIuNzk5OTc5IC04Ljk1OTk5LC0yMS43NTk5NjUgLTkuMzg2NjUsLTguOTU5OTg2IC0yMS43NTk5NiwtOC45NTk5ODYgeiBtIDAsLTI1LjU5OTk1OSBxIDExLjczMzMxLDAgMjEuOTczMyw0LjQ3OTk5MyAxMC4yMzk5OCw0LjI2NjY2IDE3LjkxOTk3LDExLjk0NjY0OCA3LjY3OTk5LDcuNjc5OTg3IDExLjk0NjY1LDE3LjkxOTk3MSA0LjQ3OTk5LDEwLjIzOTk4NCA0LjQ3OTk5LDIxLjk3MzI5OCAwLDExLjUxOTk4MiAtNC40Nzk5OSwyMS43NTk5NjIgLTQuMjY2NjYsMTAuMjM5OTkgLTExLjk0NjY1LDE3LjkxOTk3IC03LjY3OTk5LDcuNjc5OTkgLTE3LjkxOTk3LDEyLjE1OTk5IC0xMC4yMzk5OSw0LjI2NjY2IC0yMS45NzMzLDQuMjY2NjYgLTExLjczMzMyLDAgLTIxLjk3MzMsLTQuMjY2NjYgLTEwLjIzOTk4LC00LjQ4IC0xNy45MTk5NywtMTIuMTU5OTkgLTcuNjc5OTksLTcuNjc5OTggLTEyLjE1OTk4LC0xNy45MTk5NyAtNC4yNjY2NiwtMTAuMjM5OTggLTQuMjY2NjYsLTIxLjc1OTk2MiAwLC0xMS43MzMzMTQgNC4yNjY2NiwtMjEuOTczMjk4IDQuNDc5OTksLTEwLjIzOTk4NCAxMi4xNTk5OCwtMTcuOTE5OTcxIDcuNjc5OTksLTcuNjc5OTg4IDE3LjkxOTk3LC0xMS45NDY2NDggMTAuMjM5OTgsLTQuNDc5OTkzIDIxLjk3MzMsLTQuNDc5OTkzIHogTSAzODMuMzE3OSwxMzguODc5NzggcSAtNy42Nzk5OSw3LjY3OTk5IC0xNy45MTk5NywxMi4xNTk5OSAtMTAuMjM5OTksNC4yNjY2NiAtMjEuOTczMyw0LjI2NjY2IC0xMS43MzMzMiwwIC0yMS45NzMzLC00LjI2NjY2IC0xMC4yMzk5OCwtNC40OCAtMTcuOTE5OTcsLTEyLjE1OTk5IC03LjY3OTk5LC03LjY3OTk4IC0xMi4xNTk5OCwtMTcuOTE5OTcgLTQuMjY2NjYsLTEwLjIzOTk4IC00LjI2NjY2LC0yMS43NTk5NjIgMCwtMTEuNzMzMzE0IDQuMjY2NjYsLTIxLjk3MzI5OCA0LjQ3OTk5LC0xMC4yMzk5ODQgMTIuMTU5OTgsLTE3LjkxOTk3MSA3LjY3OTk5LC03LjY3OTk4OCAxNy45MTk5NywtMTEuOTQ2NjQ4IDEwLjIzOTk4LC00LjQ3OTk5MyAyMS45NzMzLC00LjQ3OTk5MyAxMS43MzMzMSwwIDIxLjk3MzMsNC40Nzk5OTMgMTAuMjM5OTgsNC4yNjY2NiAxNy45MTk5NywxMS45NDY2NDggbCAtMTguMTMzMzEsMTguMTMzMzA0IHEgLTguOTU5OTgsLTguOTU5OTg2IC0yMS43NTk5NiwtOC45NTk5ODYgLTEyLjM3MzMyLDAgLTIxLjc1OTk3LDguOTU5OTg2IC04Ljk1OTk4LDguOTU5OTg2IC04Ljk1OTk4LDIxLjc1OTk2NSAwLDEyLjU4NjY0MiA4Ljk1OTk4LDIxLjU0NjYzMiA0LjQ4LDQuNDc5OTkgMTAuMDI2NjUsNi44MjY2NiA1LjU0NjY2LDIuMTMzMzMgMTEuNzMzMzIsMi4xMzMzMyAxMy4wMTMzMSwwIDIxLjc1OTk2LC04Ljk1OTk5IHogTSA0OTguMDkxMTQsNDUuNjUzMjY3IFYgMTUyLjUzMzEgSCA0NzIuNDkxMTggViA5OS4xOTk4NDggcSAwLC0xMi43OTk5NzkgLTguOTU5OTgsLTIxLjc1OTk2NSAtOC45NTk5OSwtOC45NTk5ODYgLTIxLjc1OTk3LC04Ljk1OTk4NiAtNi4xODY2NiwwIC0xMS45NDY2NSwyLjM0NjY2MyAtNS41NDY2NSwyLjM0NjY2MyAtOS44MTMzMSw2LjYxMzMyMyAtOC45NTk5OSw4Ljk1OTk4NiAtOC45NTk5OSwyMS43NTk5NjUgMCwxMi41ODY2NDIgOC45NTk5OSwyMS41NDY2MzIgNC4yNjY2Niw0LjQ3OTk5IDkuODEzMzEsNi44MjY2NiA1Ljc1OTk5LDIuMTMzMzMgMTEuOTQ2NjUsMi4xMzMzMyA2LjM5OTk5LDAgMTEuNTE5OTgsLTIuMTMzMzMgbCA5LjE3MzMyLDIyLjgyNjYzIHEgLTkuODEzMzIsNC45MDY2NiAtMjIuODI2NjMsNC45MDY2NiAtMTEuNzMzMzEsMCAtMjEuNzU5OTYsLTQuMjY2NjYgLTkuODEzMzIsLTQuNDggLTE3LjA2NjY0LC0xMi4xNTk5OSAtNy4yNTMzMiwtNy42Nzk5OCAtMTEuMzA2NjUsLTE3LjkxOTk3IC00LjA1MzMzLC0xMC4yMzk5OCAtNC4wNTMzMywtMjEuNzU5OTYyIDAsLTExLjczMzMxNCA0LjA1MzMzLC0yMS45NzMyOTggNC4wNTMzMywtMTAuMjM5OTg0IDExLjMwNjY1LC0xNy45MTk5NzEgNy4yNTMzMiwtNy42Nzk5ODggMTcuMDY2NjQsLTExLjk0NjY0OCAxMC4wMjY2NSwtNC40Nzk5OTMgMjEuNzU5OTYsLTQuNDc5OTkzIDEwLjQ1MzMyLDAgMTguNTU5OTcsMy4xOTk5OTUgOC4xMDY2NiwzLjE5OTk5NSAxNC4yOTMzMSw4LjEwNjY1NCB2IC04LjUzMzMyIHogTSA1MzguNjI0NDYsMTUyLjUzMzEgSCA1MTMuMDI0NSBWIDMuMjAwMDAxNSBoIDI1LjU5OTk2IFYgMTUyLjUzMzEgWiBtIDEyMC4xMDY1OSwtNDIuNjY2NiBxIDAsMTAuNDUzMzEgLTMuNDEzMzMsMTguOTg2NjMgLTMuNDEzMzIsOC4zMTk5OSAtOS44MTMzMSwxNC4yOTMzMSAtNi4xODY2Niw1Ljc2IC0xNS4xNDY2NSw4Ljk1OTk5IC04Ljk1OTk4LDMuMiAtMjAuMDUzMywzLjIgLTE3LjcwNjY0LDAgLTMxLjU3MzI4LC01LjU0NjY2IC0xMy44NjY2NCwtNS43NTk5OSAtMjIuODI2NjMsLTEzLjAxMzMyIGwgMTcuNzA2NjQsLTE3LjcwNjYzIHEgNy4wMzk5OSw2LjM5OTk5IDE1Ljc4NjY0LDkuODEzMzEgNS4zMzMzMiwyLjEzMzMzIDEwLjAyNjY1LDIuNzczMzMgNC42OTMzMywwLjY0IDcuNjc5OTksMC42NCA1LjU0NjY2LDAgMTAuMDI2NjUsLTEuMjggNC42OTMzMiwtMS40OTMzMyA4LjEwNjY1LC0zLjgzOTk5IDcuMjUzMzIsLTUuMzMzMzIgNy4yNTMzMiwtMTQuMDc5OTggMCwtNS4zMzMzMiAtMy44Mzk5OSwtOS41OTk5OCAtMi45ODY2NiwtMy40MTMzMyAtNy42Nzk5OSwtNS41NDY2NiAtMy44Mzk5OSwtMi4xMzMzMyAtOC4xMDY2NSwtMy40MTMzMjggLTQuMjY2NjYsLTEuMjc5OTk4IC03LjY3OTk5LC0yLjM0NjY2MyAtMS4wNjY2NiwtMC40MjY2NjYgLTEuOTIsLTAuNDI2NjY2IC0wLjg1MzMzLC0wLjIxMzMzMyAtMS40OTMzMywtMC42Mzk5OTkgLTAuNDI2NjYsMCAtMS4yNzk5OSwtMC40MjY2NjYgLTQuNDgsLTEuMjc5OTk3IC0xMy4wMTMzMiwtNC40Nzk5OTIgLTguMzE5OTgsLTMuMTk5OTk1IC0xNi42Mzk5NywtOC43NDY2NTMgLTE5LjQxMzMsLTEzLjAxMzMxMyAtMTkuNDEzMywtMzEuOTk5OTQ5IDAsLTEyLjU4NjY0NyA0LjI2NjY2LC0yMS4xMTk5NjYgNC40Nzk5OSwtOC43NDY2NTMgMTEuNTE5OTgsLTE0LjA3OTk3OCA3LjAzOTk5LC01LjU0NjY1NzUgMTUuNTczMzEsLTcuODkzMzIwNCBRIDU5MS41MzExNiw2LjYzNzU3MzNlLTYgNTk5Ljg1MTE1LDYuNjM3NTczM2UtNiBxIDE1LjM1OTk3LDAgMjUuODEzMjksMy42MjY2NjA4NjI0MjY3IDEwLjQ1MzMyLDMuNjI2NjYwOSAxNi42Mzk5Nyw3LjI1MzMyMTUgMy4yLDEuOTE5OTk3IDUuMzMzMzMsMy44Mzk5OTQgMi4zNDY2NiwxLjcwNjY2NCA0LjA1MzMyLDMuMTk5OTk1IGwgLTE4LjEzMzMsMTguMzQ2NjM3IHEgLTUuNzU5OTksLTUuNzU5OTkgLTExLjczMzMyLC04Ljc0NjY1MiAtOC45NTk5OCwtNC4yNjY2NiAtMTguNzczMywtNC4yNjY2NiAtNC4yNjY2NiwwIC04LjUzMzMyLDEuMDY2NjY1IC00LjI2NjY2LDEuMDY2NjY1IC03LjQ2NjY1LDIuNzczMzI5IC05LjM4NjY1LDUuNzU5OTkgLTkuMzg2NjUsMTUuMTQ2NjQyIDAsNS43NTk5OTEgMy44Mzk5OSw5LjgxMzMxOCAyLjc3MzMzLDMuMTk5OTk1IDcuNjc5OTksNS43NTk5OTEgNC4wNTMzMiwyLjEzMzMzIDguNTMzMzIsMy40MTMzMjggNC40Nzk5OSwxLjI3OTk5NyA4LjMxOTk4LDIuMzQ2NjYyIGwgMi41NiwwLjYzOTk5OSBxIDEuMDY2NjYsMC40MjY2NjYgNC4wNTMzMywxLjI3OTk5OCAyLjk4NjY2LDAuODUzMzMyIDcuMDM5OTgsMi41NTk5OTYgNC4wNTMzMywxLjcwNjY2NCA4Ljc0NjY2LDQuMDUzMzI3IDQuOTA2NjYsMi4zNDY2NjMgOS41OTk5OCw1LjU0NjY1OCAyMC42OTMzLDEzLjY1MzMxMSAyMC42OTMzLDMyLjIxMzI4NCB6IG0gNjkuMTE5NzcsNDIuNjY2NiBoIC0yMy40NjY2MyBxIC03LjI1MzMyLDAgLTEzLjY1MzMxLC0yLjc3MzMzIC02LjM5OTk5LC0yLjc3MzMzIC0xMS4wOTMzMiwtNy40NjY2NiAtNC42OTMzMiwtNC45MDY2NiAtNy40NjY2NSwtMTEuMzA2NjUgLTIuNzczMzMsLTYuMzk5OTkgLTIuNzczMzMsLTEzLjY1MzMxIFYgMjQuMzE5OTY4IGwgMjUuNTk5OTYsLTYuMzk5OTkgViA1OC42NjY1OCBoIDE0LjkzMzMxIGwgNi4zOTk5OSwyNS41OTk5NTkgaCAtMjEuMzMzMyB2IDMzLjA2NjYxMSBxIDAsNC4wNTMzMyAyLjc3MzMzLDYuODI2NjYgMi43NzMzMywyLjc3MzMzIDYuNjEzMzIsMi43NzMzMyBoIDE3LjA2NjY0IHogbSAxMTEuMzYsLTEwNi44Nzk4MzMgViAxNTIuNTMzMSBIIDgxMy42MTA4NiBWIDk5LjE5OTg0OCBxIDAsLTEyLjc5OTk3OSAtOC45NTk5OSwtMjEuNzU5OTY1IC04Ljk1OTk4LC04Ljk1OTk4NiAtMjEuNzU5OTYsLTguOTU5OTg2IC02LjE4NjY2LDAgLTExLjk0NjY1LDIuMzQ2NjYzIC01LjU0NjY2LDIuMzQ2NjYzIC05LjgxMzMyLDYuNjEzMzIzIC04Ljk1OTk4LDguOTU5OTg2IC04Ljk1OTk4LDIxLjc1OTk2NSAwLDEyLjU4NjY0MiA4Ljk1OTk4LDIxLjU0NjYzMiA0LjI2NjY2LDQuNDc5OTkgOS44MTMzMiw2LjgyNjY2IDUuNzU5OTksMi4xMzMzMyAxMS45NDY2NSwyLjEzMzMzIDYuMzk5OTksMCAxMS41MTk5OCwtMi4xMzMzMyBsIDkuMTczMzIsMjIuODI2NjMgcSAtOS44MTMzMiw0LjkwNjY2IC0yMi44MjY2Myw0LjkwNjY2IC0xMS43MzMzMiwwIC0yMS43NTk5NywtNC4yNjY2NiAtOS44MTMzMiwtNC40OCAtMTcuMDY2NjQsLTEyLjE1OTk5IC03LjI1MzMyLC03LjY3OTk4IC0xMS4zMDY2NSwtMTcuOTE5OTcgLTQuMDUzMzIsLTEwLjIzOTk4IC00LjA1MzMyLC0yMS43NTk5NjIgMCwtMTEuNzMzMzE0IDQuMDUzMzIsLTIxLjk3MzI5OCA0LjA1MzMzLC0xMC4yMzk5ODQgMTEuMzA2NjUsLTE3LjkxOTk3MSA3LjI1MzMyLC03LjY3OTk4OCAxNy4wNjY2NCwtMTEuOTQ2NjQ4IDEwLjAyNjY1LC00LjQ3OTk5MyAyMS43NTk5NywtNC40Nzk5OTMgMTAuNDUzMzEsMCAxOC41NTk5NywzLjE5OTk5NSA4LjEwNjY1LDMuMTk5OTk1IDE0LjI5MzMxLDguMTA2NjU0IHYgLTguNTMzMzIgeiBtIDEwNy45NDY1Miw5My4yMjY1MTMgcSAtNy42Nzk5OCw3LjY3OTk5IC0xNy45MTk5NywxMi4xNTk5OSAtMTAuMjM5OTgsNC4yNjY2NiAtMjEuOTczMjksNC4yNjY2NiAtMTEuNzMzMzIsMCAtMjEuOTczMywtNC4yNjY2NiAtMTAuMjM5OTksLTQuNDggLTE3LjkxOTk3LC0xMi4xNTk5OSAtNy42Nzk5OSwtNy42Nzk5OCAtMTIuMTU5OTgsLTE3LjkxOTk3IC00LjI2NjY2LC0xMC4yMzk5OCAtNC4yNjY2NiwtMjEuNzU5OTYyIDAsLTExLjczMzMxNCA0LjI2NjY2LC0yMS45NzMyOTggNC40Nzk5OSwtMTAuMjM5OTg0IDEyLjE1OTk4LC0xNy45MTk5NzEgNy42Nzk5OCwtNy42Nzk5ODggMTcuOTE5OTcsLTExLjk0NjY0OCAxMC4yMzk5OCwtNC40Nzk5OTMgMjEuOTczMywtNC40Nzk5OTMgMTEuNzMzMzEsMCAyMS45NzMyOSw0LjQ3OTk5MyAxMC4yMzk5OSw0LjI2NjY2IDE3LjkxOTk3LDExLjk0NjY0OCBsIC0xOC4xMzMzLDE4LjEzMzMwNCBxIC04Ljk1OTk5LC04Ljk1OTk4NiAtMjEuNzU5OTYsLTguOTU5OTg2IC0xMi4zNzMzMiwwIC0yMS43NTk5Nyw4Ljk1OTk4NiAtOC45NTk5OSw4Ljk1OTk4NiAtOC45NTk5OSwyMS43NTk5NjUgMCwxMi41ODY2NDIgOC45NTk5OSwyMS41NDY2MzIgNC40Nzk5OSw0LjQ3OTk5IDEwLjAyNjY1LDYuODI2NjYgNS41NDY2NiwyLjEzMzMzIDExLjczMzMyLDIuMTMzMzMgMTMuMDEzMzEsMCAyMS43NTk5NiwtOC45NTk5OSB6IE0gMTA1MS42OTA3LDQ1Ljg2NjYgOTk4LjM1NzQsOTkuMTk5ODQ4IDEwNTEuNjkwNywxNTIuNTMzMSBoIC0zNi4wNTMzIEwgOTgwLjIyNDEsMTE3LjExOTgyIFYgMTUyLjUzMzEgSCA5NTQuNjI0MTQgViAzLjIwMDAwMTUgSCA5ODAuMjI0MSBWIDgxLjA2NjU0NCBMIDEwMTUuNDI0LDQ1Ljg2NjYgaCAzNi4yNjY3IHoiLz48L3N2Zz4=", Ta = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0Ni45NTU0ODJtbSIgaGVpZ2h0PSIzOS44NDUzMW1tIiB2aWV3Qm94PSIwIDAgNDYuOTU1NDgyIDM5Ljg0NTMxIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtODAuOTYyNSwtMTI4LjU4NzUpIj48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjIzNDc3NzQxLDAsMCwwLjIzNTc5MzE4LDY5LjY2MDM5Miw5NC42Njg4MzgpIj48cGF0aCBzdHlsZT0iZmlsbDojNTVhYmU1O2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDowLjM3Mjk2MiIgZD0ibSAxNjUuNzQzNjksMzEyLjM0NTE0IGMgLTMuNjU5MDQsLTAuOTU4NjEgLTYuODkxMzEsLTMuMzUzNDggLTkuMjE0OTQsLTYuODI3NTkgLTEuOTEyMjYsLTIuODU5MDggLTIuMzk3MDUsLTQuNTY5NzEgLTIuMzk3MDUsLTguNDU4MzYgMCwtMy45OTI1NCAwLjA4MjQsLTQuMjc1NyA0LjIzMDEyLC0xNC41NDU1MyA0LjAwOTIzLC05LjkyNjgxIDExLjc0NTk3LC0yOS42MDgwNCAxNC4xNzI1NCwtMzYuMDUzMDIgMS4wNTU1LC0yLjgwMzQ0IDQuNjM1NzksLTEyLjA5MDIgNy45NTYxOSwtMjAuNjM3MjUgMy4zMjA0LC04LjU0NzA2IDkuNDcyNjUsLTI0LjQ5MTIgMTMuNjcxNjgsLTM1LjQzMTQzIDkuNDExNjMsLTI0LjUyMTI1IDEyLjE1MTI0LC0zMS4zOTYxNCAxNC4xOTIyMiwtMzUuNjE0NTUgMS4zMzIyOSwtMi43NTM2NCAxLjg3ODY3LC0zLjU5MjU4IDMuMzQ1NDYsLTUuMTM2NzIgMS45NjgyMiwtMi4wNzIwMyA0LjA5ODQsLTMuNTYyNTMgNi40NjY4NywtNC41MjQ5MyAxLjI3MTM4LC0wLjUxNjYgMi4yNTc2MywtMC42OTMwMiA0LjgyNjc5LC0wLjg2MzQgNS4yMTgzLC0wLjM0NjA3IDI0LjU3NDYyLC0wLjU1NDU4IDI0Ljk4NTA4LC0wLjI2OTE0IDAuNDM3OTcsMC4zMDQ1NiAxLjEzMTMxLC0xLjUwMDIxIC0xNS4xNTQxMiwzOS40NDY3OCAtMjAuNjg4NDIsNTIuMDE3NTcgLTI4Ljk2MTg1LDcyLjk4MjY1IC0zNi43NTE4MSw5My4xMzAwNCAtOC40MDM1NiwyMS43MzQzNCAtOS4zOTQ5NSwyNC4yMDc2NCAtMTAuNzYzMTYsMjYuODUxNjUgLTIuMzU0NSw0LjU1IC02LjM4MjQsNy43ODMzMSAtMTEuMjc2NjEsOS4wNTIwNyAtMi4wNzI1OSwwLjUzNzI5IC02LjAwMDE1LDAuNDgxMDkgLTguMjg5MjYsLTAuMTE4NjIgeiIvPjxwYXRoIHN0eWxlPSJmaWxsOiM1NWFiZTU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLXdpZHRoOjAuMzcyOTYyIiBkPSJtIDEyMi40OTIyLDMxMi41ODkxNiBjIC00LjA3OTU2LC0wLjczMjU4IC04LjY1MTIzLC0zLjkzNDEgLTExLjIzMjU4LC03Ljg2NjE2IC0wLjczMDA0LC0xLjExMjAzIC0xLjg1NDU5LC0zLjQ4MzI2IC0yLjg0MzA5LC01Ljk5NDk2IC0wLjg5OTQzLC0yLjI4NTQgLTQuNzYyODcsLTEyLjE1NTMgLTguNTg1NDA5LC0yMS45MzMxMyAtMy44MjI1NCwtOS43Nzc4MyAtOC40NzkwNzIsLTIxLjYzODAzIC0xMC4zNDc4NTIsLTI2LjM1NjAxIC0xLjg2ODc4LC00LjcxNzk3IC03LjQwNDk2OCwtMTguODE1OTUgLTEyLjMwMjY0NiwtMzEuMzI4ODQgLTQuODk3NjgxLC0xMi41MTI4OCAtMTAuODYxOTIzLC0yNy43Mjk3NSAtMTMuMjUzODc2LC0zMy44MTUyNSAtMi4zOTE5NTMsLTYuMDg1NSAtNS42NjUyMTYsLTE0LjQ3NzE1IC03LjI3MzkxOCwtMTguNjQ4MTEgLTEuNjA4Njk4LC00LjE3MDk3IC00LjIzNTk1LC0xMC44NDgyNiAtNS44MzgzMzQsLTE0LjgzODQzIC0yLjA3Mjc3OSwtNS4xNjE1MyAtMi44MzY1MDksLTcuMzMxNzcgLTIuNjQ2ODY5LC03LjUyMTQgMC4zNDc5MDMsLTAuMzQ3OTEgMjAuODI4ODg3LC0wLjM1OTE3IDI0LjczMjg3NCwtMC4wMTM2IDQuNjQ5MjU2LDAuNDExNTQgNy4wMTI4NDgsMS41MjgxMSAxMC41MTc1NDYsNC45Njg1MiAxLjQ1MDgxOSwxLjQyNDIxIDIuMzk4LDIuNjAyMTMgMi45MDQzNzUsMy42MTE5IDEuNzk4NjkzLDMuNTg2NzggOC40MTgxMDMsMjAuMDI4NjkgMTguNjY2Mjc5LDQ2LjM2NTA2IDMuNjk4MzksOS41MDQzMiAxMS4xNjA2NywyOC40MTM1MSAxNi41ODI4NSw0Mi4wMjA0MiAxNC42MzQzMywzNi43MjQ2NyAxOC43NDc1Myw0Ny4xMzc2NSAxOS41Mzk3NSw0OS40NjY4NyAyLjIyOTgxLDYuNTU1ODkgMS4wNTUzMywxMi43MDIxNCAtMy4zMDQyNiwxNy4yOTE3NiAtMy4xMDM1OSwzLjI2NzM2IC02LjIyMDQzLDQuNjA4NDUgLTExLjAyMTc4LDQuNzQyNCAtMS42NDMzMSwwLjA0NTggLTMuNTc1MTgsLTAuMDIyMSAtNC4yOTMwNiwtMC4xNTEwMyB6Ii8+PHJlY3Qgc3R5bGU9ImZpbGw6I2Y3ODQ3MiIgd2lkdGg9IjExLjI2OTU0IiBoZWlnaHQ9IjQyLjA5NzYyMiIgeD0iMTY0Ljg4MDE0IiB5PSIxNzYuMjU5MDkiIHJ5PSI1LjYxMDQ5NiIvPjxyZWN0IHN0eWxlPSJmaWxsOiNmNzg0NzIiIHdpZHRoPSIxMS42MjE1NiIgaGVpZ2h0PSI4Ny4wMzg2MDUiIHg9IjE0Mi4xNTg2OCIgeT0iMTUzLjc4ODYiIHJ5PSI1LjYxMDQ5NiIvPjxyZWN0IHN0eWxlPSJmaWxsOiNmNzg0NzIiIHdpZHRoPSIxMS4yNjk1NCIgaGVpZ2h0PSI0Mi4wOTc2MjIiIHg9IjExOS43ODkyNCIgeT0iMTc2LjI1OTA5IiByeT0iNS42MTA0OTYiLz48L2c+PC9nPjwvc3ZnPg==", wa = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0Ni45NTU0ODJtbSIgaGVpZ2h0PSIzOS44NDUzMW1tIiB2aWV3Qm94PSIwIDAgNDYuOTU1NDgyIDM5Ljg0NTMxIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtODAuOTYyNSwtMTI4LjU4NzUpIj48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjIzNDc3NzQxLDAsMCwwLjIzNTc5MzE4LDY5LjY2MDM5Miw5NC42Njg4MzgpIj48cGF0aCBzdHlsZT0iZmlsbDojMjQ1YjhmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDowLjM3Mjk2MiIgZD0ibSAxNjUuNzQzNjksMzEyLjM0NTE0IGMgLTMuNjU5MDQsLTAuOTU4NjEgLTYuODkxMzEsLTMuMzUzNDggLTkuMjE0OTQsLTYuODI3NTkgLTEuOTEyMjYsLTIuODU5MDggLTIuMzk3MDUsLTQuNTY5NzEgLTIuMzk3MDUsLTguNDU4MzYgMCwtMy45OTI1NCAwLjA4MjQsLTQuMjc1NyA0LjIzMDEyLC0xNC41NDU1MyA0LjAwOTIzLC05LjkyNjgxIDExLjc0NTk3LC0yOS42MDgwNCAxNC4xNzI1NCwtMzYuMDUzMDIgMS4wNTU1LC0yLjgwMzQ0IDQuNjM1NzksLTEyLjA5MDIgNy45NTYxOSwtMjAuNjM3MjUgMy4zMjA0LC04LjU0NzA2IDkuNDcyNjUsLTI0LjQ5MTIgMTMuNjcxNjgsLTM1LjQzMTQzIDkuNDExNjMsLTI0LjUyMTI1IDEyLjE1MTI0LC0zMS4zOTYxNCAxNC4xOTIyMiwtMzUuNjE0NTUgMS4zMzIyOSwtMi43NTM2NCAxLjg3ODY3LC0zLjU5MjU4IDMuMzQ1NDYsLTUuMTM2NzIgMS45NjgyMiwtMi4wNzIwMyA0LjA5ODQsLTMuNTYyNTMgNi40NjY4NywtNC41MjQ5MyAxLjI3MTM4LC0wLjUxNjYgMi4yNTc2MywtMC42OTMwMiA0LjgyNjc5LC0wLjg2MzQgNS4yMTgzLC0wLjM0NjA3IDI0LjU3NDYyLC0wLjU1NDU4IDI0Ljk4NTA4LC0wLjI2OTE0IDAuNDM3OTcsMC4zMDQ1NiAxLjEzMTMxLC0xLjUwMDIxIC0xNS4xNTQxMiwzOS40NDY3OCAtMjAuNjg4NDIsNTIuMDE3NTcgLTI4Ljk2MTg1LDcyLjk4MjY1IC0zNi43NTE4MSw5My4xMzAwNCAtOC40MDM1NiwyMS43MzQzNCAtOS4zOTQ5NSwyNC4yMDc2NCAtMTAuNzYzMTYsMjYuODUxNjUgLTIuMzU0NSw0LjU1IC02LjM4MjQsNy43ODMzMSAtMTEuMjc2NjEsOS4wNTIwNyAtMi4wNzI1OSwwLjUzNzI5IC02LjAwMDE1LDAuNDgxMDkgLTguMjg5MjYsLTAuMTE4NjIgeiIvPjxwYXRoIHN0eWxlPSJmaWxsOiMyNDViOGY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLXdpZHRoOjAuMzcyOTYyIiBkPSJtIDEyMi40OTIyLDMxMi41ODkxNiBjIC00LjA3OTU2LC0wLjczMjU4IC04LjY1MTIzLC0zLjkzNDEgLTExLjIzMjU4LC03Ljg2NjE2IC0wLjczMDA0LC0xLjExMjAzIC0xLjg1NDU5LC0zLjQ4MzI2IC0yLjg0MzA5LC01Ljk5NDk2IC0wLjg5OTQzLC0yLjI4NTQgLTQuNzYyODcsLTEyLjE1NTMgLTguNTg1NDA5LC0yMS45MzMxMyAtMy44MjI1NCwtOS43Nzc4MyAtOC40NzkwNzIsLTIxLjYzODAzIC0xMC4zNDc4NTIsLTI2LjM1NjAxIC0xLjg2ODc4LC00LjcxNzk3IC03LjQwNDk2OCwtMTguODE1OTUgLTEyLjMwMjY0NiwtMzEuMzI4ODQgLTQuODk3NjgxLC0xMi41MTI4OCAtMTAuODYxOTIzLC0yNy43Mjk3NSAtMTMuMjUzODc2LC0zMy44MTUyNSAtMi4zOTE5NTMsLTYuMDg1NSAtNS42NjUyMTYsLTE0LjQ3NzE1IC03LjI3MzkxOCwtMTguNjQ4MTEgLTEuNjA4Njk4LC00LjE3MDk3IC00LjIzNTk1LC0xMC44NDgyNiAtNS44MzgzMzQsLTE0LjgzODQzIC0yLjA3Mjc3OSwtNS4xNjE1MyAtMi44MzY1MDksLTcuMzMxNzcgLTIuNjQ2ODY5LC03LjUyMTQgMC4zNDc5MDMsLTAuMzQ3OTEgMjAuODI4ODg3LC0wLjM1OTE3IDI0LjczMjg3NCwtMC4wMTM2IDQuNjQ5MjU2LDAuNDExNTQgNy4wMTI4NDgsMS41MjgxMSAxMC41MTc1NDYsNC45Njg1MiAxLjQ1MDgxOSwxLjQyNDIxIDIuMzk4LDIuNjAyMTMgMi45MDQzNzUsMy42MTE5IDEuNzk4NjkzLDMuNTg2NzggOC40MTgxMDMsMjAuMDI4NjkgMTguNjY2Mjc5LDQ2LjM2NTA2IDMuNjk4MzksOS41MDQzMiAxMS4xNjA2NywyOC40MTM1MSAxNi41ODI4NSw0Mi4wMjA0MiAxNC42MzQzMywzNi43MjQ2NyAxOC43NDc1Myw0Ny4xMzc2NSAxOS41Mzk3NSw0OS40NjY4NyAyLjIyOTgxLDYuNTU1ODkgMS4wNTUzMywxMi43MDIxNCAtMy4zMDQyNiwxNy4yOTE3NiAtMy4xMDM1OSwzLjI2NzM2IC02LjIyMDQzLDQuNjA4NDUgLTExLjAyMTc4LDQuNzQyNCAtMS42NDMzMSwwLjA0NTggLTMuNTc1MTgsLTAuMDIyMSAtNC4yOTMwNiwtMC4xNTEwMyB6Ii8+PHJlY3Qgc3R5bGU9ImZpbGw6I2VjNjM0ZCIgd2lkdGg9IjExLjI2OTU0IiBoZWlnaHQ9IjQyLjA5NzYyMiIgeD0iMTY0Ljg4MDE0IiB5PSIxNzYuMjU5MDkiIHJ5PSI1LjYxMDQ5NiIvPjxyZWN0IHN0eWxlPSJmaWxsOiNlYzYzNGQiIHdpZHRoPSIxMS42MjE1NiIgaGVpZ2h0PSI4Ny4wMzg2MDUiIHg9IjE0Mi4xNTg2OCIgeT0iMTUzLjc4ODYiIHJ5PSI1LjYxMDQ5NiIvPjxyZWN0IHN0eWxlPSJmaWxsOiNlYzYzNGQiIHdpZHRoPSIxMS4yNjk1NCIgaGVpZ2h0PSI0Mi4wOTc2MjIiIHg9IjExOS43ODkyNCIgeT0iMTc2LjI1OTA5IiByeT0iNS42MTA0OTYiLz48L2c+PC9nPjwvc3ZnPg==";
|
|
9
|
-
function
|
|
5
|
+
import { useState as O, useRef as z, useEffect as Y, useLayoutEffect as Qt, createContext as ei, useMemo as Ie, useContext as ha, useCallback as qe, Fragment as fa, forwardRef as Na, useImperativeHandle as pa } from "react";
|
|
6
|
+
import { createPortal as ma } from "react-dom";
|
|
7
|
+
import { VocalStackError as ti, VocalStack as ni } from "@vocalstack/js-sdk";
|
|
8
|
+
const si = "https://vocalstack.com", ya = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDUxLjY5MDciIGhlaWdodD0iMTU1LjMwNjQxIiB2aWV3Qm94PSIwIDAgMTA1MS42OTA2IDE1NS4zMDY0MSI+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMC44ODczNDc3MSwwLDAsMC44OTExODY4MiwtNDIuNzE2NjMsLTEyMy44NTM4OCkiPjxwYXRoIHN0eWxlPSJmaWxsOiM1NWFiZTU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLXdpZHRoOjAuMzcyOTYyIiBkPSJtIDE2NS43NDM2OSwzMTIuMzQ1MTQgYyAtMy42NTkwNCwtMC45NTg2MSAtNi44OTEzMSwtMy4zNTM0OCAtOS4yMTQ5NCwtNi44Mjc1OSAtMS45MTIyNiwtMi44NTkwOCAtMi4zOTcwNSwtNC41Njk3MSAtMi4zOTcwNSwtOC40NTgzNiAwLC0zLjk5MjU0IDAuMDgyNCwtNC4yNzU3IDQuMjMwMTIsLTE0LjU0NTUzIDQuMDA5MjMsLTkuOTI2ODEgMTEuNzQ1OTcsLTI5LjYwODA0IDE0LjE3MjU0LC0zNi4wNTMwMiAxLjA1NTUsLTIuODAzNDQgNC42MzU3OSwtMTIuMDkwMiA3Ljk1NjE5LC0yMC42MzcyNSAzLjMyMDQsLTguNTQ3MDYgOS40NzI2NSwtMjQuNDkxMiAxMy42NzE2OCwtMzUuNDMxNDMgOS40MTE2MywtMjQuNTIxMjUgMTIuMTUxMjQsLTMxLjM5NjE0IDE0LjE5MjIyLC0zNS42MTQ1NSAxLjMzMjI5LC0yLjc1MzY0IDEuODc4NjcsLTMuNTkyNTggMy4zNDU0NiwtNS4xMzY3MiAxLjk2ODIyLC0yLjA3MjAzIDQuMDk4NCwtMy41NjI1MyA2LjQ2Njg3LC00LjUyNDkzIDEuMjcxMzgsLTAuNTE2NiAyLjI1NzYzLC0wLjY5MzAyIDQuODI2NzksLTAuODYzNCA1LjIxODMsLTAuMzQ2MDcgMjQuNTc0NjIsLTAuNTU0NTggMjQuOTg1MDgsLTAuMjY5MTQgMC40Mzc5NywwLjMwNDU2IDEuMTMxMzEsLTEuNTAwMjEgLTE1LjE1NDEyLDM5LjQ0Njc4IC0yMC42ODg0Miw1Mi4wMTc1NyAtMjguOTYxODUsNzIuOTgyNjUgLTM2Ljc1MTgxLDkzLjEzMDA0IC04LjQwMzU2LDIxLjczNDM0IC05LjM5NDk1LDI0LjIwNzY0IC0xMC43NjMxNiwyNi44NTE2NSAtMi4zNTQ1LDQuNTUgLTYuMzgyNCw3Ljc4MzMxIC0xMS4yNzY2MSw5LjA1MjA3IC0yLjA3MjU5LDAuNTM3MjkgLTYuMDAwMTUsMC40ODEwOSAtOC4yODkyNiwtMC4xMTg2MiB6Ii8+PHBhdGggc3R5bGU9ImZpbGw6IzU1YWJlNTtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MC4zNzI5NjIiIGQ9Im0gMTIyLjQ5MjIsMzEyLjU4OTE2IGMgLTQuMDc5NTYsLTAuNzMyNTggLTguNjUxMjMsLTMuOTM0MSAtMTEuMjMyNTgsLTcuODY2MTYgLTAuNzMwMDQsLTEuMTEyMDMgLTEuODU0NTksLTMuNDgzMjYgLTIuODQzMDksLTUuOTk0OTYgLTAuODk5NDMsLTIuMjg1NCAtNC43NjI4NywtMTIuMTU1MyAtOC41ODU0MDksLTIxLjkzMzEzIC0zLjgyMjU0LC05Ljc3NzgzIC04LjQ3OTA3MiwtMjEuNjM4MDMgLTEwLjM0Nzg1MiwtMjYuMzU2MDEgLTEuODY4NzgsLTQuNzE3OTcgLTcuNDA0OTY4LC0xOC44MTU5NSAtMTIuMzAyNjQ2LC0zMS4zMjg4NCAtNC44OTc2ODEsLTEyLjUxMjg4IC0xMC44NjE5MjMsLTI3LjcyOTc1IC0xMy4yNTM4NzYsLTMzLjgxNTI1IC0yLjM5MTk1MywtNi4wODU1IC01LjY2NTIxNiwtMTQuNDc3MTUgLTcuMjczOTE4LC0xOC42NDgxMSAtMS42MDg2OTgsLTQuMTcwOTcgLTQuMjM1OTUsLTEwLjg0ODI2IC01LjgzODMzNCwtMTQuODM4NDMgLTIuMDcyNzc5LC01LjE2MTUzIC0yLjgzNjUwOSwtNy4zMzE3NyAtMi42NDY4NjksLTcuNTIxNCAwLjM0NzkwMywtMC4zNDc5MSAyMC44Mjg4ODcsLTAuMzU5MTcgMjQuNzMyODc0LC0wLjAxMzYgNC42NDkyNTYsMC40MTE1NCA3LjAxMjg0OCwxLjUyODExIDEwLjUxNzU0Niw0Ljk2ODUyIDEuNDUwODE5LDEuNDI0MjEgMi4zOTgsMi42MDIxMyAyLjkwNDM3NSwzLjYxMTkgMS43OTg2OTMsMy41ODY3OCA4LjQxODEwMywyMC4wMjg2OSAxOC42NjYyNzksNDYuMzY1MDYgMy42OTgzOSw5LjUwNDMyIDExLjE2MDY3LDI4LjQxMzUxIDE2LjU4Mjg1LDQyLjAyMDQyIDE0LjYzNDMzLDM2LjcyNDY3IDE4Ljc0NzUzLDQ3LjEzNzY1IDE5LjUzOTc1LDQ5LjQ2Njg3IDIuMjI5ODEsNi41NTU4OSAxLjA1NTMzLDEyLjcwMjE0IC0zLjMwNDI2LDE3LjI5MTc2IC0zLjEwMzU5LDMuMjY3MzYgLTYuMjIwNDMsNC42MDg0NSAtMTEuMDIxNzgsNC43NDI0IC0xLjY0MzMxLDAuMDQ1OCAtMy41NzUxOCwtMC4wMjIxIC00LjI5MzA2LC0wLjE1MTAzIHoiLz48cmVjdCBzdHlsZT0iZmlsbDojZWM2MzRkIiB3aWR0aD0iMTEuMjY5NTQiIGhlaWdodD0iNDIuMDk3NjIyIiB4PSIxNjQuODgwMTQiIHk9IjE3Ni4yNTkwOSIgcnk9IjUuNjEwNDk2Ii8+PHJlY3Qgc3R5bGU9ImZpbGw6I2VjNjM0ZCIgd2lkdGg9IjExLjYyMTU2IiBoZWlnaHQ9Ijg3LjAzODYwNSIgeD0iMTQyLjE1ODY4IiB5PSIxNTMuNzg4NiIgcnk9IjUuNjEwNDk2Ii8+PHJlY3Qgc3R5bGU9ImZpbGw6I2VjNjM0ZCIgd2lkdGg9IjExLjI2OTU0IiBoZWlnaHQ9IjQyLjA5NzYyMiIgeD0iMTE5Ljc4OTI0IiB5PSIxNzYuMjU5MDkiIHJ5PSI1LjYxMDQ5NiIvPjwvZz48cGF0aCBzdHlsZT0iZmlsbDojZmZmZmZmIiBkPSJtIDIyMi4yNTEzMiw2OC40Nzk4OTcgcSAtMTIuNzk5OTgsMCAtMjEuNzU5OTcsOC45NTk5ODYgLTguOTU5OTgsOC45NTk5ODYgLTguOTU5OTgsMjEuNzU5OTY1IDAsMTIuNTg2NjQyIDguOTU5OTgsMjEuNTQ2NjMyIDQuMjY2NjYsNC40Nzk5OSA5LjgxMzMyLDYuODI2NjYgNS43NTk5OSwyLjEzMzMzIDExLjk0NjY1LDIuMTMzMzMgNi4xODY2NiwwIDExLjczMzMxLC0yLjEzMzMzIDUuNTQ2NjYsLTIuMzQ2NjcgMTAuMDI2NjUsLTYuODI2NjYgOC45NTk5OSwtOC45NTk5OSA4Ljk1OTk5LC0yMS41NDY2MzIgMCwtMTIuNzk5OTc5IC04Ljk1OTk5LC0yMS43NTk5NjUgLTkuMzg2NjUsLTguOTU5OTg2IC0yMS43NTk5NiwtOC45NTk5ODYgeiBtIDAsLTI1LjU5OTk1OSBxIDExLjczMzMxLDAgMjEuOTczMyw0LjQ3OTk5MyAxMC4yMzk5OCw0LjI2NjY2IDE3LjkxOTk3LDExLjk0NjY0OCA3LjY3OTk5LDcuNjc5OTg3IDExLjk0NjY1LDE3LjkxOTk3MSA0LjQ3OTk5LDEwLjIzOTk4NCA0LjQ3OTk5LDIxLjk3MzI5OCAwLDExLjUxOTk4MiAtNC40Nzk5OSwyMS43NTk5NjIgLTQuMjY2NjYsMTAuMjM5OTkgLTExLjk0NjY1LDE3LjkxOTk3IC03LjY3OTk5LDcuNjc5OTkgLTE3LjkxOTk3LDEyLjE1OTk5IC0xMC4yMzk5OSw0LjI2NjY2IC0yMS45NzMzLDQuMjY2NjYgLTExLjczMzMyLDAgLTIxLjk3MzMsLTQuMjY2NjYgLTEwLjIzOTk4LC00LjQ4IC0xNy45MTk5NywtMTIuMTU5OTkgLTcuNjc5OTksLTcuNjc5OTggLTEyLjE1OTk4LC0xNy45MTk5NyAtNC4yNjY2NiwtMTAuMjM5OTggLTQuMjY2NjYsLTIxLjc1OTk2MiAwLC0xMS43MzMzMTQgNC4yNjY2NiwtMjEuOTczMjk4IDQuNDc5OTksLTEwLjIzOTk4NCAxMi4xNTk5OCwtMTcuOTE5OTcxIDcuNjc5OTksLTcuNjc5OTg4IDE3LjkxOTk3LC0xMS45NDY2NDggMTAuMjM5OTgsLTQuNDc5OTkzIDIxLjk3MzMsLTQuNDc5OTkzIHogTSAzODMuMzE3OSwxMzguODc5NzggcSAtNy42Nzk5OSw3LjY3OTk5IC0xNy45MTk5NywxMi4xNTk5OSAtMTAuMjM5OTksNC4yNjY2NiAtMjEuOTczMyw0LjI2NjY2IC0xMS43MzMzMiwwIC0yMS45NzMzLC00LjI2NjY2IC0xMC4yMzk5OCwtNC40OCAtMTcuOTE5OTcsLTEyLjE1OTk5IC03LjY3OTk5LC03LjY3OTk4IC0xMi4xNTk5OCwtMTcuOTE5OTcgLTQuMjY2NjYsLTEwLjIzOTk4IC00LjI2NjY2LC0yMS43NTk5NjIgMCwtMTEuNzMzMzE0IDQuMjY2NjYsLTIxLjk3MzI5OCA0LjQ3OTk5LC0xMC4yMzk5ODQgMTIuMTU5OTgsLTE3LjkxOTk3MSA3LjY3OTk5LC03LjY3OTk4OCAxNy45MTk5NywtMTEuOTQ2NjQ4IDEwLjIzOTk4LC00LjQ3OTk5MyAyMS45NzMzLC00LjQ3OTk5MyAxMS43MzMzMSwwIDIxLjk3MzMsNC40Nzk5OTMgMTAuMjM5OTgsNC4yNjY2NiAxNy45MTk5NywxMS45NDY2NDggbCAtMTguMTMzMzEsMTguMTMzMzA0IHEgLTguOTU5OTgsLTguOTU5OTg2IC0yMS43NTk5NiwtOC45NTk5ODYgLTEyLjM3MzMyLDAgLTIxLjc1OTk3LDguOTU5OTg2IC04Ljk1OTk4LDguOTU5OTg2IC04Ljk1OTk4LDIxLjc1OTk2NSAwLDEyLjU4NjY0MiA4Ljk1OTk4LDIxLjU0NjYzMiA0LjQ4LDQuNDc5OTkgMTAuMDI2NjUsNi44MjY2NiA1LjU0NjY2LDIuMTMzMzMgMTEuNzMzMzIsMi4xMzMzMyAxMy4wMTMzMSwwIDIxLjc1OTk2LC04Ljk1OTk5IHogTSA0OTguMDkxMTQsNDUuNjUzMjY3IFYgMTUyLjUzMzEgSCA0NzIuNDkxMTggViA5OS4xOTk4NDggcSAwLC0xMi43OTk5NzkgLTguOTU5OTgsLTIxLjc1OTk2NSAtOC45NTk5OSwtOC45NTk5ODYgLTIxLjc1OTk3LC04Ljk1OTk4NiAtNi4xODY2NiwwIC0xMS45NDY2NSwyLjM0NjY2MyAtNS41NDY2NSwyLjM0NjY2MyAtOS44MTMzMSw2LjYxMzMyMyAtOC45NTk5OSw4Ljk1OTk4NiAtOC45NTk5OSwyMS43NTk5NjUgMCwxMi41ODY2NDIgOC45NTk5OSwyMS41NDY2MzIgNC4yNjY2Niw0LjQ3OTk5IDkuODEzMzEsNi44MjY2NiA1Ljc1OTk5LDIuMTMzMzMgMTEuOTQ2NjUsMi4xMzMzMyA2LjM5OTk5LDAgMTEuNTE5OTgsLTIuMTMzMzMgbCA5LjE3MzMyLDIyLjgyNjYzIHEgLTkuODEzMzIsNC45MDY2NiAtMjIuODI2NjMsNC45MDY2NiAtMTEuNzMzMzEsMCAtMjEuNzU5OTYsLTQuMjY2NjYgLTkuODEzMzIsLTQuNDggLTE3LjA2NjY0LC0xMi4xNTk5OSAtNy4yNTMzMiwtNy42Nzk5OCAtMTEuMzA2NjUsLTE3LjkxOTk3IC00LjA1MzMzLC0xMC4yMzk5OCAtNC4wNTMzMywtMjEuNzU5OTYyIDAsLTExLjczMzMxNCA0LjA1MzMzLC0yMS45NzMyOTggNC4wNTMzMywtMTAuMjM5OTg0IDExLjMwNjY1LC0xNy45MTk5NzEgNy4yNTMzMiwtNy42Nzk5ODggMTcuMDY2NjQsLTExLjk0NjY0OCAxMC4wMjY2NSwtNC40Nzk5OTMgMjEuNzU5OTYsLTQuNDc5OTkzIDEwLjQ1MzMyLDAgMTguNTU5OTcsMy4xOTk5OTUgOC4xMDY2NiwzLjE5OTk5NSAxNC4yOTMzMSw4LjEwNjY1NCB2IC04LjUzMzMyIHogTSA1MzguNjI0NDYsMTUyLjUzMzEgSCA1MTMuMDI0NSBWIDMuMjAwMDAxNSBoIDI1LjU5OTk2IFYgMTUyLjUzMzEgWiBtIDEyMC4xMDY1OSwtNDIuNjY2NiBxIDAsMTAuNDUzMzEgLTMuNDEzMzMsMTguOTg2NjMgLTMuNDEzMzIsOC4zMTk5OSAtOS44MTMzMSwxNC4yOTMzMSAtNi4xODY2Niw1Ljc2IC0xNS4xNDY2NSw4Ljk1OTk5IC04Ljk1OTk4LDMuMiAtMjAuMDUzMywzLjIgLTE3LjcwNjY0LDAgLTMxLjU3MzI4LC01LjU0NjY2IC0xMy44NjY2NCwtNS43NTk5OSAtMjIuODI2NjMsLTEzLjAxMzMyIGwgMTcuNzA2NjQsLTE3LjcwNjYzIHEgNy4wMzk5OSw2LjM5OTk5IDE1Ljc4NjY0LDkuODEzMzEgNS4zMzMzMiwyLjEzMzMzIDEwLjAyNjY1LDIuNzczMzMgNC42OTMzMywwLjY0IDcuNjc5OTksMC42NCA1LjU0NjY2LDAgMTAuMDI2NjUsLTEuMjggNC42OTMzMiwtMS40OTMzMyA4LjEwNjY1LC0zLjgzOTk5IDcuMjUzMzIsLTUuMzMzMzIgNy4yNTMzMiwtMTQuMDc5OTggMCwtNS4zMzMzMiAtMy44Mzk5OSwtOS41OTk5OCAtMi45ODY2NiwtMy40MTMzMyAtNy42Nzk5OSwtNS41NDY2NiAtMy44Mzk5OSwtMi4xMzMzMyAtOC4xMDY2NSwtMy40MTMzMjggLTQuMjY2NjYsLTEuMjc5OTk4IC03LjY3OTk5LC0yLjM0NjY2MyAtMS4wNjY2NiwtMC40MjY2NjYgLTEuOTIsLTAuNDI2NjY2IC0wLjg1MzMzLC0wLjIxMzMzMyAtMS40OTMzMywtMC42Mzk5OTkgLTAuNDI2NjYsMCAtMS4yNzk5OSwtMC40MjY2NjYgLTQuNDgsLTEuMjc5OTk3IC0xMy4wMTMzMiwtNC40Nzk5OTIgLTguMzE5OTgsLTMuMTk5OTk1IC0xNi42Mzk5NywtOC43NDY2NTMgLTE5LjQxMzMsLTEzLjAxMzMxMyAtMTkuNDEzMywtMzEuOTk5OTQ5IDAsLTEyLjU4NjY0NyA0LjI2NjY2LC0yMS4xMTk5NjYgNC40Nzk5OSwtOC43NDY2NTMgMTEuNTE5OTgsLTE0LjA3OTk3OCA3LjAzOTk5LC01LjU0NjY1NzUgMTUuNTczMzEsLTcuODkzMzIwNCBRIDU5MS41MzExNiw2LjYzNzU3MzNlLTYgNTk5Ljg1MTE1LDYuNjM3NTczM2UtNiBxIDE1LjM1OTk3LDAgMjUuODEzMjksMy42MjY2NjA4NjI0MjY3IDEwLjQ1MzMyLDMuNjI2NjYwOSAxNi42Mzk5Nyw3LjI1MzMyMTUgMy4yLDEuOTE5OTk3IDUuMzMzMzMsMy44Mzk5OTQgMi4zNDY2NiwxLjcwNjY2NCA0LjA1MzMyLDMuMTk5OTk1IGwgLTE4LjEzMzMsMTguMzQ2NjM3IHEgLTUuNzU5OTksLTUuNzU5OTkgLTExLjczMzMyLC04Ljc0NjY1MiAtOC45NTk5OCwtNC4yNjY2NiAtMTguNzczMywtNC4yNjY2NiAtNC4yNjY2NiwwIC04LjUzMzMyLDEuMDY2NjY1IC00LjI2NjY2LDEuMDY2NjY1IC03LjQ2NjY1LDIuNzczMzI5IC05LjM4NjY1LDUuNzU5OTkgLTkuMzg2NjUsMTUuMTQ2NjQyIDAsNS43NTk5OTEgMy44Mzk5OSw5LjgxMzMxOCAyLjc3MzMzLDMuMTk5OTk1IDcuNjc5OTksNS43NTk5OTEgNC4wNTMzMiwyLjEzMzMzIDguNTMzMzIsMy40MTMzMjggNC40Nzk5OSwxLjI3OTk5NyA4LjMxOTk4LDIuMzQ2NjYyIGwgMi41NiwwLjYzOTk5OSBxIDEuMDY2NjYsMC40MjY2NjYgNC4wNTMzMywxLjI3OTk5OCAyLjk4NjY2LDAuODUzMzMyIDcuMDM5OTgsMi41NTk5OTYgNC4wNTMzMywxLjcwNjY2NCA4Ljc0NjY2LDQuMDUzMzI3IDQuOTA2NjYsMi4zNDY2NjMgOS41OTk5OCw1LjU0NjY1OCAyMC42OTMzLDEzLjY1MzMxMSAyMC42OTMzLDMyLjIxMzI4NCB6IG0gNjkuMTE5NzcsNDIuNjY2NiBoIC0yMy40NjY2MyBxIC03LjI1MzMyLDAgLTEzLjY1MzMxLC0yLjc3MzMzIC02LjM5OTk5LC0yLjc3MzMzIC0xMS4wOTMzMiwtNy40NjY2NiAtNC42OTMzMiwtNC45MDY2NiAtNy40NjY2NSwtMTEuMzA2NjUgLTIuNzczMzMsLTYuMzk5OTkgLTIuNzczMzMsLTEzLjY1MzMxIFYgMjQuMzE5OTY4IGwgMjUuNTk5OTYsLTYuMzk5OTkgViA1OC42NjY1OCBoIDE0LjkzMzMxIGwgNi4zOTk5OSwyNS41OTk5NTkgaCAtMjEuMzMzMyB2IDMzLjA2NjYxMSBxIDAsNC4wNTMzMyAyLjc3MzMzLDYuODI2NjYgMi43NzMzMywyLjc3MzMzIDYuNjEzMzIsMi43NzMzMyBoIDE3LjA2NjY0IHogbSAxMTEuMzYsLTEwNi44Nzk4MzMgViAxNTIuNTMzMSBIIDgxMy42MTA4NiBWIDk5LjE5OTg0OCBxIDAsLTEyLjc5OTk3OSAtOC45NTk5OSwtMjEuNzU5OTY1IC04Ljk1OTk4LC04Ljk1OTk4NiAtMjEuNzU5OTYsLTguOTU5OTg2IC02LjE4NjY2LDAgLTExLjk0NjY1LDIuMzQ2NjYzIC01LjU0NjY2LDIuMzQ2NjYzIC05LjgxMzMyLDYuNjEzMzIzIC04Ljk1OTk4LDguOTU5OTg2IC04Ljk1OTk4LDIxLjc1OTk2NSAwLDEyLjU4NjY0MiA4Ljk1OTk4LDIxLjU0NjYzMiA0LjI2NjY2LDQuNDc5OTkgOS44MTMzMiw2LjgyNjY2IDUuNzU5OTksMi4xMzMzMyAxMS45NDY2NSwyLjEzMzMzIDYuMzk5OTksMCAxMS41MTk5OCwtMi4xMzMzMyBsIDkuMTczMzIsMjIuODI2NjMgcSAtOS44MTMzMiw0LjkwNjY2IC0yMi44MjY2Myw0LjkwNjY2IC0xMS43MzMzMiwwIC0yMS43NTk5NywtNC4yNjY2NiAtOS44MTMzMiwtNC40OCAtMTcuMDY2NjQsLTEyLjE1OTk5IC03LjI1MzMyLC03LjY3OTk4IC0xMS4zMDY2NSwtMTcuOTE5OTcgLTQuMDUzMzIsLTEwLjIzOTk4IC00LjA1MzMyLC0yMS43NTk5NjIgMCwtMTEuNzMzMzE0IDQuMDUzMzIsLTIxLjk3MzI5OCA0LjA1MzMzLC0xMC4yMzk5ODQgMTEuMzA2NjUsLTE3LjkxOTk3MSA3LjI1MzMyLC03LjY3OTk4OCAxNy4wNjY2NCwtMTEuOTQ2NjQ4IDEwLjAyNjY1LC00LjQ3OTk5MyAyMS43NTk5NywtNC40Nzk5OTMgMTAuNDUzMzEsMCAxOC41NTk5NywzLjE5OTk5NSA4LjEwNjY1LDMuMTk5OTk1IDE0LjI5MzMxLDguMTA2NjU0IHYgLTguNTMzMzIgeiBtIDEwNy45NDY1Miw5My4yMjY1MTMgcSAtNy42Nzk5OCw3LjY3OTk5IC0xNy45MTk5NywxMi4xNTk5OSAtMTAuMjM5OTgsNC4yNjY2NiAtMjEuOTczMjksNC4yNjY2NiAtMTEuNzMzMzIsMCAtMjEuOTczMywtNC4yNjY2NiAtMTAuMjM5OTksLTQuNDggLTE3LjkxOTk3LC0xMi4xNTk5OSAtNy42Nzk5OSwtNy42Nzk5OCAtMTIuMTU5OTgsLTE3LjkxOTk3IC00LjI2NjY2LC0xMC4yMzk5OCAtNC4yNjY2NiwtMjEuNzU5OTYyIDAsLTExLjczMzMxNCA0LjI2NjY2LC0yMS45NzMyOTggNC40Nzk5OSwtMTAuMjM5OTg0IDEyLjE1OTk4LC0xNy45MTk5NzEgNy42Nzk5OCwtNy42Nzk5ODggMTcuOTE5OTcsLTExLjk0NjY0OCAxMC4yMzk5OCwtNC40Nzk5OTMgMjEuOTczMywtNC40Nzk5OTMgMTEuNzMzMzEsMCAyMS45NzMyOSw0LjQ3OTk5MyAxMC4yMzk5OSw0LjI2NjY2IDE3LjkxOTk3LDExLjk0NjY0OCBsIC0xOC4xMzMzLDE4LjEzMzMwNCBxIC04Ljk1OTk5LC04Ljk1OTk4NiAtMjEuNzU5OTYsLTguOTU5OTg2IC0xMi4zNzMzMiwwIC0yMS43NTk5Nyw4Ljk1OTk4NiAtOC45NTk5OSw4Ljk1OTk4NiAtOC45NTk5OSwyMS43NTk5NjUgMCwxMi41ODY2NDIgOC45NTk5OSwyMS41NDY2MzIgNC40Nzk5OSw0LjQ3OTk5IDEwLjAyNjY1LDYuODI2NjYgNS41NDY2NiwyLjEzMzMzIDExLjczMzMyLDIuMTMzMzMgMTMuMDEzMzEsMCAyMS43NTk5NiwtOC45NTk5OSB6IE0gMTA1MS42OTA3LDQ1Ljg2NjYgOTk4LjM1NzQsOTkuMTk5ODQ4IDEwNTEuNjkwNywxNTIuNTMzMSBoIC0zNi4wNTMzIEwgOTgwLjIyNDEsMTE3LjExOTgyIFYgMTUyLjUzMzEgSCA5NTQuNjI0MTQgViAzLjIwMDAwMTUgSCA5ODAuMjI0MSBWIDgxLjA2NjU0NCBMIDEwMTUuNDI0LDQ1Ljg2NjYgaCAzNi4yNjY3IHoiLz48L3N2Zz4=", Ta = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDUxLjY5MDciIGhlaWdodD0iMTU1LjMwNjQxIiB2aWV3Qm94PSIwIDAgMTA1MS42OTA2IDE1NS4zMDY0MSI+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMC44ODczNDc3MSwwLDAsMC44OTExODY4MiwtNDIuNzE2NjMsLTEyMy44NTM4OCkiPjxwYXRoIHN0eWxlPSJmaWxsOiMyNDVCOEY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLXdpZHRoOjAuMzcyOTYyIiBkPSJtIDE2NS43NDM2OSwzMTIuMzQ1MTQgYyAtMy42NTkwNCwtMC45NTg2MSAtNi44OTEzMSwtMy4zNTM0OCAtOS4yMTQ5NCwtNi44Mjc1OSAtMS45MTIyNiwtMi44NTkwOCAtMi4zOTcwNSwtNC41Njk3MSAtMi4zOTcwNSwtOC40NTgzNiAwLC0zLjk5MjU0IDAuMDgyNCwtNC4yNzU3IDQuMjMwMTIsLTE0LjU0NTUzIDQuMDA5MjMsLTkuOTI2ODEgMTEuNzQ1OTcsLTI5LjYwODA0IDE0LjE3MjU0LC0zNi4wNTMwMiAxLjA1NTUsLTIuODAzNDQgNC42MzU3OSwtMTIuMDkwMiA3Ljk1NjE5LC0yMC42MzcyNSAzLjMyMDQsLTguNTQ3MDYgOS40NzI2NSwtMjQuNDkxMiAxMy42NzE2OCwtMzUuNDMxNDMgOS40MTE2MywtMjQuNTIxMjUgMTIuMTUxMjQsLTMxLjM5NjE0IDE0LjE5MjIyLC0zNS42MTQ1NSAxLjMzMjI5LC0yLjc1MzY0IDEuODc4NjcsLTMuNTkyNTggMy4zNDU0NiwtNS4xMzY3MiAxLjk2ODIyLC0yLjA3MjAzIDQuMDk4NCwtMy41NjI1MyA2LjQ2Njg3LC00LjUyNDkzIDEuMjcxMzgsLTAuNTE2NiAyLjI1NzYzLC0wLjY5MzAyIDQuODI2NzksLTAuODYzNCA1LjIxODMsLTAuMzQ2MDcgMjQuNTc0NjIsLTAuNTU0NTggMjQuOTg1MDgsLTAuMjY5MTQgMC40Mzc5NywwLjMwNDU2IDEuMTMxMzEsLTEuNTAwMjEgLTE1LjE1NDEyLDM5LjQ0Njc4IC0yMC42ODg0Miw1Mi4wMTc1NyAtMjguOTYxODUsNzIuOTgyNjUgLTM2Ljc1MTgxLDkzLjEzMDA0IC04LjQwMzU2LDIxLjczNDM0IC05LjM5NDk1LDI0LjIwNzY0IC0xMC43NjMxNiwyNi44NTE2NSAtMi4zNTQ1LDQuNTUgLTYuMzgyNCw3Ljc4MzMxIC0xMS4yNzY2MSw5LjA1MjA3IC0yLjA3MjU5LDAuNTM3MjkgLTYuMDAwMTUsMC40ODEwOSAtOC4yODkyNiwtMC4xMTg2MiB6Ii8+PHBhdGggc3R5bGU9ImZpbGw6IzI0NUI4RjtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MC4zNzI5NjIiIGQ9Im0gMTIyLjQ5MjIsMzEyLjU4OTE2IGMgLTQuMDc5NTYsLTAuNzMyNTggLTguNjUxMjMsLTMuOTM0MSAtMTEuMjMyNTgsLTcuODY2MTYgLTAuNzMwMDQsLTEuMTEyMDMgLTEuODU0NTksLTMuNDgzMjYgLTIuODQzMDksLTUuOTk0OTYgLTAuODk5NDMsLTIuMjg1NCAtNC43NjI4NywtMTIuMTU1MyAtOC41ODU0MDksLTIxLjkzMzEzIC0zLjgyMjU0LC05Ljc3NzgzIC04LjQ3OTA3MiwtMjEuNjM4MDMgLTEwLjM0Nzg1MiwtMjYuMzU2MDEgLTEuODY4NzgsLTQuNzE3OTcgLTcuNDA0OTY4LC0xOC44MTU5NSAtMTIuMzAyNjQ2LC0zMS4zMjg4NCAtNC44OTc2ODEsLTEyLjUxMjg4IC0xMC44NjE5MjMsLTI3LjcyOTc1IC0xMy4yNTM4NzYsLTMzLjgxNTI1IC0yLjM5MTk1MywtNi4wODU1IC01LjY2NTIxNiwtMTQuNDc3MTUgLTcuMjczOTE4LC0xOC42NDgxMSAtMS42MDg2OTgsLTQuMTcwOTcgLTQuMjM1OTUsLTEwLjg0ODI2IC01LjgzODMzNCwtMTQuODM4NDMgLTIuMDcyNzc5LC01LjE2MTUzIC0yLjgzNjUwOSwtNy4zMzE3NyAtMi42NDY4NjksLTcuNTIxNCAwLjM0NzkwMywtMC4zNDc5MSAyMC44Mjg4ODcsLTAuMzU5MTcgMjQuNzMyODc0LC0wLjAxMzYgNC42NDkyNTYsMC40MTE1NCA3LjAxMjg0OCwxLjUyODExIDEwLjUxNzU0Niw0Ljk2ODUyIDEuNDUwODE5LDEuNDI0MjEgMi4zOTgsMi42MDIxMyAyLjkwNDM3NSwzLjYxMTkgMS43OTg2OTMsMy41ODY3OCA4LjQxODEwMywyMC4wMjg2OSAxOC42NjYyNzksNDYuMzY1MDYgMy42OTgzOSw5LjUwNDMyIDExLjE2MDY3LDI4LjQxMzUxIDE2LjU4Mjg1LDQyLjAyMDQyIDE0LjYzNDMzLDM2LjcyNDY3IDE4Ljc0NzUzLDQ3LjEzNzY1IDE5LjUzOTc1LDQ5LjQ2Njg3IDIuMjI5ODEsNi41NTU4OSAxLjA1NTMzLDEyLjcwMjE0IC0zLjMwNDI2LDE3LjI5MTc2IC0zLjEwMzU5LDMuMjY3MzYgLTYuMjIwNDMsNC42MDg0NSAtMTEuMDIxNzgsNC43NDI0IC0xLjY0MzMxLDAuMDQ1OCAtMy41NzUxOCwtMC4wMjIxIC00LjI5MzA2LC0wLjE1MTAzIHoiLz48cmVjdCBzdHlsZT0iZmlsbDojZWM2MzRkIiB3aWR0aD0iMTEuMjY5NTQiIGhlaWdodD0iNDIuMDk3NjIyIiB4PSIxNjQuODgwMTQiIHk9IjE3Ni4yNTkwOSIgcnk9IjUuNjEwNDk2Ii8+PHJlY3Qgc3R5bGU9ImZpbGw6I2VjNjM0ZCIgd2lkdGg9IjExLjYyMTU2IiBoZWlnaHQ9Ijg3LjAzODYwNSIgeD0iMTQyLjE1ODY4IiB5PSIxNTMuNzg4NiIgcnk9IjUuNjEwNDk2Ii8+PHJlY3Qgc3R5bGU9ImZpbGw6I2VjNjM0ZCIgd2lkdGg9IjExLjI2OTU0IiBoZWlnaHQ9IjQyLjA5NzYyMiIgeD0iMTE5Ljc4OTI0IiB5PSIxNzYuMjU5MDkiIHJ5PSI1LjYxMDQ5NiIvPjwvZz48cGF0aCBzdHlsZT0iZmlsbDojZWM2MzRkIiBkPSJtIDIyMi4yNTEzMiw2OC40Nzk4OTcgcSAtMTIuNzk5OTgsMCAtMjEuNzU5OTcsOC45NTk5ODYgLTguOTU5OTgsOC45NTk5ODYgLTguOTU5OTgsMjEuNzU5OTY1IDAsMTIuNTg2NjQyIDguOTU5OTgsMjEuNTQ2NjMyIDQuMjY2NjYsNC40Nzk5OSA5LjgxMzMyLDYuODI2NjYgNS43NTk5OSwyLjEzMzMzIDExLjk0NjY1LDIuMTMzMzMgNi4xODY2NiwwIDExLjczMzMxLC0yLjEzMzMzIDUuNTQ2NjYsLTIuMzQ2NjcgMTAuMDI2NjUsLTYuODI2NjYgOC45NTk5OSwtOC45NTk5OSA4Ljk1OTk5LC0yMS41NDY2MzIgMCwtMTIuNzk5OTc5IC04Ljk1OTk5LC0yMS43NTk5NjUgLTkuMzg2NjUsLTguOTU5OTg2IC0yMS43NTk5NiwtOC45NTk5ODYgeiBtIDAsLTI1LjU5OTk1OSBxIDExLjczMzMxLDAgMjEuOTczMyw0LjQ3OTk5MyAxMC4yMzk5OCw0LjI2NjY2IDE3LjkxOTk3LDExLjk0NjY0OCA3LjY3OTk5LDcuNjc5OTg3IDExLjk0NjY1LDE3LjkxOTk3MSA0LjQ3OTk5LDEwLjIzOTk4NCA0LjQ3OTk5LDIxLjk3MzI5OCAwLDExLjUxOTk4MiAtNC40Nzk5OSwyMS43NTk5NjIgLTQuMjY2NjYsMTAuMjM5OTkgLTExLjk0NjY1LDE3LjkxOTk3IC03LjY3OTk5LDcuNjc5OTkgLTE3LjkxOTk3LDEyLjE1OTk5IC0xMC4yMzk5OSw0LjI2NjY2IC0yMS45NzMzLDQuMjY2NjYgLTExLjczMzMyLDAgLTIxLjk3MzMsLTQuMjY2NjYgLTEwLjIzOTk4LC00LjQ4IC0xNy45MTk5NywtMTIuMTU5OTkgLTcuNjc5OTksLTcuNjc5OTggLTEyLjE1OTk4LC0xNy45MTk5NyAtNC4yNjY2NiwtMTAuMjM5OTggLTQuMjY2NjYsLTIxLjc1OTk2MiAwLC0xMS43MzMzMTQgNC4yNjY2NiwtMjEuOTczMjk4IDQuNDc5OTksLTEwLjIzOTk4NCAxMi4xNTk5OCwtMTcuOTE5OTcxIDcuNjc5OTksLTcuNjc5OTg4IDE3LjkxOTk3LC0xMS45NDY2NDggMTAuMjM5OTgsLTQuNDc5OTkzIDIxLjk3MzMsLTQuNDc5OTkzIHogTSAzODMuMzE3OSwxMzguODc5NzggcSAtNy42Nzk5OSw3LjY3OTk5IC0xNy45MTk5NywxMi4xNTk5OSAtMTAuMjM5OTksNC4yNjY2NiAtMjEuOTczMyw0LjI2NjY2IC0xMS43MzMzMiwwIC0yMS45NzMzLC00LjI2NjY2IC0xMC4yMzk5OCwtNC40OCAtMTcuOTE5OTcsLTEyLjE1OTk5IC03LjY3OTk5LC03LjY3OTk4IC0xMi4xNTk5OCwtMTcuOTE5OTcgLTQuMjY2NjYsLTEwLjIzOTk4IC00LjI2NjY2LC0yMS43NTk5NjIgMCwtMTEuNzMzMzE0IDQuMjY2NjYsLTIxLjk3MzI5OCA0LjQ3OTk5LC0xMC4yMzk5ODQgMTIuMTU5OTgsLTE3LjkxOTk3MSA3LjY3OTk5LC03LjY3OTk4OCAxNy45MTk5NywtMTEuOTQ2NjQ4IDEwLjIzOTk4LC00LjQ3OTk5MyAyMS45NzMzLC00LjQ3OTk5MyAxMS43MzMzMSwwIDIxLjk3MzMsNC40Nzk5OTMgMTAuMjM5OTgsNC4yNjY2NiAxNy45MTk5NywxMS45NDY2NDggbCAtMTguMTMzMzEsMTguMTMzMzA0IHEgLTguOTU5OTgsLTguOTU5OTg2IC0yMS43NTk5NiwtOC45NTk5ODYgLTEyLjM3MzMyLDAgLTIxLjc1OTk3LDguOTU5OTg2IC04Ljk1OTk4LDguOTU5OTg2IC04Ljk1OTk4LDIxLjc1OTk2NSAwLDEyLjU4NjY0MiA4Ljk1OTk4LDIxLjU0NjYzMiA0LjQ4LDQuNDc5OTkgMTAuMDI2NjUsNi44MjY2NiA1LjU0NjY2LDIuMTMzMzMgMTEuNzMzMzIsMi4xMzMzMyAxMy4wMTMzMSwwIDIxLjc1OTk2LC04Ljk1OTk5IHogTSA0OTguMDkxMTQsNDUuNjUzMjY3IFYgMTUyLjUzMzEgSCA0NzIuNDkxMTggViA5OS4xOTk4NDggcSAwLC0xMi43OTk5NzkgLTguOTU5OTgsLTIxLjc1OTk2NSAtOC45NTk5OSwtOC45NTk5ODYgLTIxLjc1OTk3LC04Ljk1OTk4NiAtNi4xODY2NiwwIC0xMS45NDY2NSwyLjM0NjY2MyAtNS41NDY2NSwyLjM0NjY2MyAtOS44MTMzMSw2LjYxMzMyMyAtOC45NTk5OSw4Ljk1OTk4NiAtOC45NTk5OSwyMS43NTk5NjUgMCwxMi41ODY2NDIgOC45NTk5OSwyMS41NDY2MzIgNC4yNjY2Niw0LjQ3OTk5IDkuODEzMzEsNi44MjY2NiA1Ljc1OTk5LDIuMTMzMzMgMTEuOTQ2NjUsMi4xMzMzMyA2LjM5OTk5LDAgMTEuNTE5OTgsLTIuMTMzMzMgbCA5LjE3MzMyLDIyLjgyNjYzIHEgLTkuODEzMzIsNC45MDY2NiAtMjIuODI2NjMsNC45MDY2NiAtMTEuNzMzMzEsMCAtMjEuNzU5OTYsLTQuMjY2NjYgLTkuODEzMzIsLTQuNDggLTE3LjA2NjY0LC0xMi4xNTk5OSAtNy4yNTMzMiwtNy42Nzk5OCAtMTEuMzA2NjUsLTE3LjkxOTk3IC00LjA1MzMzLC0xMC4yMzk5OCAtNC4wNTMzMywtMjEuNzU5OTYyIDAsLTExLjczMzMxNCA0LjA1MzMzLC0yMS45NzMyOTggNC4wNTMzMywtMTAuMjM5OTg0IDExLjMwNjY1LC0xNy45MTk5NzEgNy4yNTMzMiwtNy42Nzk5ODggMTcuMDY2NjQsLTExLjk0NjY0OCAxMC4wMjY2NSwtNC40Nzk5OTMgMjEuNzU5OTYsLTQuNDc5OTkzIDEwLjQ1MzMyLDAgMTguNTU5OTcsMy4xOTk5OTUgOC4xMDY2NiwzLjE5OTk5NSAxNC4yOTMzMSw4LjEwNjY1NCB2IC04LjUzMzMyIHogTSA1MzguNjI0NDYsMTUyLjUzMzEgSCA1MTMuMDI0NSBWIDMuMjAwMDAxNSBoIDI1LjU5OTk2IFYgMTUyLjUzMzEgWiBtIDEyMC4xMDY1OSwtNDIuNjY2NiBxIDAsMTAuNDUzMzEgLTMuNDEzMzMsMTguOTg2NjMgLTMuNDEzMzIsOC4zMTk5OSAtOS44MTMzMSwxNC4yOTMzMSAtNi4xODY2Niw1Ljc2IC0xNS4xNDY2NSw4Ljk1OTk5IC04Ljk1OTk4LDMuMiAtMjAuMDUzMywzLjIgLTE3LjcwNjY0LDAgLTMxLjU3MzI4LC01LjU0NjY2IC0xMy44NjY2NCwtNS43NTk5OSAtMjIuODI2NjMsLTEzLjAxMzMyIGwgMTcuNzA2NjQsLTE3LjcwNjYzIHEgNy4wMzk5OSw2LjM5OTk5IDE1Ljc4NjY0LDkuODEzMzEgNS4zMzMzMiwyLjEzMzMzIDEwLjAyNjY1LDIuNzczMzMgNC42OTMzMywwLjY0IDcuNjc5OTksMC42NCA1LjU0NjY2LDAgMTAuMDI2NjUsLTEuMjggNC42OTMzMiwtMS40OTMzMyA4LjEwNjY1LC0zLjgzOTk5IDcuMjUzMzIsLTUuMzMzMzIgNy4yNTMzMiwtMTQuMDc5OTggMCwtNS4zMzMzMiAtMy44Mzk5OSwtOS41OTk5OCAtMi45ODY2NiwtMy40MTMzMyAtNy42Nzk5OSwtNS41NDY2NiAtMy44Mzk5OSwtMi4xMzMzMyAtOC4xMDY2NSwtMy40MTMzMjggLTQuMjY2NjYsLTEuMjc5OTk4IC03LjY3OTk5LC0yLjM0NjY2MyAtMS4wNjY2NiwtMC40MjY2NjYgLTEuOTIsLTAuNDI2NjY2IC0wLjg1MzMzLC0wLjIxMzMzMyAtMS40OTMzMywtMC42Mzk5OTkgLTAuNDI2NjYsMCAtMS4yNzk5OSwtMC40MjY2NjYgLTQuNDgsLTEuMjc5OTk3IC0xMy4wMTMzMiwtNC40Nzk5OTIgLTguMzE5OTgsLTMuMTk5OTk1IC0xNi42Mzk5NywtOC43NDY2NTMgLTE5LjQxMzMsLTEzLjAxMzMxMyAtMTkuNDEzMywtMzEuOTk5OTQ5IDAsLTEyLjU4NjY0NyA0LjI2NjY2LC0yMS4xMTk5NjYgNC40Nzk5OSwtOC43NDY2NTMgMTEuNTE5OTgsLTE0LjA3OTk3OCA3LjAzOTk5LC01LjU0NjY1NzUgMTUuNTczMzEsLTcuODkzMzIwNCBRIDU5MS41MzExNiw2LjYzNzU3MzNlLTYgNTk5Ljg1MTE1LDYuNjM3NTczM2UtNiBxIDE1LjM1OTk3LDAgMjUuODEzMjksMy42MjY2NjA4NjI0MjY3IDEwLjQ1MzMyLDMuNjI2NjYwOSAxNi42Mzk5Nyw3LjI1MzMyMTUgMy4yLDEuOTE5OTk3IDUuMzMzMzMsMy44Mzk5OTQgMi4zNDY2NiwxLjcwNjY2NCA0LjA1MzMyLDMuMTk5OTk1IGwgLTE4LjEzMzMsMTguMzQ2NjM3IHEgLTUuNzU5OTksLTUuNzU5OTkgLTExLjczMzMyLC04Ljc0NjY1MiAtOC45NTk5OCwtNC4yNjY2NiAtMTguNzczMywtNC4yNjY2NiAtNC4yNjY2NiwwIC04LjUzMzMyLDEuMDY2NjY1IC00LjI2NjY2LDEuMDY2NjY1IC03LjQ2NjY1LDIuNzczMzI5IC05LjM4NjY1LDUuNzU5OTkgLTkuMzg2NjUsMTUuMTQ2NjQyIDAsNS43NTk5OTEgMy44Mzk5OSw5LjgxMzMxOCAyLjc3MzMzLDMuMTk5OTk1IDcuNjc5OTksNS43NTk5OTEgNC4wNTMzMiwyLjEzMzMzIDguNTMzMzIsMy40MTMzMjggNC40Nzk5OSwxLjI3OTk5NyA4LjMxOTk4LDIuMzQ2NjYyIGwgMi41NiwwLjYzOTk5OSBxIDEuMDY2NjYsMC40MjY2NjYgNC4wNTMzMywxLjI3OTk5OCAyLjk4NjY2LDAuODUzMzMyIDcuMDM5OTgsMi41NTk5OTYgNC4wNTMzMywxLjcwNjY2NCA4Ljc0NjY2LDQuMDUzMzI3IDQuOTA2NjYsMi4zNDY2NjMgOS41OTk5OCw1LjU0NjY1OCAyMC42OTMzLDEzLjY1MzMxMSAyMC42OTMzLDMyLjIxMzI4NCB6IG0gNjkuMTE5NzcsNDIuNjY2NiBoIC0yMy40NjY2MyBxIC03LjI1MzMyLDAgLTEzLjY1MzMxLC0yLjc3MzMzIC02LjM5OTk5LC0yLjc3MzMzIC0xMS4wOTMzMiwtNy40NjY2NiAtNC42OTMzMiwtNC45MDY2NiAtNy40NjY2NSwtMTEuMzA2NjUgLTIuNzczMzMsLTYuMzk5OTkgLTIuNzczMzMsLTEzLjY1MzMxIFYgMjQuMzE5OTY4IGwgMjUuNTk5OTYsLTYuMzk5OTkgViA1OC42NjY1OCBoIDE0LjkzMzMxIGwgNi4zOTk5OSwyNS41OTk5NTkgaCAtMjEuMzMzMyB2IDMzLjA2NjYxMSBxIDAsNC4wNTMzMyAyLjc3MzMzLDYuODI2NjYgMi43NzMzMywyLjc3MzMzIDYuNjEzMzIsMi43NzMzMyBoIDE3LjA2NjY0IHogbSAxMTEuMzYsLTEwNi44Nzk4MzMgViAxNTIuNTMzMSBIIDgxMy42MTA4NiBWIDk5LjE5OTg0OCBxIDAsLTEyLjc5OTk3OSAtOC45NTk5OSwtMjEuNzU5OTY1IC04Ljk1OTk4LC04Ljk1OTk4NiAtMjEuNzU5OTYsLTguOTU5OTg2IC02LjE4NjY2LDAgLTExLjk0NjY1LDIuMzQ2NjYzIC01LjU0NjY2LDIuMzQ2NjYzIC05LjgxMzMyLDYuNjEzMzIzIC04Ljk1OTk4LDguOTU5OTg2IC04Ljk1OTk4LDIxLjc1OTk2NSAwLDEyLjU4NjY0MiA4Ljk1OTk4LDIxLjU0NjYzMiA0LjI2NjY2LDQuNDc5OTkgOS44MTMzMiw2LjgyNjY2IDUuNzU5OTksMi4xMzMzMyAxMS45NDY2NSwyLjEzMzMzIDYuMzk5OTksMCAxMS41MTk5OCwtMi4xMzMzMyBsIDkuMTczMzIsMjIuODI2NjMgcSAtOS44MTMzMiw0LjkwNjY2IC0yMi44MjY2Myw0LjkwNjY2IC0xMS43MzMzMiwwIC0yMS43NTk5NywtNC4yNjY2NiAtOS44MTMzMiwtNC40OCAtMTcuMDY2NjQsLTEyLjE1OTk5IC03LjI1MzMyLC03LjY3OTk4IC0xMS4zMDY2NSwtMTcuOTE5OTcgLTQuMDUzMzIsLTEwLjIzOTk4IC00LjA1MzMyLC0yMS43NTk5NjIgMCwtMTEuNzMzMzE0IDQuMDUzMzIsLTIxLjk3MzI5OCA0LjA1MzMzLC0xMC4yMzk5ODQgMTEuMzA2NjUsLTE3LjkxOTk3MSA3LjI1MzMyLC03LjY3OTk4OCAxNy4wNjY2NCwtMTEuOTQ2NjQ4IDEwLjAyNjY1LC00LjQ3OTk5MyAyMS43NTk5NywtNC40Nzk5OTMgMTAuNDUzMzEsMCAxOC41NTk5NywzLjE5OTk5NSA4LjEwNjY1LDMuMTk5OTk1IDE0LjI5MzMxLDguMTA2NjU0IHYgLTguNTMzMzIgeiBtIDEwNy45NDY1Miw5My4yMjY1MTMgcSAtNy42Nzk5OCw3LjY3OTk5IC0xNy45MTk5NywxMi4xNTk5OSAtMTAuMjM5OTgsNC4yNjY2NiAtMjEuOTczMjksNC4yNjY2NiAtMTEuNzMzMzIsMCAtMjEuOTczMywtNC4yNjY2NiAtMTAuMjM5OTksLTQuNDggLTE3LjkxOTk3LC0xMi4xNTk5OSAtNy42Nzk5OSwtNy42Nzk5OCAtMTIuMTU5OTgsLTE3LjkxOTk3IC00LjI2NjY2LC0xMC4yMzk5OCAtNC4yNjY2NiwtMjEuNzU5OTYyIDAsLTExLjczMzMxNCA0LjI2NjY2LC0yMS45NzMyOTggNC40Nzk5OSwtMTAuMjM5OTg0IDEyLjE1OTk4LC0xNy45MTk5NzEgNy42Nzk5OCwtNy42Nzk5ODggMTcuOTE5OTcsLTExLjk0NjY0OCAxMC4yMzk5OCwtNC40Nzk5OTMgMjEuOTczMywtNC40Nzk5OTMgMTEuNzMzMzEsMCAyMS45NzMyOSw0LjQ3OTk5MyAxMC4yMzk5OSw0LjI2NjY2IDE3LjkxOTk3LDExLjk0NjY0OCBsIC0xOC4xMzMzLDE4LjEzMzMwNCBxIC04Ljk1OTk5LC04Ljk1OTk4NiAtMjEuNzU5OTYsLTguOTU5OTg2IC0xMi4zNzMzMiwwIC0yMS43NTk5Nyw4Ljk1OTk4NiAtOC45NTk5OSw4Ljk1OTk4NiAtOC45NTk5OSwyMS43NTk5NjUgMCwxMi41ODY2NDIgOC45NTk5OSwyMS41NDY2MzIgNC40Nzk5OSw0LjQ3OTk5IDEwLjAyNjY1LDYuODI2NjYgNS41NDY2NiwyLjEzMzMzIDExLjczMzMyLDIuMTMzMzMgMTMuMDEzMzEsMCAyMS43NTk5NiwtOC45NTk5OSB6IE0gMTA1MS42OTA3LDQ1Ljg2NjYgOTk4LjM1NzQsOTkuMTk5ODQ4IDEwNTEuNjkwNywxNTIuNTMzMSBoIC0zNi4wNTMzIEwgOTgwLjIyNDEsMTE3LjExOTgyIFYgMTUyLjUzMzEgSCA5NTQuNjI0MTQgViAzLjIwMDAwMTUgSCA5ODAuMjI0MSBWIDgxLjA2NjU0NCBMIDEwMTUuNDI0LDQ1Ljg2NjYgaCAzNi4yNjY3IHoiLz48L3N2Zz4=", wa = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0Ni45NTU0ODJtbSIgaGVpZ2h0PSIzOS44NDUzMW1tIiB2aWV3Qm94PSIwIDAgNDYuOTU1NDgyIDM5Ljg0NTMxIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtODAuOTYyNSwtMTI4LjU4NzUpIj48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjIzNDc3NzQxLDAsMCwwLjIzNTc5MzE4LDY5LjY2MDM5Miw5NC42Njg4MzgpIj48cGF0aCBzdHlsZT0iZmlsbDojNTVhYmU1O2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDowLjM3Mjk2MiIgZD0ibSAxNjUuNzQzNjksMzEyLjM0NTE0IGMgLTMuNjU5MDQsLTAuOTU4NjEgLTYuODkxMzEsLTMuMzUzNDggLTkuMjE0OTQsLTYuODI3NTkgLTEuOTEyMjYsLTIuODU5MDggLTIuMzk3MDUsLTQuNTY5NzEgLTIuMzk3MDUsLTguNDU4MzYgMCwtMy45OTI1NCAwLjA4MjQsLTQuMjc1NyA0LjIzMDEyLC0xNC41NDU1MyA0LjAwOTIzLC05LjkyNjgxIDExLjc0NTk3LC0yOS42MDgwNCAxNC4xNzI1NCwtMzYuMDUzMDIgMS4wNTU1LC0yLjgwMzQ0IDQuNjM1NzksLTEyLjA5MDIgNy45NTYxOSwtMjAuNjM3MjUgMy4zMjA0LC04LjU0NzA2IDkuNDcyNjUsLTI0LjQ5MTIgMTMuNjcxNjgsLTM1LjQzMTQzIDkuNDExNjMsLTI0LjUyMTI1IDEyLjE1MTI0LC0zMS4zOTYxNCAxNC4xOTIyMiwtMzUuNjE0NTUgMS4zMzIyOSwtMi43NTM2NCAxLjg3ODY3LC0zLjU5MjU4IDMuMzQ1NDYsLTUuMTM2NzIgMS45NjgyMiwtMi4wNzIwMyA0LjA5ODQsLTMuNTYyNTMgNi40NjY4NywtNC41MjQ5MyAxLjI3MTM4LC0wLjUxNjYgMi4yNTc2MywtMC42OTMwMiA0LjgyNjc5LC0wLjg2MzQgNS4yMTgzLC0wLjM0NjA3IDI0LjU3NDYyLC0wLjU1NDU4IDI0Ljk4NTA4LC0wLjI2OTE0IDAuNDM3OTcsMC4zMDQ1NiAxLjEzMTMxLC0xLjUwMDIxIC0xNS4xNTQxMiwzOS40NDY3OCAtMjAuNjg4NDIsNTIuMDE3NTcgLTI4Ljk2MTg1LDcyLjk4MjY1IC0zNi43NTE4MSw5My4xMzAwNCAtOC40MDM1NiwyMS43MzQzNCAtOS4zOTQ5NSwyNC4yMDc2NCAtMTAuNzYzMTYsMjYuODUxNjUgLTIuMzU0NSw0LjU1IC02LjM4MjQsNy43ODMzMSAtMTEuMjc2NjEsOS4wNTIwNyAtMi4wNzI1OSwwLjUzNzI5IC02LjAwMDE1LDAuNDgxMDkgLTguMjg5MjYsLTAuMTE4NjIgeiIvPjxwYXRoIHN0eWxlPSJmaWxsOiM1NWFiZTU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLXdpZHRoOjAuMzcyOTYyIiBkPSJtIDEyMi40OTIyLDMxMi41ODkxNiBjIC00LjA3OTU2LC0wLjczMjU4IC04LjY1MTIzLC0zLjkzNDEgLTExLjIzMjU4LC03Ljg2NjE2IC0wLjczMDA0LC0xLjExMjAzIC0xLjg1NDU5LC0zLjQ4MzI2IC0yLjg0MzA5LC01Ljk5NDk2IC0wLjg5OTQzLC0yLjI4NTQgLTQuNzYyODcsLTEyLjE1NTMgLTguNTg1NDA5LC0yMS45MzMxMyAtMy44MjI1NCwtOS43Nzc4MyAtOC40NzkwNzIsLTIxLjYzODAzIC0xMC4zNDc4NTIsLTI2LjM1NjAxIC0xLjg2ODc4LC00LjcxNzk3IC03LjQwNDk2OCwtMTguODE1OTUgLTEyLjMwMjY0NiwtMzEuMzI4ODQgLTQuODk3NjgxLC0xMi41MTI4OCAtMTAuODYxOTIzLC0yNy43Mjk3NSAtMTMuMjUzODc2LC0zMy44MTUyNSAtMi4zOTE5NTMsLTYuMDg1NSAtNS42NjUyMTYsLTE0LjQ3NzE1IC03LjI3MzkxOCwtMTguNjQ4MTEgLTEuNjA4Njk4LC00LjE3MDk3IC00LjIzNTk1LC0xMC44NDgyNiAtNS44MzgzMzQsLTE0LjgzODQzIC0yLjA3Mjc3OSwtNS4xNjE1MyAtMi44MzY1MDksLTcuMzMxNzcgLTIuNjQ2ODY5LC03LjUyMTQgMC4zNDc5MDMsLTAuMzQ3OTEgMjAuODI4ODg3LC0wLjM1OTE3IDI0LjczMjg3NCwtMC4wMTM2IDQuNjQ5MjU2LDAuNDExNTQgNy4wMTI4NDgsMS41MjgxMSAxMC41MTc1NDYsNC45Njg1MiAxLjQ1MDgxOSwxLjQyNDIxIDIuMzk4LDIuNjAyMTMgMi45MDQzNzUsMy42MTE5IDEuNzk4NjkzLDMuNTg2NzggOC40MTgxMDMsMjAuMDI4NjkgMTguNjY2Mjc5LDQ2LjM2NTA2IDMuNjk4MzksOS41MDQzMiAxMS4xNjA2NywyOC40MTM1MSAxNi41ODI4NSw0Mi4wMjA0MiAxNC42MzQzMywzNi43MjQ2NyAxOC43NDc1Myw0Ny4xMzc2NSAxOS41Mzk3NSw0OS40NjY4NyAyLjIyOTgxLDYuNTU1ODkgMS4wNTUzMywxMi43MDIxNCAtMy4zMDQyNiwxNy4yOTE3NiAtMy4xMDM1OSwzLjI2NzM2IC02LjIyMDQzLDQuNjA4NDUgLTExLjAyMTc4LDQuNzQyNCAtMS42NDMzMSwwLjA0NTggLTMuNTc1MTgsLTAuMDIyMSAtNC4yOTMwNiwtMC4xNTEwMyB6Ii8+PHJlY3Qgc3R5bGU9ImZpbGw6I2Y3ODQ3MiIgd2lkdGg9IjExLjI2OTU0IiBoZWlnaHQ9IjQyLjA5NzYyMiIgeD0iMTY0Ljg4MDE0IiB5PSIxNzYuMjU5MDkiIHJ5PSI1LjYxMDQ5NiIvPjxyZWN0IHN0eWxlPSJmaWxsOiNmNzg0NzIiIHdpZHRoPSIxMS42MjE1NiIgaGVpZ2h0PSI4Ny4wMzg2MDUiIHg9IjE0Mi4xNTg2OCIgeT0iMTUzLjc4ODYiIHJ5PSI1LjYxMDQ5NiIvPjxyZWN0IHN0eWxlPSJmaWxsOiNmNzg0NzIiIHdpZHRoPSIxMS4yNjk1NCIgaGVpZ2h0PSI0Mi4wOTc2MjIiIHg9IjExOS43ODkyNCIgeT0iMTc2LjI1OTA5IiByeT0iNS42MTA0OTYiLz48L2c+PC9nPjwvc3ZnPg==", La = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0Ni45NTU0ODJtbSIgaGVpZ2h0PSIzOS44NDUzMW1tIiB2aWV3Qm94PSIwIDAgNDYuOTU1NDgyIDM5Ljg0NTMxIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtODAuOTYyNSwtMTI4LjU4NzUpIj48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjIzNDc3NzQxLDAsMCwwLjIzNTc5MzE4LDY5LjY2MDM5Miw5NC42Njg4MzgpIj48cGF0aCBzdHlsZT0iZmlsbDojMjQ1YjhmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDowLjM3Mjk2MiIgZD0ibSAxNjUuNzQzNjksMzEyLjM0NTE0IGMgLTMuNjU5MDQsLTAuOTU4NjEgLTYuODkxMzEsLTMuMzUzNDggLTkuMjE0OTQsLTYuODI3NTkgLTEuOTEyMjYsLTIuODU5MDggLTIuMzk3MDUsLTQuNTY5NzEgLTIuMzk3MDUsLTguNDU4MzYgMCwtMy45OTI1NCAwLjA4MjQsLTQuMjc1NyA0LjIzMDEyLC0xNC41NDU1MyA0LjAwOTIzLC05LjkyNjgxIDExLjc0NTk3LC0yOS42MDgwNCAxNC4xNzI1NCwtMzYuMDUzMDIgMS4wNTU1LC0yLjgwMzQ0IDQuNjM1NzksLTEyLjA5MDIgNy45NTYxOSwtMjAuNjM3MjUgMy4zMjA0LC04LjU0NzA2IDkuNDcyNjUsLTI0LjQ5MTIgMTMuNjcxNjgsLTM1LjQzMTQzIDkuNDExNjMsLTI0LjUyMTI1IDEyLjE1MTI0LC0zMS4zOTYxNCAxNC4xOTIyMiwtMzUuNjE0NTUgMS4zMzIyOSwtMi43NTM2NCAxLjg3ODY3LC0zLjU5MjU4IDMuMzQ1NDYsLTUuMTM2NzIgMS45NjgyMiwtMi4wNzIwMyA0LjA5ODQsLTMuNTYyNTMgNi40NjY4NywtNC41MjQ5MyAxLjI3MTM4LC0wLjUxNjYgMi4yNTc2MywtMC42OTMwMiA0LjgyNjc5LC0wLjg2MzQgNS4yMTgzLC0wLjM0NjA3IDI0LjU3NDYyLC0wLjU1NDU4IDI0Ljk4NTA4LC0wLjI2OTE0IDAuNDM3OTcsMC4zMDQ1NiAxLjEzMTMxLC0xLjUwMDIxIC0xNS4xNTQxMiwzOS40NDY3OCAtMjAuNjg4NDIsNTIuMDE3NTcgLTI4Ljk2MTg1LDcyLjk4MjY1IC0zNi43NTE4MSw5My4xMzAwNCAtOC40MDM1NiwyMS43MzQzNCAtOS4zOTQ5NSwyNC4yMDc2NCAtMTAuNzYzMTYsMjYuODUxNjUgLTIuMzU0NSw0LjU1IC02LjM4MjQsNy43ODMzMSAtMTEuMjc2NjEsOS4wNTIwNyAtMi4wNzI1OSwwLjUzNzI5IC02LjAwMDE1LDAuNDgxMDkgLTguMjg5MjYsLTAuMTE4NjIgeiIvPjxwYXRoIHN0eWxlPSJmaWxsOiMyNDViOGY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLXdpZHRoOjAuMzcyOTYyIiBkPSJtIDEyMi40OTIyLDMxMi41ODkxNiBjIC00LjA3OTU2LC0wLjczMjU4IC04LjY1MTIzLC0zLjkzNDEgLTExLjIzMjU4LC03Ljg2NjE2IC0wLjczMDA0LC0xLjExMjAzIC0xLjg1NDU5LC0zLjQ4MzI2IC0yLjg0MzA5LC01Ljk5NDk2IC0wLjg5OTQzLC0yLjI4NTQgLTQuNzYyODcsLTEyLjE1NTMgLTguNTg1NDA5LC0yMS45MzMxMyAtMy44MjI1NCwtOS43Nzc4MyAtOC40NzkwNzIsLTIxLjYzODAzIC0xMC4zNDc4NTIsLTI2LjM1NjAxIC0xLjg2ODc4LC00LjcxNzk3IC03LjQwNDk2OCwtMTguODE1OTUgLTEyLjMwMjY0NiwtMzEuMzI4ODQgLTQuODk3NjgxLC0xMi41MTI4OCAtMTAuODYxOTIzLC0yNy43Mjk3NSAtMTMuMjUzODc2LC0zMy44MTUyNSAtMi4zOTE5NTMsLTYuMDg1NSAtNS42NjUyMTYsLTE0LjQ3NzE1IC03LjI3MzkxOCwtMTguNjQ4MTEgLTEuNjA4Njk4LC00LjE3MDk3IC00LjIzNTk1LC0xMC44NDgyNiAtNS44MzgzMzQsLTE0LjgzODQzIC0yLjA3Mjc3OSwtNS4xNjE1MyAtMi44MzY1MDksLTcuMzMxNzcgLTIuNjQ2ODY5LC03LjUyMTQgMC4zNDc5MDMsLTAuMzQ3OTEgMjAuODI4ODg3LC0wLjM1OTE3IDI0LjczMjg3NCwtMC4wMTM2IDQuNjQ5MjU2LDAuNDExNTQgNy4wMTI4NDgsMS41MjgxMSAxMC41MTc1NDYsNC45Njg1MiAxLjQ1MDgxOSwxLjQyNDIxIDIuMzk4LDIuNjAyMTMgMi45MDQzNzUsMy42MTE5IDEuNzk4NjkzLDMuNTg2NzggOC40MTgxMDMsMjAuMDI4NjkgMTguNjY2Mjc5LDQ2LjM2NTA2IDMuNjk4MzksOS41MDQzMiAxMS4xNjA2NywyOC40MTM1MSAxNi41ODI4NSw0Mi4wMjA0MiAxNC42MzQzMywzNi43MjQ2NyAxOC43NDc1Myw0Ny4xMzc2NSAxOS41Mzk3NSw0OS40NjY4NyAyLjIyOTgxLDYuNTU1ODkgMS4wNTUzMywxMi43MDIxNCAtMy4zMDQyNiwxNy4yOTE3NiAtMy4xMDM1OSwzLjI2NzM2IC02LjIyMDQzLDQuNjA4NDUgLTExLjAyMTc4LDQuNzQyNCAtMS42NDMzMSwwLjA0NTggLTMuNTc1MTgsLTAuMDIyMSAtNC4yOTMwNiwtMC4xNTEwMyB6Ii8+PHJlY3Qgc3R5bGU9ImZpbGw6I2VjNjM0ZCIgd2lkdGg9IjExLjI2OTU0IiBoZWlnaHQ9IjQyLjA5NzYyMiIgeD0iMTY0Ljg4MDE0IiB5PSIxNzYuMjU5MDkiIHJ5PSI1LjYxMDQ5NiIvPjxyZWN0IHN0eWxlPSJmaWxsOiNlYzYzNGQiIHdpZHRoPSIxMS42MjE1NiIgaGVpZ2h0PSI4Ny4wMzg2MDUiIHg9IjE0Mi4xNTg2OCIgeT0iMTUzLjc4ODYiIHJ5PSI1LjYxMDQ5NiIvPjxyZWN0IHN0eWxlPSJmaWxsOiNlYzYzNGQiIHdpZHRoPSIxMS4yNjk1NCIgaGVpZ2h0PSI0Mi4wOTc2MjIiIHg9IjExOS43ODkyNCIgeT0iMTc2LjI1OTA5IiByeT0iNS42MTA0OTYiLz48L2c+PC9nPjwvc3ZnPg==";
|
|
9
|
+
function ka({ size: t = 16, sw: e = 1.5, children: n, style: s, ...r }) {
|
|
10
10
|
return /* @__PURE__ */ i("svg", { viewBox: "0 0 24 24", width: t, height: t, fill: "none", stroke: "currentColor", strokeWidth: e, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", style: { flex: "none", ...s }, ...r, children: n });
|
|
11
11
|
}
|
|
12
12
|
const q = {
|
|
@@ -53,12 +53,12 @@ const q = {
|
|
|
53
53
|
video: "m15.75 10.5 4.72-4.72a.75.75 0 0 1 1.28.53v11.38a.75.75 0 0 1-1.28.53l-4.72-4.72M4.5 18.75h9a2.25 2.25 0 0 0 2.25-2.25v-9a2.25 2.25 0 0 0-2.25-2.25h-9A2.25 2.25 0 0 0 2.25 7.5v9a2.25 2.25 0 0 0 2.25 2.25Z"
|
|
54
54
|
};
|
|
55
55
|
function de({ d: t, ...e }) {
|
|
56
|
-
return /* @__PURE__ */ i(
|
|
56
|
+
return /* @__PURE__ */ i(ka, { ...e, children: (Array.isArray(t) ? t : [t]).map((n) => /* @__PURE__ */ i("path", { d: n }, n)) });
|
|
57
57
|
}
|
|
58
|
-
function
|
|
58
|
+
function va({ size: t = 15 }) {
|
|
59
59
|
return /* @__PURE__ */ i("svg", { viewBox: "0 0 24 24", width: t, height: t, fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ i("rect", { x: "6", y: "6", width: "12", height: "12", rx: "2.5" }) });
|
|
60
60
|
}
|
|
61
|
-
function
|
|
61
|
+
function ri({ size: t = 13 }) {
|
|
62
62
|
return /* @__PURE__ */ i("svg", { viewBox: "0 0 24 24", width: t, height: t, fill: "currentColor", style: { marginLeft: 2 }, "aria-hidden": "true", children: /* @__PURE__ */ i("path", { d: "M7.5 5.6a1 1 0 0 1 1.52-.85l9.1 5.55a1 1 0 0 1 0 1.7l-9.1 5.55a1 1 0 0 1-1.52-.85V5.6Z" }) });
|
|
63
63
|
}
|
|
64
64
|
function ct({ size: t = 15, color: e = "currentColor", track: n = "rgba(127,127,127,.35)", sw: s }) {
|
|
@@ -80,23 +80,23 @@ function ct({ size: t = 15, color: e = "currentColor", track: n = "rgba(127,127,
|
|
|
80
80
|
}
|
|
81
81
|
);
|
|
82
82
|
}
|
|
83
|
-
function
|
|
83
|
+
function ja({ size: t = 12 }) {
|
|
84
84
|
return /* @__PURE__ */ f("svg", { viewBox: "0 0 24 24", width: t, height: t, fill: "currentColor", "aria-hidden": "true", children: [
|
|
85
85
|
/* @__PURE__ */ i("rect", { x: "6.5", y: "5", width: "3.75", height: "14", rx: "1.2" }),
|
|
86
86
|
/* @__PURE__ */ i("rect", { x: "13.75", y: "5", width: "3.75", height: "14", rx: "1.2" })
|
|
87
87
|
] });
|
|
88
88
|
}
|
|
89
89
|
function vn({ dark: t, height: e = 20, link: n = !0 }) {
|
|
90
|
-
const s = /* @__PURE__ */ i("img", { src: t ?
|
|
91
|
-
return n ? /* @__PURE__ */ i("a", { href:
|
|
90
|
+
const s = /* @__PURE__ */ i("img", { src: t ? ya : Ta, alt: "VocalStack", decoding: "sync", style: { height: e, width: "auto", display: "block" } });
|
|
91
|
+
return n ? /* @__PURE__ */ i("a", { href: si, style: { display: "block" }, children: s }) : s;
|
|
92
92
|
}
|
|
93
|
-
function
|
|
94
|
-
return /* @__PURE__ */ i("img", { src: t ?
|
|
93
|
+
function ii({ dark: t, size: e = 30 }) {
|
|
94
|
+
return /* @__PURE__ */ i("img", { src: t ? wa : La, alt: "VocalStack", style: { width: e, height: Math.round(e * 26 / 30 * 100) / 100, display: "block" } });
|
|
95
95
|
}
|
|
96
96
|
function Sr({ children: t, panel: e, inset: n, className: s = "", style: r }) {
|
|
97
97
|
return /* @__PURE__ */ i("div", { className: `vs-card${e ? " panel" : ""}${n ? " vs-card--inset" : ""} ${s}`, style: r, children: t });
|
|
98
98
|
}
|
|
99
|
-
function
|
|
99
|
+
function Nt({ checked: t, onChange: e, label: n, disabled: s }) {
|
|
100
100
|
return /* @__PURE__ */ i("button", { type: "button", role: "switch", "aria-checked": t, "aria-label": n, className: "vs-toggle", disabled: s, onClick: () => e(!t), children: /* @__PURE__ */ i("span", { className: "vs-toggle__knob" }) });
|
|
101
101
|
}
|
|
102
102
|
function as({ value: t, onChange: e, options: n, size: s, bordered: r = !0, fill: a }) {
|
|
@@ -104,16 +104,16 @@ function as({ value: t, onChange: e, options: n, size: s, bordered: r = !0, fill
|
|
|
104
104
|
return Qt(() => {
|
|
105
105
|
const u = o.current;
|
|
106
106
|
if (!u) return;
|
|
107
|
-
const
|
|
108
|
-
|
|
107
|
+
const h = u.querySelectorAll(".vs-switch__opt")[d];
|
|
108
|
+
h && c({ left: h.offsetLeft, width: h.offsetWidth });
|
|
109
109
|
}, [d, n.length]), Y(() => {
|
|
110
110
|
const u = o.current;
|
|
111
111
|
if (!u || typeof ResizeObserver > "u") return;
|
|
112
|
-
const
|
|
112
|
+
const h = new ResizeObserver(() => {
|
|
113
113
|
const M = u.querySelectorAll(".vs-switch__opt")[d];
|
|
114
114
|
M && c({ left: M.offsetLeft, width: M.offsetWidth });
|
|
115
115
|
});
|
|
116
|
-
return
|
|
116
|
+
return h.observe(u), () => h.disconnect();
|
|
117
117
|
}, [d]), /* @__PURE__ */ f("div", { ref: o, role: "tablist", className: `vs-switch${s === "sm" ? " vs-switch--sm" : ""}${r ? "" : " vs-switch--borderless"}${a ? " vs-switch--fill" : ""}`, children: [
|
|
118
118
|
l && /* @__PURE__ */ i("span", { className: "vs-switch__thumb", style: { left: l.left, width: l.width }, "aria-hidden": "true" }),
|
|
119
119
|
n.map((u) => /* @__PURE__ */ f("button", { type: "button", role: "tab", "aria-selected": u.value === t, className: "vs-switch__opt", onClick: () => e(u.value), children: [
|
|
@@ -122,7 +122,7 @@ function as({ value: t, onChange: e, options: n, size: s, bordered: r = !0, fill
|
|
|
122
122
|
] }, u.value))
|
|
123
123
|
] });
|
|
124
124
|
}
|
|
125
|
-
function
|
|
125
|
+
function za({ children: t, onClick: e, label: n, size: s, variant: r, bordered: a = !0, active: o, title: l }) {
|
|
126
126
|
return /* @__PURE__ */ i("button", { type: "button", className: `vs-icon-btn${s === "sm" ? " vs-icon-btn--sm" : ""}${r === "primary" ? " vs-icon-btn--primary" : ""}${o ? " vs-icon-btn--primary" : ""}${a ? "" : " vs-icon-btn--borderless"}`, onClick: e, "aria-label": n, title: l ?? n, children: t });
|
|
127
127
|
}
|
|
128
128
|
function wn({ flag: t, code: e, label: n, onClick: s, variant: r, block: a, bordered: o = !0, size: l, style: c }) {
|
|
@@ -133,7 +133,7 @@ function wn({ flag: t, code: e, label: n, onClick: s, variant: r, block: a, bord
|
|
|
133
133
|
/* @__PURE__ */ i(de, { d: q.chevronDown, size: 13, className: "vs-lang-chip__chevron", style: { color: r === "primary" ? "currentColor" : "var(--vs-text-muted)" } })
|
|
134
134
|
] });
|
|
135
135
|
}
|
|
136
|
-
function
|
|
136
|
+
function Ia({ value: t, label: e = "Copy", onCopied: n }) {
|
|
137
137
|
const [s, r] = O(!1), a = async () => {
|
|
138
138
|
try {
|
|
139
139
|
await navigator.clipboard.writeText(t), r(!0), n == null || n(), setTimeout(() => r(!1), 1400);
|
|
@@ -158,7 +158,7 @@ function za({ value: t, label: e = "Copy", onCopied: n }) {
|
|
|
158
158
|
}
|
|
159
159
|
);
|
|
160
160
|
}
|
|
161
|
-
function
|
|
161
|
+
function Oa(t, e) {
|
|
162
162
|
Qt(() => {
|
|
163
163
|
const n = t.current, s = window.visualViewport;
|
|
164
164
|
if (!e || !n || !s) return;
|
|
@@ -189,21 +189,21 @@ function os({ children: t, ms: e = 220 }) {
|
|
|
189
189
|
clearTimeout(c), a(Math.min(M, d())), M > d() && (c = setTimeout(() => a(M), e));
|
|
190
190
|
};
|
|
191
191
|
if (u(), typeof ResizeObserver > "u") return () => clearTimeout(c);
|
|
192
|
-
const
|
|
193
|
-
return
|
|
194
|
-
|
|
192
|
+
const h = new ResizeObserver(u);
|
|
193
|
+
return h.observe(o), () => {
|
|
194
|
+
h.disconnect(), clearTimeout(c);
|
|
195
195
|
};
|
|
196
196
|
}, [e]), /* @__PURE__ */ i("div", { ref: n, style: { height: r ?? void 0, overflow: "clip", transition: r == null ? void 0 : `height ${e}ms cubic-bezier(.32,.72,0,1)` }, children: /* @__PURE__ */ i("div", { ref: s, children: t }) });
|
|
197
197
|
}
|
|
198
198
|
function $t({ open: t, onClose: e, title: n, titleNode: s, note: r, doneLabel: a = "Done", children: o, drawer: l = !1, header: c, kind: d, sticky: u = !1 }) {
|
|
199
|
-
const
|
|
200
|
-
return
|
|
199
|
+
const h = z(null);
|
|
200
|
+
return Oa(h, t), Y(() => {
|
|
201
201
|
if (!t) return;
|
|
202
202
|
const M = (N) => {
|
|
203
203
|
N.key === "Escape" && e();
|
|
204
204
|
};
|
|
205
205
|
return window.addEventListener("keydown", M), () => window.removeEventListener("keydown", M);
|
|
206
|
-
}, [t, e]), t ? /* @__PURE__ */ i("div", { ref:
|
|
206
|
+
}, [t, e]), t ? /* @__PURE__ */ i("div", { ref: h, className: `vs-sheet-scrim${l ? " drawer" : ""}${u ? " vs-sheet-scrim--sticky" : ""}`, onClick: u ? void 0 : e, children: /* @__PURE__ */ f("div", { className: `vs-sheet${d ? ` vs-sheet--${d}` : ""}`, role: "dialog", "aria-modal": "true", "aria-label": n, onClick: (M) => M.stopPropagation(), children: [
|
|
207
207
|
/* @__PURE__ */ i("div", { className: "vs-sheet__grip" }),
|
|
208
208
|
/* @__PURE__ */ f("div", { className: "vs-sheet__head", children: [
|
|
209
209
|
s ?? /* @__PURE__ */ i("span", { className: "vs-sheet__title", children: n }),
|
|
@@ -214,7 +214,7 @@ function $t({ open: t, onClose: e, title: n, titleNode: s, note: r, doneLabel: a
|
|
|
214
214
|
/* @__PURE__ */ i("div", { className: "vs-sheet__body", children: o })
|
|
215
215
|
] }) }) : null;
|
|
216
216
|
}
|
|
217
|
-
|
|
217
|
+
ei(0);
|
|
218
218
|
function ls({ children: t, style: e, className: n }) {
|
|
219
219
|
return /* @__PURE__ */ i("div", { className: n ? `eyebrow ${n}` : "eyebrow", style: e, children: t });
|
|
220
220
|
}
|
|
@@ -222,7 +222,7 @@ let mn = null;
|
|
|
222
222
|
function Bc(t) {
|
|
223
223
|
mn = t;
|
|
224
224
|
}
|
|
225
|
-
function
|
|
225
|
+
function ai(t) {
|
|
226
226
|
mn == null || mn(t);
|
|
227
227
|
}
|
|
228
228
|
function jn() {
|
|
@@ -232,11 +232,11 @@ function jn() {
|
|
|
232
232
|
return "ogg";
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
|
-
function
|
|
235
|
+
function Ca(t = {}) {
|
|
236
236
|
const e = new URLSearchParams();
|
|
237
237
|
return t.media ? e.set("media", t.media) : t.accessToken && e.set("access_token", t.accessToken), t.listenerToken && e.set("listenerToken", t.listenerToken), t.shareCode && e.set("shareCode", t.shareCode), e.toString();
|
|
238
238
|
}
|
|
239
|
-
async function
|
|
239
|
+
async function ba(t) {
|
|
240
240
|
try {
|
|
241
241
|
const e = await fetch(t, { redirect: "manual", headers: { accept: "application/json" } });
|
|
242
242
|
if (e.type === "opaqueredirect" || e.ok || e.status >= 300 && e.status < 400) return null;
|
|
@@ -251,7 +251,7 @@ async function Ca(t) {
|
|
|
251
251
|
return null;
|
|
252
252
|
}
|
|
253
253
|
}
|
|
254
|
-
function
|
|
254
|
+
function xa(t, e, n = {}) {
|
|
255
255
|
const s = new URLSearchParams({ kind: "delivery", format: jn() });
|
|
256
256
|
return n.accessToken && s.set("access_token", n.accessToken), n.listenerToken && s.set("listenerToken", n.listenerToken), n.shareCode && s.set("shareCode", n.shareCode), `${t}/v1/recordings/${e}/audio?${s}`;
|
|
257
257
|
}
|
|
@@ -263,42 +263,42 @@ function qn(t, e, n, s = {}) {
|
|
|
263
263
|
const r = new URLSearchParams({ kind: n });
|
|
264
264
|
return n === "delivery" && r.set("format", "mp3"), s.accessToken && r.set("access_token", s.accessToken), s.listenerToken && r.set("listenerToken", s.listenerToken), s.shareCode && r.set("shareCode", s.shareCode), `${t}/v1/recordings/${e}/audio?${r}`;
|
|
265
265
|
}
|
|
266
|
-
function
|
|
267
|
-
return
|
|
266
|
+
function Da(t, e, n, s, r = {}) {
|
|
267
|
+
return Sa(t, e, n, s, "mp3", r);
|
|
268
268
|
}
|
|
269
|
-
function
|
|
269
|
+
function Sa(t, e, n, s, r, a) {
|
|
270
270
|
const o = new URLSearchParams({ kind: "voice", lang: n, format: r });
|
|
271
271
|
return s && o.set("voice", s), a.accessToken && o.set("access_token", a.accessToken), a.listenerToken && o.set("listenerToken", a.listenerToken), a.shareCode && o.set("shareCode", a.shareCode), `${t}/v1/recordings/${e}/audio?${o}`;
|
|
272
272
|
}
|
|
273
|
-
function
|
|
273
|
+
function Aa(t, e = !0) {
|
|
274
274
|
const n = (t == null ? void 0 : t.code) ?? 0, s = n === 2 ? "the download failed" : n === 3 ? "this browser could not decode it" : n === 4 ? "the file is not available, or this browser cannot play it" : n === 1 ? "the load was stopped" : "something went wrong";
|
|
275
|
-
return e &&
|
|
275
|
+
return e && oi(t), `The audio could not be played: ${s}.`;
|
|
276
276
|
}
|
|
277
|
-
function
|
|
277
|
+
function oi(t) {
|
|
278
278
|
const e = (t == null ? void 0 : t.code) ?? 0;
|
|
279
|
-
e !== 1 &&
|
|
279
|
+
e !== 1 && ai(new Error(`media error ${e}${t != null && t.message ? `: ${t.message}` : ""}`));
|
|
280
280
|
}
|
|
281
|
-
const
|
|
282
|
-
function
|
|
281
|
+
const Ea = 3e3;
|
|
282
|
+
function Ya(t, e, n) {
|
|
283
283
|
if (t !== 503) return null;
|
|
284
284
|
const s = e == null || e.trim() === "" ? NaN : Number(e);
|
|
285
285
|
if (Number.isFinite(s)) return Math.min(15e3, Math.max(1e3, s * 1e3));
|
|
286
286
|
const r = n;
|
|
287
|
-
return r && (r.retryable === !0 || r.code === "engine_unavailable") ?
|
|
287
|
+
return r && (r.retryable === !0 || r.code === "engine_unavailable") ? Ea : null;
|
|
288
288
|
}
|
|
289
|
-
class
|
|
289
|
+
class _a {
|
|
290
290
|
constructor(e = {}) {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
291
|
+
he(this, "entries", /* @__PURE__ */ new Map());
|
|
292
|
+
he(this, "wanted", []);
|
|
293
|
+
he(this, "used", []);
|
|
294
|
+
he(this, "fetcher");
|
|
295
|
+
he(this, "concurrency");
|
|
296
|
+
he(this, "keep");
|
|
297
|
+
he(this, "retryMs");
|
|
298
|
+
he(this, "now");
|
|
299
|
+
he(this, "toUrl");
|
|
300
|
+
he(this, "revoke");
|
|
301
|
+
he(this, "onReady", () => {
|
|
302
302
|
});
|
|
303
303
|
this.fetcher = e.fetcher ?? (typeof fetch == "function" ? (n, s) => fetch(n, { signal: s }) : null), this.concurrency = Math.max(1, e.concurrency ?? 2), this.keep = Math.max(2, e.keep ?? 24), this.retryMs = e.retryMs ?? 4e3, this.now = e.now ?? (() => Date.now()), this.toUrl = e.toUrl ?? ((n) => URL.createObjectURL(n)), this.revoke = e.revoke ?? ((n) => {
|
|
304
304
|
try {
|
|
@@ -379,63 +379,63 @@ class Ya {
|
|
|
379
379
|
}).catch(() => s(n.signal.aborted ? null : { state: "failed", at: this.now() }));
|
|
380
380
|
}
|
|
381
381
|
}
|
|
382
|
-
const
|
|
383
|
-
function
|
|
384
|
-
if (!
|
|
382
|
+
const li = { video: !1 };
|
|
383
|
+
function ci(t) {
|
|
384
|
+
if (!li.video) return new Audio(t);
|
|
385
385
|
const e = document.createElement("video");
|
|
386
386
|
return e.playsInline = !0, t && (e.src = t), e;
|
|
387
387
|
}
|
|
388
|
-
class
|
|
388
|
+
class ui extends Error {
|
|
389
389
|
constructor() {
|
|
390
390
|
super("The voice did not start in time."), this.name = "VoiceNotStarted";
|
|
391
391
|
}
|
|
392
392
|
}
|
|
393
393
|
const nt = class nt {
|
|
394
394
|
constructor() {
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
395
|
+
he(this, "el", null);
|
|
396
|
+
he(this, "clips", /* @__PURE__ */ new Map());
|
|
397
|
+
he(this, "order", []);
|
|
398
|
+
he(this, "current", null);
|
|
399
|
+
he(this, "currentPart", 0);
|
|
400
|
+
he(this, "partBase", 0);
|
|
401
|
+
he(this, "within", null);
|
|
402
|
+
he(this, "playing", !1);
|
|
403
|
+
he(this, "muted", !1);
|
|
404
|
+
he(this, "rate", 1);
|
|
405
|
+
he(this, "volume", 1);
|
|
406
|
+
he(this, "finite", !1);
|
|
407
|
+
he(this, "onSentence", () => {
|
|
408
408
|
});
|
|
409
|
-
|
|
409
|
+
he(this, "onWaiting", () => {
|
|
410
410
|
});
|
|
411
|
-
|
|
411
|
+
he(this, "onStarting", () => {
|
|
412
412
|
});
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
413
|
+
he(this, "speakable", () => !0);
|
|
414
|
+
he(this, "coming", () => !1);
|
|
415
|
+
he(this, "gapBefore", () => 0);
|
|
416
|
+
he(this, "flow", !1);
|
|
417
|
+
he(this, "silentSpan", () => null);
|
|
418
|
+
he(this, "lastDone", null);
|
|
419
|
+
he(this, "rested", !1);
|
|
420
|
+
he(this, "rest", null);
|
|
421
|
+
he(this, "sequence", []);
|
|
422
|
+
he(this, "seqAt", /* @__PURE__ */ new Map());
|
|
423
|
+
he(this, "spoken", /* @__PURE__ */ new Set());
|
|
424
|
+
he(this, "lastRead", null);
|
|
425
|
+
he(this, "started", !1);
|
|
426
|
+
he(this, "awaiting", null);
|
|
427
|
+
he(this, "waitTimer", null);
|
|
428
|
+
he(this, "onError", () => {
|
|
429
429
|
});
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
430
|
+
he(this, "floor", 0);
|
|
431
|
+
he(this, "loading", null);
|
|
432
|
+
he(this, "readAhead", 0);
|
|
433
|
+
he(this, "readAheadS", 0);
|
|
434
|
+
he(this, "prefetch", new _a());
|
|
435
|
+
he(this, "warmed", /* @__PURE__ */ new Set());
|
|
436
|
+
he(this, "startingSince", /* @__PURE__ */ new Map());
|
|
437
|
+
he(this, "retries", /* @__PURE__ */ new Map());
|
|
438
|
+
he(this, "retryTimer", null);
|
|
439
439
|
}
|
|
440
440
|
setSequence(e) {
|
|
441
441
|
e.length === this.sequence.length && e.every((n, s) => this.sequence[s] === n) || (this.sequence = e, this.seqAt = new Map(e.map((n, s) => [n, s])), this.order.sort((n, s) => this.rank(n) - this.rank(s)));
|
|
@@ -695,16 +695,16 @@ const nt = class nt {
|
|
|
695
695
|
let o = 0;
|
|
696
696
|
if (a)
|
|
697
697
|
if (this.within = null, s.total > 1) {
|
|
698
|
-
const c = Array.from({ length: s.total }, (u,
|
|
698
|
+
const c = Array.from({ length: s.total }, (u, h) => {
|
|
699
699
|
var M;
|
|
700
|
-
return ((M = s.got.get(
|
|
701
|
-
}), d = c.reduce((u,
|
|
700
|
+
return ((M = s.got.get(h)) == null ? void 0 : M.durationS) ?? 0;
|
|
701
|
+
}), d = c.reduce((u, h) => u + h, 0);
|
|
702
702
|
if (d > 0 && c.every((u) => u > 0)) {
|
|
703
703
|
const u = a.frac * d;
|
|
704
|
-
let
|
|
705
|
-
for (;
|
|
706
|
-
if (o = -(u - M),
|
|
707
|
-
this.partBase = M, this.startPartAt(e,
|
|
704
|
+
let h = 0, M = 0;
|
|
705
|
+
for (; h < c.length - 1 && M + c[h] <= u; ) M += c[h++];
|
|
706
|
+
if (o = -(u - M), h !== n) {
|
|
707
|
+
this.partBase = M, this.startPartAt(e, h, u - M);
|
|
708
708
|
return;
|
|
709
709
|
}
|
|
710
710
|
}
|
|
@@ -737,9 +737,9 @@ const nt = class nt {
|
|
|
737
737
|
if (this.rank(c) <= l || !this.speakable(c)) continue;
|
|
738
738
|
const d = this.clips.get(c);
|
|
739
739
|
if (d)
|
|
740
|
-
for (const u of [...d.got.keys()].sort((
|
|
741
|
-
const
|
|
742
|
-
s.push(
|
|
740
|
+
for (const u of [...d.got.keys()].sort((h, M) => h - M)) {
|
|
741
|
+
const h = d.got.get(u);
|
|
742
|
+
s.push(h), r += h.durationS || 0;
|
|
743
743
|
}
|
|
744
744
|
}
|
|
745
745
|
return s;
|
|
@@ -767,7 +767,7 @@ const nt = class nt {
|
|
|
767
767
|
const l = await fetch(n, { method: "GET" });
|
|
768
768
|
r = l.ok, s = l.status === 202 || l.status === 503 || l.status === 429;
|
|
769
769
|
const c = l.status === 503 ? await l.json().catch(() => null) : null;
|
|
770
|
-
a =
|
|
770
|
+
a = Ya(l.status, l.headers.get("Retry-After"), c);
|
|
771
771
|
} catch {
|
|
772
772
|
s = !0;
|
|
773
773
|
}
|
|
@@ -788,7 +788,7 @@ const nt = class nt {
|
|
|
788
788
|
}, a);
|
|
789
789
|
return;
|
|
790
790
|
}
|
|
791
|
-
this.startingSince.delete(e), this.playing = !1, this.onStarting(null), this.onWaiting(null), this.onError(new
|
|
791
|
+
this.startingSince.delete(e), this.playing = !1, this.onStarting(null), this.onWaiting(null), this.onError(new ui()), this.onSentence(e);
|
|
792
792
|
return;
|
|
793
793
|
}
|
|
794
794
|
const o = (this.retries.get(e) ?? 0) + 1;
|
|
@@ -816,7 +816,7 @@ const nt = class nt {
|
|
|
816
816
|
}
|
|
817
817
|
element() {
|
|
818
818
|
if (this.el) return this.el;
|
|
819
|
-
const e =
|
|
819
|
+
const e = ci();
|
|
820
820
|
e.preload = "auto";
|
|
821
821
|
const n = e;
|
|
822
822
|
return n.dataset && (n.dataset.vsVoice = "1"), e.playsInline = !0, e.onplaying = () => {
|
|
@@ -868,44 +868,44 @@ const nt = class nt {
|
|
|
868
868
|
this.onWaiting(null), this.onStarting(null), this.playing = !1, this.current = null, this.currentPart = 0, this.partBase = 0, this.loading = null, this.floor = 0, this.lastRead = null, this.started = !1, this.stopWaiting(), this.spoken.clear(), this.retryTimer && (clearTimeout(this.retryTimer), this.retryTimer = null), this.retries.clear(), this.prefetch.clear(), e && (e.pause(), e.removeAttribute("src"), e.load()), this.el = null;
|
|
869
869
|
}
|
|
870
870
|
};
|
|
871
|
-
|
|
871
|
+
he(nt, "WAIT_MS", 15e3), he(nt, "START_WAIT_MS", 4e3), he(nt, "COMING_MS", 12e4), he(nt, "SKEW_LINES", 3), he(nt, "RETRIES", 4), he(nt, "RETRY_MS", 1200), he(nt, "STARTING_MS", 3e5);
|
|
872
872
|
let cs = nt;
|
|
873
|
-
function
|
|
873
|
+
function di(t, e) {
|
|
874
874
|
return e == null ? t.find((n) => !n.voiceKey) ?? null : t.find((n) => n.voiceKey === e) ?? t.find((n) => !n.voiceKey && n.voice === e) ?? null;
|
|
875
875
|
}
|
|
876
|
-
function
|
|
876
|
+
function Ua(t, e, n, s = {}, r) {
|
|
877
877
|
if (!t) return [];
|
|
878
878
|
const a = r != null && r.length ? r : t.clips;
|
|
879
879
|
if (!(a != null && a.length)) return [];
|
|
880
|
-
const o =
|
|
880
|
+
const o = Ca(s), l = o ? `&${o}` : "", c = t.voiceKey ? `&voice=${encodeURIComponent(t.voiceKey)}` : "";
|
|
881
881
|
return a.flatMap((d) => {
|
|
882
882
|
var M, N;
|
|
883
|
-
const u = (M = t.clipRev) == null ? void 0 : M[String(d)],
|
|
884
|
-
return Array.from({ length:
|
|
883
|
+
const u = (M = t.clipRev) == null ? void 0 : M[String(d)], h = Math.max(1, ((N = t.clipParts) == null ? void 0 : N[String(d)]) ?? 1);
|
|
884
|
+
return Array.from({ length: h }, (m, w) => {
|
|
885
885
|
var v;
|
|
886
886
|
return {
|
|
887
887
|
sentenceId: d,
|
|
888
888
|
lang: t.lang,
|
|
889
889
|
src: `${n}/v1/recordings/${e}/voice/${d}?lang=${encodeURIComponent(t.lang)}${c}&format=${jn()}${w > 0 ? `&part=${w}` : ""}${u ? `&v=${encodeURIComponent(u)}` : ""}${l}`,
|
|
890
|
-
durationS:
|
|
890
|
+
durationS: h === 1 ? ((v = t.clipDur) == null ? void 0 : v[String(d)]) ?? 0 : 0,
|
|
891
891
|
voice: t.voice ?? null,
|
|
892
892
|
cloned: !1,
|
|
893
893
|
part: w,
|
|
894
|
-
parts:
|
|
894
|
+
parts: h
|
|
895
895
|
};
|
|
896
896
|
});
|
|
897
897
|
});
|
|
898
898
|
}
|
|
899
|
-
function
|
|
899
|
+
function Mi(t, e) {
|
|
900
900
|
const n = e.words;
|
|
901
901
|
if (n && n.length === t.length && t.length > 0) {
|
|
902
902
|
let s = 0;
|
|
903
903
|
for (let r = 0; r < n.length && e.t >= n[r][0]; r++) s = r;
|
|
904
904
|
return s;
|
|
905
905
|
}
|
|
906
|
-
return e.dur > 0 ?
|
|
906
|
+
return e.dur > 0 ? Ra(t, e.t, e.dur) : null;
|
|
907
907
|
}
|
|
908
|
-
function
|
|
908
|
+
function Ra(t, e, n) {
|
|
909
909
|
if (t.length <= 1 || !(n > 0)) return 0;
|
|
910
910
|
const s = t.map((l) => l.t.length + 1.6), r = s.reduce((l, c) => l + c, 0);
|
|
911
911
|
let a = 0;
|
|
@@ -923,7 +923,7 @@ function Ms(t, e) {
|
|
|
923
923
|
return e;
|
|
924
924
|
}
|
|
925
925
|
}
|
|
926
|
-
function
|
|
926
|
+
function gi(t, e) {
|
|
927
927
|
try {
|
|
928
928
|
e == null ? localStorage.removeItem(t) : localStorage.setItem(t, JSON.stringify(e));
|
|
929
929
|
} catch {
|
|
@@ -938,12 +938,12 @@ function ks(t, e) {
|
|
|
938
938
|
ds.delete(r), window.removeEventListener("storage", r);
|
|
939
939
|
};
|
|
940
940
|
}, [t]), [n, (r) => {
|
|
941
|
-
s(r),
|
|
941
|
+
s(r), gi(t, r);
|
|
942
942
|
}];
|
|
943
943
|
}
|
|
944
944
|
function Er(t) {
|
|
945
945
|
const e = Ms(us, []);
|
|
946
|
-
|
|
946
|
+
gi(us, Array.isArray(e) ? e.filter((n) => n !== t) : []);
|
|
947
947
|
}
|
|
948
948
|
function hi() {
|
|
949
949
|
const [t, e] = ks(us, []), n = Array.isArray(t) ? t : [];
|
|
@@ -951,35 +951,35 @@ function hi() {
|
|
|
951
951
|
s && e([s, ...n.filter((r) => r !== s)].slice(0, 3));
|
|
952
952
|
}];
|
|
953
953
|
}
|
|
954
|
-
function
|
|
954
|
+
function fi(t, e) {
|
|
955
955
|
if (!t) return [];
|
|
956
956
|
const n = new Set(t[e]);
|
|
957
957
|
return t.languages.filter((s) => n.has(s.code)).map((s) => ({ code: s.code, label: s.name, native: s.native, flag: s.flag ?? "🌐", voice: !!s.voice }));
|
|
958
958
|
}
|
|
959
|
-
function
|
|
959
|
+
function Pa(t) {
|
|
960
960
|
const [e, n] = ks(`vs.pins.${t}`, null);
|
|
961
961
|
return [Array.isArray(e) ? e : [], n];
|
|
962
962
|
}
|
|
963
|
-
const
|
|
964
|
-
function
|
|
963
|
+
const Qa = 352;
|
|
964
|
+
function $a(t) {
|
|
965
965
|
const [e, n] = ks(t === "ga" ? "vs.colW.ga" : "vs.colW", null);
|
|
966
|
-
return [typeof e == "number" && e > 0 ? e : t === "ga" ? 560 :
|
|
966
|
+
return [typeof e == "number" && e > 0 ? e : t === "ga" ? 560 : Qa, n];
|
|
967
967
|
}
|
|
968
|
-
function vs({ open: t, onClose: e, value: n, onSelect: s, languages: r, searchPlaceholder: a = "Search languages", none: o, pinned: l = [], recent: c = [], requireVoice: d, keepOpen: u, busy:
|
|
968
|
+
function vs({ open: t, onClose: e, value: n, onSelect: s, languages: r, searchPlaceholder: a = "Search languages", none: o, pinned: l = [], recent: c = [], requireVoice: d, keepOpen: u, busy: h }) {
|
|
969
969
|
const [M, N] = O(""), [m, w] = O(!1), [v, p] = O(null);
|
|
970
970
|
Y(() => {
|
|
971
971
|
t && (N(""), w(!1), p(null));
|
|
972
972
|
}, [t]);
|
|
973
|
-
const
|
|
973
|
+
const g = Ie(() => {
|
|
974
974
|
const S = M.trim().toLowerCase();
|
|
975
975
|
return [...S ? r.filter((I) => I.label.toLowerCase().includes(S) || I.native.toLowerCase().includes(S) || I.code.toLowerCase().includes(S)) : r].sort((I, E) => {
|
|
976
976
|
const oe = l.indexOf(I.code), P = l.indexOf(E.code);
|
|
977
977
|
return oe !== -1 || P !== -1 ? (oe === -1 ? 999 : oe) - (P === -1 ? 999 : P) : I.label.localeCompare(E.label);
|
|
978
978
|
});
|
|
979
979
|
}, [r, M, l]), C = Ie(
|
|
980
|
-
() => M ? [] : c.map((S) =>
|
|
981
|
-
[c,
|
|
982
|
-
),
|
|
980
|
+
() => M ? [] : c.map((S) => g.find(($) => $.code === S)).filter((S) => !!S).sort((S, $) => S.label.localeCompare($.label)),
|
|
981
|
+
[c, g, M]
|
|
982
|
+
), x = Ie(() => C.length ? g.filter((S) => !C.some(($) => $.code === S.code)) : g, [g, C]), k = m || M ? x : x.slice(0, 12), J = x.length - k.length, A = (S, $ = !1) => {
|
|
983
983
|
const L = !!d && !S.voice;
|
|
984
984
|
return /* @__PURE__ */ f(
|
|
985
985
|
"button",
|
|
@@ -1006,7 +1006,7 @@ function vs({ open: t, onClose: e, value: n, onSelect: s, languages: r, searchPl
|
|
|
1006
1006
|
(I.key === "Enter" || I.key === " ") && (I.preventDefault(), I.stopPropagation(), Er(S.code));
|
|
1007
1007
|
}, children: /* @__PURE__ */ i(de, { d: q.close, size: 16 }) }) }),
|
|
1008
1008
|
/* @__PURE__ */ i("span", { className: `vs-picker__slot${L ? " vs-picker__slot--wide" : ""}`, title: S.voice ? "Voice available" : L ? "No voice speaks this language yet" : void 0, children: L ? v === S.code && /* @__PURE__ */ i("span", { className: "vs-picker__off", children: "UNAVAILABLE" }) : S.voice && /* @__PURE__ */ i(de, { d: q.headphones, size: 16 }) }),
|
|
1009
|
-
/* @__PURE__ */ i("span", { className: "vs-picker__check", children: n === S.code && (
|
|
1009
|
+
/* @__PURE__ */ i("span", { className: "vs-picker__check", children: n === S.code && (h === S.code ? /* @__PURE__ */ i(ct, { size: 15, color: "var(--vs-link-hover)", track: "var(--vs-border)" }) : /* @__PURE__ */ i(de, { d: q.check, size: 16, sw: 2.2 })) })
|
|
1010
1010
|
]
|
|
1011
1011
|
},
|
|
1012
1012
|
S.code
|
|
@@ -1038,7 +1038,7 @@ function vs({ open: t, onClose: e, value: n, onSelect: s, languages: r, searchPl
|
|
|
1038
1038
|
J,
|
|
1039
1039
|
" MORE LANGUAGES"
|
|
1040
1040
|
] }),
|
|
1041
|
-
|
|
1041
|
+
g.length === 0 && /* @__PURE__ */ f("div", { className: "vs-picker__more", children: [
|
|
1042
1042
|
"No match for “",
|
|
1043
1043
|
M,
|
|
1044
1044
|
"”"
|
|
@@ -1046,41 +1046,41 @@ function vs({ open: t, onClose: e, value: n, onSelect: s, languages: r, searchPl
|
|
|
1046
1046
|
] });
|
|
1047
1047
|
return { search: K, list: j };
|
|
1048
1048
|
}
|
|
1049
|
-
function
|
|
1049
|
+
function Ba({ open: t, onClose: e, title: n, note: s, sticky: r, ...a }) {
|
|
1050
1050
|
const { search: o, list: l } = vs({ ...a, open: t, onClose: e });
|
|
1051
1051
|
return /* @__PURE__ */ i($t, { open: t, onClose: e, title: n, note: s, drawer: !1, sticky: r, kind: "picker", header: o, children: l });
|
|
1052
1052
|
}
|
|
1053
|
-
const
|
|
1053
|
+
const Ha = 0.3;
|
|
1054
1054
|
function Yr(t, e) {
|
|
1055
|
-
t.muted = e.muted, Math.abs(t.currentTime - e.t) >
|
|
1055
|
+
t.muted = e.muted, Math.abs(t.currentTime - e.t) > Ha && (t.currentTime = Math.max(0, e.t)), e.playing ? t.paused && Promise.resolve(t.play()).catch(() => {
|
|
1056
1056
|
}) : t.paused || t.pause();
|
|
1057
1057
|
}
|
|
1058
|
-
const Ln = "Remove background sound",
|
|
1059
|
-
function
|
|
1058
|
+
const Ln = "Remove background sound", Va = "Takes out everything that isn't speech: music, ambience and noise.";
|
|
1059
|
+
function Wa(t) {
|
|
1060
1060
|
const e = Math.max(0, Math.floor(t)), n = Math.floor(e / 3600), s = Math.floor(e % 3600 / 60), r = String(e % 60).padStart(2, "0");
|
|
1061
1061
|
return n ? `${n}:${String(s).padStart(2, "0")}:${r}` : `${s}:${r}`;
|
|
1062
1062
|
}
|
|
1063
|
-
function
|
|
1064
|
-
return e === "unavailable" ? `Not available for this ${n}` : e === "making" ? s > 0 ? `Separating the speech from the background… ready up to ${
|
|
1063
|
+
function Fa(t, e, n = "transcription", s = 0) {
|
|
1064
|
+
return e === "unavailable" ? `Not available for this ${n}` : e === "making" ? s > 0 ? `Separating the speech from the background… ready up to ${Wa(s)}` : "Separating the speech from the background…" : Va;
|
|
1065
1065
|
}
|
|
1066
|
-
function
|
|
1066
|
+
function Ga(t, e) {
|
|
1067
1067
|
return { bed: e && !t, speech: !e && t };
|
|
1068
1068
|
}
|
|
1069
|
-
function
|
|
1069
|
+
function Za(t) {
|
|
1070
1070
|
const e = t.get("bg");
|
|
1071
1071
|
return e === "off" || e === "remove";
|
|
1072
1072
|
}
|
|
1073
|
-
function
|
|
1073
|
+
function qa(t, e) {
|
|
1074
1074
|
e ? t.searchParams.set("bg", "remove") : t.searchParams.delete("bg");
|
|
1075
1075
|
}
|
|
1076
|
-
function
|
|
1076
|
+
function Ka(t, e) {
|
|
1077
1077
|
var s, r;
|
|
1078
1078
|
if (t !== 503) return null;
|
|
1079
1079
|
const n = (r = (s = e == null ? void 0 : e.data) == null ? void 0 : s.details) == null ? void 0 : r.retryAfterS;
|
|
1080
1080
|
return typeof n == "number" && n > 0 ? Math.max(2, n) : 3;
|
|
1081
1081
|
}
|
|
1082
|
-
const
|
|
1083
|
-
function
|
|
1082
|
+
const Ja = 0.05;
|
|
1083
|
+
function Xa(t) {
|
|
1084
1084
|
var s, r;
|
|
1085
1085
|
const e = (r = (s = t == null ? void 0 : t.data) == null ? void 0 : s.details) == null ? void 0 : r.parts, n = [];
|
|
1086
1086
|
if (Array.isArray(e))
|
|
@@ -1092,8 +1092,8 @@ function Ja(t) {
|
|
|
1092
1092
|
}
|
|
1093
1093
|
return { untilS: n.length ? n[n.length - 1].endS : 0, parts: n };
|
|
1094
1094
|
}
|
|
1095
|
-
function
|
|
1096
|
-
if (!t.length || e < 0 || e >= t[t.length - 1].endS -
|
|
1095
|
+
function eo(t, e) {
|
|
1096
|
+
if (!t.length || e < 0 || e >= t[t.length - 1].endS - Ja) return -1;
|
|
1097
1097
|
let n = 0, s = t.length - 1;
|
|
1098
1098
|
for (; n < s; ) {
|
|
1099
1099
|
const r = n + s + 1 >> 1;
|
|
@@ -1101,23 +1101,23 @@ function Xa(t, e) {
|
|
|
1101
1101
|
}
|
|
1102
1102
|
return n;
|
|
1103
1103
|
}
|
|
1104
|
-
function
|
|
1104
|
+
function to(t, e, n, s) {
|
|
1105
1105
|
const r = t[e].startS, a = n[s] === r ? s : n[1 - s] === r ? 1 - s : s, o = [];
|
|
1106
1106
|
n[a] !== r && o.push([a, e]);
|
|
1107
1107
|
const l = 1 - a;
|
|
1108
1108
|
return e + 1 < t.length && n[l] !== t[e + 1].startS && o.push([l, e + 1]), { play: a, load: o };
|
|
1109
1109
|
}
|
|
1110
|
-
async function
|
|
1110
|
+
async function no(t) {
|
|
1111
1111
|
const e = await fetch(t, { redirect: "manual", credentials: "omit" });
|
|
1112
1112
|
if (e.type === "opaqueredirect" || e.status >= 300 && e.status < 400 || e.ok) return { ready: !0 };
|
|
1113
1113
|
const n = await e.json().catch(() => null);
|
|
1114
|
-
return { ready: !1, retryS:
|
|
1114
|
+
return { ready: !1, retryS: Ka(e.status, n), ...Xa(n) };
|
|
1115
1115
|
}
|
|
1116
1116
|
function Kn(t) {
|
|
1117
1117
|
t && (t.pause(), t.removeAttribute("src"), t.load());
|
|
1118
1118
|
}
|
|
1119
|
-
function
|
|
1120
|
-
const [n, s] = O("off"), [r, a] = O([]), [o, l] = O(!1), c = z(null), d = z([null, null]), u = z([NaN, NaN]),
|
|
1119
|
+
function Ni(t, e) {
|
|
1120
|
+
const [n, s] = O("off"), [r, a] = O([]), [o, l] = O(!1), c = z(null), d = z([null, null]), u = z([NaN, NaN]), h = z(0);
|
|
1121
1121
|
return Y(() => {
|
|
1122
1122
|
if (a([]), l(!1), !t) {
|
|
1123
1123
|
s("off");
|
|
@@ -1126,7 +1126,7 @@ function fi(t, e) {
|
|
|
1126
1126
|
let M = !1, N;
|
|
1127
1127
|
s("making");
|
|
1128
1128
|
const m = () => {
|
|
1129
|
-
|
|
1129
|
+
no(t).then((w) => {
|
|
1130
1130
|
if (!M) {
|
|
1131
1131
|
if (w.ready) {
|
|
1132
1132
|
const v = new Audio();
|
|
@@ -1141,7 +1141,7 @@ function fi(t, e) {
|
|
|
1141
1141
|
s("unavailable"), a([]);
|
|
1142
1142
|
return;
|
|
1143
1143
|
}
|
|
1144
|
-
a((v) => v.length === w.parts.length && v.every((p,
|
|
1144
|
+
a((v) => v.length === w.parts.length && v.every((p, g) => p.startS === w.parts[g].startS) ? v : w.parts), N = setTimeout(m, w.retryS * 1e3);
|
|
1145
1145
|
}
|
|
1146
1146
|
}).catch(() => {
|
|
1147
1147
|
M || (N = setTimeout(m, 5e3));
|
|
@@ -1158,31 +1158,31 @@ function fi(t, e) {
|
|
|
1158
1158
|
M(), Yr(c.current, e), l(!0);
|
|
1159
1159
|
return;
|
|
1160
1160
|
}
|
|
1161
|
-
const N = n === "making" ?
|
|
1161
|
+
const N = n === "making" ? eo(r, e.t) : -1;
|
|
1162
1162
|
if (N < 0) {
|
|
1163
1163
|
M(), l(!1);
|
|
1164
1164
|
return;
|
|
1165
1165
|
}
|
|
1166
|
-
const m =
|
|
1167
|
-
for (const [p,
|
|
1166
|
+
const m = to(r, N, u.current, h.current);
|
|
1167
|
+
for (const [p, g] of m.load) {
|
|
1168
1168
|
let C = d.current[p];
|
|
1169
|
-
C || (C = new Audio(), C.preload = "auto", d.current[p] = C), C.pause(), C.src = r[
|
|
1169
|
+
C || (C = new Audio(), C.preload = "auto", d.current[p] = C), C.pause(), C.src = r[g].url, u.current[p] = r[g].startS;
|
|
1170
1170
|
}
|
|
1171
|
-
|
|
1171
|
+
h.current = m.play;
|
|
1172
1172
|
const w = d.current[m.play], v = d.current[1 - m.play];
|
|
1173
1173
|
v && !v.paused && v.pause(), Yr(w, { ...e, t: e.t - r[N].startS }), l(!e.playing || w.readyState >= 3);
|
|
1174
1174
|
}, [n, r, e.t, e.playing, e.muted]), { state: n, on: o, untilS: n === "ready" ? 1 / 0 : r.length ? r[r.length - 1].endS : 0 };
|
|
1175
1175
|
}
|
|
1176
|
-
function
|
|
1177
|
-
return
|
|
1176
|
+
function so(t, e) {
|
|
1177
|
+
return Ni(t, e).state;
|
|
1178
1178
|
}
|
|
1179
|
-
const
|
|
1179
|
+
const ro = 0.5, io = 3;
|
|
1180
1180
|
function js(t, e) {
|
|
1181
1181
|
let n = -1;
|
|
1182
1182
|
for (let s = 0; s < t.length && t[s].start <= e + 0.02; s++) n = s;
|
|
1183
1183
|
return n;
|
|
1184
1184
|
}
|
|
1185
|
-
function
|
|
1185
|
+
function ao(t, e, n) {
|
|
1186
1186
|
const s = js(t, n);
|
|
1187
1187
|
if (s < 0) return { kind: "none" };
|
|
1188
1188
|
const r = t[s];
|
|
@@ -1192,7 +1192,7 @@ function io(t, e, n) {
|
|
|
1192
1192
|
const o = Math.max(1, ...a.map((c) => c.parts));
|
|
1193
1193
|
let l = Math.max(0, n - r.start);
|
|
1194
1194
|
for (let c = 0; c < o; c++) {
|
|
1195
|
-
const d = a.find((
|
|
1195
|
+
const d = a.find((h) => h.part === c);
|
|
1196
1196
|
if (!d) return { kind: "missing", sid: r.sid };
|
|
1197
1197
|
const u = d.durationS && d.durationS > 0 ? d.durationS : 1 / 0;
|
|
1198
1198
|
if (l < u) return { kind: "play", sid: r.sid, src: d.src, offset: l };
|
|
@@ -1200,14 +1200,14 @@ function io(t, e, n) {
|
|
|
1200
1200
|
}
|
|
1201
1201
|
return { kind: "done", sid: r.sid };
|
|
1202
1202
|
}
|
|
1203
|
-
function
|
|
1203
|
+
function oo(t, e, n) {
|
|
1204
1204
|
if (n == null) return !1;
|
|
1205
1205
|
const s = js(t, e);
|
|
1206
1206
|
if (s < 0) return !1;
|
|
1207
1207
|
const r = t[s];
|
|
1208
1208
|
return e >= r.end ? r.sid === n : s > 0 && t[s - 1].sid === n && e - r.start < 1.5;
|
|
1209
1209
|
}
|
|
1210
|
-
function
|
|
1210
|
+
function lo(t, e, n, s = io) {
|
|
1211
1211
|
const r = Math.max(0, js(t, n)), a = [];
|
|
1212
1212
|
for (let o = r; o < t.length && o <= r + s; o++) {
|
|
1213
1213
|
const l = (e.get(t[o].sid) ?? []).find((c) => c.part === 0);
|
|
@@ -1215,7 +1215,7 @@ function oo(t, e, n, s = ro) {
|
|
|
1215
1215
|
}
|
|
1216
1216
|
return a;
|
|
1217
1217
|
}
|
|
1218
|
-
function
|
|
1218
|
+
function co(t) {
|
|
1219
1219
|
const e = Ie(() => {
|
|
1220
1220
|
const c = /* @__PURE__ */ new Map();
|
|
1221
1221
|
for (const d of t.clips) c.set(d.sentenceId, [...c.get(d.sentenceId) ?? [], d]);
|
|
@@ -1236,24 +1236,24 @@ function lo(t) {
|
|
|
1236
1236
|
l(), a((m) => m.missing == null && m.sid == null ? m : { missing: null, sid: null });
|
|
1237
1237
|
return;
|
|
1238
1238
|
}
|
|
1239
|
-
const c =
|
|
1239
|
+
const c = ao(t.lines, e, t.t), d = c.kind === "missing" ? c.sid : null, u = c.kind === "none" ? null : c.sid;
|
|
1240
1240
|
a((m) => m.missing === d && m.sid === u ? m : { missing: d, sid: u });
|
|
1241
|
-
const
|
|
1242
|
-
for (const m of
|
|
1241
|
+
const h = new Set(lo(t.lines, e, t.t));
|
|
1242
|
+
for (const m of h) o(m);
|
|
1243
1243
|
const M = s.current;
|
|
1244
|
-
M &&
|
|
1245
|
-
for (const [m, w] of n.current) !
|
|
1244
|
+
M && h.add(M.src);
|
|
1245
|
+
for (const [m, w] of n.current) !h.has(m) && (!M || M.el !== w) && (w.pause(), n.current.delete(m));
|
|
1246
1246
|
if (!t.playing) {
|
|
1247
1247
|
M == null || M.el.pause();
|
|
1248
1248
|
return;
|
|
1249
1249
|
}
|
|
1250
1250
|
if (c.kind !== "play") {
|
|
1251
|
-
if (M && !M.el.paused && !M.el.ended &&
|
|
1251
|
+
if (M && !M.el.paused && !M.el.ended && oo(t.lines, t.t, M.sid)) return;
|
|
1252
1252
|
M && M.el.pause(), s.current = null;
|
|
1253
1253
|
return;
|
|
1254
1254
|
}
|
|
1255
1255
|
if (M && M.src === c.src) {
|
|
1256
|
-
if (M.el.muted = t.muted, !M.el.ended && Math.abs(M.el.currentTime - c.offset) >
|
|
1256
|
+
if (M.el.muted = t.muted, !M.el.ended && Math.abs(M.el.currentTime - c.offset) > ro)
|
|
1257
1257
|
try {
|
|
1258
1258
|
M.el.currentTime = c.offset;
|
|
1259
1259
|
} catch {
|
|
@@ -1274,7 +1274,7 @@ function lo(t) {
|
|
|
1274
1274
|
}, [t.on, t.t, t.playing, t.muted, t.lines, e]), r;
|
|
1275
1275
|
}
|
|
1276
1276
|
const _r = ["play", "pause", "stop", "nexttrack", "previoustrack"];
|
|
1277
|
-
function
|
|
1277
|
+
function uo(t, e) {
|
|
1278
1278
|
var n, s;
|
|
1279
1279
|
if (t === "play") {
|
|
1280
1280
|
e.playing || e.toggle();
|
|
@@ -1290,12 +1290,12 @@ function co(t, e) {
|
|
|
1290
1290
|
}
|
|
1291
1291
|
(s = e.prev) == null || s.call(e);
|
|
1292
1292
|
}
|
|
1293
|
-
function
|
|
1293
|
+
function Mo(t, e) {
|
|
1294
1294
|
for (const n of _r)
|
|
1295
1295
|
try {
|
|
1296
1296
|
t.setActionHandler(n, () => {
|
|
1297
1297
|
const s = e();
|
|
1298
|
-
s &&
|
|
1298
|
+
s && uo(n, s);
|
|
1299
1299
|
});
|
|
1300
1300
|
} catch {
|
|
1301
1301
|
}
|
|
@@ -1307,14 +1307,14 @@ function uo(t, e) {
|
|
|
1307
1307
|
}
|
|
1308
1308
|
};
|
|
1309
1309
|
}
|
|
1310
|
-
function
|
|
1310
|
+
function go(t, e) {
|
|
1311
1311
|
const n = z(t);
|
|
1312
1312
|
n.current = t;
|
|
1313
1313
|
const s = !!t;
|
|
1314
1314
|
Y(() => {
|
|
1315
1315
|
const a = typeof navigator < "u" ? navigator.mediaSession : void 0;
|
|
1316
1316
|
if (!(!a || !s))
|
|
1317
|
-
return
|
|
1317
|
+
return Mo(a, () => n.current);
|
|
1318
1318
|
}, [s]);
|
|
1319
1319
|
const r = !!(t != null && t.playing);
|
|
1320
1320
|
Y(() => {
|
|
@@ -1423,7 +1423,7 @@ function Ur(t, e) {
|
|
|
1423
1423
|
const n = e ?? {};
|
|
1424
1424
|
return !t || !Object.keys(t).length ? n : Object.keys(n).length ? { ...t, ...n } : t;
|
|
1425
1425
|
}
|
|
1426
|
-
function
|
|
1426
|
+
function fo(t, e) {
|
|
1427
1427
|
const n = e.tail;
|
|
1428
1428
|
if (!n || !Array.isArray(n.words) || n.replaced !== t.length || n.words.length !== t.length) return !1;
|
|
1429
1429
|
let s = !1;
|
|
@@ -1440,7 +1440,7 @@ function go(t, e) {
|
|
|
1440
1440
|
}
|
|
1441
1441
|
return s;
|
|
1442
1442
|
}
|
|
1443
|
-
function
|
|
1443
|
+
function No(t, e) {
|
|
1444
1444
|
var n;
|
|
1445
1445
|
switch (delete t.numbers, e.type) {
|
|
1446
1446
|
case "transcript.committed": {
|
|
@@ -1481,7 +1481,7 @@ function fo(t, e) {
|
|
|
1481
1481
|
}
|
|
1482
1482
|
case "transcript.amended": {
|
|
1483
1483
|
const s = t.segments.get(e.seq);
|
|
1484
|
-
if (s && s.corrected &&
|
|
1484
|
+
if (s && s.corrected && fo(s.words, e)) {
|
|
1485
1485
|
s.text = e.text, s.words = Kt(e.seq, e.tail.words);
|
|
1486
1486
|
break;
|
|
1487
1487
|
}
|
|
@@ -1495,7 +1495,7 @@ function fo(t, e) {
|
|
|
1495
1495
|
if ((n = e.scriptWords) != null && n.length) {
|
|
1496
1496
|
const a = (c) => c.toLowerCase().replace(/[^\p{L}\p{N}]/gu, ""), o = (e.fixes ?? []).filter((c) => String(c.kind ?? "").endsWith("script") && String(c.orig ?? "").trim()), l = (c) => {
|
|
1497
1497
|
var d, u;
|
|
1498
|
-
return c.recognized ?? ((u = (d = o.find((
|
|
1498
|
+
return c.recognized ?? ((u = (d = o.find((h) => String(h.repl ?? "").split(/\s+/).map(a).includes(a(c.text)))) == null ? void 0 : d.orig) == null ? void 0 : u.trim());
|
|
1499
1499
|
};
|
|
1500
1500
|
s.words = s.words.map((c, d) => {
|
|
1501
1501
|
if (!e.scriptWords.includes(d)) return c;
|
|
@@ -1581,7 +1581,7 @@ function fo(t, e) {
|
|
|
1581
1581
|
}
|
|
1582
1582
|
return typeof e.seq == "number" && (t.lastSeq = Math.max(t.lastSeq, e.seq)), t;
|
|
1583
1583
|
}
|
|
1584
|
-
function
|
|
1584
|
+
function po(t) {
|
|
1585
1585
|
const e = [], n = [...t.sentences.values()].sort((s, r) => s.start - r.start || (s.sentenceId ?? 0) - (r.sentenceId ?? 0));
|
|
1586
1586
|
for (const s of n) {
|
|
1587
1587
|
const r = s.seqs.map((l) => t.segments.get(l)).filter(Boolean), a = r.length === s.seqs.length || !s.text ? r.flatMap((l) => l.words) : [], o = r[r.length - 1];
|
|
@@ -1594,16 +1594,16 @@ function No(t) {
|
|
|
1594
1594
|
catchup: r.some((l) => l.catchup),
|
|
1595
1595
|
suppressed: s.suppressed || r.length > 0 && r.every((l) => l.suppressed),
|
|
1596
1596
|
unclear: s.unclear || r.length > 0 && r.every((l) => l.unclear),
|
|
1597
|
-
confidence:
|
|
1597
|
+
confidence: mo(r),
|
|
1598
1598
|
latencyS: o == null ? void 0 : o.latencyS,
|
|
1599
1599
|
settled: s.settled || r.length > 0 && r.every((l) => l.settled),
|
|
1600
|
-
translations: Object.keys(s.translations).length ? s.translations :
|
|
1600
|
+
translations: Object.keys(s.translations).length ? s.translations : yo(r),
|
|
1601
1601
|
speaker: s.speaker >= 0 ? s.speaker : (o == null ? void 0 : o.speaker) ?? -1
|
|
1602
1602
|
});
|
|
1603
1603
|
}
|
|
1604
1604
|
return e.sort((s, r) => s.start - r.start), e;
|
|
1605
1605
|
}
|
|
1606
|
-
function
|
|
1606
|
+
function mo(t) {
|
|
1607
1607
|
let e = 0, n = 0;
|
|
1608
1608
|
for (const s of t) {
|
|
1609
1609
|
if (s.confidence == null) continue;
|
|
@@ -1612,20 +1612,20 @@ function po(t) {
|
|
|
1612
1612
|
}
|
|
1613
1613
|
return n ? e / n : void 0;
|
|
1614
1614
|
}
|
|
1615
|
-
function
|
|
1615
|
+
function yo(t) {
|
|
1616
1616
|
const e = {};
|
|
1617
1617
|
for (const n of t) for (const [s, r] of Object.entries(n.translations)) e[s] = e[s] ? `${e[s]} ${r}` : r;
|
|
1618
1618
|
return e;
|
|
1619
1619
|
}
|
|
1620
|
-
const
|
|
1621
|
-
function
|
|
1622
|
-
return t == null ? "" : t <
|
|
1620
|
+
const To = 0.85, wo = 0.75;
|
|
1621
|
+
function Lo(t) {
|
|
1622
|
+
return t == null ? "" : t < wo ? "low" : t < To ? "mid" : "";
|
|
1623
1623
|
}
|
|
1624
1624
|
const pn = ["a", "b", "c", "d", "e", "f", "g", "h"];
|
|
1625
|
-
function
|
|
1625
|
+
function ko(t) {
|
|
1626
1626
|
return pn[(t % pn.length + pn.length) % pn.length];
|
|
1627
1627
|
}
|
|
1628
|
-
function
|
|
1628
|
+
function vo(t) {
|
|
1629
1629
|
if (t.numbers) return t.numbers;
|
|
1630
1630
|
const e = /* @__PURE__ */ new Map(), n = (a, o) => {
|
|
1631
1631
|
if (a < 0) return;
|
|
@@ -1641,26 +1641,26 @@ function ko(t) {
|
|
|
1641
1641
|
}
|
|
1642
1642
|
function kn(t, e) {
|
|
1643
1643
|
if (e < 0) return 0;
|
|
1644
|
-
const n =
|
|
1644
|
+
const n = vo(t);
|
|
1645
1645
|
return n.get(e) ?? n.size + 1 + e;
|
|
1646
1646
|
}
|
|
1647
|
-
const
|
|
1647
|
+
const jo = /^\s*speaker\s+\d+\s*$/i;
|
|
1648
1648
|
function Rr(t) {
|
|
1649
|
-
return t && t.trim() && !
|
|
1649
|
+
return t && t.trim() && !jo.test(t) ? t : void 0;
|
|
1650
1650
|
}
|
|
1651
|
-
function
|
|
1651
|
+
function pi(t, e) {
|
|
1652
1652
|
var n;
|
|
1653
1653
|
return Rr(t.speakers[e]) ?? Rr((n = t.speakerIds[e]) == null ? void 0 : n.name);
|
|
1654
1654
|
}
|
|
1655
1655
|
function zs(t, e) {
|
|
1656
|
-
return e < 0 ? "" :
|
|
1656
|
+
return e < 0 ? "" : pi(t, e) ?? `Speaker ${kn(t, e)}`;
|
|
1657
1657
|
}
|
|
1658
|
-
function
|
|
1658
|
+
function mi(t, e) {
|
|
1659
1659
|
if (e < 0) return "?";
|
|
1660
|
-
const n =
|
|
1660
|
+
const n = pi(t, e);
|
|
1661
1661
|
return n ? (n.split(" ").filter(Boolean).slice(0, 2).map((r) => r[0]).join("") || `S${kn(t, e)}`).toUpperCase() : `S${kn(t, e)}`;
|
|
1662
1662
|
}
|
|
1663
|
-
function
|
|
1663
|
+
function zo(t) {
|
|
1664
1664
|
if (t) {
|
|
1665
1665
|
if (t.startsWith("#"))
|
|
1666
1666
|
return { fg: t, soft: `color-mix(in srgb, ${t} 16%, transparent)` };
|
|
@@ -1669,10 +1669,10 @@ function jo(t) {
|
|
|
1669
1669
|
}
|
|
1670
1670
|
}
|
|
1671
1671
|
function Is(t, e) {
|
|
1672
|
-
const n = t.speakerIds[e], s =
|
|
1673
|
-
return { fg: s == null ? void 0 : s.fg, soft: s == null ? void 0 : s.soft, lane:
|
|
1672
|
+
const n = t.speakerIds[e], s = zo(n == null ? void 0 : n.color);
|
|
1673
|
+
return { fg: s == null ? void 0 : s.fg, soft: s == null ? void 0 : s.soft, lane: ko(kn(t, e) - 1), hasVoice: !!n };
|
|
1674
1674
|
}
|
|
1675
|
-
function
|
|
1675
|
+
function Io(t, e, n, s = !1) {
|
|
1676
1676
|
const r = n ? n.speakerLabels ?? "auto" : null, a = (s ? r : null) ?? t.labels ?? r ?? "on";
|
|
1677
1677
|
if (a !== "auto") return a === "on";
|
|
1678
1678
|
const o = /* @__PURE__ */ new Set();
|
|
@@ -1680,7 +1680,7 @@ function zo(t, e, n, s = !1) {
|
|
|
1680
1680
|
return !0;
|
|
1681
1681
|
return !1;
|
|
1682
1682
|
}
|
|
1683
|
-
const
|
|
1683
|
+
const Oo = /* @__PURE__ */ new Set([
|
|
1684
1684
|
"invalid_audio",
|
|
1685
1685
|
"invalid_options",
|
|
1686
1686
|
"invalid_token",
|
|
@@ -1705,14 +1705,14 @@ const Io = /* @__PURE__ */ new Set([
|
|
|
1705
1705
|
"invalid_request",
|
|
1706
1706
|
"aborted",
|
|
1707
1707
|
"unauthorized"
|
|
1708
|
-
]),
|
|
1708
|
+
]), yi = {
|
|
1709
1709
|
internal: "Something went wrong on our side. Please try again.",
|
|
1710
1710
|
unavailable: "VocalStack is briefly unavailable. Please try again in a moment.",
|
|
1711
1711
|
engine_unavailable: "No transcription engine is available right now. Please try again in a moment.",
|
|
1712
1712
|
engine_lost: "The transcription engine stopped. Please try again.",
|
|
1713
1713
|
capacity_exceeded: "Every transcription engine is busy right now. Please try again in a moment.",
|
|
1714
1714
|
timeout: "That took too long. Please try again."
|
|
1715
|
-
},
|
|
1715
|
+
}, gs = yi.internal, Xn = "Can't reach VocalStack. Check your connection.", Pr = {
|
|
1716
1716
|
NotAllowedError: "The browser blocked this. Allow it for this site, then try again.",
|
|
1717
1717
|
NotSupportedError: "This browser cannot play this.",
|
|
1718
1718
|
AbortError: "It was cancelled."
|
|
@@ -1720,34 +1720,34 @@ const Io = /* @__PURE__ */ new Set([
|
|
|
1720
1720
|
function wt(t) {
|
|
1721
1721
|
const e = t, n = typeof (e == null ? void 0 : e.code) == "string" ? e.code : void 0, s = typeof (e == null ? void 0 : e.status) == "number" ? e.status : void 0, r = e == null ? void 0 : e.details;
|
|
1722
1722
|
if (n || s && s >= 400)
|
|
1723
|
-
return n &&
|
|
1723
|
+
return n && Oo.has(n) && typeof (e == null ? void 0 : e.message) == "string" ? { message: e.message, code: n, status: s, details: r } : n === "unavailable" && s === void 0 ? { message: Xn, code: n, details: r } : s === 0 ? { message: typeof (e == null ? void 0 : e.message) == "string" ? e.message : Xn, code: n, status: s, details: r } : { message: n && yi[n] || gs, code: n, status: s, details: r };
|
|
1724
1724
|
const a = (e == null ? void 0 : e.name) ?? "";
|
|
1725
|
-
return a === "TypeError" && /fetch|network|load failed/i.test(String((e == null ? void 0 : e.message) ?? "")) ? (typeof navigator < "u" && navigator.onLine !== !1 &&
|
|
1725
|
+
return a === "TypeError" && /fetch|network|load failed/i.test(String((e == null ? void 0 : e.message) ?? "")) ? (typeof navigator < "u" && navigator.onLine !== !1 && ai(t instanceof Error ? t : new Error(String(t))), { message: Xn }) : Pr[a] ? { message: Pr[a] } : t instanceof Error && a === "Error" && !(t instanceof ti) ? { message: t.message } : { message: gs };
|
|
1726
1726
|
}
|
|
1727
|
-
const
|
|
1727
|
+
const Ti = "https://api.vocalstack.com", Os = ei(null);
|
|
1728
1728
|
function Yt() {
|
|
1729
1729
|
const t = ha(Os);
|
|
1730
1730
|
if (!t) throw new Error("VocalStack player hooks must be used inside <VocalStackPlayer> or <PlayerApiProvider>");
|
|
1731
1731
|
return t;
|
|
1732
1732
|
}
|
|
1733
|
-
function
|
|
1734
|
-
return t.value ? /* @__PURE__ */ i(Os.Provider, { value: t.value, children: t.children }) : /* @__PURE__ */ i(
|
|
1733
|
+
function Co(t) {
|
|
1734
|
+
return t.value ? /* @__PURE__ */ i(Os.Provider, { value: t.value, children: t.children }) : /* @__PURE__ */ i(bo, { ...t });
|
|
1735
1735
|
}
|
|
1736
|
-
function
|
|
1737
|
-
const n =
|
|
1736
|
+
function bo({ children: t, ...e }) {
|
|
1737
|
+
const n = wi(e);
|
|
1738
1738
|
return /* @__PURE__ */ i(Os.Provider, { value: n, children: t });
|
|
1739
1739
|
}
|
|
1740
|
-
const
|
|
1741
|
-
function
|
|
1742
|
-
return
|
|
1740
|
+
const xo = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
1741
|
+
function Do(t) {
|
|
1742
|
+
return xo.test(t);
|
|
1743
1743
|
}
|
|
1744
|
-
function
|
|
1745
|
-
const e = t.listen ?? null, n = e ? null : t.listenerToken ?? null, s = !e && !n && !!t.token && (!t.id ||
|
|
1744
|
+
function wi(t) {
|
|
1745
|
+
const e = t.listen ?? null, n = e ? null : t.listenerToken ?? null, s = !e && !n && !!t.token && (!t.id || Do(t.id)), r = (t.baseUrl ?? Ti).replace(/\/$/, ""), a = z(t.token);
|
|
1746
1746
|
a.current = t.token;
|
|
1747
1747
|
const o = !!t.token, l = Ie(() => async () => {
|
|
1748
1748
|
const u = a.current;
|
|
1749
1749
|
return (typeof u == "function" ? await u() : u) || void 0;
|
|
1750
|
-
}, []), c = t.client ?? null, d = Ie(() => c ?? new
|
|
1750
|
+
}, []), c = t.client ?? null, d = Ie(() => c ?? new ni({ baseUrl: r, token: o && !e ? l : void 0 }), [c, r, o, l, e]);
|
|
1751
1751
|
return Ie(() => {
|
|
1752
1752
|
if (e) return { client: d, origin: r, owner: !1, shareCode: null, listen: e, bearer: l, cred: { listenerToken: e.token }, readAs: { listenerToken: e.token } };
|
|
1753
1753
|
if (n) return { client: d, origin: r, owner: !1, shareCode: null, listen: null, bearer: l, cred: { listenerToken: n }, readAs: { listenerToken: n } };
|
|
@@ -1755,10 +1755,10 @@ function Ti(t) {
|
|
|
1755
1755
|
return { client: d, origin: r, owner: s, shareCode: u, listen: null, bearer: l, cred: { shareCode: u }, readAs: u ? { shareCode: u } : {} };
|
|
1756
1756
|
}, [d, r, s, t.id, l, e, n]);
|
|
1757
1757
|
}
|
|
1758
|
-
function
|
|
1758
|
+
function So(t, e) {
|
|
1759
1759
|
return e ? { ...t, cred: { media: e } } : t;
|
|
1760
1760
|
}
|
|
1761
|
-
async function
|
|
1761
|
+
async function Ao(t, e) {
|
|
1762
1762
|
if (t.listen) {
|
|
1763
1763
|
const s = await t.client.recordings.get(t.listen.recordingId, t.readAs), r = s;
|
|
1764
1764
|
return { key: e, code: null, transcriptionId: t.listen.transcriptionId, name: r.name ?? r.title ?? "", recording: s, job: r.job ?? null, allowDownload: !0, allowExport: !0, allowTranslate: !0, sharedBy: null };
|
|
@@ -1783,22 +1783,22 @@ async function So(t, e) {
|
|
|
1783
1783
|
sharedBy: n.sharedBy ?? null
|
|
1784
1784
|
};
|
|
1785
1785
|
}
|
|
1786
|
-
function
|
|
1786
|
+
function Eo(t, e) {
|
|
1787
1787
|
const [n, s] = O(null), [r, a] = O(!1), [o, l] = O(null), [c, d] = O(0);
|
|
1788
1788
|
return Y(() => {
|
|
1789
1789
|
let u = !0;
|
|
1790
|
-
return
|
|
1791
|
-
u && (s(
|
|
1792
|
-
}).catch((
|
|
1790
|
+
return Ao(t, e).then((h) => {
|
|
1791
|
+
u && (s(h), a(!1), l(null));
|
|
1792
|
+
}).catch((h) => {
|
|
1793
1793
|
if (!u) return;
|
|
1794
|
-
const M = wt(
|
|
1794
|
+
const M = wt(h);
|
|
1795
1795
|
M.code === "not_found" || M.status === 404 ? a(!0) : l(M);
|
|
1796
1796
|
}), () => {
|
|
1797
1797
|
u = !1;
|
|
1798
1798
|
};
|
|
1799
1799
|
}, [t, e, c]), { source: n, gone: r, error: o, reload: () => d((u) => u + 1) };
|
|
1800
1800
|
}
|
|
1801
|
-
function
|
|
1801
|
+
function Yo(t, e) {
|
|
1802
1802
|
const [n, s] = O(null);
|
|
1803
1803
|
return Y(() => {
|
|
1804
1804
|
if (!t.owner || !e) {
|
|
@@ -1832,7 +1832,7 @@ async function Qr(t, e, n = {}) {
|
|
|
1832
1832
|
return fetch(`${t.origin}${e}${a ? `${e.includes("?") ? "&" : "?"}${a}` : ""}`, { method: n.method ?? "GET", headers: r, body: n.body === void 0 ? void 0 : JSON.stringify(n.body) });
|
|
1833
1833
|
}
|
|
1834
1834
|
const es = /* @__PURE__ */ new Map();
|
|
1835
|
-
function
|
|
1835
|
+
function Li() {
|
|
1836
1836
|
const t = Yt(), [e, n] = O(es.get(t.origin) ?? null);
|
|
1837
1837
|
return Y(() => {
|
|
1838
1838
|
es.has(t.origin) || t.client.languages.list().then((s) => {
|
|
@@ -1841,7 +1841,7 @@ function wi() {
|
|
|
1841
1841
|
});
|
|
1842
1842
|
}, [t]), e;
|
|
1843
1843
|
}
|
|
1844
|
-
function
|
|
1844
|
+
function ki(t, e) {
|
|
1845
1845
|
const [n, s] = O(null), [r, a] = O(null), [o, l] = O(0);
|
|
1846
1846
|
return Y(() => {
|
|
1847
1847
|
let c = !0;
|
|
@@ -1850,11 +1850,11 @@ function Li(t, e) {
|
|
|
1850
1850
|
};
|
|
1851
1851
|
}, [...e, o]), { data: n, error: r, reload: () => l((c) => c + 1) };
|
|
1852
1852
|
}
|
|
1853
|
-
const
|
|
1854
|
-
function
|
|
1853
|
+
const _o = (t) => new Promise((e) => setTimeout(e, t)), Uo = 2500, Ro = 72;
|
|
1854
|
+
function Po(t, e) {
|
|
1855
1855
|
const n = Yt(), s = z(n);
|
|
1856
1856
|
s.current = n;
|
|
1857
|
-
const [r, a] = O(Pt), o = z(Pt()), l = z(null), c = z(e.lang ?? null), [d, u] = O(!1), [
|
|
1857
|
+
const [r, a] = O(Pt), o = z(Pt()), l = z(null), c = z(e.lang ?? null), [d, u] = O(!1), [h, M] = O(null), [N, m] = O(!1), w = qe(() => {
|
|
1858
1858
|
const $ = o.current;
|
|
1859
1859
|
a({ ...$ });
|
|
1860
1860
|
}, []), v = z(e);
|
|
@@ -1865,12 +1865,12 @@ function Ro(t, e) {
|
|
|
1865
1865
|
const I = n.client;
|
|
1866
1866
|
let E = o.current.state;
|
|
1867
1867
|
const oe = () => {
|
|
1868
|
-
var
|
|
1868
|
+
var b, ue;
|
|
1869
1869
|
const P = o.current.state;
|
|
1870
|
-
P !== E && (E = P, (ue = (
|
|
1870
|
+
P !== E && (E = P, (ue = (b = v.current).onState) == null || ue.call(b, P));
|
|
1871
1871
|
};
|
|
1872
1872
|
return (async () => {
|
|
1873
|
-
var P,
|
|
1873
|
+
var P, b, ue, B;
|
|
1874
1874
|
for (; $; ) {
|
|
1875
1875
|
let F = null;
|
|
1876
1876
|
try {
|
|
@@ -1885,9 +1885,9 @@ function Ro(t, e) {
|
|
|
1885
1885
|
if (le.type === "snapshot")
|
|
1886
1886
|
o.current = Jn(le.snapshot, le.reason === "gap" ? o.current : Pt()), w(), oe();
|
|
1887
1887
|
else if (le.type === "frame") {
|
|
1888
|
-
|
|
1888
|
+
No(o.current, le.frame);
|
|
1889
1889
|
const ve = le.frame;
|
|
1890
|
-
ve.type === "recording.state" && (E = o.current.state, (
|
|
1890
|
+
ve.type === "recording.state" && (E = o.current.state, (b = (P = v.current).onState) == null || b.call(P, ve.state, ve.reason)), (B = (ue = v.current).onFrame) == null || B.call(ue, ve), w();
|
|
1891
1891
|
} else le.type === "closed" && u(!1);
|
|
1892
1892
|
}
|
|
1893
1893
|
} catch (re) {
|
|
@@ -1920,39 +1920,39 @@ function Ro(t, e) {
|
|
|
1920
1920
|
}
|
|
1921
1921
|
const ie = o.current.state;
|
|
1922
1922
|
if (!$ || ie === "ended" || ie === "finalized" || ie === "processing") return;
|
|
1923
|
-
L += 1, await
|
|
1923
|
+
L += 1, await _o(Math.min(15e3, 1e3 * 2 ** Math.min(L, 4)));
|
|
1924
1924
|
}
|
|
1925
1925
|
})(), () => {
|
|
1926
1926
|
var P;
|
|
1927
1927
|
$ = !1, (P = l.current) == null || P.close(), l.current = null, u(!1);
|
|
1928
1928
|
};
|
|
1929
1929
|
}, [t, n, e.voice]);
|
|
1930
|
-
const [p,
|
|
1930
|
+
const [p, g] = O(!1), [C, x] = O(null), k = z(0), [J, A] = O(null), K = qe(($) => {
|
|
1931
1931
|
var oe;
|
|
1932
1932
|
if (c.current = $, (oe = l.current) == null || oe.setLanguage($), !t) return;
|
|
1933
1933
|
const L = s.current.client, I = ++k.current;
|
|
1934
|
-
|
|
1935
|
-
const E = (P) => L.recordings.transcript(t, { lang: $ ?? void 0, ...s.current.readAs, asListener: !s.current.owner }).then((
|
|
1936
|
-
I === k.current && (o.current = Jn(
|
|
1934
|
+
g(!0), x(null);
|
|
1935
|
+
const E = (P) => L.recordings.transcript(t, { lang: $ ?? void 0, ...s.current.readAs, asListener: !s.current.owner }).then((b) => {
|
|
1936
|
+
I === k.current && (o.current = Jn(b, o.current), A($), w(), b.translationPending && P > 0 && window.setTimeout(() => {
|
|
1937
1937
|
I === k.current && E(P - 1).catch(() => {
|
|
1938
1938
|
});
|
|
1939
|
-
},
|
|
1939
|
+
}, Uo));
|
|
1940
1940
|
});
|
|
1941
|
-
E(
|
|
1942
|
-
I === k.current && $ &&
|
|
1941
|
+
E(Ro).catch(() => {
|
|
1942
|
+
I === k.current && $ && x($);
|
|
1943
1943
|
}).finally(() => {
|
|
1944
|
-
I === k.current &&
|
|
1944
|
+
I === k.current && g(!1);
|
|
1945
1945
|
});
|
|
1946
1946
|
}, [w, t]), j = qe(($, L) => {
|
|
1947
1947
|
const I = o.current;
|
|
1948
1948
|
let E = !1;
|
|
1949
1949
|
for (const [oe, P] of Object.entries(L)) {
|
|
1950
|
-
const
|
|
1951
|
-
|
|
1950
|
+
const b = I.sentences.get(Number(oe));
|
|
1951
|
+
b && (b.translations = { ...b.translations, [$]: P }, E = !0);
|
|
1952
1952
|
}
|
|
1953
1953
|
E && w();
|
|
1954
1954
|
}, [w]), S = qe(() => M(null), []);
|
|
1955
|
-
return { model: r, connected: d, error:
|
|
1955
|
+
return { model: r, connected: d, error: h, notFound: N, clearError: S, setLanguage: K, mergeTranslations: j, translating: p, translateFailed: C, shownLang: J };
|
|
1956
1956
|
}
|
|
1957
1957
|
const $r = {
|
|
1958
1958
|
English: { vcFor: "Voice for", vcMute: "Mute", vcUnmute: "Unmute", vcMuted: "MUTED", vcShared: "Also used by", vcUsedBy: "Used by", vcUnknownSpk: "Unknown", vcUse: "Use this voice", vcGetting: "Downloading…", vcSample: "Here’s how it sounds.", vcPreview: "PREVIEW", vcMale: "Male", vcFemale: "Female", vcSynth: "SYNTHETIC", origAudio: "ORIGINAL AUDIO", vcCloned: "VOICES", vcBadge: "CLONED", vcNone: "TEXT ONLY", vcNoVoice: "No voice for ", vcSheet: "VOICE", vcNeutral: "SYNTHETIC VOICE", vcWarm: "SYNTHETIC VOICE", searchPlaceholder: "Search this broadcast", noise: "Audio unclear", newLines: "new", live: "LIVE", ended: "ENDED", waiting: "WAITING", corrected: "CORRECTED", hostLine: "Hosted by Marcus Reed · 4 speakers", langLabel: "LANGUAGE", langCount: "100+ languages", read: "Read", listen: "Listen", watch: "Watch", waitTitle: "The broadcast hasn’t started yet", waitBody: "The transcript appears here as soon as the host starts speaking.", english: "ENGLISH", playing: "Playing the live audio", ready: "Tap to start audio", readyNote: "Set your volume first", voiceMeta: "ORIGINAL AUDIO", voice: "Voice", sheetTitle: "APP LANGUAGE", done: "Done", search: "Search 100+ languages", sheetNote: "Follow along in your language.", moreLangs: "more", confTitle: "Some words weren't heard clearly", confBody: "The transcript marks words the model is unsure about with a dashed underline. The words keep their colour, so only the underline tells you where to look.", confMid: "Slightly unsure — probably right", confHigh: "Low confidence — may be wrong", settings: "BROADCAST", setOrig: "Show original language", setTheme: "Appearance", light: "Light", dark: "Dark", setConf: "Show uncertain words", setConfHint1: "Colours words the model is unsure about — ", setConfMid: "amber", setConfSep: " or ", setConfLow: "red", setConfHint2: "", behindLive: "TRANSLATION LATENCY", behindNote: "How far the translation trails the speaker right now.", shareLabel: "LIVE TRANSLATION LINK", copy: "Copy", copied: "Copied" },
|
|
@@ -1962,13 +1962,13 @@ const $r = {
|
|
|
1962
1962
|
Romanian: { vcFor: "Vocea pentru", vcMute: "Oprește", vcUnmute: "Pornește", vcMuted: "OPRIT", vcShared: "Folosită și de", vcUsedBy: "Folosită de", vcUnknownSpk: "Necunoscut", vcUse: "Folosește această voce", vcGetting: "Se descarcă…", vcSample: "Așa sună această voce.", vcPreview: "MOSTRĂ", vcMale: "Bărbat", vcFemale: "Femeie", vcSynth: "SINTETICĂ", origAudio: "AUDIO ORIGINAL", vcCloned: "VOCI", vcBadge: "CLONATĂ", vcNone: "DOAR TEXT", vcNoVoice: "Nicio voce pentru ", vcSheet: "VOCE", vcNeutral: "VOCE SINTETICĂ", vcWarm: "VOCE SINTETICĂ", searchPlaceholder: "Caută în transmisiune", noise: "Sunet neclar", newLines: "noi", live: "ÎN DIRECT", ended: "ÎNCHEIAT", waiting: "ÎN AȘTEPTARE", corrected: "CORECTAT", hostLine: "Prezentat de Marcus Reed · 4 vorbitori", langLabel: "LIMBĂ", langCount: "100+ de limbi", read: "Citește", listen: "Ascultă", watch: "Vizionează", waitTitle: "Transmisiunea nu a început încă", waitBody: "Transcrierea va apărea aici imediat ce gazda începe să vorbească.", english: "ENGLEZĂ", playing: "Se redă traducerea în română", ready: "Atinge pentru a porni audio", readyNote: "Reglează întâi volumul", voiceMeta: "VOCE NEUTRĂ", voice: "Voce", sheetTitle: "LIMBA APLICAȚIEI", done: "Gata", search: "Caută printre 100+ de limbi", sheetNote: "Urmărește transmisiunea în limba ta.", moreLangs: "în plus", confTitle: "Unele cuvinte nu s-au auzit clar", confBody: "Transcrierea marchează cuvintele incerte cu o subliniere întreruptă. Cuvintele își păstrează culoarea, doar sublinierea îți arată unde să te uiți.", confMid: "Ușoară nesiguranță — probabil corect", confHigh: "Încredere scăzută — poate fi greșit", settings: "TRANSMISIUNE", setOrig: "Arată limba originală", setTheme: "Aspect", light: "Luminos", dark: "Întunecat", setConf: "Arată cuvintele incerte", setConfHint1: "Colorează cuvintele incerte — ", setConfMid: "galben", setConfSep: " sau ", setConfLow: "roșu", setConfHint2: "", behindLive: "LATENȚA TRADUCERII", behindNote: "Cu cât urmează traducerea vorbitorul în acest moment.", shareLabel: "LINK DE URMĂRIRE", copy: "Copiază", copied: "Copiat" },
|
|
1963
1963
|
Portuguese: { vcFor: "Voz de", vcMute: "Silenciar", vcUnmute: "Ativar", vcMuted: "SILENCIADO", vcShared: "Também usada por", vcUsedBy: "Usada por", vcUnknownSpk: "Desconhecido", vcUse: "Usar esta voz", vcGetting: "Baixando…", vcSample: "É assim que soa.", vcPreview: "AMOSTRA", vcMale: "Homem", vcFemale: "Mulher", vcSynth: "SINTÉTICA", origAudio: "ÁUDIO ORIGINAL", vcCloned: "VOZES", vcBadge: "CLONADA", vcNone: "SÓ TEXTO", vcNoVoice: "Sem voz para ", vcSheet: "VOZ", vcNeutral: "VOZ SINTÉTICA", vcWarm: "VOZ SINTÉTICA", searchPlaceholder: "Pesquisar nesta transmissão", noise: "Áudio pouco claro", newLines: "novas", live: "AO VIVO", ended: "ENCERRADA", waiting: "AGUARDANDO", corrected: "CORRIGIDO", hostLine: "Apresentado por Marcus Reed · 4 falantes", langLabel: "IDIOMA", langCount: "100+ idiomas", read: "Ler", listen: "Ouvir", watch: "Assistir", waitTitle: "A transmissão ainda não começou", waitBody: "A transcrição aparece aqui assim que o apresentador começar a falar.", english: "INGLÊS", playing: "Reproduzindo a tradução em português", ready: "Toque para iniciar o áudio", readyNote: "Ajuste o volume primeiro", voiceMeta: "VOZ NEUTRA", voice: "Voz", sheetTitle: "IDIOMA DO APP", done: "Concluído", search: "Pesquisar entre 100+ idiomas", sheetNote: "Acompanhe a transmissão no seu idioma.", moreLangs: "mais", confTitle: "Algumas palavras não foram bem ouvidas", confBody: "A transcrição marca as palavras duvidosas com um sublinhado tracejado. As palavras mantêm a sua cor, por isso só o sublinhado indica onde olhar.", confMid: "Pouca dúvida — provavelmente certa", confHigh: "Baixa confiança — pode estar errada", settings: "TRANSMISSÃO", setOrig: "Mostrar idioma original", setTheme: "Aparência", light: "Claro", dark: "Escuro", setConf: "Mostrar palavras duvidosas", setConfHint1: "Colore as palavras duvidosas: ", setConfMid: "âmbar", setConfSep: " ou ", setConfLow: "vermelho", setConfHint2: "", behindLive: "LATÊNCIA DE TRADUÇÃO", behindNote: "Quanto a tradução está atrás de quem fala agora.", shareLabel: "LINK PARA ACOMPANHAR", copy: "Copiar", copied: "Copiado" }
|
|
1964
1964
|
};
|
|
1965
|
-
function
|
|
1965
|
+
function vi(t) {
|
|
1966
1966
|
return t && $r[t] || $r.English;
|
|
1967
1967
|
}
|
|
1968
|
-
async function
|
|
1968
|
+
async function ji(t) {
|
|
1969
1969
|
var r, a, o, l, c;
|
|
1970
1970
|
const e = await t.json().catch(() => null), n = ((r = e == null ? void 0 : e.error) == null ? void 0 : r.code) ?? (e == null ? void 0 : e.code), s = ((a = e == null ? void 0 : e.error) == null ? void 0 : a.message) ?? (e == null ? void 0 : e.message);
|
|
1971
|
-
return new
|
|
1971
|
+
return new ti(typeof n == "string" ? n : "internal", typeof s == "string" ? s : gs, { status: t.status, details: ((l = (o = e == null ? void 0 : e.error) == null ? void 0 : o.data) == null ? void 0 : l.details) ?? ((c = e == null ? void 0 : e.data) == null ? void 0 : c.details) });
|
|
1972
1972
|
}
|
|
1973
1973
|
function ts(t) {
|
|
1974
1974
|
switch (t) {
|
|
@@ -1986,14 +1986,14 @@ function ts(t) {
|
|
|
1986
1986
|
return "queued";
|
|
1987
1987
|
}
|
|
1988
1988
|
}
|
|
1989
|
-
function
|
|
1989
|
+
function Qo(t) {
|
|
1990
1990
|
return t ? { state: t.state, processedS: t.progress.processedS, totalS: t.progress.totalS ?? null, segmentsDone: t.progress.segmentsDone, segmentsTotal: t.progress.segmentsTotal ?? null, pct: t.progress.pct, error: t.error ?? null } : null;
|
|
1991
1991
|
}
|
|
1992
|
-
const
|
|
1992
|
+
const $o = (t, e) => {
|
|
1993
1993
|
const n = (t == null ? void 0 : t.segmentsDone) ?? e, s = Math.max(n, (t == null ? void 0 : t.segmentsTotal) ?? n);
|
|
1994
1994
|
return `${n} / ${s} SEGMENTS`;
|
|
1995
1995
|
};
|
|
1996
|
-
function
|
|
1996
|
+
function Bo(t, e) {
|
|
1997
1997
|
var r;
|
|
1998
1998
|
const n = ((r = t == null ? void 0 : t.source) == null ? void 0 : r.durationS) ?? (e == null ? void 0 : e.totalS) ?? null, s = t == null ? void 0 : t.crop;
|
|
1999
1999
|
if (s && (s.startS != null || s.endS != null)) {
|
|
@@ -2002,7 +2002,7 @@ function $o(t, e) {
|
|
|
2002
2002
|
}
|
|
2003
2003
|
return n;
|
|
2004
2004
|
}
|
|
2005
|
-
const
|
|
2005
|
+
const hs = [
|
|
2006
2006
|
{ key: "pdf", name: "PDF", ext: "PDF", note: "Formatted transcript in paragraphs, with timestamps and speaker labels.", icon: "M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z" },
|
|
2007
2007
|
{ key: "xlsx", name: "Excel", ext: "XLSX", note: "One row per segment: start, end, speaker, text, confidence.", icon: "M3.375 19.5h17.25m-17.25 0a1.125 1.125 0 0 1-1.125-1.125M3.375 19.5h7.5c.621 0 1.125-.504 1.125-1.125m-9.75 0V5.625m0 12.75v-1.5c0-.621.504-1.125 1.125-1.125m18.375 2.625V5.625m0 12.75c0 .621-.504 1.125-1.125 1.125m1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125m0 3.75h-7.5A1.125 1.125 0 0 1 12 18.375m9.75-12.75c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125m19.5 0v1.5c0 .621-.504 1.125-1.125 1.125M2.25 5.625v1.5c0 .621.504 1.125 1.125 1.125m0 0h17.25m-17.25 0h7.5c.621 0 1.125.504 1.125 1.125M3.375 8.25c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125m17.25-3.75h-7.5c-.621 0-1.125.504-1.125 1.125m8.625-1.125c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125m0 0h-7.5m-9 0h7.5m0 0c.621 0 1.125.504 1.125 1.125M12 10.875v-1.5m0 1.5c0 .621-.504 1.125-1.125 1.125M12 10.875c0 .621.504 1.125 1.125 1.125m-2.25 0c.621 0 1.125.504 1.125 1.125M13.125 12h7.5m-7.5 0c-.621 0-1.125.504-1.125 1.125M20.625 12c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125m-17.25 0h7.5M12 14.625v-1.5m0 1.5c0 .621-.504 1.125-1.125 1.125M12 14.625c0 .621.504 1.125 1.125 1.125m-2.25 0c.621 0 1.125.504 1.125 1.125m0 1.5v-1.5m0 0c0-.621.504-1.125 1.125-1.125m0 0h7.5" },
|
|
2008
2008
|
{ key: "srt", name: "Subtitles", ext: "SRT / VTT", note: "Timed caption cues, ready for a video editor or a player.", icon: "M2.25 15.75V8.25A2.25 2.25 0 0 1 4.5 6h15a2.25 2.25 0 0 1 2.25 2.25v7.5A2.25 2.25 0 0 1 19.5 18h-15a2.25 2.25 0 0 1-2.25-2.25Zm4.5-4.5h4.5m-4.5 3h1.5m3 0h6m-3-3h3" },
|
|
@@ -2012,20 +2012,20 @@ function Cs(t) {
|
|
|
2012
2012
|
const e = document.createElement("a");
|
|
2013
2013
|
e.href = t, e.style.display = "none", document.body.appendChild(e), e.click(), e.remove();
|
|
2014
2014
|
}
|
|
2015
|
-
async function
|
|
2015
|
+
async function Ho(t) {
|
|
2016
2016
|
const e = await fetch(t, { redirect: "manual" });
|
|
2017
|
-
if (e.type !== "opaqueredirect" && !e.ok) throw await
|
|
2017
|
+
if (e.type !== "opaqueredirect" && !e.ok) throw await ji(e);
|
|
2018
2018
|
Cs(t);
|
|
2019
2019
|
}
|
|
2020
|
-
async function
|
|
2020
|
+
async function Vo(t, e, n, s = {}) {
|
|
2021
2021
|
var M, N;
|
|
2022
2022
|
const r = await t.client.recordings.export(e, n, { lang: s.lang ?? void 0, ...t.readAs });
|
|
2023
|
-
if (!r.ok) throw await
|
|
2024
|
-
const a = await r.blob(), o = r.headers.get("content-disposition") ?? "", l = (M = /filename\*=UTF-8''([^;]+)/i.exec(o)) == null ? void 0 : M[1], c = (N = /filename="([^"]+)"/i.exec(o)) == null ? void 0 : N[1], d = l ? decodeURIComponent(l) : c ?? `transcript.${n}`, u = URL.createObjectURL(a),
|
|
2025
|
-
|
|
2023
|
+
if (!r.ok) throw await ji(r);
|
|
2024
|
+
const a = await r.blob(), o = r.headers.get("content-disposition") ?? "", l = (M = /filename\*=UTF-8''([^;]+)/i.exec(o)) == null ? void 0 : M[1], c = (N = /filename="([^"]+)"/i.exec(o)) == null ? void 0 : N[1], d = l ? decodeURIComponent(l) : c ?? `transcript.${n}`, u = URL.createObjectURL(a), h = document.createElement("a");
|
|
2025
|
+
h.href = u, h.download = d, h.style.display = "none", document.body.appendChild(h), h.click(), h.remove(), window.setTimeout(() => URL.revokeObjectURL(u), 6e4);
|
|
2026
2026
|
}
|
|
2027
|
-
async function
|
|
2028
|
-
const { recordingId: n, lang: s, voiceKey: r, cred: a } = e, o = async () => (await t.client.recordings.voice(n, s, t.readAs)).filter((
|
|
2027
|
+
async function Wo(t, e) {
|
|
2028
|
+
const { recordingId: n, lang: s, voiceKey: r, cred: a } = e, o = async () => (await t.client.recordings.voice(n, s, t.readAs)).filter((h) => h.lang === s), l = (u) => di(u, r);
|
|
2029
2029
|
let c = l(await o());
|
|
2030
2030
|
(!c || c.state === "clips" || c.state === "failed") && await e.request();
|
|
2031
2031
|
const d = Date.now() + (e.timeoutMs ?? 10 * 6e4);
|
|
@@ -2034,25 +2034,25 @@ async function Vo(t, e) {
|
|
|
2034
2034
|
if (Date.now() > d) throw new Error("The spoken track is taking too long; try again in a moment.");
|
|
2035
2035
|
await new Promise((u) => setTimeout(u, 4e3)), c = l(await o());
|
|
2036
2036
|
}
|
|
2037
|
-
Cs(
|
|
2037
|
+
Cs(Da(t.origin, n, s, c.voiceKey, a));
|
|
2038
2038
|
}
|
|
2039
2039
|
const fs = (t) => {
|
|
2040
2040
|
var e;
|
|
2041
2041
|
return ((e = t == null ? void 0 : t.match(/(?:youtu\.be\/|[?&]v=|\/shorts\/|\/embed\/|\/live\/)([\w-]{11})/)) == null ? void 0 : e[1]) ?? null;
|
|
2042
|
-
},
|
|
2043
|
-
function
|
|
2042
|
+
}, Fo = (t) => `https://www.youtube-nocookie.com/embed/${t}?autoplay=1&mute=1&controls=0&rel=0&modestbranding=1&playsinline=1&iv_load_policy=3`, Br = 0.3, Go = 1.5;
|
|
2043
|
+
function zi(t, e, n) {
|
|
2044
2044
|
var r;
|
|
2045
2045
|
const s = (r = t.words[t.words.length - 1]) == null ? void 0 : r.end;
|
|
2046
2046
|
return s != null && s > t.start ? s : t.end != null && t.end > t.start ? t.end : (e == null ? void 0 : e.start) ?? n;
|
|
2047
2047
|
}
|
|
2048
|
-
function
|
|
2048
|
+
function Zo(t, e, n) {
|
|
2049
2049
|
var c, d;
|
|
2050
2050
|
const s = t[e];
|
|
2051
2051
|
if (!s) return !1;
|
|
2052
|
-
const r = (((c = s.words[0]) == null ? void 0 : c.start) ?? s.start) - Br, a = t[e + 1], o =
|
|
2052
|
+
const r = (((c = s.words[0]) == null ? void 0 : c.start) ?? s.start) - Br, a = t[e + 1], o = zi(s, a, s.start + 4) + Go, l = a ? Math.min(o, (((d = a.words[0]) == null ? void 0 : d.start) ?? a.start) - Br) : o;
|
|
2053
2053
|
return n >= r && n < Math.max(l, r + 0.5);
|
|
2054
2054
|
}
|
|
2055
|
-
function
|
|
2055
|
+
function qo(t, e, n) {
|
|
2056
2056
|
const s = Math.max(0, n - e), r = t.map((l) => Math.max(1, [...l.replace(/[^\p{L}\p{N}]/gu, "")].length)), a = r.reduce((l, c) => l + c, 0) || 1;
|
|
2057
2057
|
let o = e;
|
|
2058
2058
|
return t.map((l, c) => {
|
|
@@ -2067,7 +2067,7 @@ function ns(t) {
|
|
|
2067
2067
|
bottom: Math.min(parseFloat(e.paddingBottom) || 0, n)
|
|
2068
2068
|
};
|
|
2069
2069
|
}
|
|
2070
|
-
function
|
|
2070
|
+
function Ko(t, e, n = 0) {
|
|
2071
2071
|
const s = z(() => {
|
|
2072
2072
|
});
|
|
2073
2073
|
Y(() => {
|
|
@@ -2087,7 +2087,7 @@ function qo(t, e, n = 0) {
|
|
|
2087
2087
|
const A = o(), K = A ? A.offsetHeight : 0, j = r.clientHeight - K - 36, S = r.scrollHeight - r.clientHeight, $ = j > 0 ? Math.max(30, Math.round(j * (r.clientHeight - K) / r.scrollHeight)) : 0;
|
|
2088
2088
|
return { vis: j, max: S, size: $ };
|
|
2089
2089
|
};
|
|
2090
|
-
let c = -1, d = null, u = !1,
|
|
2090
|
+
let c = -1, d = null, u = !1, h = 0, M = 0;
|
|
2091
2091
|
const N = () => {
|
|
2092
2092
|
const A = o();
|
|
2093
2093
|
if (!A) return;
|
|
@@ -2112,28 +2112,28 @@ function qo(t, e, n = 0) {
|
|
|
2112
2112
|
return;
|
|
2113
2113
|
}
|
|
2114
2114
|
a.style.pointerEvents = "auto", a.style.height = j.size + "px", a.style.transform = "translateY(" + Math.round(r.scrollTop / j.max * (j.vis - j.size)) + "px)", A && m();
|
|
2115
|
-
},
|
|
2116
|
-
a.style.right = (
|
|
2117
|
-
const C = () => p(!0),
|
|
2115
|
+
}, g = parseFloat(getComputedStyle(r).paddingRight) || 0;
|
|
2116
|
+
a.style.right = (g >= 12 ? -(g - 6) : 2) + "px";
|
|
2117
|
+
const C = () => p(!0), x = (A) => {
|
|
2118
2118
|
const K = l();
|
|
2119
|
-
K.vis - K.size <= 0 || (A.preventDefault(), A.stopPropagation(), a.setPointerCapture(A.pointerId), u = !0,
|
|
2119
|
+
K.vis - K.size <= 0 || (A.preventDefault(), A.stopPropagation(), a.setPointerCapture(A.pointerId), u = !0, h = A.clientY, M = r.scrollTop, a.style.cursor = "grabbing", m());
|
|
2120
2120
|
}, k = (A) => {
|
|
2121
2121
|
if (!u) return;
|
|
2122
2122
|
const K = l();
|
|
2123
|
-
r.scrollTop = M + (A.clientY -
|
|
2123
|
+
r.scrollTop = M + (A.clientY - h) / (K.vis - K.size) * K.max, m();
|
|
2124
2124
|
}, J = () => {
|
|
2125
2125
|
u && (u = !1, a.style.cursor = "grab", m());
|
|
2126
2126
|
};
|
|
2127
|
-
return r.addEventListener("scroll", C, { passive: !0 }), a.addEventListener("pointerdown",
|
|
2127
|
+
return r.addEventListener("scroll", C, { passive: !0 }), a.addEventListener("pointerdown", x), a.addEventListener("pointermove", k), a.addEventListener("pointerup", J), a.addEventListener("pointercancel", J), typeof ResizeObserver < "u" && (w = new ResizeObserver(() => p()), w.observe(r)), s.current = () => p(), p(), () => {
|
|
2128
2128
|
s.current = () => {
|
|
2129
|
-
}, r.removeEventListener("scroll", C), a.removeEventListener("pointerdown",
|
|
2129
|
+
}, r.removeEventListener("scroll", C), a.removeEventListener("pointerdown", x), a.removeEventListener("pointermove", k), a.removeEventListener("pointerup", J), a.removeEventListener("pointercancel", J), w == null || w.disconnect(), clearTimeout(d);
|
|
2130
2130
|
};
|
|
2131
2131
|
}, []);
|
|
2132
2132
|
}
|
|
2133
|
-
function
|
|
2133
|
+
function Jo({ thumbRef: t }) {
|
|
2134
2134
|
return /* @__PURE__ */ i("div", { className: "feedbar", "aria-hidden": "true", children: /* @__PURE__ */ i("div", { ref: t, className: "feedbar__thumb" }) });
|
|
2135
2135
|
}
|
|
2136
|
-
function
|
|
2136
|
+
function Xo({ error: t, onClose: e }) {
|
|
2137
2137
|
const n = z(e);
|
|
2138
2138
|
if (n.current = e, Y(() => {
|
|
2139
2139
|
if (!t) return;
|
|
@@ -2153,7 +2153,7 @@ function Jo({ error: t, onClose: e }) {
|
|
|
2153
2153
|
/* @__PURE__ */ i("button", { type: "button", onClick: e, "aria-label": "Dismiss", children: /* @__PURE__ */ i(de, { d: q.close, size: 14 }) })
|
|
2154
2154
|
] });
|
|
2155
2155
|
}
|
|
2156
|
-
function
|
|
2156
|
+
function Ii({ color: t }) {
|
|
2157
2157
|
return /* @__PURE__ */ i("span", { title: "Cloned voice", style: { flex: "none", display: "inline-flex" }, children: /* @__PURE__ */ i(de, { d: q.voiceClone, size: 13, sw: 1.7, stroke: t }) });
|
|
2158
2158
|
}
|
|
2159
2159
|
function Hc({ chip: t, note: e, scrub: n, mute: s, voice: r, prev: a, play: o, next: l }) {
|
|
@@ -2173,10 +2173,10 @@ function Hc({ chip: t, note: e, scrub: n, mute: s, voice: r, prev: a, play: o, n
|
|
|
2173
2173
|
] })
|
|
2174
2174
|
] });
|
|
2175
2175
|
}
|
|
2176
|
-
function
|
|
2177
|
-
const
|
|
2176
|
+
function el({ index: t, total: e, atLabel: n, durLabel: s, stepLabel: r, onSeek: a, onSeekFrac: o, onScrubStart: l, onScrubEnd: c, frac: d, glideMs: u = 260 }) {
|
|
2177
|
+
const h = z(null), M = z(!1), [N, m] = O(null), w = Math.max(1, e), v = N ?? d, p = v != null ? Math.min(100, Math.max(0, v * 100)) : t / Math.max(1, w - 1) * 100, g = d != null && u > 0 && N == null ? `width ${u}ms linear, left ${u}ms linear` : "none", C = (k) => {
|
|
2178
2178
|
var j;
|
|
2179
|
-
const J = (j =
|
|
2179
|
+
const J = (j = h.current) == null ? void 0 : j.getBoundingClientRect();
|
|
2180
2180
|
if (!J) return;
|
|
2181
2181
|
const A = Math.min(1, Math.max(0, (k.clientX - J.left) / Math.max(1, J.width)));
|
|
2182
2182
|
if (o) {
|
|
@@ -2185,28 +2185,28 @@ function Xo({ index: t, total: e, atLabel: n, durLabel: s, stepLabel: r, onSeek:
|
|
|
2185
2185
|
}
|
|
2186
2186
|
const K = Math.round(A * (w - 1));
|
|
2187
2187
|
K !== t && a(K);
|
|
2188
|
-
},
|
|
2188
|
+
}, x = () => {
|
|
2189
2189
|
M.current && (M.current = !1, m(null), c == null || c());
|
|
2190
2190
|
};
|
|
2191
2191
|
return /* @__PURE__ */ f("div", { className: "rscrub", children: [
|
|
2192
2192
|
/* @__PURE__ */ f(
|
|
2193
2193
|
"div",
|
|
2194
2194
|
{
|
|
2195
|
-
ref:
|
|
2195
|
+
ref: h,
|
|
2196
2196
|
className: "rscrub__track",
|
|
2197
2197
|
onPointerDown: (k) => {
|
|
2198
2198
|
var J;
|
|
2199
|
-
M.current = !0, (J =
|
|
2199
|
+
M.current = !0, (J = h.current) == null || J.setPointerCapture(k.pointerId), l == null || l(), C(k), k.preventDefault();
|
|
2200
2200
|
},
|
|
2201
2201
|
onPointerMove: (k) => {
|
|
2202
2202
|
M.current && C(k);
|
|
2203
2203
|
},
|
|
2204
|
-
onPointerUp:
|
|
2205
|
-
onPointerCancel:
|
|
2204
|
+
onPointerUp: x,
|
|
2205
|
+
onPointerCancel: x,
|
|
2206
2206
|
children: [
|
|
2207
2207
|
/* @__PURE__ */ i("div", { className: "rscrub__rail" }),
|
|
2208
|
-
/* @__PURE__ */ i("div", { className: "rscrub__fill", style: { width: `${p}%`, transition:
|
|
2209
|
-
/* @__PURE__ */ i("div", { className: "rscrub__knob", style: { left: `${p}%`, transition:
|
|
2208
|
+
/* @__PURE__ */ i("div", { className: "rscrub__fill", style: { width: `${p}%`, transition: g } }),
|
|
2209
|
+
/* @__PURE__ */ i("div", { className: "rscrub__knob", style: { left: `${p}%`, transition: g } })
|
|
2210
2210
|
]
|
|
2211
2211
|
}
|
|
2212
2212
|
),
|
|
@@ -2217,7 +2217,7 @@ function Xo({ index: t, total: e, atLabel: n, durLabel: s, stepLabel: r, onSeek:
|
|
|
2217
2217
|
] })
|
|
2218
2218
|
] });
|
|
2219
2219
|
}
|
|
2220
|
-
function
|
|
2220
|
+
function tl(t, e, n) {
|
|
2221
2221
|
const s = new Set(t.seqs ?? t.words.map((l) => l.seq)), r = (e ?? []).filter((l) => !l.revertedAt && l.seq != null && s.has(l.seq) && (l.kind === "word" || l.kind === "line")), a = r.some((l) => l.kind === "line"), o = (l) => !!(n != null && n.has(`${l.seq}:${l.idx}`));
|
|
2222
2222
|
return {
|
|
2223
2223
|
script: a ? 0 : t.words.filter((l) => l.script && !o(l)).length,
|
|
@@ -2225,7 +2225,7 @@ function el(t, e, n) {
|
|
|
2225
2225
|
manualCount: a ? 0 : r.filter((l) => l.kind === "word").length
|
|
2226
2226
|
};
|
|
2227
2227
|
}
|
|
2228
|
-
function
|
|
2228
|
+
function nl({ f: t, desk: e, onOpen: n }) {
|
|
2229
2229
|
const s = (r, a, o) => /* @__PURE__ */ f("span", { role: "button", title: "Open this line in Fix", className: "badge badge--fix", style: { marginLeft: o ? "auto" : 0 }, onClick: (l) => {
|
|
2230
2230
|
l.stopPropagation(), n == null || n();
|
|
2231
2231
|
}, children: [
|
|
@@ -2238,7 +2238,7 @@ function tl({ f: t, desk: e, onOpen: n }) {
|
|
|
2238
2238
|
t.manual && s(e ? "MANUAL FIX" : "MANUAL", t.manualCount, t.script === 0)
|
|
2239
2239
|
] });
|
|
2240
2240
|
}
|
|
2241
|
-
function
|
|
2241
|
+
function sl({ onOpen: t, alone: e }) {
|
|
2242
2242
|
const [n, s] = O(!1);
|
|
2243
2243
|
return /* @__PURE__ */ f("span", { role: "button", title: "Fix this line", className: `badge badge--pen${n ? " is-over" : ""}`, style: { marginLeft: e ? "auto" : 0 }, onMouseEnter: () => s(!0), onMouseLeave: () => s(!1), onClick: (r) => {
|
|
2244
2244
|
r.stopPropagation(), t();
|
|
@@ -2247,8 +2247,8 @@ function nl({ onOpen: t, alone: e }) {
|
|
|
2247
2247
|
n && "FIX"
|
|
2248
2248
|
] });
|
|
2249
2249
|
}
|
|
2250
|
-
function
|
|
2251
|
-
const r = Yt(), [a, o] = O([]), [l, c] = O(0), d = z(/* @__PURE__ */ new Set()), u = z(!1),
|
|
2250
|
+
function rl(t, e, n, s) {
|
|
2251
|
+
const r = Yt(), [a, o] = O([]), [l, c] = O(0), d = z(/* @__PURE__ */ new Set()), u = z(!1), h = Ie(() => new Map(n.filter((N) => N.sentenceId != null).map((N) => [N.sentenceId, N])), [n]);
|
|
2252
2252
|
Y(() => {
|
|
2253
2253
|
d.current = /* @__PURE__ */ new Set();
|
|
2254
2254
|
}, [t, e]);
|
|
@@ -2256,7 +2256,7 @@ function sl(t, e, n, s) {
|
|
|
2256
2256
|
return Y(() => {
|
|
2257
2257
|
if (!t || !e || !a.length || u.current) return;
|
|
2258
2258
|
const N = a.filter((m) => {
|
|
2259
|
-
const w =
|
|
2259
|
+
const w = h.get(m);
|
|
2260
2260
|
return !w || !w.text.trim() || !w.settled || w.translations[e] || w.language && w.language.slice(0, 2).toLowerCase() === e.slice(0, 2).toLowerCase() ? !1 : !d.current.has(`${e}:${m}`);
|
|
2261
2261
|
}).slice(0, 40);
|
|
2262
2262
|
if (N.length) {
|
|
@@ -2272,15 +2272,15 @@ function sl(t, e, n, s) {
|
|
|
2272
2272
|
u.current = !1, c((m) => m + 1);
|
|
2273
2273
|
});
|
|
2274
2274
|
}
|
|
2275
|
-
}, [t, e, a, l,
|
|
2275
|
+
}, [t, e, a, l, h, s]), M;
|
|
2276
2276
|
}
|
|
2277
|
-
function
|
|
2277
|
+
function il(t) {
|
|
2278
2278
|
return t.live || t.auto ? "From this session" : t.cloned ? t.library === !1 ? "This transcription only" : "Saved in Voices" : "";
|
|
2279
2279
|
}
|
|
2280
2280
|
function Zt(t, e) {
|
|
2281
2281
|
return t.cloned ? { rank: 0, head: e.vcSheet } : t.gender === "male" ? { rank: 1, head: e.vcMale.toUpperCase() } : t.gender === "female" ? { rank: 2, head: e.vcFemale.toUpperCase() } : { rank: 3, head: e.vcSynth };
|
|
2282
2282
|
}
|
|
2283
|
-
function
|
|
2283
|
+
function al(t, e) {
|
|
2284
2284
|
const n = t.slice().sort((r, a) => Zt(r, e).rank - Zt(a, e).rank || r.name.localeCompare(a.name, void 0, { numeric: !0 })), s = {};
|
|
2285
2285
|
for (const r of n) {
|
|
2286
2286
|
const a = Zt(r, e).head;
|
|
@@ -2291,7 +2291,7 @@ function il(t, e) {
|
|
|
2291
2291
|
return { v: r, headOn: l, head: o, headCount: s[o], rule: l ? "0" : "1px solid var(--hair)" };
|
|
2292
2292
|
});
|
|
2293
2293
|
}
|
|
2294
|
-
function
|
|
2294
|
+
function ol(t, e, n) {
|
|
2295
2295
|
const s = /* @__PURE__ */ new Set();
|
|
2296
2296
|
let r = !1;
|
|
2297
2297
|
for (const o of t)
|
|
@@ -2302,7 +2302,7 @@ function al(t, e, n) {
|
|
|
2302
2302
|
return {
|
|
2303
2303
|
key: o,
|
|
2304
2304
|
name: zs(e, o),
|
|
2305
|
-
initial:
|
|
2305
|
+
initial: mi(e, o),
|
|
2306
2306
|
lane: l.lane,
|
|
2307
2307
|
sex: e.speakerSex[o] ?? null,
|
|
2308
2308
|
voiceId: ((c = e.speakerIds[o]) == null ? void 0 : c.voiceId) ?? null,
|
|
@@ -2336,23 +2336,23 @@ function Wr(t, e, n = !0) {
|
|
|
2336
2336
|
a.set(o.key, c.id), r.add(c.id);
|
|
2337
2337
|
continue;
|
|
2338
2338
|
}
|
|
2339
|
-
const d = s.filter((M) => !r.has(M.id)),
|
|
2340
|
-
|
|
2339
|
+
const d = s.filter((M) => !r.has(M.id)), h = (o.sex ? d.filter((M) => M.gender === o.sex) : [])[0] ?? d[0] ?? s[0];
|
|
2340
|
+
h && (a.set(o.key, h.id), r.add(h.id));
|
|
2341
2341
|
}
|
|
2342
2342
|
return a;
|
|
2343
2343
|
}
|
|
2344
|
-
function
|
|
2344
|
+
function ll({ roster: t, selected: e, onSelect: n, noClone: s, building: r, short: a, warn: o, sexOf: l, t: c }) {
|
|
2345
2345
|
const d = t.find((u) => u.key === e) ?? t[0] ?? null;
|
|
2346
2346
|
return d ? /* @__PURE__ */ i("div", { style: { display: "flex", flexWrap: "wrap", gap: 6, padding: "0 2px 9px", margin: "0 -2px" }, children: t.map((u) => {
|
|
2347
|
-
const
|
|
2347
|
+
const h = u.key === d.key, M = u.key >= 0 ? (o == null ? void 0 : o(u)) ?? null : null, N = u.key >= 0 && !M && !!(r != null && r(u)), m = u.key >= 0 && !M && !N && s(u), w = u.key >= 0 && !M && !N && !m && !u.hasVoice && !!(a != null && a(u));
|
|
2348
2348
|
return /* @__PURE__ */ f(
|
|
2349
2349
|
"button",
|
|
2350
2350
|
{
|
|
2351
2351
|
type: "button",
|
|
2352
|
-
"aria-selected":
|
|
2352
|
+
"aria-selected": h,
|
|
2353
2353
|
onClick: () => n(u.key),
|
|
2354
2354
|
title: u.name,
|
|
2355
|
-
style: { flex: "none", boxSizing: "border-box", display: "flex", alignItems: "center", gap: 7, minHeight: 34, padding: "5px 11px", borderRadius: 9, font: "inherit", background:
|
|
2355
|
+
style: { flex: "none", boxSizing: "border-box", display: "flex", alignItems: "center", gap: 7, minHeight: 34, padding: "5px 11px", borderRadius: 9, font: "inherit", background: h ? "var(--brand-tint)" : "var(--fill-05)", border: `1px solid ${h ? "var(--brand-line)" : "transparent"}`, cursor: "pointer" },
|
|
2356
2356
|
children: [
|
|
2357
2357
|
/* @__PURE__ */ i(
|
|
2358
2358
|
"span",
|
|
@@ -2362,10 +2362,10 @@ function ol({ roster: t, selected: e, onSelect: n, noClone: s, building: r, shor
|
|
|
2362
2362
|
children: u.initial
|
|
2363
2363
|
}
|
|
2364
2364
|
),
|
|
2365
|
-
/* @__PURE__ */ i("span", { style: { fontSize: 12.5, fontWeight: 500, color:
|
|
2366
|
-
u.hasVoice && !M && /* @__PURE__ */ i(
|
|
2365
|
+
/* @__PURE__ */ i("span", { style: { fontSize: 12.5, fontWeight: 500, color: h ? "var(--ink-96)" : "var(--ink-62)", whiteSpace: "nowrap" }, children: u.name }),
|
|
2366
|
+
u.hasVoice && !M && /* @__PURE__ */ i(Ii, { color: u.fg ?? (h ? "var(--ink-62)" : "var(--ink-45)") }),
|
|
2367
2367
|
M && /* @__PURE__ */ i("span", { title: M, "aria-label": M, style: { flex: "none", width: 15, height: 15, marginRight: -2, borderRadius: "50%", background: "#c27c00", color: "#fff", font: "900 10.5px/1 system-ui, sans-serif", display: "flex", alignItems: "center", justifyContent: "center" }, children: "!" }),
|
|
2368
|
-
w && /* @__PURE__ */ i("span", { title: "Not enough audio to clone", "aria-label": "Not enough audio to clone", style: { flex: "none", display: "flex", marginRight: -2, color:
|
|
2368
|
+
w && /* @__PURE__ */ i("span", { title: "Not enough audio to clone", "aria-label": "Not enough audio to clone", style: { flex: "none", display: "flex", marginRight: -2, color: h ? "var(--ink-45)" : "var(--ink-35)" }, children: /* @__PURE__ */ i(de, { d: q.micOff, size: 13, sw: 1.7 }) }),
|
|
2369
2369
|
(m || N) && /* @__PURE__ */ i("span", { title: N ? "Cloning this voice…" : "No voice clone yet", "aria-label": N ? "Cloning this voice" : "No voice clone yet", style: { flex: "none", width: 10, height: 10, marginRight: -2, display: "flex", alignItems: "center", justifyContent: "center" }, children: N ? /* @__PURE__ */ i(ct, { size: 10, color: "var(--brand)", track: "var(--fill-10)", sw: 1.6 }) : /* @__PURE__ */ i("span", { style: { width: 7, height: 7, borderRadius: "50%", background: "var(--brand)" } }) })
|
|
2370
2370
|
]
|
|
2371
2371
|
},
|
|
@@ -2373,21 +2373,21 @@ function ol({ roster: t, selected: e, onSelect: n, noClone: s, building: r, shor
|
|
|
2373
2373
|
);
|
|
2374
2374
|
}) }) : null;
|
|
2375
2375
|
}
|
|
2376
|
-
function
|
|
2377
|
-
const w = Ie(() =>
|
|
2376
|
+
function cl({ cast: t, voices: e, currentId: n, armedId: s = null, sampleId: r = null, dlId: a = null, onPick: o, onAdd: l, onUse: c, usedBy: d, foldKey: u, foldFor: h = null, problem: M, noClone: N = null, t: m }) {
|
|
2377
|
+
const w = Ie(() => al(e, m), [e, m]), [v, p] = O({});
|
|
2378
2378
|
Y(() => {
|
|
2379
2379
|
p({});
|
|
2380
|
-
}, [u,
|
|
2381
|
-
const
|
|
2380
|
+
}, [u, h]);
|
|
2381
|
+
const g = (k) => k === m.vcMale.toUpperCase() || k === m.vcFemale.toUpperCase(), C = (k) => {
|
|
2382
2382
|
if (k === m.vcSheet) return !0;
|
|
2383
2383
|
const J = v[k];
|
|
2384
|
-
return J != null ? !J : !
|
|
2385
|
-
},
|
|
2384
|
+
return J != null ? !J : !h || !g(k) ? !0 : k === (h === "female" ? m.vcFemale : m.vcMale).toUpperCase();
|
|
2385
|
+
}, x = !!s && s !== n;
|
|
2386
2386
|
return /* @__PURE__ */ f("div", { style: { display: "flex", flexDirection: "column" }, children: [
|
|
2387
2387
|
M && /* @__PURE__ */ f("div", { style: { display: "flex", alignItems: "flex-start", gap: 9, padding: "10px 11px", marginBottom: 10, borderRadius: 11, background: "var(--conf-low-soft)" }, children: [
|
|
2388
2388
|
/* @__PURE__ */ i(de, { d: q.warnTri, size: 15, sw: 1.7, style: { flex: "none", marginTop: 1, color: "var(--conf-low)" } }),
|
|
2389
2389
|
/* @__PURE__ */ i("span", { style: { flex: 1, minWidth: 0, fontSize: 12.5, fontWeight: 300, lineHeight: 1.45, color: "var(--ink-80)", textWrap: "pretty" }, children: M }),
|
|
2390
|
-
/* @__PURE__ */ i("span", { style: { flex: "none", marginTop: -1 }, children: /* @__PURE__ */ i(
|
|
2390
|
+
/* @__PURE__ */ i("span", { style: { flex: "none", marginTop: -1 }, children: /* @__PURE__ */ i(Ia, { value: M, label: "Copy this error" }) })
|
|
2391
2391
|
] }),
|
|
2392
2392
|
t,
|
|
2393
2393
|
N && /* @__PURE__ */ f(Pe, { children: [
|
|
@@ -2403,8 +2403,8 @@ function ll({ cast: t, voices: e, currentId: n, armedId: s = null, sampleId: r =
|
|
|
2403
2403
|
] })
|
|
2404
2404
|
] }),
|
|
2405
2405
|
w.map(({ v: k, headOn: J, head: A, headCount: K, rule: j }, S) => {
|
|
2406
|
-
const $ =
|
|
2407
|
-
return /* @__PURE__ */ f(
|
|
2406
|
+
const $ = il(k), L = a === k.id, I = C(A), E = (d == null ? void 0 : d(k)) ?? null;
|
|
2407
|
+
return /* @__PURE__ */ f(fa, { children: [
|
|
2408
2408
|
J && A === m.vcSheet && /* @__PURE__ */ i("div", { style: { display: "flex", alignItems: "center", padding: "14px 2px 6px", borderTop: S === 0 && !N ? "0" : "1px solid var(--hair)", userSelect: "none" }, children: /* @__PURE__ */ i("span", { style: { font: "600 9px var(--vs-font-mono)", letterSpacing: ".13em", color: "var(--ink-62)" }, children: A }) }),
|
|
2409
2409
|
J && A !== m.vcSheet && /* @__PURE__ */ f(
|
|
2410
2410
|
"button",
|
|
@@ -2434,8 +2434,8 @@ function ll({ cast: t, voices: e, currentId: n, armedId: s = null, sampleId: r =
|
|
|
2434
2434
|
style: { width: "100%", textAlign: "left", font: "inherit", border: 0, borderTop: I ? j : "0", display: "flex", alignItems: "center", gap: 11, padding: I ? "11px 8px" : "0px 8px", margin: "0 -6px", borderRadius: 10, background: s === k.id ? "var(--brand-tint)" : "transparent", cursor: "pointer", opacity: I ? 1 : 0, maxHeight: I ? 120 : 0, overflow: "hidden", transition: "max-height 280ms cubic-bezier(.32,.72,0,1),padding 280ms cubic-bezier(.32,.72,0,1),opacity 200ms ease" },
|
|
2435
2435
|
children: [
|
|
2436
2436
|
/* @__PURE__ */ i("span", { title: L ? "Downloading this voice" : void 0, style: { flex: "none", width: 32, height: 32, borderRadius: "50%", background: L ? "transparent" : k.cloned ? "var(--brand-soft)" : "var(--fill-06)", display: "flex", alignItems: "center", justifyContent: "center" }, children: L ? /* @__PURE__ */ i("span", { style: { width: 16, height: 16, borderRadius: "50%", border: "2px solid var(--fill-10)", borderTopColor: "var(--brand)", animation: "vs-spin .7s linear infinite" } }) : r === k.id ? /* @__PURE__ */ f("span", { className: "vcplay", children: [
|
|
2437
|
-
/* @__PURE__ */ i("span", { className: "vcplay__eq", children: /* @__PURE__ */ i(
|
|
2438
|
-
/* @__PURE__ */ i("span", { className: "vcplay__stop", children: /* @__PURE__ */ i(
|
|
2437
|
+
/* @__PURE__ */ i("span", { className: "vcplay__eq", children: /* @__PURE__ */ i(ul, { height: 13, width: 2.5 }) }),
|
|
2438
|
+
/* @__PURE__ */ i("span", { className: "vcplay__stop", children: /* @__PURE__ */ i(va, { size: 11 }) })
|
|
2439
2439
|
] }) : /* @__PURE__ */ i(de, { d: k.cloned ? q.voiceClone : k.gender === "female" ? q.venus : k.gender === "male" ? q.mars : q.mic, size: 15, sw: 1.6, style: { color: k.cloned ? "var(--brand)" : "var(--ink-55)" } }) }),
|
|
2440
2440
|
/* @__PURE__ */ f("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
2441
2441
|
/* @__PURE__ */ i("div", { style: { display: "flex", alignItems: "center", gap: 7, minWidth: 0 }, children: /* @__PURE__ */ i("span", { style: { minWidth: 0, fontSize: 14.5, fontWeight: k.id === n ? 600 : 400, color: "var(--ink-96)", whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis" }, children: k.name }) }),
|
|
@@ -2460,10 +2460,10 @@ function ll({ cast: t, voices: e, currentId: n, armedId: s = null, sampleId: r =
|
|
|
2460
2460
|
)
|
|
2461
2461
|
] }, k.id);
|
|
2462
2462
|
}),
|
|
2463
|
-
|
|
2463
|
+
x && /* @__PURE__ */ i("div", { style: { position: "sticky", bottom: 0, zIndex: 3, marginTop: 6, padding: "11px 0 3px", animation: "vs-slide-up .18s ease-out" }, children: /* @__PURE__ */ i("button", { type: "button", className: "vcuse", title: "Apply this voice", onClick: () => s && c(s), children: /* @__PURE__ */ i("span", { children: m.vcUse }) }) })
|
|
2464
2464
|
] });
|
|
2465
2465
|
}
|
|
2466
|
-
function
|
|
2466
|
+
function ul({ height: t, width: e = 2 }) {
|
|
2467
2467
|
const n = { width: e, height: "100%", borderRadius: 1, background: "var(--brand)" };
|
|
2468
2468
|
return /* @__PURE__ */ f("span", { style: { flex: "none", display: "flex", alignItems: "flex-end", gap: 2, height: t }, children: [
|
|
2469
2469
|
/* @__PURE__ */ i("span", { style: { ...n, animation: "vs-eq .62s ease-in-out infinite" } }),
|
|
@@ -2471,17 +2471,17 @@ function cl({ height: t, width: e = 2 }) {
|
|
|
2471
2471
|
/* @__PURE__ */ i("span", { style: { ...n, animation: "vs-eq .62s ease-in-out .38s infinite" } })
|
|
2472
2472
|
] });
|
|
2473
2473
|
}
|
|
2474
|
-
const
|
|
2474
|
+
const dl = /* @__PURE__ */ f("span", { style: { display: "inline-flex", alignItems: "center", gap: 3 }, children: [
|
|
2475
2475
|
/* @__PURE__ */ i(de, { d: q.langAuto, size: 19, sw: 1.7, style: { color: "var(--ink-62)", display: "block" } }),
|
|
2476
2476
|
/* @__PURE__ */ i(de, { d: q.globe, size: 18, sw: 1.6, style: { color: "var(--ink-62)", display: "block" } })
|
|
2477
2477
|
] });
|
|
2478
2478
|
function Ns(t, e) {
|
|
2479
2479
|
const n = e ? t == null ? void 0 : t.languages.find((s) => s.code === e) : null;
|
|
2480
|
-
return { flag: e ? (n == null ? void 0 : n.flag) ?? "🌐" :
|
|
2480
|
+
return { flag: e ? (n == null ? void 0 : n.flag) ?? "🌐" : dl, code: e ? e.toUpperCase() : "", label: (n == null ? void 0 : n.native) ?? "As spoken", name: (n == null ? void 0 : n.name) ?? "Original" };
|
|
2481
2481
|
}
|
|
2482
2482
|
const Fr = { minHeight: 36, height: 36, padding: "0 11px", background: "var(--fill-06)" };
|
|
2483
|
-
function
|
|
2484
|
-
const r = (s == null ? void 0 : s.id) ?? null, a = (s == null ? void 0 : s.token) ?? null, o = (s == null ? void 0 : s.shareCode) ?? null, l = Yt(), { data: c } =
|
|
2483
|
+
function Ml(t, e, n = 0, s) {
|
|
2484
|
+
const r = (s == null ? void 0 : s.id) ?? null, a = (s == null ? void 0 : s.token) ?? null, o = (s == null ? void 0 : s.shareCode) ?? null, l = Yt(), { data: c } = ki(async () => {
|
|
2485
2485
|
if (!t || !e) return null;
|
|
2486
2486
|
try {
|
|
2487
2487
|
return await l.client.voices.available(t, { recording: r ?? void 0, shareCode: r ? o ?? void 0 : void 0, asOwner: l.owner });
|
|
@@ -2491,20 +2491,20 @@ function dl(t, e, n = 0, s) {
|
|
|
2491
2491
|
}, [t, e, n, r, a, o]);
|
|
2492
2492
|
return c;
|
|
2493
2493
|
}
|
|
2494
|
-
function
|
|
2494
|
+
function gl(t) {
|
|
2495
2495
|
return (/* @__PURE__ */ new Set([...Object.keys(t.speakers), ...Object.keys(t.speakerIds)])).size;
|
|
2496
2496
|
}
|
|
2497
2497
|
function hl({ recordingId: t, lang: e, ended: n, cred: s, pickedVoice: r, sentenceIds: a }) {
|
|
2498
|
-
const o = Yt(), { data: l, reload: c } =
|
|
2498
|
+
const o = Yt(), { data: l, reload: c } = ki(async () => {
|
|
2499
2499
|
if (!t || !e) return null;
|
|
2500
2500
|
const P = await o.client.recordings.voice(t, e, o.readAs).catch(() => []);
|
|
2501
|
-
return { recordingId: t, lang: e, rows: P.filter((
|
|
2501
|
+
return { recordingId: t, lang: e, rows: P.filter((b) => b.lang === e) };
|
|
2502
2502
|
}, [t, e, o, n]), d = Ie(
|
|
2503
2503
|
() => l && l.lang === e && l.recordingId === t ? l.rows : [],
|
|
2504
2504
|
[l, e, t]
|
|
2505
|
-
), u = Ie(() =>
|
|
2505
|
+
), u = Ie(() => di(d, r), [d, r]), h = u ? u.voiceKey || null : r, [M, N] = O(null), [m, w] = O(null), v = z(/* @__PURE__ */ new Set()), p = `${t ?? ""}|${e ?? ""}|${h ?? ""}`, g = qe(async (P, b) => {
|
|
2506
2506
|
if (!t || !e || !n) return;
|
|
2507
|
-
const ue =
|
|
2507
|
+
const ue = b != null && b.size ? null : Vr(P), B = b != null && b.size ? b : ue, F = B && B.size ? Object.fromEntries([...B].map(([ve, Le]) => [String(ve), Le])) : null, ie = `${t}|${e}|${F ? JSON.stringify(F) : P ?? ""}`;
|
|
2508
2508
|
if (v.current.has(ie)) return;
|
|
2509
2509
|
v.current.add(ie), N(ie), w(null);
|
|
2510
2510
|
const re = { langs: [e] };
|
|
@@ -2519,89 +2519,89 @@ function hl({ recordingId: t, lang: e, ended: n, cred: s, pickedVoice: r, senten
|
|
|
2519
2519
|
c();
|
|
2520
2520
|
}, [t, e, n, o, c]), C = qe(() => {
|
|
2521
2521
|
const P = `${t ?? ""}|${e ?? ""}|`;
|
|
2522
|
-
for (const
|
|
2522
|
+
for (const b of [...v.current]) b.startsWith(P) && v.current.delete(b);
|
|
2523
2523
|
w(null);
|
|
2524
|
-
}, [t, e]),
|
|
2524
|
+
}, [t, e]), x = !!u && (u.state === "queued" || u.state === "running") || M === p, k = (u == null ? void 0 : u.state) === "failed" ? u.error || "the render failed" : m, J = (a == null ? void 0 : a.join(",")) ?? "", [A, K] = O(null), j = Ie(() => new Set((u == null ? void 0 : u.clips) ?? []), [u]), S = Ie(() => n && J ? J.split(",").map(Number).filter((P) => !j.has(P)) : [], [n, J, j]), $ = z(null);
|
|
2525
2525
|
Y(() => {
|
|
2526
2526
|
if (!n || !t || !e || !S.length) return;
|
|
2527
|
-
const P = A ?? S[0],
|
|
2528
|
-
if (B && B.key === ue && Math.abs(B.near -
|
|
2529
|
-
$.current = { key: ue, near:
|
|
2530
|
-
const F = Vr(
|
|
2531
|
-
F && F.size ? ie.voiceBySpeaker = Object.fromEntries([...F].map(([re, le]) => [String(re), le])) :
|
|
2527
|
+
const P = A ?? S[0], b = S.find((re) => re >= P) ?? S[0], ue = `${t}|${e}|${h ?? ""}`, B = $.current;
|
|
2528
|
+
if (B && B.key === ue && Math.abs(B.near - b) < 12 && Date.now() - B.at < 6e4) return;
|
|
2529
|
+
$.current = { key: ue, near: b, at: Date.now() };
|
|
2530
|
+
const F = Vr(h), ie = { langs: [e], near: b };
|
|
2531
|
+
F && F.size ? ie.voiceBySpeaker = Object.fromEntries([...F].map(([re, le]) => [String(re), le])) : h && (ie.voice = h), Qr(o, `/v1/recordings/${t}/voice`, { method: "POST", body: ie }).then((re) => {
|
|
2532
2532
|
re.ok || ($.current = null);
|
|
2533
2533
|
}).catch(() => {
|
|
2534
2534
|
$.current = null;
|
|
2535
2535
|
});
|
|
2536
|
-
}, [n, t, e,
|
|
2536
|
+
}, [n, t, e, h, A, S, o]);
|
|
2537
2537
|
const L = S.length > 0, I = z({ n: -1, at: 0 });
|
|
2538
2538
|
Y(() => {
|
|
2539
2539
|
if (!L) return;
|
|
2540
2540
|
const P = setInterval(() => {
|
|
2541
|
-
const
|
|
2542
|
-
|
|
2541
|
+
const b = j.size;
|
|
2542
|
+
b !== I.current.n && (I.current = { n: b, at: Date.now() }), !(Date.now() - I.current.at > 10 * 6e4) && c();
|
|
2543
2543
|
}, 3e3);
|
|
2544
2544
|
return () => clearInterval(P);
|
|
2545
2545
|
}, [L, c, j]);
|
|
2546
2546
|
const E = Ie(() => {
|
|
2547
2547
|
if (!t) return [];
|
|
2548
|
-
const P = J ? J.split(",").map(Number).filter((ue) => !n || j.has(ue)) : void 0,
|
|
2549
|
-
return
|
|
2548
|
+
const P = J ? J.split(",").map(Number).filter((ue) => !n || j.has(ue)) : void 0, b = u ?? (P != null && P.length && e ? { lang: e, voiceKey: r ?? "", clips: [], voice: null } : null);
|
|
2549
|
+
return Ua(b, t, o.origin, s, P);
|
|
2550
2550
|
}, [u, t, o, s, J, e, r, n, j]), oe = Ie(() => new Set(S), [S]);
|
|
2551
|
-
return { listed: l, rows: d, track: u, renderVoiceId:
|
|
2551
|
+
return { listed: l, rows: d, track: u, renderVoiceId: h, rendering: x, failed: k, clips: E, requestRender: g, forget: C, reload: c, setNear: K, missing: S.length, coming: oe };
|
|
2552
2552
|
}
|
|
2553
|
-
const
|
|
2554
|
-
function
|
|
2555
|
-
const o = r && t.length <= 3, l = t.some((v) => v.key === e), [c, d] = O(null), u = z(null), [
|
|
2553
|
+
const fl = { share: q.share, delay: q.tabGauge, video: q.video, source: q.tabSources, script: q.tabScript, fix: q.tabFix, ending: q.tabEnding, summary: q.tabSummary, export: q.tabExport, settings: q.tabSettings, sources: q.tabSources, recs: q.mic };
|
|
2554
|
+
function Oi({ tabs: t, current: e, onPick: n, gap: s, fold: r = !0, side: a = !r }) {
|
|
2555
|
+
const o = r && t.length <= 3, l = t.some((v) => v.key === e), [c, d] = O(null), u = z(null), [h, M] = O(0);
|
|
2556
2556
|
Y(() => {
|
|
2557
2557
|
u.current && M(u.current.offsetWidth);
|
|
2558
2558
|
}, [c == null ? void 0 : c.k]);
|
|
2559
2559
|
const N = (v, p) => {
|
|
2560
|
-
const
|
|
2561
|
-
if (o || r || p.key === e ||
|
|
2560
|
+
const g = v.currentTarget.querySelector(".tabbar__label");
|
|
2561
|
+
if (o || r || p.key === e || g && getComputedStyle(g).opacity === "1") {
|
|
2562
2562
|
c && d(null);
|
|
2563
2563
|
return;
|
|
2564
2564
|
}
|
|
2565
2565
|
if ((c == null ? void 0 : c.k) === p.key) return;
|
|
2566
|
-
const C = v.currentTarget.getBoundingClientRect(),
|
|
2567
|
-
d({ k: p.key, label: p.label, x: C.left + C.width / 2, y:
|
|
2566
|
+
const C = v.currentTarget.getBoundingClientRect(), x = v.currentTarget.parentElement.getBoundingClientRect();
|
|
2567
|
+
d({ k: p.key, label: p.label, x: C.left + C.width / 2, y: x.top });
|
|
2568
2568
|
}, m = () => d(null);
|
|
2569
2569
|
let w = null;
|
|
2570
2570
|
if (c) {
|
|
2571
|
-
const v = { l: 0, r: typeof window < "u" ? window.innerWidth : 0 }, p =
|
|
2572
|
-
w =
|
|
2573
|
-
/* @__PURE__ */ i("div", { className: "vsp vsp-portal", "data-theme": "dark", children: /* @__PURE__ */ f("div", { ref: u, "data-theme": "dark", className: "vs-tip__bubble vs-tip__bubble--top tabtip", style: { position: "fixed", left:
|
|
2571
|
+
const v = { l: 0, r: typeof window < "u" ? window.innerWidth : 0 }, p = h || 80, g = Math.max(v.l + 8, Math.min(v.r - p - 8, c.x - p / 2));
|
|
2572
|
+
w = ma(
|
|
2573
|
+
/* @__PURE__ */ i("div", { className: "vsp vsp-portal", "data-theme": "dark", children: /* @__PURE__ */ f("div", { ref: u, "data-theme": "dark", className: "vs-tip__bubble vs-tip__bubble--top tabtip", style: { position: "fixed", left: g, top: c.y - 8, bottom: "auto", width: "auto", whiteSpace: "nowrap", transform: "translateY(-100%)", zIndex: 2147483e3, pointerEvents: "none" }, children: [
|
|
2574
2574
|
/* @__PURE__ */ i("span", { className: "vs-tip__row", children: /* @__PURE__ */ i("span", { className: "vs-tip__copy", children: c.label }) }),
|
|
2575
|
-
/* @__PURE__ */ i("span", { className: "vs-tip__arrow", style: { left: Math.round(Math.max(8, Math.min(p - 19, c.x -
|
|
2575
|
+
/* @__PURE__ */ i("span", { className: "vs-tip__arrow", style: { left: Math.round(Math.max(8, Math.min(p - 19, c.x - g - 5.5))) } })
|
|
2576
2576
|
] }) }),
|
|
2577
2577
|
document.body
|
|
2578
2578
|
);
|
|
2579
2579
|
}
|
|
2580
2580
|
return /* @__PURE__ */ f("div", { role: "tablist", className: `tabbar tabbar--icons${r ? "" : " tabbar--desk"}`, "data-desk-tabs": a ? "" : void 0, "data-tab-n": a ? t.length : void 0, style: { marginBottom: s ? 12 : 0 }, onMouseLeave: m, children: [
|
|
2581
2581
|
t.map((v) => {
|
|
2582
|
-
const p = e === v.key,
|
|
2582
|
+
const p = e === v.key, g = o || p, C = o ? "1 1 0" : p ? "1 1 auto" : r && !l ? "1 1 0" : "0 0 auto", x = v.icon ?? fl[v.key], k = () => {
|
|
2583
2583
|
m(), n(r && p ? "none" : v.key);
|
|
2584
2584
|
};
|
|
2585
2585
|
return r ? /* @__PURE__ */ f("button", { type: "button", role: "tab", "aria-selected": p, title: v.label, className: `tabbar__tab${p ? " is-on" : ""}`, style: { flex: C }, onClick: k, children: [
|
|
2586
|
-
|
|
2587
|
-
|
|
2586
|
+
x && /* @__PURE__ */ i(de, { d: x, size: 15, sw: v.sw ?? 2, style: { flex: "none" } }),
|
|
2587
|
+
g && /* @__PURE__ */ i("span", { className: "tabbar__label", children: v.label })
|
|
2588
2588
|
] }, v.key) : /* @__PURE__ */ i("div", { className: "tabbar__slot", "data-tab-cell": "", style: { flex: C }, onMouseEnter: (J) => N(J, v), onMouseMove: (J) => N(J, v), onClick: k, children: /* @__PURE__ */ f("button", { type: "button", role: "tab", "aria-selected": p, "aria-label": v.label, className: `tabbar__tab${p ? " is-on" : ""}${(c == null ? void 0 : c.k) === v.key ? " is-tip" : ""}`, children: [
|
|
2589
|
-
|
|
2590
|
-
/* @__PURE__ */ i("span", { className: "tabbar__grow", "data-tab-lw": "", style: { gridTemplateColumns:
|
|
2589
|
+
x && /* @__PURE__ */ i(de, { d: x, size: 15, sw: v.sw ?? 2, className: "tabbar__icon", style: { flex: "none", transform: p && !o ? "scale(1.12)" : "none" } }),
|
|
2590
|
+
/* @__PURE__ */ i("span", { className: "tabbar__grow", "data-tab-lw": "", style: { gridTemplateColumns: g ? "1fr" : "0fr", marginLeft: g && x ? 6 : 0 }, children: /* @__PURE__ */ i("span", { className: "tabbar__label", "data-tab-l": "", style: { opacity: g ? 1 : 0, transform: g ? "none" : "translateX(-6px)" }, children: v.label }) })
|
|
2591
2591
|
] }) }, v.key);
|
|
2592
2592
|
}),
|
|
2593
2593
|
w
|
|
2594
2594
|
] });
|
|
2595
2595
|
}
|
|
2596
|
-
const
|
|
2597
|
-
function
|
|
2596
|
+
const Nl = "M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3", pl = "m9 9 10.5-3m0 6.553v3.75a2.25 2.25 0 0 1-1.632 2.163l-1.32.377a1.803 1.803 0 1 1-.99-3.467l2.31-.66a2.25 2.25 0 0 0 1.632-2.163Zm0 0V2.25L9 5.25v10.303m0 0v3.75a2.25 2.25 0 0 1-1.632 2.163l-1.32.377a1.803 1.803 0 0 1-.99-3.467l2.31-.66A2.25 2.25 0 0 0 9 15.553Z";
|
|
2597
|
+
function ml({ audio: t, video: e, formats: n, onExport: s }) {
|
|
2598
2598
|
const [r, a] = O(null), [o, l] = O(null), c = z(void 0), d = z(!0);
|
|
2599
2599
|
Y(() => (d.current = !0, () => {
|
|
2600
2600
|
d.current = !1, window.clearTimeout(c.current);
|
|
2601
2601
|
}), []);
|
|
2602
2602
|
const u = (m) => {
|
|
2603
2603
|
window.clearTimeout(c.current), a(m), c.current = window.setTimeout(() => a(null), 1600);
|
|
2604
|
-
},
|
|
2604
|
+
}, h = (m) => {
|
|
2605
2605
|
o || (l(m), Promise.resolve().then(() => s(m)).then(() => {
|
|
2606
2606
|
d.current && u(m);
|
|
2607
2607
|
}).catch(() => {
|
|
@@ -2623,15 +2623,15 @@ function pl({ audio: t, video: e, formats: n, onExport: s }) {
|
|
|
2623
2623
|
/* @__PURE__ */ i("span", { style: { fontSize: 13, fontWeight: 500, color: "var(--ink-96)", whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis" }, children: w.name }),
|
|
2624
2624
|
/* @__PURE__ */ i("span", { style: { font: "500 9.5px var(--vs-font-mono)", color: "var(--ink-40)", letterSpacing: ".04em" }, children: w.meta })
|
|
2625
2625
|
] }),
|
|
2626
|
-
/* @__PURE__ */ i(de, { d: r === m ? q.check :
|
|
2626
|
+
/* @__PURE__ */ i(de, { d: r === m ? q.check : Nl, size: 17, sw: 1.6, style: { flex: "none", color: r === m ? "var(--brand)" : "var(--ink-62)" } })
|
|
2627
2627
|
] })
|
|
2628
2628
|
] });
|
|
2629
2629
|
return /* @__PURE__ */ f("div", { style: { display: "flex", flexDirection: "column", gap: 10 }, children: [
|
|
2630
|
-
t && N("audio", t,
|
|
2630
|
+
t && N("audio", t, pl, "DOWNLOAD AUDIO"),
|
|
2631
2631
|
e && N("video", e, q.video, "DOWNLOAD VIDEO"),
|
|
2632
2632
|
n !== !1 && /* @__PURE__ */ f(Pe, { children: [
|
|
2633
2633
|
/* @__PURE__ */ i(ls, { style: { letterSpacing: ".12em", color: "var(--ink-35)" }, children: "EXPORT AS" }),
|
|
2634
|
-
/* @__PURE__ */ i("div", { className: "fmtgrid", children:
|
|
2634
|
+
/* @__PURE__ */ i("div", { className: "fmtgrid", children: hs.map((m) => /* @__PURE__ */ f("button", { type: "button", className: "fmtgrid__cell", title: o === m.key ? `Building the ${m.name}…` : m.note, disabled: o != null, "aria-busy": o === m.key || void 0, onClick: () => h(m.key), style: o && o !== m.key ? { opacity: 0.45 } : void 0, children: [
|
|
2635
2635
|
o === m.key ? /* @__PURE__ */ i(ct, { size: 16, color: "var(--brand)", track: "var(--fill-12)" }) : /* @__PURE__ */ i(de, { d: r === m.key ? q.check : m.icon, size: 16, sw: 1.6, style: { color: r === m.key ? "var(--brand)" : "var(--ink-62)" } }),
|
|
2636
2636
|
/* @__PURE__ */ i("span", { children: m.name })
|
|
2637
2637
|
] }, m.key)) })
|
|
@@ -2652,7 +2652,7 @@ function bs(t, e, n) {
|
|
|
2652
2652
|
}
|
|
2653
2653
|
s();
|
|
2654
2654
|
}
|
|
2655
|
-
function
|
|
2655
|
+
function yl(t, e, n) {
|
|
2656
2656
|
const [s, r] = O(null), a = t.state === "ready", o = `${e ?? ""}|${n ?? ""}|${a ? `${t.title}
|
|
2657
2657
|
${t.summary}` : ""}`, l = Yt();
|
|
2658
2658
|
return Y(() => {
|
|
@@ -2669,12 +2669,12 @@ ${t.summary}` : ""}`, l = Yt();
|
|
|
2669
2669
|
};
|
|
2670
2670
|
}, [o, l]), !n || !a ? t : (s == null ? void 0 : s.key) === o ? s.s : { state: "pending", retry: t.retry };
|
|
2671
2671
|
}
|
|
2672
|
-
function
|
|
2672
|
+
function Tl(t) {
|
|
2673
2673
|
return t != null && t.title && (t != null && t.summary) ? { state: "ready", title: t.title, summary: t.summary, retry: () => {
|
|
2674
2674
|
} } : { state: "unavailable", retry: () => {
|
|
2675
2675
|
} };
|
|
2676
2676
|
}
|
|
2677
|
-
function
|
|
2677
|
+
function wl({ s: t }) {
|
|
2678
2678
|
const [e, n] = O(!1), s = z(void 0);
|
|
2679
2679
|
Y(() => () => window.clearTimeout(s.current), []);
|
|
2680
2680
|
const r = t.title ?? "", a = t.summary ?? "", o = () => {
|
|
@@ -2691,7 +2691,7 @@ ${a}`).catch(() => {
|
|
|
2691
2691
|
/* @__PURE__ */ f("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 8, minHeight: 24 }, children: [
|
|
2692
2692
|
/* @__PURE__ */ i(ls, { style: { letterSpacing: ".12em", color: "var(--ink-35)" }, children: "SUMMARY" }),
|
|
2693
2693
|
t.state === "ready" && /* @__PURE__ */ f("button", { type: "button", className: "sumcopy", title: "Copy title and summary", style: { color: e ? "var(--brand)" : "var(--ink-70)" }, onClick: o, children: [
|
|
2694
|
-
/* @__PURE__ */ i(de, { d: e ? q.check :
|
|
2694
|
+
/* @__PURE__ */ i(de, { d: e ? q.check : vl, size: 13, sw: 1.6 }),
|
|
2695
2695
|
e ? "Copied" : "Copy"
|
|
2696
2696
|
] })
|
|
2697
2697
|
] }),
|
|
@@ -2704,27 +2704,27 @@ ${a}`).catch(() => {
|
|
|
2704
2704
|
] })
|
|
2705
2705
|
] });
|
|
2706
2706
|
}
|
|
2707
|
-
function
|
|
2707
|
+
function Ll({ ytId: t, title: e, timeLabel: n, radius: s, style: r, large: a, children: o, picture: l }) {
|
|
2708
2708
|
return /* @__PURE__ */ f("div", { className: "livevid", style: { ...s != null ? { borderRadius: s } : null, ...r }, children: [
|
|
2709
2709
|
/* @__PURE__ */ i(de, { d: "m15.75 10.5 4.72-4.72a.75.75 0 0 1 1.28.53v11.38a.75.75 0 0 1-1.28.53l-4.72-4.72M4.5 18.75h9a2.25 2.25 0 0 0 2.25-2.25v-9a2.25 2.25 0 0 0-2.25-2.25h-9A2.25 2.25 0 0 0 2.25 7.5v9a2.25 2.25 0 0 0 2.25 2.25Z", size: a ? 34 : 30, sw: 1.2 }),
|
|
2710
|
-
l ?? /* @__PURE__ */ i("iframe", { src:
|
|
2710
|
+
l ?? /* @__PURE__ */ i("iframe", { src: Fo(t), title: e, referrerPolicy: "strict-origin-when-cross-origin", allow: "autoplay; encrypted-media; picture-in-picture" }),
|
|
2711
2711
|
n && /* @__PURE__ */ i("span", { className: "livevid__t", style: a ? { bottom: 10, right: 10 } : void 0, children: n }),
|
|
2712
2712
|
o
|
|
2713
2713
|
] });
|
|
2714
2714
|
}
|
|
2715
|
-
function
|
|
2715
|
+
function kl(t = !0, e) {
|
|
2716
2716
|
const n = z(null), s = e ?? n;
|
|
2717
2717
|
return Y(() => {
|
|
2718
2718
|
const r = s.current;
|
|
2719
2719
|
if (!r || !t) return;
|
|
2720
2720
|
let a = 0, o = 0, l = !1;
|
|
2721
|
-
const c = (
|
|
2722
|
-
|
|
2723
|
-
}, d = (
|
|
2721
|
+
const c = (h) => {
|
|
2722
|
+
h.button !== 0 || h.target.closest("button,a,input,textarea,select") || (l = !0, a = h.clientY, o = r.scrollTop, r.classList.add("is-dragging"));
|
|
2723
|
+
}, d = (h) => {
|
|
2724
2724
|
var N;
|
|
2725
2725
|
if (!l) return;
|
|
2726
|
-
const M =
|
|
2727
|
-
Math.abs(M) > 2 && ((N = r.setPointerCapture) == null || N.call(r,
|
|
2726
|
+
const M = h.clientY - a;
|
|
2727
|
+
Math.abs(M) > 2 && ((N = r.setPointerCapture) == null || N.call(r, h.pointerId)), r.scrollTop = o - M;
|
|
2728
2728
|
}, u = () => {
|
|
2729
2729
|
l = !1, r.classList.remove("is-dragging");
|
|
2730
2730
|
};
|
|
@@ -2733,48 +2733,48 @@ function Ll(t = !0, e) {
|
|
|
2733
2733
|
};
|
|
2734
2734
|
}, [t]), s;
|
|
2735
2735
|
}
|
|
2736
|
-
const
|
|
2737
|
-
function
|
|
2738
|
-
const [n, s] =
|
|
2736
|
+
const vl = "M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75";
|
|
2737
|
+
function jl(t, e) {
|
|
2738
|
+
const [n, s] = Pa(t), r = e.tabs.map((g) => g.key), a = e.tabbed !== !1, o = e.pinnable ?? r;
|
|
2739
2739
|
let l = n;
|
|
2740
|
-
[...e.autoPin ?? []].reverse().forEach((
|
|
2741
|
-
r.includes(
|
|
2740
|
+
[...e.autoPin ?? []].reverse().forEach((g) => {
|
|
2741
|
+
r.includes(g) && !l.includes(g) && !l.includes(`!${g}`) && (l = [g, ...l]);
|
|
2742
2742
|
});
|
|
2743
2743
|
const c = l;
|
|
2744
|
-
(e.forcePin ?? []).forEach((
|
|
2745
|
-
l = l.filter((C) => C !== `!${
|
|
2744
|
+
(e.forcePin ?? []).forEach((g) => {
|
|
2745
|
+
l = l.filter((C) => C !== `!${g}`), r.includes(g) && !l.includes(g) && (l = [g, ...l]);
|
|
2746
2746
|
});
|
|
2747
|
-
const d = (
|
|
2748
|
-
const C =
|
|
2749
|
-
return C[
|
|
2750
|
-
}, m = (
|
|
2751
|
-
if (!o.includes(
|
|
2752
|
-
const
|
|
2753
|
-
if (
|
|
2754
|
-
const k = N(
|
|
2747
|
+
const d = (g) => (e.forcePin ?? []).includes(g) && !c.includes(g), u = a ? l.filter((g) => r.includes(g) && o.includes(g)) : [], h = r.filter((g) => !u.includes(g)), M = e.cur && e.cur !== "none" && h.includes(e.cur) ? e.cur : e.pref && h.includes(e.pref) ? e.pref : h[0] ?? null, N = (g) => {
|
|
2748
|
+
const C = h.filter((x) => x !== g);
|
|
2749
|
+
return C[h.indexOf(g)] ?? C[C.length - 1] ?? null;
|
|
2750
|
+
}, m = (g, C) => {
|
|
2751
|
+
if (!o.includes(g)) return;
|
|
2752
|
+
const x = u.filter((k) => k !== g);
|
|
2753
|
+
if (x.splice(C ?? x.length, 0, g), M === g) {
|
|
2754
|
+
const k = N(g);
|
|
2755
2755
|
k && e.onPick(k);
|
|
2756
2756
|
}
|
|
2757
|
-
s([...
|
|
2758
|
-
}, w = (
|
|
2759
|
-
s([...c.filter((C) => C !==
|
|
2760
|
-
}, v = (
|
|
2757
|
+
s([...x.filter((k) => !d(k) || k === g), ...c.filter((k) => !x.includes(k) && k !== `!${g}`)]);
|
|
2758
|
+
}, w = (g) => {
|
|
2759
|
+
s([...c.filter((C) => C !== g && C !== `!${g}`), ...(e.autoPin ?? []).includes(g) ? [`!${g}`] : []]), e.onPick(g);
|
|
2760
|
+
}, v = (g) => {
|
|
2761
2761
|
var C;
|
|
2762
|
-
return ((C = e.tabs.find((
|
|
2763
|
-
}, p = (
|
|
2764
|
-
const C = u.includes(
|
|
2762
|
+
return ((C = e.tabs.find((x) => x.key === g)) == null ? void 0 : C.label) ?? g;
|
|
2763
|
+
}, p = (g) => {
|
|
2764
|
+
const C = u.includes(g), x = r.includes(g);
|
|
2765
2765
|
return {
|
|
2766
|
-
show:
|
|
2766
|
+
show: x && (!a || C || M === g),
|
|
2767
2767
|
pinned: C,
|
|
2768
|
-
order: C ? u.indexOf(
|
|
2769
|
-
pill: a &&
|
|
2770
|
-
title: C ? `Unpin — return ${v(
|
|
2771
|
-
toggle: () => C ? w(
|
|
2768
|
+
order: C ? u.indexOf(g) + 1 : 1e3,
|
|
2769
|
+
pill: a && x && o.includes(g) && h.length > 0 && (C || h.length > 1),
|
|
2770
|
+
title: C ? `Unpin — return ${v(g)} to the tabs` : `Pin ${v(g)} open above the tabs`,
|
|
2771
|
+
toggle: () => C ? w(g) : m(g)
|
|
2772
2772
|
};
|
|
2773
2773
|
};
|
|
2774
|
-
return { id: t, tabbed: a &&
|
|
2774
|
+
return { id: t, tabbed: a && h.length > 1, cur: M, seq: u, pinnable: o, tabKeys: h, stripTabs: e.tabs.filter((g) => h.includes(g.key)), panel: p, pin: m, unpin: w };
|
|
2775
2775
|
}
|
|
2776
|
-
function
|
|
2777
|
-
return
|
|
2776
|
+
function zl({ col: t, order: e, render: n, grip: s, onPick: r, wrapClass: a }) {
|
|
2777
|
+
return Il(t), /* @__PURE__ */ f(Pe, { children: [
|
|
2778
2778
|
e.map((o) => {
|
|
2779
2779
|
const l = t.panel(o);
|
|
2780
2780
|
if (!l.show) return null;
|
|
@@ -2784,13 +2784,13 @@ function jl({ col: t, order: e, render: n, grip: s, onPick: r, wrapClass: a }) {
|
|
|
2784
2784
|
l.pill && /* @__PURE__ */ i("button", { type: "button", "data-pin-pill": "", className: `pinpill${l.pinned ? " is-on" : ""}`, title: l.title, "aria-label": l.title, "aria-pressed": l.pinned, onClick: l.toggle, children: /* @__PURE__ */ i(de, { d: q.pin, size: 12, sw: 2 }) })
|
|
2785
2785
|
] }, o) : null;
|
|
2786
2786
|
}),
|
|
2787
|
-
t.tabbed && t.cur && /* @__PURE__ */ i("div", { className: "deskstrip", style: { order: 999 }, children: /* @__PURE__ */ i(
|
|
2787
|
+
t.tabbed && t.cur && /* @__PURE__ */ i("div", { className: "deskstrip", style: { order: 999 }, children: /* @__PURE__ */ i(Oi, { tabs: t.stripTabs, current: t.cur, onPick: (o) => {
|
|
2788
2788
|
o !== "none" && (r ?? (() => {
|
|
2789
2789
|
}))(o);
|
|
2790
2790
|
}, fold: !1 }) })
|
|
2791
2791
|
] });
|
|
2792
2792
|
}
|
|
2793
|
-
function
|
|
2793
|
+
function Il(t) {
|
|
2794
2794
|
const e = z(t);
|
|
2795
2795
|
e.current = t;
|
|
2796
2796
|
const n = t.id;
|
|
@@ -2800,19 +2800,19 @@ function zl(t) {
|
|
|
2800
2800
|
s !== p && (s && s.removeAttribute("data-grip-hot"), s = p, p && p.setAttribute("data-grip-hot", ""));
|
|
2801
2801
|
}, o = (p) => p.col.querySelector("[data-desk-tabs]"), l = (p) => {
|
|
2802
2802
|
var K;
|
|
2803
|
-
const
|
|
2803
|
+
const g = p.el.getBoundingClientRect(), C = p.el.cloneNode(!0);
|
|
2804
2804
|
C.querySelectorAll("*").forEach((j) => {
|
|
2805
2805
|
j.style.animation = "none", j.style.transition = "none";
|
|
2806
2806
|
}), C.querySelectorAll("iframe,video").forEach((j) => {
|
|
2807
2807
|
const S = document.createElement("div");
|
|
2808
2808
|
S.style.cssText = "width:100%;height:100%;background:#000", j.replaceWith(S);
|
|
2809
|
-
}), C.removeAttribute("data-panel-key"), C.querySelectorAll("[data-panel-key],[data-pin-pill]").forEach((j) => j.hasAttribute("data-pin-pill") ? j.remove() : j.removeAttribute("data-panel-key")), Object.assign(C.style, { position: "fixed", left: `${
|
|
2810
|
-
const
|
|
2811
|
-
for (let j = 0; j <
|
|
2812
|
-
const S =
|
|
2813
|
-
S.startsWith("--") && C.style.setProperty(S,
|
|
2809
|
+
}), C.removeAttribute("data-panel-key"), C.querySelectorAll("[data-panel-key],[data-pin-pill]").forEach((j) => j.hasAttribute("data-pin-pill") ? j.remove() : j.removeAttribute("data-panel-key")), Object.assign(C.style, { position: "fixed", left: `${g.left}px`, top: `${g.top}px`, width: `${g.width}px`, height: `${g.height}px`, margin: "0", zIndex: "1000", pointerEvents: "none", opacity: ".95", borderRadius: "14px", boxShadow: "0 14px 36px rgba(0,0,0,.3)", animation: "none", transition: "none", cursor: "move", willChange: "transform", contain: "layout paint", overflow: "hidden" });
|
|
2810
|
+
const x = getComputedStyle(p.el);
|
|
2811
|
+
for (let j = 0; j < x.length; j++) {
|
|
2812
|
+
const S = x[j];
|
|
2813
|
+
S.startsWith("--") && C.style.setProperty(S, x.getPropertyValue(S));
|
|
2814
2814
|
}
|
|
2815
|
-
C.style.fontFamily =
|
|
2815
|
+
C.style.fontFamily = x.fontFamily, C.style.color = x.color;
|
|
2816
2816
|
let k = p.el.parentElement, J = "";
|
|
2817
2817
|
for (; k && !J; ) {
|
|
2818
2818
|
const j = getComputedStyle(k).backgroundColor;
|
|
@@ -2827,38 +2827,38 @@ function zl(t) {
|
|
|
2827
2827
|
const p = r;
|
|
2828
2828
|
if (!p || !p.on || p.px == null || p.py == null) return;
|
|
2829
2829
|
p.raf = 0, p.clone.style.transform = `translate3d(${p.px - p.x0}px,${p.py - p.y0}px,0)`;
|
|
2830
|
-
const
|
|
2830
|
+
const g = e.current, C = p.key, x = o(p), k = g.seq.includes(C), J = k || g.tabKeys.length > 1, A = x && p.tabsSnap, K = !A || p.py < A.top + A.height / 2 ? J ? "pin" : null : "tabs";
|
|
2831
2831
|
let j = null;
|
|
2832
2832
|
if (K === "pin") {
|
|
2833
|
-
const $ =
|
|
2834
|
-
k &&
|
|
2833
|
+
const $ = g.seq.filter((I) => I !== C).map((I) => p.snap[I]).filter(Boolean), L = p.grid ? $.filter((I) => I.bottom < p.py || I.top <= p.py && I.left + I.width / 2 < p.px).length : $.filter((I) => I.top + I.height / 2 < p.py).length;
|
|
2834
|
+
k && g.seq.indexOf(C) === L || (j = { zone: K, idx: L });
|
|
2835
2835
|
} else K === "tabs" && k && (j = { zone: K });
|
|
2836
2836
|
const S = j ? j.zone + (j.idx ?? "") : "";
|
|
2837
2837
|
if (S !== p.sig) {
|
|
2838
2838
|
if (p.sig = S, p.target = j, p.orig.forEach(([$, L]) => {
|
|
2839
2839
|
$.style.order = L;
|
|
2840
2840
|
}), (j == null ? void 0 : j.zone) === "pin") {
|
|
2841
|
-
const $ =
|
|
2841
|
+
const $ = g.seq.filter((L) => L !== C);
|
|
2842
2842
|
$.splice(j.idx, 0, C), $.forEach((L, I) => {
|
|
2843
2843
|
const E = p.col.querySelector(`[data-panel-key="${L}"]`);
|
|
2844
2844
|
E && (E.style.order = String(I + 1));
|
|
2845
2845
|
});
|
|
2846
2846
|
} else (j == null ? void 0 : j.zone) === "tabs" && (p.el.style.order = "998");
|
|
2847
|
-
|
|
2847
|
+
x && ((j == null ? void 0 : j.zone) === "tabs" ? x.setAttribute("data-drop-hot", "") : x.removeAttribute("data-drop-hot"));
|
|
2848
2848
|
}
|
|
2849
2849
|
}, d = (p) => {
|
|
2850
2850
|
var C;
|
|
2851
|
-
const
|
|
2852
|
-
if (r = null, !(!
|
|
2853
|
-
|
|
2854
|
-
}),
|
|
2855
|
-
const
|
|
2856
|
-
|
|
2851
|
+
const g = r;
|
|
2852
|
+
if (r = null, !(!g || !g.on) && (g.raf && cancelAnimationFrame(g.raf), g.clone.remove(), g.orig.forEach(([x, k]) => {
|
|
2853
|
+
x.style.order = k;
|
|
2854
|
+
}), g.el.classList.remove("is-dragging"), document.documentElement.style.cursor = "", document.body.style.userSelect = "", document.body.style.webkitUserSelect = "", (C = o(g)) == null || C.removeAttribute("data-drop-hot"), p && g.target)) {
|
|
2855
|
+
const x = e.current;
|
|
2856
|
+
g.target.zone === "tabs" ? x.seq.includes(g.key) && x.unpin(g.key) : x.pin(g.key, g.target.idx);
|
|
2857
2857
|
}
|
|
2858
2858
|
}, u = (p) => {
|
|
2859
|
-
const
|
|
2860
|
-
return
|
|
2861
|
-
},
|
|
2859
|
+
const g = p instanceof Element ? p.closest("[data-tab-col]") : null;
|
|
2860
|
+
return g && g.getAttribute("data-tab-col") === n ? g : null;
|
|
2861
|
+
}, h = (p) => {
|
|
2862
2862
|
var A;
|
|
2863
2863
|
if (r) {
|
|
2864
2864
|
if (!r.on) {
|
|
@@ -2868,56 +2868,56 @@ function zl(t) {
|
|
|
2868
2868
|
r.px = p.clientX, r.py = p.clientY, r.raf || (r.raf = requestAnimationFrame(c));
|
|
2869
2869
|
return;
|
|
2870
2870
|
}
|
|
2871
|
-
const
|
|
2872
|
-
if (!u(
|
|
2871
|
+
const g = p.target;
|
|
2872
|
+
if (!u(g)) {
|
|
2873
2873
|
s && ((A = s.closest("[data-tab-col]")) == null ? void 0 : A.getAttribute("data-tab-col")) === n && a(null);
|
|
2874
2874
|
return;
|
|
2875
2875
|
}
|
|
2876
|
-
const C =
|
|
2877
|
-
if (!C || !
|
|
2878
|
-
const k =
|
|
2876
|
+
const C = g.closest("[data-panel-key]"), x = C == null ? void 0 : C.firstElementChild;
|
|
2877
|
+
if (!C || !x || !e.current.tabbed || !e.current.pinnable.includes(C.getAttribute("data-panel-key")) || g.closest("[role=button],[role=tab],button,a,input,textarea,select,iframe,[data-pin-pill],[contenteditable=true]")) return a(null);
|
|
2878
|
+
const k = x.getBoundingClientRect(), J = parseFloat(getComputedStyle(C).getPropertyValue("--grip-h")) || 30;
|
|
2879
2879
|
a(p.clientY >= k.top && p.clientY <= k.top + J ? C : null);
|
|
2880
2880
|
}, M = (p) => {
|
|
2881
2881
|
if (!s || p.button !== 0) return;
|
|
2882
|
-
const
|
|
2883
|
-
|
|
2882
|
+
const g = u(s);
|
|
2883
|
+
g && (p.preventDefault(), p.stopImmediatePropagation(), r = { el: s, col: g, key: s.getAttribute("data-panel-key"), x0: p.clientX, y0: p.clientY, on: !1 });
|
|
2884
2884
|
}, N = () => d(!0), m = () => d(!1), w = (p) => {
|
|
2885
2885
|
p.key === "Escape" && r && (p.preventDefault(), p.stopImmediatePropagation(), d(!1));
|
|
2886
2886
|
}, v = () => {
|
|
2887
2887
|
r || a(null);
|
|
2888
2888
|
};
|
|
2889
|
-
return document.addEventListener("pointermove",
|
|
2890
|
-
d(!1), a(null), document.removeEventListener("pointermove",
|
|
2889
|
+
return document.addEventListener("pointermove", h, !0), document.addEventListener("pointerdown", M, !0), window.addEventListener("pointerup", N), window.addEventListener("pointercancel", m), window.addEventListener("keydown", w, !0), document.addEventListener("pointerleave", v), () => {
|
|
2890
|
+
d(!1), a(null), document.removeEventListener("pointermove", h, !0), document.removeEventListener("pointerdown", M, !0), window.removeEventListener("pointerup", N), window.removeEventListener("pointercancel", m), window.removeEventListener("keydown", w, !0), document.removeEventListener("pointerleave", v);
|
|
2891
2891
|
};
|
|
2892
2892
|
}, [n]);
|
|
2893
2893
|
}
|
|
2894
|
-
function
|
|
2895
|
-
const [o, l] =
|
|
2896
|
-
|
|
2894
|
+
function Ol({ id: t, className: e, gap: n, hidden: s, plain: r, children: a }) {
|
|
2895
|
+
const [o, l] = $a(t), c = z(null), d = z(null);
|
|
2896
|
+
Cl(d), Y(() => {
|
|
2897
2897
|
document.documentElement.style.setProperty("--colw", `${o}px`);
|
|
2898
2898
|
}, [o]);
|
|
2899
2899
|
const u = (M) => {
|
|
2900
2900
|
const N = c.current, m = N == null ? void 0 : N.parentElement;
|
|
2901
2901
|
if (M.button !== 0 || !N || !m) return;
|
|
2902
2902
|
M.preventDefault();
|
|
2903
|
-
const w = M.currentTarget, v = getComputedStyle(m), p = m.clientWidth - parseFloat(v.paddingLeft) - parseFloat(v.paddingRight) - (parseFloat(v.columnGap) || 0),
|
|
2903
|
+
const w = M.currentTarget, v = getComputedStyle(m), p = m.clientWidth - parseFloat(v.paddingLeft) - parseFloat(v.paddingRight) - (parseFloat(v.columnGap) || 0), g = 320, C = 320, x = Math.max(g, p - C), k = M.clientX, J = N.getBoundingClientRect().width;
|
|
2904
2904
|
let A = J;
|
|
2905
2905
|
w.classList.add("is-on");
|
|
2906
2906
|
const K = { cur: document.body.style.cursor, sel: document.body.style.userSelect };
|
|
2907
2907
|
document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
|
|
2908
2908
|
const j = ($) => {
|
|
2909
|
-
A = Math.round(Math.min(
|
|
2909
|
+
A = Math.round(Math.min(x, Math.max(g, J + (k - $.clientX)))), N.style.flexBasis = `${A}px`, document.documentElement.style.setProperty("--colw", `${A}px`);
|
|
2910
2910
|
}, S = () => {
|
|
2911
2911
|
window.removeEventListener("pointermove", j), window.removeEventListener("pointerup", S), window.removeEventListener("pointercancel", S), document.body.style.cursor = K.cur, document.body.style.userSelect = K.sel, w.classList.remove("is-on"), l(A);
|
|
2912
2912
|
};
|
|
2913
2913
|
window.addEventListener("pointermove", j), window.addEventListener("pointerup", S), window.addEventListener("pointercancel", S);
|
|
2914
|
-
},
|
|
2914
|
+
}, h = s ? { display: "none" } : void 0;
|
|
2915
2915
|
return /* @__PURE__ */ f(Pe, { children: [
|
|
2916
|
-
/* @__PURE__ */ i("div", { "aria-hidden": "true", className: "colgrip", style: { marginRight: -n, ...
|
|
2917
|
-
/* @__PURE__ */ i("div", { ref: c, "data-tab-col": t, className: `${e} sidecol`, style: { flex: `0 0 ${o}px`, ...
|
|
2916
|
+
/* @__PURE__ */ i("div", { "aria-hidden": "true", className: "colgrip", style: { marginRight: -n, ...h }, children: /* @__PURE__ */ i("div", { className: "colgrip__bar", style: { left: -(n / 2 + 6) }, title: "Drag to resize · double-click to reset", onPointerDown: u, onDoubleClick: () => l(null) }) }),
|
|
2917
|
+
/* @__PURE__ */ i("div", { ref: c, "data-tab-col": t, className: `${e} sidecol`, style: { flex: `0 0 ${o}px`, ...h }, children: r ? a : /* @__PURE__ */ i("div", { ref: d, "data-panel-grid": "", className: "panelgrid", children: a }) })
|
|
2918
2918
|
] });
|
|
2919
2919
|
}
|
|
2920
|
-
function
|
|
2920
|
+
function Cl(t) {
|
|
2921
2921
|
Y(() => {
|
|
2922
2922
|
const e = t.current;
|
|
2923
2923
|
if (!e) return;
|
|
@@ -2927,13 +2927,13 @@ function Ol(t) {
|
|
|
2927
2927
|
s = 0;
|
|
2928
2928
|
const d = getComputedStyle(e).display === "grid";
|
|
2929
2929
|
[...e.children].forEach((u) => {
|
|
2930
|
-
const
|
|
2930
|
+
const h = u;
|
|
2931
2931
|
if (!d) {
|
|
2932
|
-
|
|
2932
|
+
h.style.gridRowEnd && (h.style.gridRowEnd = "");
|
|
2933
2933
|
return;
|
|
2934
2934
|
}
|
|
2935
|
-
const M =
|
|
2936
|
-
|
|
2935
|
+
const M = h.getBoundingClientRect().height, N = M > 0 ? `span ${Math.ceil(M + n)}` : "span 1";
|
|
2936
|
+
h.style.gridRowEnd !== N && (h.style.gridRowEnd = N);
|
|
2937
2937
|
});
|
|
2938
2938
|
}, a = () => {
|
|
2939
2939
|
s || (s = requestAnimationFrame(r));
|
|
@@ -2945,13 +2945,13 @@ function Ol(t) {
|
|
|
2945
2945
|
};
|
|
2946
2946
|
}, [t]);
|
|
2947
2947
|
}
|
|
2948
|
-
function
|
|
2948
|
+
function bl(t) {
|
|
2949
2949
|
return /\bwas not captured\b/i.test(t ?? "");
|
|
2950
2950
|
}
|
|
2951
|
-
const
|
|
2952
|
-
function
|
|
2953
|
-
const e = Yt(), [n, s] = O(null), [r, a] = O(null), [o, l] = O(null), [c, d] = O(null), u = z(null),
|
|
2954
|
-
M.current && (clearTimeout(M.current), M.current = null), u.current && (u.current.pause(), u.current.removeAttribute("src"), u.current.load(), u.current = null),
|
|
2951
|
+
const xl = 1500, Dl = 3e5;
|
|
2952
|
+
function Sl(t) {
|
|
2953
|
+
const e = Yt(), [n, s] = O(null), [r, a] = O(null), [o, l] = O(null), [c, d] = O(null), u = z(null), h = z(null), M = z(null), N = z(0), m = qe(() => {
|
|
2954
|
+
M.current && (clearTimeout(M.current), M.current = null), u.current && (u.current.pause(), u.current.removeAttribute("src"), u.current.load(), u.current = null), h.current && (URL.revokeObjectURL(h.current), h.current = null);
|
|
2955
2955
|
}, []), w = qe(() => {
|
|
2956
2956
|
N.current += 1, m(), a(null), l(null);
|
|
2957
2957
|
}, [m]), v = qe(() => {
|
|
@@ -2960,20 +2960,20 @@ function Dl(t) {
|
|
|
2960
2960
|
Y(() => () => {
|
|
2961
2961
|
N.current += 1, m();
|
|
2962
2962
|
}, [m]);
|
|
2963
|
-
const p = qe((
|
|
2963
|
+
const p = qe((g) => {
|
|
2964
2964
|
N.current += 1;
|
|
2965
2965
|
const C = N.current;
|
|
2966
|
-
if (m(), s(
|
|
2967
|
-
let
|
|
2968
|
-
jn() === "caf" && (
|
|
2966
|
+
if (m(), s(g.id), a(null), l(null), d(null), !t) return;
|
|
2967
|
+
let x = g.previewUrl ? `${e.origin}${g.previewUrl}` : `${e.origin}/v1/voices/preview?voice=${encodeURIComponent(g.id)}&lang=${encodeURIComponent(t)}`;
|
|
2968
|
+
jn() === "caf" && (x += `${x.includes("?") ? "&" : "?"}format=caf`);
|
|
2969
2969
|
const k = Date.now();
|
|
2970
|
-
e.shareCode &&
|
|
2970
|
+
e.shareCode && x.includes("recording=") && (x += `&shareCode=${encodeURIComponent(e.shareCode)}`);
|
|
2971
2971
|
const J = async () => {
|
|
2972
2972
|
if (N.current !== C) return;
|
|
2973
2973
|
let A;
|
|
2974
2974
|
try {
|
|
2975
2975
|
const $ = e.owner ? await e.bearer() : void 0;
|
|
2976
|
-
A = await fetch(
|
|
2976
|
+
A = await fetch(x, { headers: $ ? { Authorization: `Bearer ${$}` } : {} });
|
|
2977
2977
|
} catch ($) {
|
|
2978
2978
|
if (N.current !== C) return;
|
|
2979
2979
|
l(null), d(wt($));
|
|
@@ -2981,13 +2981,13 @@ function Dl(t) {
|
|
|
2981
2981
|
}
|
|
2982
2982
|
if (N.current !== C) return;
|
|
2983
2983
|
if (A.status === 202 || A.status === 503) {
|
|
2984
|
-
if (Date.now() - k >
|
|
2984
|
+
if (Date.now() - k > Dl) {
|
|
2985
2985
|
l(null), d({ message: "This voice is still being fetched. Try it again in a moment." });
|
|
2986
2986
|
return;
|
|
2987
2987
|
}
|
|
2988
|
-
l(
|
|
2988
|
+
l(g.id), M.current = setTimeout(() => {
|
|
2989
2989
|
J();
|
|
2990
|
-
},
|
|
2990
|
+
}, xl);
|
|
2991
2991
|
return;
|
|
2992
2992
|
}
|
|
2993
2993
|
if (!A.ok) {
|
|
@@ -2998,27 +2998,27 @@ function Dl(t) {
|
|
|
2998
2998
|
}
|
|
2999
2999
|
const K = await A.blob();
|
|
3000
3000
|
if (N.current !== C) return;
|
|
3001
|
-
l(null),
|
|
3002
|
-
const j = new Audio(
|
|
3001
|
+
l(null), h.current = URL.createObjectURL(K);
|
|
3002
|
+
const j = new Audio(h.current);
|
|
3003
3003
|
j.playsInline = !0;
|
|
3004
3004
|
const S = () => {
|
|
3005
3005
|
N.current === C && (m(), a(null));
|
|
3006
3006
|
};
|
|
3007
3007
|
j.onended = S, j.onerror = S, u.current = j, j.play().then(() => {
|
|
3008
|
-
N.current === C && a(
|
|
3008
|
+
N.current === C && a(g.id);
|
|
3009
3009
|
}).catch(S);
|
|
3010
3010
|
};
|
|
3011
3011
|
J();
|
|
3012
3012
|
}, [t, m, e]);
|
|
3013
3013
|
return { armId: n, sampleId: r, dlId: o, error: c, clearError: () => d(null), arm: p, stop: w, reset: v };
|
|
3014
3014
|
}
|
|
3015
|
-
const ps = 0.05,
|
|
3015
|
+
const ps = 0.05, Ci = (t, e) => {
|
|
3016
3016
|
let n = 0;
|
|
3017
3017
|
for (let s = 0; s < t.length; s++) t[s].start <= e + 1e-6 && (n = s);
|
|
3018
3018
|
return n;
|
|
3019
3019
|
};
|
|
3020
|
-
function
|
|
3021
|
-
const r = Math.max(0, e), a = s > 0 && r >= s - ps, o = t.length && t[0].start <= r + 1e-6 ?
|
|
3020
|
+
function Al(t, e, n, s) {
|
|
3021
|
+
const r = Math.max(0, e), a = s > 0 && r >= s - ps, o = t.length && t[0].start <= r + 1e-6 ? Ci(t, r) : -1;
|
|
3022
3022
|
return o < 0 ? { t: r, playing: n && !a, sentenceId: null, offset: 0, ended: a } : { t: r, playing: n && !a, sentenceId: t[o].sentenceId ?? null, offset: Math.max(0, r - t[o].start), ended: a };
|
|
3023
3023
|
}
|
|
3024
3024
|
function yn(t, e, n) {
|
|
@@ -3033,18 +3033,18 @@ function yn(t, e, n) {
|
|
|
3033
3033
|
}
|
|
3034
3034
|
a = Math.max(0, Math.min(s, a));
|
|
3035
3035
|
const o = s > 0 && a >= s - ps && r < 0;
|
|
3036
|
-
return { t: a, playing: t.playing && !o, index: r >= 0 ? r :
|
|
3036
|
+
return { t: a, playing: t.playing && !o, index: r >= 0 ? r : Ci(e, a) };
|
|
3037
3037
|
}
|
|
3038
|
-
function
|
|
3038
|
+
function bi(t, e, n) {
|
|
3039
3039
|
var c;
|
|
3040
3040
|
const s = t[e], r = n && s.translations[n] && s.language !== n ? s.translations[n] : null;
|
|
3041
3041
|
if (!r && s.words.length) return s.words;
|
|
3042
|
-
const a = (r ?? s.text).split(/\s+/).filter(Boolean), o = ((c = s.words[0]) == null ? void 0 : c.start) ?? s.start, l =
|
|
3043
|
-
return
|
|
3042
|
+
const a = (r ?? s.text).split(/\s+/).filter(Boolean), o = ((c = s.words[0]) == null ? void 0 : c.start) ?? s.start, l = zi(s, t[e + 1], s.start + Math.max(2, a.length * 0.4));
|
|
3043
|
+
return qo(a, o, l).map((d, u) => ({ ...d, seq: s.seqs[0] ?? 0, idx: u }));
|
|
3044
3044
|
}
|
|
3045
3045
|
function Gr(t, e, n) {
|
|
3046
3046
|
if (!t.engaged || e !== t.idx || !n.length) return null;
|
|
3047
|
-
if (!t.wordSync) return t.clipPos ?
|
|
3047
|
+
if (!t.wordSync) return t.clipPos ? Mi(n.map((a) => ({ t: a.text, sp: " " })), t.clipPos) : null;
|
|
3048
3048
|
const s = t.t;
|
|
3049
3049
|
let r = -1;
|
|
3050
3050
|
for (let a = 0; a < n.length && n[a].start <= s; a++) r = a;
|
|
@@ -3062,7 +3062,7 @@ function Et(t, e, n) {
|
|
|
3062
3062
|
const s = (r = t == null ? void 0 : t.words[t.words.length - 1]) == null ? void 0 : r.end;
|
|
3063
3063
|
return s != null && s > e ? s : (t == null ? void 0 : t.end) != null && t.end > e ? t.end : n > e ? n : e + 4;
|
|
3064
3064
|
}
|
|
3065
|
-
function
|
|
3065
|
+
function El({ ytId: t, title: e, t: n, playing: s, seekN: r, onToggle: a, onAd: o, endT: l, onGone: c, onKnown: d, lead: u, onTime: h, waiting: M = !1 }) {
|
|
3066
3066
|
const N = z(null), [m, w] = O(!1);
|
|
3067
3067
|
Y(() => {
|
|
3068
3068
|
if (!M) {
|
|
@@ -3072,7 +3072,7 @@ function Al({ ytId: t, title: e, t: n, playing: s, seekN: r, onToggle: a, onAd:
|
|
|
3072
3072
|
const G = setTimeout(() => w(!0), 300);
|
|
3073
3073
|
return () => clearTimeout(G);
|
|
3074
3074
|
}, [M]);
|
|
3075
|
-
const v = s && !m, p = z(!1), [
|
|
3075
|
+
const v = s && !m, p = z(!1), [g, C] = O(!1), x = (G, me = []) => {
|
|
3076
3076
|
var V, Ye;
|
|
3077
3077
|
if (!(p.current && (G === "pauseVideo" || G === "seekTo" || G === "setPlaybackRate")))
|
|
3078
3078
|
try {
|
|
@@ -3090,15 +3090,15 @@ function Al({ ytId: t, title: e, t: n, playing: s, seekN: r, onToggle: a, onAd:
|
|
|
3090
3090
|
const G = A.current || K.current;
|
|
3091
3091
|
if (G !== p.current)
|
|
3092
3092
|
if (p.current = G, C(G), (me = $.current) == null || me.call($, G), G) {
|
|
3093
|
-
if (
|
|
3093
|
+
if (x("playVideo"), S.current) return;
|
|
3094
3094
|
Ee.current && j.current && (L.current = !0, j.current());
|
|
3095
3095
|
} else L.current && !S.current && (L.current = !1, Ee.current || (V = j.current) == null || V.call(j));
|
|
3096
3096
|
}, E = z(n);
|
|
3097
3097
|
E.current = n;
|
|
3098
|
-
const oe = z(
|
|
3099
|
-
oe.current =
|
|
3100
|
-
const P = z(null),
|
|
3101
|
-
|
|
3098
|
+
const oe = z(h);
|
|
3099
|
+
oe.current = h;
|
|
3100
|
+
const P = z(null), b = z(null), [ue, B] = O(!1), [F, ie] = O(!1), re = () => {
|
|
3101
|
+
x("unloadModule", ["captions"]), x("unloadModule", ["cc"]);
|
|
3102
3102
|
}, le = z([]), ve = () => {
|
|
3103
3103
|
re(), le.current.forEach(clearTimeout), le.current = [400, 1200, 2500, 5e3].map((G) => window.setTimeout(re, G));
|
|
3104
3104
|
};
|
|
@@ -3109,10 +3109,10 @@ function Al({ ytId: t, title: e, t: n, playing: s, seekN: r, onToggle: a, onAd:
|
|
|
3109
3109
|
(me = (G = N.current) == null ? void 0 : G.contentWindow) == null || me.postMessage(JSON.stringify({ event: "listening", id: "reader" }), "*");
|
|
3110
3110
|
} catch {
|
|
3111
3111
|
}
|
|
3112
|
-
(!S.current || S.current.muted) &&
|
|
3112
|
+
(!S.current || S.current.muted) && x("mute"), ie(!0);
|
|
3113
3113
|
};
|
|
3114
|
-
Y(() => (u == null || u.bind(
|
|
3115
|
-
!u && F &&
|
|
3114
|
+
Y(() => (u == null || u.bind(x), () => u == null ? void 0 : u.bind(null)), [!!u]), Y(() => {
|
|
3115
|
+
!u && F && x("mute");
|
|
3116
3116
|
}, [!!u]);
|
|
3117
3117
|
const Te = z(null), we = z(l);
|
|
3118
3118
|
we.current = l;
|
|
@@ -3126,11 +3126,11 @@ function Al({ ytId: t, title: e, t: n, playing: s, seekN: r, onToggle: a, onAd:
|
|
|
3126
3126
|
const me = Te.current;
|
|
3127
3127
|
return !!me && (G < me.start - 1 || G > me.end + 5);
|
|
3128
3128
|
}, R = () => {
|
|
3129
|
-
y(E.current) ||
|
|
3129
|
+
y(E.current) || x("seekTo", [E.current, !0]);
|
|
3130
3130
|
}, ae = () => P.current;
|
|
3131
3131
|
return Y(() => {
|
|
3132
3132
|
const G = (me) => {
|
|
3133
|
-
var Ve, Ae, Z, se,
|
|
3133
|
+
var Ve, Ae, Z, se, ge, Me, ce, ke, We, xe, Ce, _, U, W, ee, fe;
|
|
3134
3134
|
if (me.source !== ((Ve = N.current) == null ? void 0 : Ve.contentWindow) || typeof me.data != "string") return;
|
|
3135
3135
|
let V = null;
|
|
3136
3136
|
try {
|
|
@@ -3140,60 +3140,60 @@ function Al({ ytId: t, title: e, t: n, playing: s, seekN: r, onToggle: a, onAd:
|
|
|
3140
3140
|
}
|
|
3141
3141
|
(Z = (Ae = V == null ? void 0 : V.info) == null ? void 0 : Ae.videoData) != null && Z.isLive && (J.current = !0);
|
|
3142
3142
|
const Ye = (se = V == null ? void 0 : V.info) == null ? void 0 : se.duration;
|
|
3143
|
-
typeof Ye == "number" && Ye > 0 && !J.current && (k.current == null ? k.current = Ye : (A.current = Math.abs(Ye - k.current) > 1.5, I())), (V == null ? void 0 : V.event) === "onReady" && ((!S.current || S.current.muted) &&
|
|
3143
|
+
typeof Ye == "number" && Ye > 0 && !J.current && (k.current == null ? k.current = Ye : (A.current = Math.abs(Ye - k.current) > 1.5, I())), (V == null ? void 0 : V.event) === "onReady" && ((!S.current || S.current.muted) && x("mute"), ve(), (ge = S.current) == null || ge.onInfo({ ready: !0 })), typeof ((Me = V == null ? void 0 : V.info) == null ? void 0 : Me.playerState) == "number" && (V.info.playerState !== b.current && (V.info.playerState === 1 || V.info.playerState === 2) && ve(), b.current = V.info.playerState, B(V.info.playerState === 2 || V.info.playerState === 0), (ce = S.current) == null || ce.onInfo({ state: V.info.playerState }));
|
|
3144
3144
|
const je = (ke = V == null ? void 0 : V.info) == null ? void 0 : ke.progressState;
|
|
3145
3145
|
if (je && typeof je.seekableStart == "number" && typeof je.seekableEnd == "number" && je.seekableEnd > je.seekableStart) {
|
|
3146
3146
|
const Ne = Te.current == null;
|
|
3147
|
-
if (Te.current = { start: je.seekableStart, end: je.seekableEnd }, Ne && !Ee.current && (
|
|
3147
|
+
if (Te.current = { start: je.seekableStart, end: je.seekableEnd }, Ne && !Ee.current && (x("pauseVideo"), y(E.current) || x("seekTo", [E.current, !0])), !te.current && we.current != null) {
|
|
3148
3148
|
te.current = !0;
|
|
3149
3149
|
const ze = we.current < je.seekableStart - 1;
|
|
3150
3150
|
(We = ye.current) == null || We.call(ye, ze), ze && ((xe = Oe.current) == null || xe.call(Oe));
|
|
3151
3151
|
}
|
|
3152
3152
|
}
|
|
3153
|
-
typeof ((Ce = V == null ? void 0 : V.info) == null ? void 0 : Ce.currentTime) == "number" && (P.current = V.info.currentTime, (_ = S.current) == null || _.onInfo({ t: V.info.currentTime }), !p.current &&
|
|
3153
|
+
typeof ((Ce = V == null ? void 0 : V.info) == null ? void 0 : Ce.currentTime) == "number" && (P.current = V.info.currentTime, (_ = S.current) == null || _.onInfo({ t: V.info.currentTime }), !p.current && b.current === 1 && ((U = oe.current) == null || U.call(oe, V.info.currentTime))), ((W = V == null ? void 0 : V.info) == null ? void 0 : W.muted) === !1 && !S.current && x("mute"), typeof ((ee = V == null ? void 0 : V.info) == null ? void 0 : ee.muted) == "boolean" && ((fe = S.current) == null || fe.onInfo({ muted: V.info.muted }));
|
|
3154
3154
|
};
|
|
3155
3155
|
return window.addEventListener("message", G), () => window.removeEventListener("message", G);
|
|
3156
3156
|
}, []), Y(() => {
|
|
3157
3157
|
if (u) return;
|
|
3158
3158
|
const G = y(n);
|
|
3159
|
-
G !== H && (X(G), G ?
|
|
3159
|
+
G !== H && (X(G), G ? x("pauseVideo") : F && (x("seekTo", [n, !0]), v && x("playVideo")));
|
|
3160
3160
|
}), Y(() => {
|
|
3161
3161
|
if (!F || H || u) return;
|
|
3162
3162
|
if (!v && Te.current == null && !Be.current) {
|
|
3163
|
-
Be.current = !0,
|
|
3163
|
+
Be.current = !0, x("seekTo", [E.current, !0]), x("playVideo");
|
|
3164
3164
|
return;
|
|
3165
3165
|
}
|
|
3166
3166
|
const G = ae();
|
|
3167
|
-
v && (G == null || Math.abs(G - E.current) > 1.5) && R(),
|
|
3167
|
+
v && (G == null || Math.abs(G - E.current) > 1.5) && R(), x(v ? "playVideo" : "pauseVideo");
|
|
3168
3168
|
}, [v, F, H]), Y(() => {
|
|
3169
3169
|
if (!F || r === 0 || H || u) return;
|
|
3170
3170
|
const G = ae();
|
|
3171
|
-
(G == null || Math.abs(G - E.current) > 0.5) && R(), v ||
|
|
3171
|
+
(G == null || Math.abs(G - E.current) > 0.5) && R(), v || x("pauseVideo");
|
|
3172
3172
|
}, [r, F]), Y(() => {
|
|
3173
3173
|
if (!F) return;
|
|
3174
3174
|
let G = null, me = 0;
|
|
3175
3175
|
const V = setInterval(() => {
|
|
3176
3176
|
const Ye = P.current;
|
|
3177
|
-
me =
|
|
3177
|
+
me = b.current === 1 && Ye != null && G != null && Math.abs(Ye - G) < 0.05 ? me + 1 : 0, G = Ye;
|
|
3178
3178
|
const je = me >= 3;
|
|
3179
3179
|
je !== K.current && (K.current = je, I());
|
|
3180
3180
|
}, 1e3);
|
|
3181
3181
|
return () => clearInterval(V);
|
|
3182
|
-
}, [F]), /* @__PURE__ */ f("div", { className: `txyt${
|
|
3182
|
+
}, [F]), /* @__PURE__ */ f("div", { className: `txyt${g ? " txyt--ad" : ""}`, children: [
|
|
3183
3183
|
/* @__PURE__ */ i("iframe", { ref: N, onLoad: Le, referrerPolicy: "strict-origin-when-cross-origin", src: `https://www.youtube-nocookie.com/embed/${t}?enablejsapi=1&mute=1&controls=0&rel=0&modestbranding=1&playsinline=1&iv_load_policy=3`, title: e, allow: "accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" }),
|
|
3184
|
-
!
|
|
3185
|
-
/* @__PURE__ */ i("div", { className: `txyt__paused${ue && !
|
|
3186
|
-
|
|
3184
|
+
!g && /* @__PURE__ */ i("div", { "aria-hidden": "true", className: "txyt__tap", onClick: a, style: { cursor: a ? "pointer" : "default" } }),
|
|
3185
|
+
/* @__PURE__ */ i("div", { className: `txyt__paused${ue && !g && !H ? " txyt__paused--on" : ""}`, "aria-hidden": "true", children: /* @__PURE__ */ i("span", { className: "txyt__pausedplay", children: /* @__PURE__ */ i(ri, { size: 44 }) }) }),
|
|
3186
|
+
g && /* @__PURE__ */ i("div", { className: "txyt__ad", "aria-live": "polite", children: "Ad on YouTube · the transcript carries on after it" }),
|
|
3187
3187
|
H && /* @__PURE__ */ f("div", { className: "txyt__gone", children: [
|
|
3188
3188
|
/* @__PURE__ */ i("span", { children: "YouTube no longer has this part of the broadcast" }),
|
|
3189
3189
|
/* @__PURE__ */ i("small", { children: "A live stream can be rewound only 12 hours" })
|
|
3190
3190
|
] })
|
|
3191
3191
|
] });
|
|
3192
3192
|
}
|
|
3193
|
-
const
|
|
3193
|
+
const Yl = /* @__PURE__ */ f(Pe, { children: [
|
|
3194
3194
|
/* @__PURE__ */ i("rect", { x: "6.5", y: "5", width: "3.75", height: "14", rx: "1.2" }),
|
|
3195
3195
|
/* @__PURE__ */ i("rect", { x: "13.75", y: "5", width: "3.75", height: "14", rx: "1.2" })
|
|
3196
|
-
] }),
|
|
3196
|
+
] }), Zr = /* @__PURE__ */ i("path", { d: "M7.5 5.6a1 1 0 0 1 1.52-.85l9.1 5.55a1 1 0 0 1 0 1.7l-9.1 5.55a1 1 0 0 1-1.52-.85V5.6Z" });
|
|
3197
3197
|
function _l({ player: t, size: e }) {
|
|
3198
3198
|
const n = t.muted ? "Unmute" : "Mute";
|
|
3199
3199
|
return /* @__PURE__ */ i("button", { type: "button", className: `mutebtn${e < 36 ? " mutebtn--sm" : e > 36 ? " mutebtn--lg" : ""}`, "aria-label": n, title: n, "aria-pressed": t.muted, onClick: t.toggleMute, children: /* @__PURE__ */ i(de, { d: t.muted ? q.volumeOff : q.volume, size: 17, sw: 1.6, style: { color: t.muted ? "var(--ink-38)" : "var(--ink-70)" } }) });
|
|
@@ -3211,10 +3211,10 @@ function $l(t, e) {
|
|
|
3211
3211
|
const s = z(0), r = z(1), a = qe((o, l) => {
|
|
3212
3212
|
cancelAnimationFrame(s.current);
|
|
3213
3213
|
const c = r.current, d = performance.now(), u = () => {
|
|
3214
|
-
const
|
|
3215
|
-
r.current = c + (o - c) *
|
|
3214
|
+
const h = l > 0 ? Math.min(1, (performance.now() - d) / l) : 1;
|
|
3215
|
+
r.current = c + (o - c) * h;
|
|
3216
3216
|
for (const M of n.current) M.setVolume(r.current);
|
|
3217
|
-
|
|
3217
|
+
h < 1 && (s.current = requestAnimationFrame(u));
|
|
3218
3218
|
};
|
|
3219
3219
|
u();
|
|
3220
3220
|
}, []);
|
|
@@ -3227,14 +3227,14 @@ function $l(t, e) {
|
|
|
3227
3227
|
}
|
|
3228
3228
|
function Bl(t, e, n, s) {
|
|
3229
3229
|
var ye;
|
|
3230
|
-
const r = z(null), a = z(!1), o = z(!1), [l, c] = O(null), [d, u] = O(!0),
|
|
3230
|
+
const r = z(null), a = z(!1), o = z(!1), [l, c] = O(null), [d, u] = O(!0), h = z(!0), M = z(!1), [N, m] = O(0), w = z(0);
|
|
3231
3231
|
w.current = N;
|
|
3232
3232
|
const v = z({ t: 0, at: 0 }), p = z(n);
|
|
3233
3233
|
p.current = n;
|
|
3234
|
-
const
|
|
3235
|
-
|
|
3236
|
-
const [C,
|
|
3237
|
-
k.current = te,
|
|
3234
|
+
const g = z(s);
|
|
3235
|
+
g.current = s;
|
|
3236
|
+
const [C, x] = O(!1), k = z(!1), J = (te) => {
|
|
3237
|
+
k.current = te, x(te);
|
|
3238
3238
|
}, A = (te, H) => {
|
|
3239
3239
|
var X;
|
|
3240
3240
|
return (X = r.current) == null ? void 0 : X.call(r, te, H);
|
|
@@ -3250,12 +3250,12 @@ function Bl(t, e, n, s) {
|
|
|
3250
3250
|
}
|
|
3251
3251
|
}
|
|
3252
3252
|
}), []);
|
|
3253
|
-
$.muted =
|
|
3253
|
+
$.muted = h.current || M.current, Y(() => {
|
|
3254
3254
|
if (l !== 1) return;
|
|
3255
3255
|
let te = 0;
|
|
3256
3256
|
const H = () => {
|
|
3257
3257
|
const X = v.current, y = X.t + Math.min(1.2, (performance.now() - X.at) / 1e3);
|
|
3258
|
-
if (
|
|
3258
|
+
if (g.current != null && y >= g.current) {
|
|
3259
3259
|
J(!0), A("pauseVideo"), m(y);
|
|
3260
3260
|
return;
|
|
3261
3261
|
}
|
|
@@ -3272,8 +3272,8 @@ function Bl(t, e, n, s) {
|
|
|
3272
3272
|
let te = 0;
|
|
3273
3273
|
for (let H = 0; H < t.length; H++) t[H].start <= N + 0.05 && (te = H);
|
|
3274
3274
|
return te;
|
|
3275
|
-
}, [t, N]), [oe, P] = O(0),
|
|
3276
|
-
const H = Math.max(0,
|
|
3275
|
+
}, [t, N]), [oe, P] = O(0), b = (te) => {
|
|
3276
|
+
const H = Math.max(0, g.current != null ? Math.min(te, Math.max(0, g.current - 0.5)) : te);
|
|
3277
3277
|
A("seekTo", [H + p.current, !0]), v.current = { t: H, at: performance.now() }, m(H), P((X) => X + 1);
|
|
3278
3278
|
}, ue = z(!1), B = z(void 0), F = (te) => {
|
|
3279
3279
|
window.clearTimeout(B.current), B.current = window.setTimeout(() => {
|
|
@@ -3302,15 +3302,15 @@ function Bl(t, e, n, s) {
|
|
|
3302
3302
|
J(!1);
|
|
3303
3303
|
return;
|
|
3304
3304
|
}
|
|
3305
|
-
N >= I - 0.25 &&
|
|
3305
|
+
N >= I - 0.25 && b(0), ie();
|
|
3306
3306
|
}, ve = (te) => {
|
|
3307
3307
|
const H = t[Math.max(0, Math.min(t.length - 1, te))];
|
|
3308
|
-
H &&
|
|
3308
|
+
H && b(H.start);
|
|
3309
3309
|
}, Le = z(!1), Te = () => {
|
|
3310
|
-
const te =
|
|
3310
|
+
const te = h.current || M.current;
|
|
3311
3311
|
$.muted = te, A(te ? "mute" : "unMute");
|
|
3312
3312
|
}, we = (te) => {
|
|
3313
|
-
|
|
3313
|
+
h.current = te, u(te), Te();
|
|
3314
3314
|
}, Ee = (te) => {
|
|
3315
3315
|
M.current !== !te && (M.current = !te, Te());
|
|
3316
3316
|
};
|
|
@@ -3336,18 +3336,18 @@ function Bl(t, e, n, s) {
|
|
|
3336
3336
|
toggle: le,
|
|
3337
3337
|
seekRow: ve,
|
|
3338
3338
|
toggleMute: () => {
|
|
3339
|
-
const te = !
|
|
3339
|
+
const te = !h.current;
|
|
3340
3340
|
we(te), !te && !M.current && j.current === 1 && setTimeout(() => {
|
|
3341
|
-
j.current === 2 && !
|
|
3341
|
+
j.current === 2 && !h.current && (we(!0), A("playVideo"));
|
|
3342
3342
|
}, 900);
|
|
3343
3343
|
},
|
|
3344
|
-
seekFrac: (te) =>
|
|
3345
|
-
seekWord: (te) =>
|
|
3344
|
+
seekFrac: (te) => b(Math.max(0, Math.min(1, te)) * I),
|
|
3345
|
+
seekWord: (te) => b(te.start),
|
|
3346
3346
|
playRow: (te) => {
|
|
3347
3347
|
ve(te), K || ie();
|
|
3348
3348
|
},
|
|
3349
3349
|
stop: () => {
|
|
3350
|
-
re(),
|
|
3350
|
+
re(), b(0);
|
|
3351
3351
|
},
|
|
3352
3352
|
engaged: K || N > 0,
|
|
3353
3353
|
prev: () => ve(E - 1),
|
|
@@ -3370,34 +3370,34 @@ function Bl(t, e, n, s) {
|
|
|
3370
3370
|
}
|
|
3371
3371
|
function Hl(t, e, n, s, r = 0, a = null) {
|
|
3372
3372
|
var X;
|
|
3373
|
-
const o = z(null), [l, c] = O(!1), [d, u] = O(0), [
|
|
3374
|
-
N.current =
|
|
3375
|
-
const m = z(!1), [w, v] = O(null), [p,
|
|
3373
|
+
const o = z(null), [l, c] = O(!1), [d, u] = O(0), [h, M] = O(!1), N = z(h);
|
|
3374
|
+
N.current = h;
|
|
3375
|
+
const m = z(!1), [w, v] = O(null), [p, g] = O(!1), C = z(r);
|
|
3376
3376
|
C.current = r;
|
|
3377
|
-
const
|
|
3377
|
+
const x = z(null), [k, J] = O(0);
|
|
3378
3378
|
Y(() => {
|
|
3379
|
-
|
|
3380
|
-
const y =
|
|
3381
|
-
if (
|
|
3379
|
+
g(!1);
|
|
3380
|
+
const y = x.current;
|
|
3381
|
+
if (x.current = null, y || u(0), !t) {
|
|
3382
3382
|
c(!1), o.current = null;
|
|
3383
3383
|
return;
|
|
3384
3384
|
}
|
|
3385
|
-
const R =
|
|
3385
|
+
const R = ci(t), ae = C.current;
|
|
3386
3386
|
return R.preload = "metadata", R.muted = N.current || m.current, R.onplay = () => c(!0), R.onpause = () => c(!1), R.onended = () => c(!1), R.onloadedmetadata = () => {
|
|
3387
|
-
|
|
3387
|
+
g(!0), R.currentTime = ((y == null ? void 0 : y.t) ?? 0) + ae, y != null && y.playing && R.play().catch((G) => {
|
|
3388
3388
|
y.asked && (G == null ? void 0 : G.name) === "NotAllowedError" || v(wt(G));
|
|
3389
3389
|
});
|
|
3390
3390
|
}, R.onerror = () => {
|
|
3391
3391
|
c(!1);
|
|
3392
|
-
const G = R.error, me =
|
|
3393
|
-
|
|
3394
|
-
|
|
3392
|
+
const G = R.error, me = Aa(G, !1);
|
|
3393
|
+
ba(t).then((V) => {
|
|
3394
|
+
bl(V == null ? void 0 : V.message) || oi(G), o.current === R && (v({ message: (V == null ? void 0 : V.message) ?? me }), V != null && V.permanent || (o.current = null));
|
|
3395
3395
|
});
|
|
3396
3396
|
}, o.current = R, () => {
|
|
3397
|
-
|
|
3397
|
+
x.current = { t: Math.max(0, R.currentTime - ae), playing: !R.paused && !R.ended }, R.pause(), R.onplay = R.onpause = R.onended = R.onloadedmetadata = R.onerror = null, o.current = null;
|
|
3398
3398
|
};
|
|
3399
3399
|
}, [t, k]), Y(() => () => {
|
|
3400
|
-
|
|
3400
|
+
x.current = null;
|
|
3401
3401
|
}, []);
|
|
3402
3402
|
const A = n.length ? ((X = n[n.length - 1].words[n[n.length - 1].words.length - 1]) == null ? void 0 : X.end) ?? n[n.length - 1].start + 4 : 0, K = r > 0 || s != null && p && o.current != null && Number.isFinite(o.current.duration) && o.current.duration > s + 1, j = !K && p && o.current && Number.isFinite(o.current.duration) && o.current.duration || s || A || 1, S = z(j);
|
|
3403
3403
|
S.current = j;
|
|
@@ -3437,7 +3437,7 @@ function Hl(t, e, n, s, r = 0, a = null) {
|
|
|
3437
3437
|
};
|
|
3438
3438
|
return y = requestAnimationFrame(R), () => cancelAnimationFrame(y);
|
|
3439
3439
|
}, [l]);
|
|
3440
|
-
const
|
|
3440
|
+
const b = Ie(() => {
|
|
3441
3441
|
if (!n.length) return 0;
|
|
3442
3442
|
let y = 0;
|
|
3443
3443
|
for (let R = 0; R < n.length; R++) n[R].start <= d + 0.05 && (y = R);
|
|
@@ -3452,7 +3452,7 @@ function Hl(t, e, n, s, r = 0, a = null) {
|
|
|
3452
3452
|
const y = o.current;
|
|
3453
3453
|
if (!y) {
|
|
3454
3454
|
if (!t && e) {
|
|
3455
|
-
|
|
3455
|
+
x.current = (R = x.current) != null && R.asked ? null : { t: d, playing: !0, asked: !0 };
|
|
3456
3456
|
return;
|
|
3457
3457
|
}
|
|
3458
3458
|
t && J((ae) => ae + 1), v({ message: e ? "The audio player is not ready yet — try again in a moment." : "There is no audio for this transcription." });
|
|
@@ -3514,9 +3514,9 @@ function Hl(t, e, n, s, r = 0, a = null) {
|
|
|
3514
3514
|
},
|
|
3515
3515
|
playing: l,
|
|
3516
3516
|
t: d,
|
|
3517
|
-
idx:
|
|
3517
|
+
idx: b,
|
|
3518
3518
|
dur: j,
|
|
3519
|
-
muted:
|
|
3519
|
+
muted: h,
|
|
3520
3520
|
toggleMute: () => {
|
|
3521
3521
|
const y = !N.current;
|
|
3522
3522
|
N.current = y, o.current && (o.current.muted = y || m.current), M(y);
|
|
@@ -3539,8 +3539,8 @@ function Hl(t, e, n, s, r = 0, a = null) {
|
|
|
3539
3539
|
Math.abs(R.currentTime - ae) <= 0.2 || (Be.current = Date.now(), R.currentTime = ae);
|
|
3540
3540
|
},
|
|
3541
3541
|
engaged: l || d > 0,
|
|
3542
|
-
prev: () => le(
|
|
3543
|
-
next: () => le(
|
|
3542
|
+
prev: () => le(b - 1),
|
|
3543
|
+
next: () => le(b + 1),
|
|
3544
3544
|
hold: Oe,
|
|
3545
3545
|
release: ye,
|
|
3546
3546
|
error: w,
|
|
@@ -3563,11 +3563,11 @@ function Hl(t, e, n, s, r = 0, a = null) {
|
|
|
3563
3563
|
function Vl(t, e, n, s, r, a, o = !1, l) {
|
|
3564
3564
|
const c = z(/* @__PURE__ */ new Set());
|
|
3565
3565
|
c.current = l ?? c.current;
|
|
3566
|
-
const d = z(null), [u,
|
|
3567
|
-
|
|
3568
|
-
const [C,
|
|
3566
|
+
const d = z(null), [u, h] = O(!1), [M, N] = O(0), [m, w] = O(0), [v, p] = O(!1), g = z(v);
|
|
3567
|
+
g.current = v;
|
|
3568
|
+
const [C, x] = O(null), [k, J] = O(null), [A, K] = O(null), [j, S] = O(null), $ = z(j);
|
|
3569
3569
|
$.current = j;
|
|
3570
|
-
const [L, I] = O(null), [E, oe] = O(null), [P,
|
|
3570
|
+
const [L, I] = O(null), [E, oe] = O(null), [P, b] = O(null), [ue, B] = O(!1), F = z(e);
|
|
3571
3571
|
F.current = e;
|
|
3572
3572
|
const ie = z(o), re = z([]);
|
|
3573
3573
|
ie.current = o, d.current && (d.current.flow = o);
|
|
@@ -3577,11 +3577,11 @@ function Vl(t, e, n, s, r, a, o = !1, l) {
|
|
|
3577
3577
|
Le.current = a;
|
|
3578
3578
|
const Te = qe((_) => {
|
|
3579
3579
|
_.finite = !0, _.coming = (U) => c.current.has(U), _.readAhead = 6, _.readAheadS = 45, _.onWaiting = (U) => J(U), _.onStarting = (U) => K(U), _.onSentence = (U) => {
|
|
3580
|
-
if (
|
|
3580
|
+
if (h(_.playing), U == null) return;
|
|
3581
3581
|
const W = F.current.findIndex((ee) => ee.sentenceId === U);
|
|
3582
3582
|
W >= 0 && N(W);
|
|
3583
3583
|
}, _.onError = (U) => {
|
|
3584
|
-
|
|
3584
|
+
h(_.playing), x(U instanceof ui ? { message: "The voice could not be started. Press Play to try again.", code: "voice_not_started" } : { message: "A line of this reading could not be played." });
|
|
3585
3585
|
}, _.gapBefore = (U, W) => {
|
|
3586
3586
|
if (!ie.current) return 0;
|
|
3587
3587
|
const ee = F.current, fe = ee.find((be) => be.sentenceId === U), Ne = ee.find((be) => be.sentenceId === W);
|
|
@@ -3614,10 +3614,10 @@ function Vl(t, e, n, s, r, a, o = !1, l) {
|
|
|
3614
3614
|
var W;
|
|
3615
3615
|
if (we.current !== s) {
|
|
3616
3616
|
const ee = we.current != null ? Ee.current : null;
|
|
3617
|
-
we.current = s, (W = d.current) == null || W.stop(), d.current = new cs(), Te(d.current), d.current.setSequence(re.current),
|
|
3617
|
+
we.current = s, (W = d.current) == null || W.stop(), d.current = new cs(), Te(d.current), d.current.setSequence(re.current), h(!1), N(0), x(null), K(null), S(null), H(ee && (ee.playing || ee.t > 0) ? ee : null);
|
|
3618
3618
|
}
|
|
3619
3619
|
const _ = d.current;
|
|
3620
|
-
_.setMuted(
|
|
3620
|
+
_.setMuted(g.current);
|
|
3621
3621
|
for (const ee of t) _.add(ee);
|
|
3622
3622
|
const U = Be.current;
|
|
3623
3623
|
U && (ie.current || t.some((ee) => ee.sentenceId >= (U.sentenceId ?? 0))) && (H(null), te.current(U));
|
|
@@ -3641,7 +3641,7 @@ function Vl(t, e, n, s, r, a, o = !1, l) {
|
|
|
3641
3641
|
const W = ((ze = d.current) == null ? void 0 : ze.resting()) ?? null;
|
|
3642
3642
|
B(!!(W != null && W.silent)), W != null && W.silent && $.current && ($.current = null, S(null)), oe((be) => W == null ? null : be != null && Math.abs(be - W.s) < 0.05 ? be : W.s);
|
|
3643
3643
|
const ee = $.current;
|
|
3644
|
-
W == null ?
|
|
3644
|
+
W == null ? b(null) : ee && ee.sid === W.sentenceId && (b(ee.t), $.current = null, S(null));
|
|
3645
3645
|
const fe = ((Ue = d.current) == null ? void 0 : Ue.position()) ?? null, Ne = fe && Le.current ? Le.current[String(fe.sentenceId)] ?? null : null;
|
|
3646
3646
|
ee && fe && fe.sentenceId === ee.sid && fe.t > 0.1 && S(null), I((be) => fe ? be && Math.abs(be.t - fe.t) < 0.05 && be.dur === fe.dur && be.words === Ne ? be : { t: fe.t, dur: fe.dur, words: Ne } : be == null ? be : null);
|
|
3647
3647
|
};
|
|
@@ -3660,12 +3660,12 @@ function Vl(t, e, n, s, r, a, o = !1, l) {
|
|
|
3660
3660
|
Ae.current = M;
|
|
3661
3661
|
const Z = (_) => {
|
|
3662
3662
|
var U, W, ee;
|
|
3663
|
-
(W = d.current) == null || W.play(((U = e[_]) == null ? void 0 : U.sentenceId) ?? null),
|
|
3663
|
+
(W = d.current) == null || W.play(((U = e[_]) == null ? void 0 : U.sentenceId) ?? null), h(!!((ee = d.current) != null && ee.playing));
|
|
3664
3664
|
}, se = (_) => {
|
|
3665
3665
|
var W, ee, fe;
|
|
3666
3666
|
const U = Math.max(0, Math.min(Math.max(0, e.length - 1), _));
|
|
3667
|
-
N(U), Ae.current = U, w((Ne) => Ne + 1), (ee = d.current) == null || ee.seek(((W = e[U]) == null ? void 0 : W.sentenceId) ?? null),
|
|
3668
|
-
},
|
|
3667
|
+
N(U), Ae.current = U, w((Ne) => Ne + 1), (ee = d.current) == null || ee.seek(((W = e[U]) == null ? void 0 : W.sentenceId) ?? null), h(!!((fe = d.current) != null && fe.playing));
|
|
3668
|
+
}, ge = (_) => {
|
|
3669
3669
|
var U;
|
|
3670
3670
|
X(), S(null), (U = d.current) == null || U.startWithin(-1, 0), se(_);
|
|
3671
3671
|
}, Me = (_) => {
|
|
@@ -3674,7 +3674,7 @@ function Vl(t, e, n, s, r, a, o = !1, l) {
|
|
|
3674
3674
|
return { from: W, span: Math.max(0, ee - W) };
|
|
3675
3675
|
}, ce = Me(V), ke = Math.max(0, Math.min(ce.span, Et(e[V], ce.from, ce.from + 4) - ce.from)), We = j ? j.t : o ? E != null && ue ? ce.from + Math.min(ce.span, E) : E != null ? P != null ? Math.min(ce.from, P + E) : ce.from + Math.min(ce.span, ke + E) : L && L.dur > 0 ? ce.from + Math.min(ke, L.t / L.dur * ke) : ce.from : L && L.dur > 0 ? ce.from + Math.min(ce.span, L.t / L.dur * ce.span) : ce.from;
|
|
3676
3676
|
Y(() => {
|
|
3677
|
-
Ee.current = Be.current ??
|
|
3677
|
+
Ee.current = Be.current ?? Al(e, We, u, je);
|
|
3678
3678
|
});
|
|
3679
3679
|
const xe = {
|
|
3680
3680
|
playing: u || Oe,
|
|
@@ -3697,8 +3697,8 @@ function Vl(t, e, n, s, r, a, o = !1, l) {
|
|
|
3697
3697
|
seekN: m,
|
|
3698
3698
|
toggleMute: () => {
|
|
3699
3699
|
var U;
|
|
3700
|
-
const _ = !
|
|
3701
|
-
|
|
3700
|
+
const _ = !g.current;
|
|
3701
|
+
g.current = _, (U = d.current) == null || U.setMuted(_), p(_);
|
|
3702
3702
|
},
|
|
3703
3703
|
toggle: () => {
|
|
3704
3704
|
var U, W, ee;
|
|
@@ -3707,31 +3707,31 @@ function Vl(t, e, n, s, r, a, o = !1, l) {
|
|
|
3707
3707
|
return;
|
|
3708
3708
|
}
|
|
3709
3709
|
if (X(), u) {
|
|
3710
|
-
(U = d.current) == null || U.pause(),
|
|
3710
|
+
(U = d.current) == null || U.pause(), h(!1);
|
|
3711
3711
|
return;
|
|
3712
3712
|
}
|
|
3713
|
-
|
|
3713
|
+
x(null);
|
|
3714
3714
|
const _ = Ae.current;
|
|
3715
3715
|
if (!$.current && ((ee = d.current) != null && ee.resume(((W = e[_]) == null ? void 0 : W.sentenceId) ?? null))) {
|
|
3716
|
-
|
|
3716
|
+
h(!0);
|
|
3717
3717
|
return;
|
|
3718
3718
|
}
|
|
3719
3719
|
Z(_);
|
|
3720
3720
|
},
|
|
3721
3721
|
pause: () => {
|
|
3722
3722
|
var _;
|
|
3723
|
-
X(), (_ = d.current) == null || _.pause(),
|
|
3723
|
+
X(), (_ = d.current) == null || _.pause(), h(!1);
|
|
3724
3724
|
},
|
|
3725
3725
|
stop: () => {
|
|
3726
3726
|
var _, U, W;
|
|
3727
|
-
X(), (_ = d.current) == null || _.pause(),
|
|
3727
|
+
X(), (_ = d.current) == null || _.pause(), h(!1), N(0), I(null), (W = d.current) == null || W.seek(((U = e[0]) == null ? void 0 : U.sentenceId) ?? null);
|
|
3728
3728
|
},
|
|
3729
|
-
seekRow:
|
|
3729
|
+
seekRow: ge,
|
|
3730
3730
|
resumeAt: (_) => {
|
|
3731
3731
|
H(_), t.some((U) => U.sentenceId >= (_.sentenceId ?? 0)) && (H(null), te.current(_));
|
|
3732
3732
|
},
|
|
3733
3733
|
seekFrac: (_) => {
|
|
3734
|
-
var Xe,
|
|
3734
|
+
var Xe, Ot, ut;
|
|
3735
3735
|
X();
|
|
3736
3736
|
const U = Math.max(0, Math.min(1, _)) * je;
|
|
3737
3737
|
let W = 0;
|
|
@@ -3746,7 +3746,7 @@ function Vl(t, e, n, s, r, a, o = !1, l) {
|
|
|
3746
3746
|
}
|
|
3747
3747
|
const Ne = (ee == null ? void 0 : ee.sentenceId) ?? null, { from: ze, span: Ue } = Me(W);
|
|
3748
3748
|
let be = Ue > 0 ? Math.max(0, Math.min(1, (U - ze) / Ue)) : 0;
|
|
3749
|
-
const Se = Ne != null ? (
|
|
3749
|
+
const Se = Ne != null ? (Ot = Le.current) == null ? void 0 : Ot[String(Ne)] : void 0, st = Se != null && Se.length ? Se[Se.length - 1][1] : 0;
|
|
3750
3750
|
if (ee && Se && Se.length === ee.words.length && st > 0) {
|
|
3751
3751
|
let Ge = 0;
|
|
3752
3752
|
for (let He = 0; He < ee.words.length; He++) ee.words[He].start <= U && (Ge = He);
|
|
@@ -3770,11 +3770,11 @@ function Vl(t, e, n, s, r, a, o = !1, l) {
|
|
|
3770
3770
|
},
|
|
3771
3771
|
prev: () => {
|
|
3772
3772
|
const _ = me(V - 1, -1);
|
|
3773
|
-
_ != null &&
|
|
3773
|
+
_ != null && ge(_);
|
|
3774
3774
|
},
|
|
3775
3775
|
next: () => {
|
|
3776
3776
|
const _ = me(V + 1, 1);
|
|
3777
|
-
_ != null &&
|
|
3777
|
+
_ != null && ge(_);
|
|
3778
3778
|
},
|
|
3779
3779
|
hold: () => {
|
|
3780
3780
|
var _;
|
|
@@ -3783,7 +3783,7 @@ function Vl(t, e, n, s, r, a, o = !1, l) {
|
|
|
3783
3783
|
release: () => {
|
|
3784
3784
|
Ve.current && (Ve.current = !1, Z(Ae.current));
|
|
3785
3785
|
},
|
|
3786
|
-
clearError: () =>
|
|
3786
|
+
clearError: () => x(null),
|
|
3787
3787
|
setVolume: (_) => {
|
|
3788
3788
|
var U;
|
|
3789
3789
|
return (U = d.current) == null ? void 0 : U.setVolume(_);
|
|
@@ -3795,7 +3795,7 @@ function Vl(t, e, n, s, r, a, o = !1, l) {
|
|
|
3795
3795
|
if (U == null) return;
|
|
3796
3796
|
N(_), Ae.current = _, S(null), $.current = null, (fe = d.current) == null || fe.joinSilently(U);
|
|
3797
3797
|
const W = ((Ne = d.current) == null ? void 0 : Ne.resting()) ?? null;
|
|
3798
|
-
oe((W == null ? void 0 : W.s) ?? null), B(!!(W != null && W.silent)),
|
|
3798
|
+
oe((W == null ? void 0 : W.s) ?? null), B(!!(W != null && W.silent)), h(!!((ze = d.current) != null && ze.playing));
|
|
3799
3799
|
}
|
|
3800
3800
|
return xe.joinAt = o ? (_) => {
|
|
3801
3801
|
X(), Ce(yn({ t: _, playing: !0, sentenceId: null, offset: 0, ended: !1 }, e, je).index);
|
|
@@ -3811,17 +3811,17 @@ function Vl(t, e, n, s, r, a, o = !1, l) {
|
|
|
3811
3811
|
}
|
|
3812
3812
|
const Wl = () => {
|
|
3813
3813
|
}, Fl = "The language this recording is read aloud in.", Gl = { title: "READ IN", note: "The transcript and its voice switch to this language." };
|
|
3814
|
-
function Zl({ recordingId: t, model: e, rows: n, lenS: s, ended: r, cred: a, langs: o, srcLang: l, canTranslate: c, pickedLang: d, setPickedLang: u, side:
|
|
3814
|
+
function Zl({ recordingId: t, model: e, rows: n, lenS: s, ended: r, cred: a, langs: o, srcLang: l, canTranslate: c, pickedLang: d, setPickedLang: u, side: h, hearOriginal: M = !1, timed: N = !1, stockVoices: m = !1, stickyPicker: w = !1, pickerBusy: v = null, voiceSheet: p }) {
|
|
3815
3815
|
var tn, nn, sn, Gt;
|
|
3816
|
-
const { onAddVoice:
|
|
3816
|
+
const { onAddVoice: g, onPickVoice: C, onSelectSpeaker: x, noCloneFor: k, castNoClone: J, castShort: A, castBuilding: K, castWarn: j, badge: S, titleNode: $ } = p ?? {}, L = !!p, I = !!(p != null && p.pendingClones), [E, oe] = hi(), [P, b] = O(null), [ue, B] = O(!1), [F, ie] = O(!1), [re, le] = O(!1), [ve, Le] = O(!1), Te = d ?? l, we = d === null, Ee = d != null || P != null, Oe = ((Q) => !!Q && !!(o != null && o.voice.includes(Q)))(we ? l : Te) ? we ? l : Te : "en", ye = Sl(Oe), te = (p == null ? void 0 : p.cloneOn) ?? !0, [H, X] = O(0), y = z(te);
|
|
3817
3817
|
Y(() => {
|
|
3818
3818
|
y.current !== te && (y.current = te, X((Q) => Q + 1));
|
|
3819
3819
|
}, [te]);
|
|
3820
|
-
const R =
|
|
3821
|
-
const Q = Wr(
|
|
3820
|
+
const R = Ml(Oe, Ee || r || F, gl(e) * 1e3 + H, { id: t ?? null, shareCode: a.shareCode ?? null }), ae = Ie(() => ((R == null ? void 0 : R.voices) ?? []).filter((Q) => L || !Q.cloned || Q.speaker != null), [R, L]), G = ae.length > 1, me = Ns(o, Te), V = vi(), Ye = Ie(() => fi(o, "translation"), [o]), [je, Ve] = O(null), [Ae] = O(() => /* @__PURE__ */ new Set()), [Z, se] = O({}), ge = Ie(() => ol(n, e, V.vcUnknownSpk), [n, e, V]), Me = G && ge.filter((Q) => Q.key >= 0).length > 1, ce = je != null && ge.some((Q) => Q.key === je) ? je : ((tn = ge[0]) == null ? void 0 : tn.key) ?? null, ke = Ie(() => {
|
|
3821
|
+
const Q = Wr(ge, ae, te);
|
|
3822
3822
|
for (const [De, $e] of Object.entries(Z[Oe ?? ""] ?? {})) Q.set(Number(De), $e);
|
|
3823
3823
|
return Q;
|
|
3824
|
-
}, [
|
|
3824
|
+
}, [ge, ae, Z, Oe, te]), We = Me && Object.keys(Z[Oe ?? ""] ?? {}).length > 0, xe = Ie(() => m && !We ? Wr(ge, ae, !1) : null, [m, We, ge, ae]), Ce = Ie(() => We ? Hr(ke) || null : xe && Hr(xe) || null, [We, ke, xe]), _ = We ? ke : xe, U = ae.some((Q) => Q.cloned && Q.consent !== "pending"), W = !!Te && !!(o != null && o.voice.includes(Te)), ee = W && !M, fe = Ie(
|
|
3825
3825
|
() => n.filter((Q) => !Q.suppressed && !Q.unclear).map((Q) => Q.sentenceId).filter((Q) => Q != null),
|
|
3826
3826
|
[n]
|
|
3827
3827
|
), Ne = hl({ recordingId: t, lang: Te, ended: r, cred: a, pickedVoice: Ce ?? P, sentenceIds: r && ee ? fe : void 0 }), ze = ae.find((Q) => Q.id === P) ?? ae.find((Q) => {
|
|
@@ -3841,7 +3841,7 @@ function Zl({ recordingId: t, model: e, rows: n, lenS: s, ended: r, cred: a, lan
|
|
|
3841
3841
|
}, [Se.idx]), Y(() => {
|
|
3842
3842
|
!ve || !Se.has || (Le(!1), Se.playing || Se.toggle());
|
|
3843
3843
|
}, [ve, Se.has]);
|
|
3844
|
-
const st = Ne.rendering, Xe = st ? null : Ne.failed ?? null,
|
|
3844
|
+
const st = Ne.rendering, Xe = st ? null : Ne.failed ?? null, Ot = !1, ut = Ee && ee, Ge = Ee && !we && ee && !(Ne.listed && Ne.listed.lang === Te && Ne.listed.recordingId === t), Qe = {
|
|
3845
3845
|
...Se,
|
|
3846
3846
|
has: Se.has || ut && r,
|
|
3847
3847
|
toggle: () => {
|
|
@@ -3854,79 +3854,79 @@ function Zl({ recordingId: t, model: e, rows: n, lenS: s, ended: r, cred: a, lan
|
|
|
3854
3854
|
}, rt = () => B(!0), He = () => {
|
|
3855
3855
|
B(!1), ie(re), le(!1);
|
|
3856
3856
|
}, Lt = (Q) => {
|
|
3857
|
-
if (u(Q), oe(Q), !((
|
|
3857
|
+
if (u(Q), oe(Q), !((h || w) && !re)) {
|
|
3858
3858
|
if (Q != null) {
|
|
3859
3859
|
He();
|
|
3860
3860
|
return;
|
|
3861
3861
|
}
|
|
3862
3862
|
ye.reset(), B(!1), ie(!1), le(!1);
|
|
3863
3863
|
}
|
|
3864
|
-
},
|
|
3864
|
+
}, gt = () => {
|
|
3865
3865
|
ye.reset(), ie(!0);
|
|
3866
3866
|
}, Bt = () => {
|
|
3867
3867
|
ye.reset(), ie(!1);
|
|
3868
|
-
}, ne = ue && !re,
|
|
3868
|
+
}, ne = ue && !re, pt = F || ue && re, D = () => {
|
|
3869
3869
|
if (ne) {
|
|
3870
3870
|
B(!1);
|
|
3871
3871
|
return;
|
|
3872
3872
|
}
|
|
3873
3873
|
ye.reset(), ie(!1), le(!1), B(!0);
|
|
3874
3874
|
}, Xt = () => {
|
|
3875
|
-
if (ye.reset(),
|
|
3875
|
+
if (ye.reset(), pt) {
|
|
3876
3876
|
ie(!1), B(!1), le(!1);
|
|
3877
3877
|
return;
|
|
3878
3878
|
}
|
|
3879
3879
|
B(!1), le(!1), ie(!0);
|
|
3880
|
-
},
|
|
3880
|
+
}, Ct = (Q) => {
|
|
3881
3881
|
if (ye.reset(), ie(Me), (Te !== Oe || we) && u(Oe), Ne.forget(), Le(!0), Me && ce != null && Oe) {
|
|
3882
3882
|
const De = new Map(ke);
|
|
3883
|
-
De.set(ce, Q), se(($e) => ({ ...$e, [Oe]: Object.fromEntries(De) })),
|
|
3883
|
+
De.set(ce, Q), se(($e) => ({ ...$e, [Oe]: Object.fromEntries(De) })), b(null);
|
|
3884
3884
|
return;
|
|
3885
3885
|
}
|
|
3886
|
-
|
|
3887
|
-
}, at = we ? { ...Ns(o, null), flag: /* @__PURE__ */ i(de, { d: q.langAuto, size: 21, sw: 1.7, style: { color: "currentColor", display: "block" } }) } : me,
|
|
3886
|
+
b(Q);
|
|
3887
|
+
}, at = we ? { ...Ns(o, null), flag: /* @__PURE__ */ i(de, { d: q.langAuto, size: 21, sw: 1.7, style: { color: "currentColor", display: "block" } }) } : me, bt = c ? h ? /* @__PURE__ */ i("span", { className: "barchip", style: ne ? { background: "var(--brand-tint)", boxShadow: "0 0 0 1.5px var(--brand)" } : void 0, children: /* @__PURE__ */ i(wn, { flag: at.flag, code: at.code, bordered: !1, onClick: D, style: Fr }) }) : /* @__PURE__ */ i(wn, { flag: at.flag, code: at.code, bordered: !1, onClick: rt, style: Fr }) : null, zn = q.voiceClone, Ht = Ee && (!!Ne.track || st), Ke = Xe ? "var(--conf-low)" : Ht || h && pt ? "var(--brand)" : "var(--ink-55)", ot = st || !!Se.preparing && Ee, Vt = Se.preparing ? `Speaking this line in ${(ze == null ? void 0 : ze.name) ?? "this voice"}…` : st ? `Preparing this recording in ${(ze == null ? void 0 : ze.name) ?? "this voice"} — it will play as soon as it is ready` : Xe ? `This voice could not be prepared: ${Xe}` : W ? G ? "Choose a voice" : ze ? ze.name : V.vcNoVoice + me.label : `${V.vcNoVoice}${me.label}`, ht = /* @__PURE__ */ i(Ba, { open: ue, onClose: He, keepOpen: (!!h || w) && !re, value: we ? null : Te, onSelect: Lt, languages: Ye, title: (h == null ? void 0 : h.title) ?? "SPOKEN LANGUAGE", note: (h == null ? void 0 : h.note) ?? Fl, searchPlaceholder: V.search, none: "Original", pinned: (we ? l : Te) ? [we ? l : Te] : [], recent: E, requireVoice: re, sticky: w, busy: v }), dt = Ie(() => ae.filter((Q) => Q.cloned && !Q.auto), [ae]), _t = (Q) => Q.voiceId ? dt.find((De) => De.id === `clone:${Q.voiceId}`) ?? null : null, lt = Ie(() => ge.filter((Q) => Q.key >= 0), [ge]), Wt = Ie(() => {
|
|
3888
3888
|
const Q = ae.filter(($e) => !$e.cloned);
|
|
3889
3889
|
if (!Me) return [...Q, ...r && lt.length === 1 ? dt.filter(($e) => $e.id === `clone:${lt[0].voiceId}`) : []];
|
|
3890
3890
|
const De = [];
|
|
3891
3891
|
for (const $e of lt) {
|
|
3892
3892
|
if (_t($e)) continue;
|
|
3893
|
-
const
|
|
3894
|
-
!
|
|
3893
|
+
const zt = ae.find((St) => St.cloned && St.auto && St.speaker === $e.key);
|
|
3894
|
+
!zt || zt.ready === !1 || zt.consent === "pending" && !I || De.push({ id: zt.id, name: $e.name, cloned: !0, default: !1, live: !0, auto: !0, gender: $e.sex ?? zt.gender ?? null, speaker: $e.key, consent: zt.consent ?? null });
|
|
3895
3895
|
}
|
|
3896
3896
|
return [...Q, ...dt, ...De];
|
|
3897
3897
|
}, [ae, dt, Me, lt, I, r]), it = Me ? lt.find((Q) => Q.key === ce) ?? null : null, Ft = (Q) => {
|
|
3898
3898
|
var De;
|
|
3899
3899
|
return Q ? ((De = ae.find(($e) => $e.id === Q)) == null ? void 0 : De.gender) ?? null : null;
|
|
3900
|
-
}, kt = it ? it.sex ?? Ft(ke.get(it.key)) : null, Ze = Ie(() => it ? Wt.filter((Q) => Q.cloned ? Q.live ? Q.speaker === it.key : Q.id === `clone:${it.voiceId}` : !0) : Wt, [Wt, it, kt, lt]),
|
|
3900
|
+
}, kt = it ? it.sex ?? Ft(ke.get(it.key)) : null, Ze = Ie(() => it ? Wt.filter((Q) => Q.cloned ? Q.live ? Q.speaker === it.key : Q.id === `clone:${it.voiceId}` : !0) : Wt, [Wt, it, kt, lt]), xt = (Q) => ae.find((De) => De.cloned && De.auto && De.speaker === Q) ?? null, mt = { people: lt, gvList: ae, autoOf: xt, savedFor: _t }, Dt = (S == null ? void 0 : S(mt)) ?? 0, et = j ? lt.map((Q) => j(Q, mt)).filter((Q) => !!Q) : [], en = /* @__PURE__ */ f("button", { type: "button", className: "txvoice", "aria-label": "Voice", "aria-pressed": h ? pt : void 0, title: ot || Xe ? Vt : void 0, style: { cursor: "pointer", background: Ht || ot || h && pt ? "var(--brand-tint)" : "var(--fill-06)", boxShadow: h && pt ? "inset 0 0 0 1.5px var(--brand)" : void 0 }, onClick: h ? Xt : gt, children: [
|
|
3901
3901
|
ot ? /* @__PURE__ */ i("span", { style: { width: 16, height: 16, borderRadius: "50%", border: "2px solid var(--fill-10)", borderTopColor: "var(--brand)", animation: "vs-spin .7s linear infinite" } }) : /* @__PURE__ */ i(de, { d: zn, size: 17, sw: 1.6, style: { color: Ke } }),
|
|
3902
|
-
et.length > 0 ? /* @__PURE__ */ i("span", { className: "txvoice__warn", title: et.join(" · "), children: "!" }) : !!
|
|
3903
|
-
] }),
|
|
3904
|
-
|
|
3902
|
+
et.length > 0 ? /* @__PURE__ */ i("span", { className: "txvoice__warn", title: et.join(" · "), children: "!" }) : !!Dt && /* @__PURE__ */ i("span", { className: "txvoice__n", title: `${Dt} speaker${Dt === 1 ? "" : "s"} can get a cloned voice`, children: Dt })
|
|
3903
|
+
] }), vt = /* @__PURE__ */ i($t, { open: F, onClose: Bt, title: V.vcSheet, titleNode: $, doneLabel: V.done, children: /* @__PURE__ */ i(
|
|
3904
|
+
cl,
|
|
3905
3905
|
{
|
|
3906
3906
|
t: V,
|
|
3907
3907
|
cast: Me && /* @__PURE__ */ i(
|
|
3908
|
-
|
|
3908
|
+
ll,
|
|
3909
3909
|
{
|
|
3910
3910
|
t: V,
|
|
3911
|
-
roster:
|
|
3911
|
+
roster: ge,
|
|
3912
3912
|
selected: ce,
|
|
3913
3913
|
onSelect: (Q) => {
|
|
3914
|
-
ye.reset(), Ve(Q),
|
|
3914
|
+
ye.reset(), Ve(Q), x == null || x(Q);
|
|
3915
3915
|
},
|
|
3916
|
-
noClone: (Q) => !!(J != null && J(Q,
|
|
3917
|
-
short: (Q) => !!(A != null && A(Q,
|
|
3918
|
-
warn: (Q) => (j == null ? void 0 : j(Q,
|
|
3919
|
-
building: (Q) => !_t(Q) && (ae.some((De) => De.cloned && De.speaker === Q.key && De.ready === !1) || !!(K != null && K(Q,
|
|
3916
|
+
noClone: (Q) => !!(J != null && J(Q, mt)),
|
|
3917
|
+
short: (Q) => !!(A != null && A(Q, mt)),
|
|
3918
|
+
warn: (Q) => (j == null ? void 0 : j(Q, mt)) ?? null,
|
|
3919
|
+
building: (Q) => !_t(Q) && (ae.some((De) => De.cloned && De.speaker === Q.key && De.ready === !1) || !!(K != null && K(Q, mt))),
|
|
3920
3920
|
sexOf: (Q) => Q.sex ?? Ft(ke.get(Q.key))
|
|
3921
3921
|
}
|
|
3922
3922
|
),
|
|
3923
3923
|
voices: Ze,
|
|
3924
3924
|
onAdd: (Q) => {
|
|
3925
|
-
ye.reset(),
|
|
3925
|
+
ye.reset(), g == null || g(Q);
|
|
3926
3926
|
},
|
|
3927
|
-
noClone: it && !Ze.some((Q) => Q.cloned) ? (k == null ? void 0 : k(it,
|
|
3927
|
+
noClone: it && !Ze.some((Q) => Q.cloned) ? (k == null ? void 0 : k(it, xt(it.key), mt)) ?? null : null,
|
|
3928
3928
|
usedBy: Me && ce != null ? (Q) => {
|
|
3929
|
-
const De =
|
|
3929
|
+
const De = ge.filter(($e) => $e.key !== ce && ke.get($e.key) === Q.id);
|
|
3930
3930
|
return De.length ? De.map(($e) => $e.name).join(", ") : null;
|
|
3931
3931
|
} : void 0,
|
|
3932
3932
|
foldKey: ce,
|
|
@@ -3946,39 +3946,39 @@ function Zl({ recordingId: t, model: e, rows: n, lenS: s, ended: r, cred: a, lan
|
|
|
3946
3946
|
}
|
|
3947
3947
|
ye.arm(Q);
|
|
3948
3948
|
},
|
|
3949
|
-
onUse:
|
|
3949
|
+
onUse: Ct
|
|
3950
3950
|
}
|
|
3951
|
-
) }), In =
|
|
3951
|
+
) }), In = h ? null : /* @__PURE__ */ f(Pe, { children: [
|
|
3952
3952
|
ht,
|
|
3953
|
-
|
|
3954
|
-
] }), On =
|
|
3953
|
+
vt
|
|
3954
|
+
] }), On = h && (ue || F) ? /* @__PURE__ */ i("div", { className: "vs-side", children: ue ? ht : vt }) : null, jt = ut && Xe ? `This voice could not be prepared: ${Xe}` : null, Cn = Ot;
|
|
3955
3955
|
return {
|
|
3956
|
-
barChip: { flag: at.flag, code: at.code, label: at.label, onClick:
|
|
3956
|
+
barChip: { flag: at.flag, code: at.code, label: at.label, onClick: h || w ? D : rt, active: !!((h || w) && ne), can: c },
|
|
3957
3957
|
sheetsOpen: ue || F,
|
|
3958
3958
|
on: ut,
|
|
3959
3959
|
player: Qe,
|
|
3960
|
-
chip:
|
|
3960
|
+
chip: bt,
|
|
3961
3961
|
voiceBtn: en,
|
|
3962
3962
|
sheets: In,
|
|
3963
3963
|
sidePanel: On,
|
|
3964
|
-
voicesMine:
|
|
3964
|
+
voicesMine: pt,
|
|
3965
3965
|
toggleVoices: Xt,
|
|
3966
3966
|
cloningOn: te,
|
|
3967
|
-
playTitle:
|
|
3968
|
-
noVoice:
|
|
3967
|
+
playTitle: jt,
|
|
3968
|
+
noVoice: Ot,
|
|
3969
3969
|
noVoiceNote: Cn,
|
|
3970
3970
|
relang: Ge,
|
|
3971
3971
|
sampling: ye.sampleId != null,
|
|
3972
3972
|
error: ye.error,
|
|
3973
3973
|
clearError: () => ye.clearError(),
|
|
3974
|
-
openVoices:
|
|
3974
|
+
openVoices: gt,
|
|
3975
3975
|
openPicker: rt,
|
|
3976
3976
|
original: we,
|
|
3977
3977
|
reloadVoices: () => X((Q) => Q + 1),
|
|
3978
3978
|
voicesVer: H,
|
|
3979
3979
|
people: lt,
|
|
3980
3980
|
gvList: ae,
|
|
3981
|
-
autoOf:
|
|
3981
|
+
autoOf: xt,
|
|
3982
3982
|
savedFor: _t,
|
|
3983
3983
|
closeVoices: Bt,
|
|
3984
3984
|
setSheet: ie,
|
|
@@ -4001,12 +4001,12 @@ function Zl({ recordingId: t, model: e, rows: n, lenS: s, ended: r, cred: a, lan
|
|
|
4001
4001
|
langList: { value: we ? null : Te, onSelect: Lt, languages: Ye, searchPlaceholder: V.search, none: "Original", pinned: (we ? l : Te) ? [we ? l : Te] : [], recent: E }
|
|
4002
4002
|
};
|
|
4003
4003
|
}
|
|
4004
|
-
function ql({ model: t, rows: e, player: n, fixed: s, applied: r, onFixOpen: a, onWord: o, onFix: l, fixMode: c, fixingId: d, marks: u = !0, fixBadges:
|
|
4004
|
+
function ql({ model: t, rows: e, player: n, fixed: s, applied: r, onFixOpen: a, onWord: o, onFix: l, fixMode: c, fixingId: d, marks: u = !0, fixBadges: h = !0, tail: M, tailFg: N, running: m, desk: w, feedRef: v, listener: p, showLabels: g, find: C, findOpen: x, lang: k, warm: J, onVisible: A, wordHl: K = !0 }) {
|
|
4005
4005
|
const { playing: j, engaged: S, t: $, idx: L, seekN: I, wordSync: E, clipPos: oe } = n;
|
|
4006
|
-
|
|
4006
|
+
kl(!0, v);
|
|
4007
4007
|
const P = z(null);
|
|
4008
|
-
|
|
4009
|
-
const [
|
|
4008
|
+
Ko(v, P);
|
|
4009
|
+
const [b, ue] = O(null), B = (C ?? "").trim().toLowerCase(), [F, ie] = O(0), re = z(0), le = z(null), ve = z(L), Le = (H) => {
|
|
4010
4010
|
var X;
|
|
4011
4011
|
return ((X = v.current) == null ? void 0 : X.querySelector(`[data-tx-row="${H}"]`)) ?? null;
|
|
4012
4012
|
}, Te = z("");
|
|
@@ -4050,8 +4050,8 @@ function ql({ model: t, rows: e, player: n, fixed: s, applied: r, onFixOpen: a,
|
|
|
4050
4050
|
return;
|
|
4051
4051
|
}
|
|
4052
4052
|
const Ae = performance.now(), Z = 360, se = () => {
|
|
4053
|
-
const
|
|
4054
|
-
X.scrollTop = me + (Ve - me) * (1 - Math.pow(1 -
|
|
4053
|
+
const ge = Math.min(1, (performance.now() - Ae) / Z);
|
|
4054
|
+
X.scrollTop = me + (Ve - me) * (1 - Math.pow(1 - ge, 3)), le.current = ge < 1 ? requestAnimationFrame(se) : null;
|
|
4055
4055
|
};
|
|
4056
4056
|
le.current = requestAnimationFrame(se);
|
|
4057
4057
|
};
|
|
@@ -4082,28 +4082,28 @@ function ql({ model: t, rows: e, player: n, fixed: s, applied: r, onFixOpen: a,
|
|
|
4082
4082
|
/* @__PURE__ */ i(de, { d: H === "up" ? "m4.5 15.75 7.5-7.5 7.5 7.5" : "m19.5 8.25-7.5 7.5-7.5-7.5", size: 15, sw: 2 }),
|
|
4083
4083
|
"Now playing"
|
|
4084
4084
|
] }) });
|
|
4085
|
-
return /* @__PURE__ */ f("div", { ref: v, "data-tx-feed": "1", className: `txfeed${w ? " txfeed--desk" : ""}${
|
|
4086
|
-
/* @__PURE__ */ i(
|
|
4085
|
+
return /* @__PURE__ */ f("div", { ref: v, "data-tx-feed": "1", className: `txfeed${w ? " txfeed--desk" : ""}${x && !m ? " is-find" : ""}`, children: [
|
|
4086
|
+
/* @__PURE__ */ i(Jo, { thumbRef: P }),
|
|
4087
4087
|
j && F === -1 && te("up"),
|
|
4088
4088
|
e.map((H, X) => {
|
|
4089
4089
|
var ce;
|
|
4090
4090
|
const y = j && X === L, R = S && X === L, ae = !!d && d === H.id, G = B && !H.text.toLowerCase().includes(B) && !(k && ((ce = H.translations[k]) != null && ce.toLowerCase().includes(B))) ? 0.22 : !S || X <= L || ae ? 1 : 0.38, me = p ? () => n.playRow(X) : c && l ? () => {
|
|
4091
4091
|
j && !y && n.seekRow(X), l(H);
|
|
4092
|
-
} : j && y ? void 0 : () => n.playRow(X), V = p ? null :
|
|
4092
|
+
} : j && y ? void 0 : () => n.playRow(X), V = p ? null : tl(H, r, s), Ye = !!V && (V.script > 0 || V.manual), je = w && !!a && b === H.id && !!V && !Ye, Ve = zs(t, H.speaker), Ae = Is(t, H.speaker), Z = Ae.lane, se = k && H.translations[k] && H.language !== k ? H.translations[k] : null, ge = bi(e, X, k), Me = R && !E && oe ? Mi(ge.map((ke) => ({ t: ke.text, sp: " " })), oe) : null;
|
|
4093
4093
|
return /* @__PURE__ */ f("div", { "data-tx-row": X, "data-sentence": H.sentenceId, className: `txline${J ? " txline--warm" : ""}${ae ? " txline--fixing" : ""}`, "aria-current": ae || void 0, style: { opacity: G }, onClick: me, onMouseEnter: w && a ? () => ue(H.id) : void 0, onMouseLeave: w && a ? () => ue(null) : void 0, children: [
|
|
4094
4094
|
/* @__PURE__ */ f("div", { className: "txline__meta", children: [
|
|
4095
4095
|
/* @__PURE__ */ i("span", { className: "txline__at", children: Tt(H.start) }),
|
|
4096
|
-
|
|
4097
|
-
/* @__PURE__ */ i("div", { className: `lanechip bg-lane-${Z}`, style: Ae.soft ? { background: Ae.soft, color: Ae.fg } : void 0, children:
|
|
4096
|
+
g && H.speaker >= 0 && /* @__PURE__ */ f(Pe, { children: [
|
|
4097
|
+
/* @__PURE__ */ i("div", { className: `lanechip bg-lane-${Z}`, style: Ae.soft ? { background: Ae.soft, color: Ae.fg } : void 0, children: mi(t, H.speaker) }),
|
|
4098
4098
|
/* @__PURE__ */ i("span", { className: `txline__who lane-${Z}`, style: Ae.fg ? { color: Ae.fg } : void 0, children: Ve }),
|
|
4099
|
-
Ae.hasVoice && /* @__PURE__ */ i(
|
|
4099
|
+
Ae.hasVoice && /* @__PURE__ */ i(Ii, { color: Ae.fg ?? `var(--lane-${Z})` })
|
|
4100
4100
|
] }),
|
|
4101
|
-
y && /* @__PURE__ */ i("span", { title: "Playing", style: { flex: "none", display: "inline-flex", alignItems: "center" }, children: /* @__PURE__ */ i(de, { d: q.headphones, size: w ? 15 : 14, sw: 1.6, stroke:
|
|
4102
|
-
V &&
|
|
4103
|
-
je && /* @__PURE__ */ i(
|
|
4101
|
+
y && /* @__PURE__ */ i("span", { title: "Playing", style: { flex: "none", display: "inline-flex", alignItems: "center" }, children: /* @__PURE__ */ i(de, { d: q.headphones, size: w ? 15 : 14, sw: 1.6, stroke: g && H.speaker >= 0 ? Ae.fg ?? `var(--lane-${Z})` : "var(--ink-45)" }) }),
|
|
4102
|
+
V && h && /* @__PURE__ */ i(nl, { f: V, desk: w, onOpen: a ? () => a(H, !0) : void 0 }),
|
|
4103
|
+
je && /* @__PURE__ */ i(sl, { alone: !0, onOpen: () => a == null ? void 0 : a(H, !1) })
|
|
4104
4104
|
] }),
|
|
4105
|
-
/* @__PURE__ */ i("div", { className: "txline__text", children:
|
|
4106
|
-
const xe = `${ke.seq}:${ke.idx}`, Ce =
|
|
4105
|
+
/* @__PURE__ */ i("div", { className: "txline__text", children: ge.map((ke, We) => {
|
|
4106
|
+
const xe = `${ke.seq}:${ke.idx}`, Ce = Lo(ke.prob), _ = R && K, U = _ && (E ? $ >= ke.start && ($ < ke.end || We === ge.length - 1 || $ < ge[We + 1].start) : We === Me), W = _ && !U && (E ? ke.start > $ : Me != null && We > Me), ee = !se && !p && (!!(s != null && s.has(xe)) || !!ke.script), fe = !se && !p && u && !!Ce && !ee, Ne = fe ? Ce === "low" ? "var(--conf-low-half)" : "var(--conf-mid-half)" : null, ze = ee ? "var(--brand)" : W ? "var(--ink-40)" : Ne ?? "var(--ink-96)";
|
|
4107
4107
|
return /* @__PURE__ */ f("span", { children: [
|
|
4108
4108
|
/* @__PURE__ */ i(
|
|
4109
4109
|
"span",
|
|
@@ -4164,18 +4164,18 @@ function Jl(t, e, n, s, r) {
|
|
|
4164
4164
|
}, [e, d]), Y(() => {
|
|
4165
4165
|
const u = t.current;
|
|
4166
4166
|
if (!u) return;
|
|
4167
|
-
let
|
|
4167
|
+
let h = u.scrollTop, M = 0, N = 0;
|
|
4168
4168
|
const m = () => {
|
|
4169
4169
|
N = Date.now() + 1500;
|
|
4170
4170
|
}, w = (p) => {
|
|
4171
4171
|
p.buttons && m();
|
|
4172
4172
|
}, v = () => {
|
|
4173
|
-
const p = u.scrollTop,
|
|
4174
|
-
if (
|
|
4173
|
+
const p = u.scrollTop, g = p - h;
|
|
4174
|
+
if (h = p, Date.now() > N) {
|
|
4175
4175
|
M = 0;
|
|
4176
4176
|
return;
|
|
4177
4177
|
}
|
|
4178
|
-
M =
|
|
4178
|
+
M = g < 0 == M < 0 ? M + g : g, M < -14 && !a.current ? (M = 0, r(!0)) : M > 56 && a.current && !o.current.trim() && (M = 0, r(!1));
|
|
4179
4179
|
};
|
|
4180
4180
|
return u.addEventListener("wheel", m, { passive: !0 }), u.addEventListener("touchmove", m, { passive: !0 }), u.addEventListener("pointermove", w), u.addEventListener("scroll", v, { passive: !0 }), () => {
|
|
4181
4181
|
u.removeEventListener("wheel", m), u.removeEventListener("touchmove", m), u.removeEventListener("pointermove", w), u.removeEventListener("scroll", v);
|
|
@@ -4183,7 +4183,7 @@ function Jl(t, e, n, s, r) {
|
|
|
4183
4183
|
}, []), l;
|
|
4184
4184
|
}
|
|
4185
4185
|
const Jt = { formatBits: 0, perBlock: [-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28], blocks: [-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49] };
|
|
4186
|
-
function
|
|
4186
|
+
function xi(t) {
|
|
4187
4187
|
let e = (16 * t + 128) * t + 64;
|
|
4188
4188
|
if (t >= 2) {
|
|
4189
4189
|
const n = Math.floor(t / 7) + 2;
|
|
@@ -4191,7 +4191,7 @@ function bi(t) {
|
|
|
4191
4191
|
}
|
|
4192
4192
|
return e;
|
|
4193
4193
|
}
|
|
4194
|
-
const
|
|
4194
|
+
const qr = (t) => Math.floor(xi(t) / 8) - Jt.perBlock[t] * Jt.blocks[t];
|
|
4195
4195
|
function ms(t, e) {
|
|
4196
4196
|
let n = 0;
|
|
4197
4197
|
for (let s = 7; s >= 0; s--)
|
|
@@ -4227,10 +4227,10 @@ function tc(t) {
|
|
|
4227
4227
|
function nc(t) {
|
|
4228
4228
|
const e = Array.from(new TextEncoder().encode(t));
|
|
4229
4229
|
let n = 1;
|
|
4230
|
-
for (; n <= 40 && !(4 + (n <= 9 ? 8 : 16) + e.length * 8 <=
|
|
4230
|
+
for (; n <= 40 && !(4 + (n <= 9 ? 8 : 16) + e.length * 8 <= qr(n) * 8); n++)
|
|
4231
4231
|
;
|
|
4232
4232
|
if (n > 40) throw new Error("Text too long for a QR code");
|
|
4233
|
-
const s = n * 4 + 17, r =
|
|
4233
|
+
const s = n * 4 + 17, r = qr(n) * 8, a = [], o = (L, I) => {
|
|
4234
4234
|
for (let E = I - 1; E >= 0; E--) a.push(L >>> E & 1);
|
|
4235
4235
|
};
|
|
4236
4236
|
o(4, 4), o(e.length, n <= 9 ? 8 : 16);
|
|
@@ -4239,52 +4239,52 @@ function nc(t) {
|
|
|
4239
4239
|
for (let L = 236; a.length < r; L ^= 253) o(L, 8);
|
|
4240
4240
|
const l = [];
|
|
4241
4241
|
for (let L = 0; L < a.length; L += 8) l.push(a.slice(L, L + 8).reduce((I, E) => I << 1 | E, 0));
|
|
4242
|
-
const c = Jt.blocks[n], d = Jt.perBlock[n], u = Math.floor(
|
|
4242
|
+
const c = Jt.blocks[n], d = Jt.perBlock[n], u = Math.floor(xi(n) / 8), h = c - u % c, M = Math.floor(u / c), N = [], m = Xl(d);
|
|
4243
4243
|
for (let L = 0, I = 0; L < c; L++) {
|
|
4244
|
-
const E = l.slice(I, I + M - d + (L <
|
|
4244
|
+
const E = l.slice(I, I + M - d + (L < h ? 0 : 1));
|
|
4245
4245
|
I += E.length;
|
|
4246
4246
|
const oe = ec(E, m);
|
|
4247
|
-
L <
|
|
4247
|
+
L < h && E.push(0), N.push(E.concat(oe));
|
|
4248
4248
|
}
|
|
4249
4249
|
const w = [];
|
|
4250
4250
|
for (let L = 0; L < N[0].length; L++) N.forEach((I, E) => {
|
|
4251
|
-
(L !== M - d || E >=
|
|
4251
|
+
(L !== M - d || E >= h) && w.push(I[L]);
|
|
4252
4252
|
});
|
|
4253
|
-
const v = Array.from({ length: s }, () => new Array(s).fill(!1)), p = Array.from({ length: s }, () => new Array(s).fill(!1)),
|
|
4253
|
+
const v = Array.from({ length: s }, () => new Array(s).fill(!1)), p = Array.from({ length: s }, () => new Array(s).fill(!1)), g = (L, I, E) => {
|
|
4254
4254
|
v[I][L] = E, p[I][L] = !0;
|
|
4255
4255
|
};
|
|
4256
4256
|
for (let L = 0; L < s; L++)
|
|
4257
|
-
|
|
4257
|
+
g(6, L, L % 2 === 0), g(L, 6, L % 2 === 0);
|
|
4258
4258
|
const C = (L, I) => {
|
|
4259
4259
|
for (let E = -4; E <= 4; E++) for (let oe = -4; oe <= 4; oe++) {
|
|
4260
|
-
const P = Math.max(Math.abs(oe), Math.abs(E)),
|
|
4261
|
-
|
|
4260
|
+
const P = Math.max(Math.abs(oe), Math.abs(E)), b = L + oe, ue = I + E;
|
|
4261
|
+
b >= 0 && b < s && ue >= 0 && ue < s && g(b, ue, P !== 2 && P !== 4);
|
|
4262
4262
|
}
|
|
4263
4263
|
};
|
|
4264
4264
|
C(3, 3), C(s - 4, 3), C(3, s - 4);
|
|
4265
|
-
const
|
|
4266
|
-
for (let L = 0; L <
|
|
4267
|
-
if (!(L === 0 && I === 0 || L === 0 && I ===
|
|
4268
|
-
for (let E = -2; E <= 2; E++) for (let oe = -2; oe <= 2; oe++)
|
|
4265
|
+
const x = tc(n);
|
|
4266
|
+
for (let L = 0; L < x.length; L++) for (let I = 0; I < x.length; I++)
|
|
4267
|
+
if (!(L === 0 && I === 0 || L === 0 && I === x.length - 1 || L === x.length - 1 && I === 0))
|
|
4268
|
+
for (let E = -2; E <= 2; E++) for (let oe = -2; oe <= 2; oe++) g(x[L] + oe, x[I] + E, Math.max(Math.abs(oe), Math.abs(E)) !== 1);
|
|
4269
4269
|
const k = (L) => {
|
|
4270
4270
|
const I = Jt.formatBits << 3 | L;
|
|
4271
4271
|
let E = I;
|
|
4272
|
-
for (let
|
|
4273
|
-
const oe = (I << 10 | E) ^ 21522, P = (
|
|
4274
|
-
for (let
|
|
4275
|
-
|
|
4276
|
-
for (let
|
|
4277
|
-
for (let
|
|
4278
|
-
for (let
|
|
4279
|
-
|
|
4272
|
+
for (let b = 0; b < 10; b++) E = E << 1 ^ (E >>> 9) * 1335;
|
|
4273
|
+
const oe = (I << 10 | E) ^ 21522, P = (b) => (oe >>> b & 1) !== 0;
|
|
4274
|
+
for (let b = 0; b <= 5; b++) g(8, b, P(b));
|
|
4275
|
+
g(8, 7, P(6)), g(8, 8, P(7)), g(7, 8, P(8));
|
|
4276
|
+
for (let b = 9; b < 15; b++) g(14 - b, 8, P(b));
|
|
4277
|
+
for (let b = 0; b < 8; b++) g(s - 1 - b, 8, P(b));
|
|
4278
|
+
for (let b = 8; b < 15; b++) g(8, s - 15 + b, P(b));
|
|
4279
|
+
g(8, s - 8, !0);
|
|
4280
4280
|
};
|
|
4281
4281
|
if (k(0), n >= 7) {
|
|
4282
4282
|
let L = n;
|
|
4283
4283
|
for (let E = 0; E < 12; E++) L = L << 1 ^ (L >>> 11) * 7973;
|
|
4284
4284
|
const I = n << 12 | L;
|
|
4285
4285
|
for (let E = 0; E < 18; E++) {
|
|
4286
|
-
const oe = (I >>> E & 1) !== 0, P = s - 11 + E % 3,
|
|
4287
|
-
|
|
4286
|
+
const oe = (I >>> E & 1) !== 0, P = s - 11 + E % 3, b = Math.floor(E / 3);
|
|
4287
|
+
g(P, b, oe), g(b, P, oe);
|
|
4288
4288
|
}
|
|
4289
4289
|
}
|
|
4290
4290
|
let J = 0;
|
|
@@ -4336,10 +4336,10 @@ function nc(t) {
|
|
|
4336
4336
|
const ie = v[B][F];
|
|
4337
4337
|
ie === v[B][F + 1] && ie === v[B + 1][F] && ie === v[B + 1][F + 1] && (L += 3);
|
|
4338
4338
|
}
|
|
4339
|
-
let
|
|
4340
|
-
for (const B of v) for (const F of B) F &&
|
|
4339
|
+
let b = 0;
|
|
4340
|
+
for (const B of v) for (const F of B) F && b++;
|
|
4341
4341
|
const ue = s * s;
|
|
4342
|
-
return L += (Math.ceil(Math.abs(
|
|
4342
|
+
return L += (Math.ceil(Math.abs(b * 20 - ue * 10) / ue) - 1) * 10, L;
|
|
4343
4343
|
};
|
|
4344
4344
|
let S = 0, $ = 1 / 0;
|
|
4345
4345
|
for (let L = 0; L < 8; L++) {
|
|
@@ -4356,16 +4356,16 @@ function sc(t) {
|
|
|
4356
4356
|
const a = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="${-s} ${-s} ${n + s * 2} ${n + s * 2}" shape-rendering="crispEdges"><rect x="${-s}" y="${-s}" width="${n + s * 2}" height="${n + s * 2}" fill="#fff"/><path fill="#111" d="${r}"/></svg>`;
|
|
4357
4357
|
return `data:image/svg+xml,${encodeURIComponent(a)}`;
|
|
4358
4358
|
}
|
|
4359
|
-
const
|
|
4359
|
+
const Di = "M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15", rc = "M9 9V4.5M9 9H4.5M9 9 3.75 3.75M9 15v4.5M9 15H4.5M9 15l-5.25 5.25M15 9h4.5M15 9V4.5M15 9l5.25-5.25M15 15h4.5M15 15v4.5m0-4.5 5.25 5.25";
|
|
4360
4360
|
function rs() {
|
|
4361
4361
|
const t = document;
|
|
4362
4362
|
return t.fullscreenElement ?? t.webkitFullscreenElement ?? null;
|
|
4363
4363
|
}
|
|
4364
4364
|
let xs = null;
|
|
4365
|
-
function
|
|
4365
|
+
function Kr(t) {
|
|
4366
4366
|
xs = t;
|
|
4367
4367
|
}
|
|
4368
|
-
function
|
|
4368
|
+
function Jr() {
|
|
4369
4369
|
const t = document;
|
|
4370
4370
|
return !!(t.fullscreenEnabled || t.webkitFullscreenEnabled);
|
|
4371
4371
|
}
|
|
@@ -4496,7 +4496,7 @@ function Ts({ t, mini: e }) {
|
|
|
4496
4496
|
disabled: !t.playable,
|
|
4497
4497
|
style: { background: t.playable ? t.playing ? "rgba(238,240,248,.92)" : "var(--brand)" : "rgba(5,6,21,.42)", color: t.playable ? t.playing ? "#131326" : "var(--brand-ink)" : "rgba(234,236,250,.5)", cursor: t.playable ? "pointer" : "default" },
|
|
4498
4498
|
onClick: t.onPlay,
|
|
4499
|
-
children: t.busy ? /* @__PURE__ */ i("span", { className: "gfull__spin", "aria-hidden": "true" }) : t.playing ? /* @__PURE__ */ i(
|
|
4499
|
+
children: t.busy ? /* @__PURE__ */ i("span", { className: "gfull__spin", "aria-hidden": "true" }) : t.playing ? /* @__PURE__ */ i(ja, { size: e ? 14 : 18 }) : /* @__PURE__ */ i(ri, { size: e ? 15 : 19 })
|
|
4500
4500
|
}
|
|
4501
4501
|
),
|
|
4502
4502
|
/* @__PURE__ */ i("button", { type: "button", className: "gfull__step", "aria-label": "Next line", title: "Next line", style: { opacity: t.nextOn ? 1 : 0.3 }, onClick: t.onNext, children: /* @__PURE__ */ i(de, { d: q.chevronRight, size: e ? 13 : 16, sw: e ? 1.8 : 1.9 }) })
|
|
@@ -4504,7 +4504,7 @@ function Ts({ t, mini: e }) {
|
|
|
4504
4504
|
}
|
|
4505
4505
|
function ws({ live: t, mini: e, desk: n, pct: s, mark: r }) {
|
|
4506
4506
|
return /* @__PURE__ */ f("div", { className: `gfull__brand${r ? " gfull__brand--mark" : ""}`, children: [
|
|
4507
|
-
/* @__PURE__ */ i("a", { href:
|
|
4507
|
+
/* @__PURE__ */ i("a", { href: si, target: "_blank", rel: "noopener", style: { display: "block", lineHeight: 0 }, "aria-label": "VocalStack", title: "VocalStack", children: r ? /* @__PURE__ */ i(ii, { dark: !0, size: 22 }) : /* @__PURE__ */ i(vn, { dark: !0, link: !1, height: e ? 11 : n ? 18 : 15 }) }),
|
|
4508
4508
|
t && /* @__PURE__ */ f("span", { className: "gfull__live", children: [
|
|
4509
4509
|
/* @__PURE__ */ i("i", {}),
|
|
4510
4510
|
"LIVE"
|
|
@@ -4512,7 +4512,7 @@ function ws({ live: t, mini: e, desk: n, pct: s, mark: r }) {
|
|
|
4512
4512
|
s != null && /* @__PURE__ */ i("span", { className: "gfull__txpct", title: "Still being transcribed: it plays as far as it is written", children: `TRANSCRIBING ${s}%` })
|
|
4513
4513
|
] });
|
|
4514
4514
|
}
|
|
4515
|
-
function
|
|
4515
|
+
function Si({ v: t, size: e }) {
|
|
4516
4516
|
return /* @__PURE__ */ i("button", { type: "button", className: "gfull__btn", "aria-label": "Voices", title: t.title, disabled: !t.on, style: { opacity: t.on ? 1 : 0.45, cursor: t.on ? "pointer" : "default" }, onClick: t.on ? t.onClick : void 0, children: /* @__PURE__ */ i(de, { d: q.headphones, size: e, sw: 1.6 }) });
|
|
4517
4517
|
}
|
|
4518
4518
|
function oc({ pos: t, transport: e, chip: n, voices: s, onShare: r, onFull: a, copied: o }) {
|
|
@@ -4525,18 +4525,18 @@ function oc({ pos: t, transport: e, chip: n, voices: s, onShare: r, onFull: a, c
|
|
|
4525
4525
|
/* @__PURE__ */ i(Ts, { t: e, mini: !0 }),
|
|
4526
4526
|
/* @__PURE__ */ i("span", { style: { flex: 1 } }),
|
|
4527
4527
|
/* @__PURE__ */ i("div", { className: "gfull__chip", children: n }),
|
|
4528
|
-
/* @__PURE__ */ i(
|
|
4528
|
+
/* @__PURE__ */ i(Si, { v: s, size: 14 }),
|
|
4529
4529
|
r && /* @__PURE__ */ i("button", { type: "button", className: "gfull__btn", "aria-label": "Share", title: "Share", onClick: (l) => {
|
|
4530
4530
|
l.stopPropagation(), r();
|
|
4531
4531
|
}, children: /* @__PURE__ */ i(de, { d: q.share, size: 13, sw: 1.8 }) }),
|
|
4532
|
-
/* @__PURE__ */ i("button", { type: "button", className: "gfull__btn", "aria-label": "Full screen", title: "Full screen", onClick: a, children: /* @__PURE__ */ i(de, { d:
|
|
4532
|
+
/* @__PURE__ */ i("button", { type: "button", className: "gfull__btn", "aria-label": "Full screen", title: "Full screen", onClick: a, children: /* @__PURE__ */ i(de, { d: Di, size: 14, sw: 1.8 }) })
|
|
4533
4533
|
] })
|
|
4534
4534
|
] }),
|
|
4535
4535
|
o
|
|
4536
4536
|
] });
|
|
4537
4537
|
}
|
|
4538
4538
|
const lc = { color: "rgba(255,255,255,.4)" };
|
|
4539
|
-
function
|
|
4539
|
+
function Ai({ noFull: t = !1, page: e = !0, picture: n, title: s, desk: r, pos: a, sub: o, wait: l, pct: c, mute: d, cc: u, ad: h, chip: M, transport: N, picker: m, sheet: w, voices: v, voicesBtn: p, sheetOpen: g, onShare: C, onSettings: x, paused: k, copied: J, onTouch: A, onClose: K }) {
|
|
4540
4540
|
const [j, S] = O(() => !!rs());
|
|
4541
4541
|
Y(() => {
|
|
4542
4542
|
const Z = () => S(!!rs());
|
|
@@ -4548,18 +4548,18 @@ function Si({ noFull: t = !1, page: e = !0, picture: n, title: s, desk: r, pos:
|
|
|
4548
4548
|
$.current = K;
|
|
4549
4549
|
const L = z(N.playable ? N.onPlay : void 0);
|
|
4550
4550
|
L.current = N.playable ? N.onPlay : void 0;
|
|
4551
|
-
const [I, E] = O(!1), [oe, P] = O(0),
|
|
4551
|
+
const [I, E] = O(!1), [oe, P] = O(0), b = z(!1);
|
|
4552
4552
|
Y(() => () => Tn(!1), []), Y(() => {
|
|
4553
4553
|
if (!e) return;
|
|
4554
4554
|
const Z = [document.documentElement, document.body], se = Z.map((ce) => ce.style.background);
|
|
4555
4555
|
Z.forEach((ce) => {
|
|
4556
4556
|
ce.style.background = "#050507";
|
|
4557
4557
|
});
|
|
4558
|
-
const
|
|
4559
|
-
return
|
|
4558
|
+
const ge = document.querySelector('meta[name="theme-color"]'), Me = ge == null ? void 0 : ge.content;
|
|
4559
|
+
return ge && (ge.content = "#050507"), () => {
|
|
4560
4560
|
Z.forEach((ce, ke) => {
|
|
4561
4561
|
ce.style.background = se[ke];
|
|
4562
|
-
}),
|
|
4562
|
+
}), ge && Me && (ge.content = Me);
|
|
4563
4563
|
};
|
|
4564
4564
|
}, []);
|
|
4565
4565
|
const ue = Ie(() => e && ic(), [e]), [B, F] = O(ue);
|
|
@@ -4572,56 +4572,56 @@ function Si({ noFull: t = !1, page: e = !0, picture: n, title: s, desk: r, pos:
|
|
|
4572
4572
|
}), () => Z.forEach((ce, ke) => {
|
|
4573
4573
|
ce.style.overflow = se[ke][0], ce.style.overscrollBehavior = se[ke][1];
|
|
4574
4574
|
});
|
|
4575
|
-
const
|
|
4576
|
-
|
|
4575
|
+
const ge = document.createElement("div");
|
|
4576
|
+
ge.setAttribute("aria-hidden", "true"), ge.style.cssText = "position:absolute;top:0;left:0;width:1px;height:calc(100lvh + 160px);pointer-events:none", document.body.appendChild(ge), document.documentElement.style.overscrollBehavior = "none";
|
|
4577
4577
|
const Me = () => {
|
|
4578
4578
|
window.scrollY > 24 && F(!1);
|
|
4579
4579
|
};
|
|
4580
4580
|
return window.addEventListener("scroll", Me, { passive: !0 }), () => {
|
|
4581
|
-
window.removeEventListener("scroll", Me),
|
|
4581
|
+
window.removeEventListener("scroll", Me), ge.remove(), document.documentElement.style.overscrollBehavior = se[0][1], window.scrollTo(0, 0);
|
|
4582
4582
|
};
|
|
4583
4583
|
}, [ue, e]);
|
|
4584
|
-
const ie = z(
|
|
4585
|
-
ie.current =
|
|
4584
|
+
const ie = z(g);
|
|
4585
|
+
ie.current = g, Y(() => {
|
|
4586
4586
|
const Z = (Me) => Me instanceof HTMLElement && (Me.isContentEditable || /^(INPUT|TEXTAREA|SELECT)$/.test(Me.tagName)), se = (Me) => {
|
|
4587
4587
|
var ce;
|
|
4588
|
-
Me.key === "Escape" && !ie.current && $.current && (Me.stopPropagation(), $.current()), Me.key === " " && !ie.current && !Z(Me.target) && (Me.preventDefault(), Me.stopPropagation(), Me.repeat || (ce = L.current) == null || ce.call(L)), (Me.key === "f" || Me.key === "F") && !Me.metaKey && !Me.ctrlKey && !Me.altKey && !ie.current && !Z(Me.target) &&
|
|
4589
|
-
},
|
|
4588
|
+
Me.key === "Escape" && !ie.current && $.current && (Me.stopPropagation(), $.current()), Me.key === " " && !ie.current && !Z(Me.target) && (Me.preventDefault(), Me.stopPropagation(), Me.repeat || (ce = L.current) == null || ce.call(L)), (Me.key === "f" || Me.key === "F") && !Me.metaKey && !Me.ctrlKey && !Me.altKey && !ie.current && !Z(Me.target) && Jr() && (Me.preventDefault(), Me.repeat || Tn(!rs()));
|
|
4589
|
+
}, ge = (Me) => {
|
|
4590
4590
|
Me.key === " " && !ie.current && !Z(Me.target) && Me.preventDefault();
|
|
4591
4591
|
};
|
|
4592
|
-
return window.addEventListener("keydown", se, !0), window.addEventListener("keyup",
|
|
4593
|
-
window.removeEventListener("keydown", se, !0), window.removeEventListener("keyup",
|
|
4592
|
+
return window.addEventListener("keydown", se, !0), window.addEventListener("keyup", ge, !0), () => {
|
|
4593
|
+
window.removeEventListener("keydown", se, !0), window.removeEventListener("keyup", ge, !0);
|
|
4594
4594
|
};
|
|
4595
4595
|
}, []);
|
|
4596
4596
|
const re = ac("(orientation: landscape) and (max-height: 540px)"), le = z(null), [ve, Le] = O(null);
|
|
4597
4597
|
Qt(() => {
|
|
4598
4598
|
const Z = le.current;
|
|
4599
4599
|
if (!Z || (Le(Z.getBoundingClientRect().width), typeof ResizeObserver > "u")) return;
|
|
4600
|
-
const se = new ResizeObserver(([
|
|
4600
|
+
const se = new ResizeObserver(([ge]) => Le(ge.contentRect.width));
|
|
4601
4601
|
return se.observe(Z), () => se.disconnect();
|
|
4602
4602
|
}, []);
|
|
4603
4603
|
const Te = r && !re && (ve == null || ve >= 880);
|
|
4604
4604
|
Y(() => {
|
|
4605
|
-
if (E(!1), !N.playing ||
|
|
4605
|
+
if (E(!1), !N.playing || g) return;
|
|
4606
4606
|
const Z = setTimeout(() => E(!0), 3e3);
|
|
4607
4607
|
return () => clearTimeout(Z);
|
|
4608
|
-
}, [N.playing,
|
|
4608
|
+
}, [N.playing, g, oe]);
|
|
4609
4609
|
const we = z(I);
|
|
4610
4610
|
we.current = I;
|
|
4611
4611
|
const Ee = z(0), Be = (Z) => {
|
|
4612
4612
|
if (Z.pointerType !== "mouse") return;
|
|
4613
4613
|
const se = Date.now();
|
|
4614
|
-
!we.current && se - Ee.current < 1e3 || (Ee.current = se, P((
|
|
4614
|
+
!we.current && se - Ee.current < 1e3 || (Ee.current = se, P((ge) => ge + 1));
|
|
4615
4615
|
}, Oe = !Te && re, ye = z(null), te = o ? o.words.map((Z) => Z.dim ? 0 : 1).join("") + o.words.length + ":" + (o.cursor ?? "") : "";
|
|
4616
4616
|
Qt(() => {
|
|
4617
4617
|
const Z = ye.current;
|
|
4618
4618
|
if (!Z) return;
|
|
4619
|
-
const se = !!(o != null && o.words.some((U) => U.dim)) || (o == null ? void 0 : o.cursor) != null,
|
|
4619
|
+
const se = !!(o != null && o.words.some((U) => U.dim)) || (o == null ? void 0 : o.cursor) != null, ge = Z.querySelectorAll((o == null ? void 0 : o.cursor) != null && !o.words.some((U) => U.dim) ? "[data-at]" : "[data-said]"), Me = parseFloat(getComputedStyle(Z).lineHeight) || 24, ce = Math.round(Z.scrollHeight / Me) - Math.round(Z.clientHeight / Me), ke = Math.max(0, ce) * Me;
|
|
4620
4620
|
if (ke <= 0) {
|
|
4621
4621
|
Z.scrollTop && Z.scrollTo({ top: 0 });
|
|
4622
4622
|
return;
|
|
4623
4623
|
}
|
|
4624
|
-
const We = (U) => Math.round((U.getBoundingClientRect().top - Z.getBoundingClientRect().top + Z.scrollTop) / Me), xe = Math.max(1, Math.round(Z.clientHeight / Me)), Ce = se ?
|
|
4624
|
+
const We = (U) => Math.round((U.getBoundingClientRect().top - Z.getBoundingClientRect().top + Z.scrollTop) / Me), xe = Math.max(1, Math.round(Z.clientHeight / Me)), Ce = se ? ge.length ? Math.floor(We(ge[ge.length - 1]) / xe) * xe * Me : 0 : ke, _ = Math.max(0, Math.min(ke, Ce));
|
|
4625
4625
|
Math.abs(_ - Z.scrollTop) > 1 && (Z.scrollTop = _);
|
|
4626
4626
|
}, [te, Oe]);
|
|
4627
4627
|
const [H, X] = O(!0), [y, R] = O(!1), ae = z(void 0);
|
|
@@ -4653,31 +4653,31 @@ function Si({ noFull: t = !1, page: e = !0, picture: n, title: s, desk: r, pos:
|
|
|
4653
4653
|
] })
|
|
4654
4654
|
] })
|
|
4655
4655
|
] })
|
|
4656
|
-
] }), je = (Z, se,
|
|
4657
|
-
p && /* @__PURE__ */ i(
|
|
4656
|
+
] }), je = (Z, se, ge, Me, ce, ke = 0) => /* @__PURE__ */ i("button", { type: "button", className: "gfull__btn", title: Z, "aria-label": Z, onClick: Me, children: /* @__PURE__ */ i(de, { d: se, size: (Te ? 20 : 18) + ke, sw: ge, style: ce }) }), Ve = /* @__PURE__ */ f("div", { className: "gfull__acts", children: [
|
|
4657
|
+
p && /* @__PURE__ */ i(Si, { v: p, size: Te ? 20 : 18 }),
|
|
4658
4658
|
C && je("Share", q.share, 1.6, C),
|
|
4659
|
-
|
|
4659
|
+
Jr() && !t && je(j ? "Exit full screen" : "Full screen", j ? rc : Di, 1.7, () => Tn(!j)),
|
|
4660
4660
|
K && je("Close player", q.close, 1.7, K)
|
|
4661
|
-
] }), Ae = (d || u ||
|
|
4661
|
+
] }), Ae = (d || u || x) && /* @__PURE__ */ f("div", { className: "gfull__top", children: [
|
|
4662
4662
|
d && je(d.muted ? "Unmute" : "Mute", d.muted ? q.volumeOff : q.volume, 1.6, d.onToggle),
|
|
4663
4663
|
u && je(u.on ? "Hide subtitles" : "Show subtitles", u.on ? q.cc : q.ccOff, 1.7, u.onToggle, void 0, 4),
|
|
4664
|
-
|
|
4664
|
+
x && je("Settings", q.cog, 1.6, x)
|
|
4665
4665
|
] });
|
|
4666
4666
|
return /* @__PURE__ */ f(
|
|
4667
4667
|
"div",
|
|
4668
4668
|
{
|
|
4669
4669
|
ref: le,
|
|
4670
|
-
className: `gfull${Te ? " gfull--desk" : ""}${ue ? " gfull--swipe" : ""}${
|
|
4670
|
+
className: `gfull${Te ? " gfull--desk" : ""}${ue ? " gfull--swipe" : ""}${h ? " gfull--ad" : ""}${I ? " gfull--calm" : ""}`,
|
|
4671
4671
|
"data-theme": "dark",
|
|
4672
4672
|
role: "dialog",
|
|
4673
4673
|
"aria-label": s,
|
|
4674
4674
|
onPointerMove: Be,
|
|
4675
4675
|
onPointerDownCapture: (Z) => {
|
|
4676
|
-
var se,
|
|
4677
|
-
I && (
|
|
4676
|
+
var se, ge;
|
|
4677
|
+
I && (b.current = !0), P((Me) => Me + 1), (ge = (se = Z.target).closest) != null && ge.call(se, '[aria-label="Exit full screen"], [aria-label="Full screen"], [aria-label="Close player"]') || A();
|
|
4678
4678
|
},
|
|
4679
4679
|
onClickCapture: (Z) => {
|
|
4680
|
-
|
|
4680
|
+
b.current && (b.current = !1, Z.stopPropagation(), Z.preventDefault());
|
|
4681
4681
|
},
|
|
4682
4682
|
children: [
|
|
4683
4683
|
ue && B && /* @__PURE__ */ f("div", { className: "gfull__swipe", "aria-live": "polite", children: [
|
|
@@ -4687,7 +4687,7 @@ function Si({ noFull: t = !1, page: e = !0, picture: n, title: s, desk: r, pos:
|
|
|
4687
4687
|
/* @__PURE__ */ f("div", { className: `gfull__frame${Oe ? " gfull__frame--land" : ""}`, children: [
|
|
4688
4688
|
n,
|
|
4689
4689
|
/* @__PURE__ */ i("div", { className: "gfull__shade", "aria-hidden": "true" }),
|
|
4690
|
-
k && !
|
|
4690
|
+
k && !h && /* @__PURE__ */ f("div", { className: `gfull__pausedinfo${N.playing ? "" : " gfull__pausedinfo--on"}`, "aria-hidden": N.playing, children: [
|
|
4691
4691
|
/* @__PURE__ */ f("div", { className: "gfull__pausedtext", children: [
|
|
4692
4692
|
/* @__PURE__ */ i("div", { className: "gfull__pausedtitle", children: k.title }),
|
|
4693
4693
|
k.summary && /* @__PURE__ */ i("div", { className: "gfull__pausedsum", children: k.summary })
|
|
@@ -4753,7 +4753,7 @@ function Si({ noFull: t = !1, page: e = !0, picture: n, title: s, desk: r, pos:
|
|
|
4753
4753
|
function cc({ dark: t, back: e, home: n, live: s, title: r, badge: a, subline: o, onOptions: l, optionsActive: c }) {
|
|
4754
4754
|
return /* @__PURE__ */ f("div", { className: "ghead", children: [
|
|
4755
4755
|
e && /* @__PURE__ */ i("button", { type: "button", className: "ghead__back", "aria-label": "Back", title: "Back", onClick: e, children: /* @__PURE__ */ i(de, { d: q.chevronLeft, size: 19, sw: 1.7 }) }),
|
|
4756
|
-
s && /* @__PURE__ */ i("span", { className: "mark", children: /* @__PURE__ */ i(
|
|
4756
|
+
s && /* @__PURE__ */ i("span", { className: "mark", children: /* @__PURE__ */ i(ii, { dark: t, size: 30 }) }),
|
|
4757
4757
|
/* @__PURE__ */ i("div", { style: { flex: 1, minWidth: 0, display: "flex" }, children: n ? /* @__PURE__ */ i("div", { className: "ghead__logo", children: /* @__PURE__ */ i(vn, { dark: t, height: 22 }) }) : /* @__PURE__ */ f("div", { className: "ghead__title", onClick: e, title: e ? "Back" : void 0, style: { cursor: e ? "pointer" : "default" }, children: [
|
|
4758
4758
|
/* @__PURE__ */ f("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
4759
4759
|
/* @__PURE__ */ i("span", { className: "ghead__name", children: r }),
|
|
@@ -4761,7 +4761,7 @@ function cc({ dark: t, back: e, home: n, live: s, title: r, badge: a, subline: o
|
|
|
4761
4761
|
] }),
|
|
4762
4762
|
o && /* @__PURE__ */ i("div", { className: "ghead__sub", children: o })
|
|
4763
4763
|
] }) }),
|
|
4764
|
-
/* @__PURE__ */ i(
|
|
4764
|
+
/* @__PURE__ */ i(za, { size: "sm", bordered: !1, variant: c ? "primary" : void 0, onClick: l, label: "Options", children: /* @__PURE__ */ f("svg", { viewBox: "0 0 24 24", width: "19", height: "19", fill: "currentColor", "aria-hidden": "true", children: [
|
|
4765
4765
|
/* @__PURE__ */ i("circle", { cx: "12", cy: "5.5", r: "1.85" }),
|
|
4766
4766
|
/* @__PURE__ */ i("circle", { cx: "12", cy: "12", r: "1.85" }),
|
|
4767
4767
|
/* @__PURE__ */ i("circle", { cx: "12", cy: "18.5", r: "1.85" })
|
|
@@ -4774,7 +4774,7 @@ function Mc(t) {
|
|
|
4774
4774
|
const e = t.langName;
|
|
4775
4775
|
return t.translateFailed === t.lang ? { kind: "translateFailed", lang: e } : t.voiceFailed ? { kind: "voiceFailed", lang: e } : t.translating ? { kind: "translating", lang: e } : t.starting != null ? { kind: "starting", lang: e, since: t.starting } : t.relang || t.slowLine ? { kind: "voice", lang: e, since: t.lineSince } : null;
|
|
4776
4776
|
}
|
|
4777
|
-
function
|
|
4777
|
+
function gc(t, e) {
|
|
4778
4778
|
const [n, s] = O(null), [r, a] = O(!1);
|
|
4779
4779
|
return Y(() => {
|
|
4780
4780
|
if (!t) {
|
|
@@ -4787,7 +4787,7 @@ function hc(t, e) {
|
|
|
4787
4787
|
return () => clearTimeout(l);
|
|
4788
4788
|
}, [t, e]), [r, n];
|
|
4789
4789
|
}
|
|
4790
|
-
const
|
|
4790
|
+
const hc = (t) => `${Math.floor(t / 60)}:${String(t % 60).padStart(2, "0")}`;
|
|
4791
4791
|
function fc({ state: t, line: e, onRetry: n, onOriginal: s }) {
|
|
4792
4792
|
const [r, a] = O(() => Date.now());
|
|
4793
4793
|
Y(() => {
|
|
@@ -4821,7 +4821,7 @@ function fc({ state: t, line: e, onRetry: n, onOriginal: s }) {
|
|
|
4821
4821
|
/* @__PURE__ */ f("div", { className: "pwait__head", children: [
|
|
4822
4822
|
l ? /* @__PURE__ */ i("div", { className: "pwait__mark", "aria-hidden": "true", children: /* @__PURE__ */ i(de, { d: q.warnCircle, size: 18, sw: 1.8 }) }) : /* @__PURE__ */ i("div", { className: "pwait__spin", "aria-hidden": "true" }),
|
|
4823
4823
|
/* @__PURE__ */ i("div", { className: "pwait__t", children: c }),
|
|
4824
|
-
!l && o != null && o >= 3 && /* @__PURE__ */ i("div", { className: "pwait__clock", "aria-label": `${o} seconds`, children:
|
|
4824
|
+
!l && o != null && o >= 3 && /* @__PURE__ */ i("div", { className: "pwait__clock", "aria-label": `${o} seconds`, children: hc(o) })
|
|
4825
4825
|
] }),
|
|
4826
4826
|
/* @__PURE__ */ i("div", { className: "pwait__note", children: d }),
|
|
4827
4827
|
!l && /* @__PURE__ */ i("div", { className: "pwait__bar", "aria-hidden": "true", children: /* @__PURE__ */ i("div", {}) }),
|
|
@@ -4839,62 +4839,62 @@ function pc() {
|
|
|
4839
4839
|
const t = new Uint8Array(24);
|
|
4840
4840
|
return crypto.getRandomValues(t), btoa(String.fromCharCode(...t)).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
4841
4841
|
}
|
|
4842
|
-
function
|
|
4842
|
+
function Ei(t, e, n) {
|
|
4843
4843
|
const s = new URL(t ?? Ds), r = pc(), a = new URL(Nc, s);
|
|
4844
4844
|
e.url && a.searchParams.set("url", e.url), e.transcription && a.searchParams.set("transcription", e.transcription), e.ask && a.searchParams.set("ask", "1"), e.connect && a.searchParams.set("connect", "1"), a.searchParams.set("origin", window.location.origin), a.searchParams.set("nonce", r);
|
|
4845
4845
|
const o = 480, l = 640, c = Math.max(0, (window.screenX ?? 0) + ((window.outerWidth ?? o) - o) / 2), d = Math.max(0, (window.screenY ?? 0) + ((window.outerHeight ?? l) - l) / 2), u = window.open(a.toString(), "vocalstack-connect", `popup=yes,width=${o},height=${l},left=${Math.round(c)},top=${Math.round(d)}`);
|
|
4846
|
-
return u ? new Promise((
|
|
4846
|
+
return u ? new Promise((h, M) => {
|
|
4847
4847
|
let N = !1;
|
|
4848
4848
|
const m = (p) => {
|
|
4849
4849
|
N || (N = !0, window.removeEventListener("message", w), clearInterval(v), p());
|
|
4850
4850
|
}, w = (p) => {
|
|
4851
4851
|
if (p.origin !== s.origin || p.source !== u) return;
|
|
4852
|
-
const
|
|
4853
|
-
if (!(!
|
|
4854
|
-
if (
|
|
4852
|
+
const g = p.data;
|
|
4853
|
+
if (!(!g || g.source !== "vocalstack" || g.nonce !== r)) {
|
|
4854
|
+
if (g.type === "vocalstack:hello") {
|
|
4855
4855
|
u.postMessage({ source: "vocalstack", type: "vocalstack:hello-ack", nonce: r }, s.origin);
|
|
4856
4856
|
return;
|
|
4857
4857
|
}
|
|
4858
|
-
if (
|
|
4859
|
-
n == null || n(
|
|
4858
|
+
if (g.type === "vocalstack:status") {
|
|
4859
|
+
n == null || n(g.status);
|
|
4860
4860
|
return;
|
|
4861
4861
|
}
|
|
4862
|
-
if (
|
|
4863
|
-
m(() =>
|
|
4862
|
+
if (g.type === "vocalstack:started" || g.type === "vocalstack:token" || g.type === "vocalstack:found") {
|
|
4863
|
+
m(() => h({ transcriptionId: String(g.transcriptionId), recordingId: String(g.recordingId), token: String(g.token), expiresAt: g.expiresAt ?? null }));
|
|
4864
4864
|
return;
|
|
4865
4865
|
}
|
|
4866
|
-
if (
|
|
4867
|
-
m(() =>
|
|
4866
|
+
if (g.type === "vocalstack:connected") {
|
|
4867
|
+
m(() => h("connected"));
|
|
4868
4868
|
return;
|
|
4869
4869
|
}
|
|
4870
|
-
if (
|
|
4871
|
-
m(() =>
|
|
4870
|
+
if (g.type === "vocalstack:declined") {
|
|
4871
|
+
m(() => h(null));
|
|
4872
4872
|
return;
|
|
4873
4873
|
}
|
|
4874
|
-
|
|
4874
|
+
g.type === "vocalstack:error" && m(() => M(new Error(typeof g.message == "string" && g.message ? g.message : "VocalStack could not start this transcription.")));
|
|
4875
4875
|
}
|
|
4876
4876
|
};
|
|
4877
4877
|
window.addEventListener("message", w);
|
|
4878
4878
|
const v = setInterval(() => {
|
|
4879
|
-
u.closed && m(() =>
|
|
4879
|
+
u.closed && m(() => h(null));
|
|
4880
4880
|
}, 500);
|
|
4881
4881
|
}) : Promise.reject(new Error("Your browser blocked the VocalStack window. Allow pop-ups for this site and try again."));
|
|
4882
4882
|
}
|
|
4883
4883
|
async function mc(t, e, n) {
|
|
4884
|
-
const s = await
|
|
4884
|
+
const s = await Ei(t, { url: e }, n);
|
|
4885
4885
|
return s === "connected" ? null : s;
|
|
4886
4886
|
}
|
|
4887
|
-
const
|
|
4887
|
+
const Yi = "vsp.connected";
|
|
4888
4888
|
function yc(t) {
|
|
4889
4889
|
try {
|
|
4890
|
-
return localStorage.getItem(
|
|
4890
|
+
return localStorage.getItem(Yi) === new URL(t ?? Ds).origin;
|
|
4891
4891
|
} catch {
|
|
4892
4892
|
return !1;
|
|
4893
4893
|
}
|
|
4894
4894
|
}
|
|
4895
4895
|
function Tc(t) {
|
|
4896
4896
|
try {
|
|
4897
|
-
localStorage.setItem(
|
|
4897
|
+
localStorage.setItem(Yi, new URL(t ?? Ds).origin);
|
|
4898
4898
|
} catch {
|
|
4899
4899
|
}
|
|
4900
4900
|
}
|
|
@@ -4907,7 +4907,7 @@ const wc = {
|
|
|
4907
4907
|
starting: "Starting the transcription…"
|
|
4908
4908
|
}, Lc = /^(https?:\/\/)?([\w-]+\.)+[a-z]{2,}(\/\S*)?$/i;
|
|
4909
4909
|
function kc({ options: t, onStarted: e, onReplay: n, onClose: s }) {
|
|
4910
|
-
const [r, a] = O(""), [o, l] = O(!1), [c, d] = O(null), [u,
|
|
4910
|
+
const [r, a] = O(""), [o, l] = O(!1), [c, d] = O(null), [u, h] = O(null);
|
|
4911
4911
|
Y(() => {
|
|
4912
4912
|
const w = (v) => {
|
|
4913
4913
|
v.key === "Escape" && s();
|
|
@@ -4918,12 +4918,12 @@ function kc({ options: t, onStarted: e, onReplay: n, onClose: s }) {
|
|
|
4918
4918
|
if (!(!N || o)) {
|
|
4919
4919
|
l(!0), d(null);
|
|
4920
4920
|
try {
|
|
4921
|
-
const w = await mc(t.appUrl, /^https?:\/\//i.test(M) ? M : `https://${M}`,
|
|
4921
|
+
const w = await mc(t.appUrl, /^https?:\/\//i.test(M) ? M : `https://${M}`, h);
|
|
4922
4922
|
w && e(w);
|
|
4923
4923
|
} catch (w) {
|
|
4924
4924
|
d(w instanceof Error ? w.message : "Something went wrong. Please try again.");
|
|
4925
4925
|
} finally {
|
|
4926
|
-
l(!1),
|
|
4926
|
+
l(!1), h(null);
|
|
4927
4927
|
}
|
|
4928
4928
|
}
|
|
4929
4929
|
};
|
|
@@ -4953,7 +4953,7 @@ function kc({ options: t, onStarted: e, onReplay: n, onClose: s }) {
|
|
|
4953
4953
|
] })
|
|
4954
4954
|
] }) });
|
|
4955
4955
|
}
|
|
4956
|
-
function
|
|
4956
|
+
function _i(t) {
|
|
4957
4957
|
const [e, n] = O(() => typeof window > "u" ? !0 : window.innerWidth >= 880);
|
|
4958
4958
|
return Y(() => {
|
|
4959
4959
|
if (t != null) return;
|
|
@@ -4963,9 +4963,9 @@ function Yi(t) {
|
|
|
4963
4963
|
}
|
|
4964
4964
|
const vc = { lang: null, subtitles: !0, speakerLabels: !1, wordHighlight: !0, translateAudio: !0, voices: "cloned", removeBackground: !1, muted: !1 };
|
|
4965
4965
|
function jc(t, e) {
|
|
4966
|
-
const n =
|
|
4966
|
+
const n = Li(), [s, r] = hi(), [a, o] = O(null), [l, c] = O("main"), d = Ns(n, t.lang), u = Ie(() => fi(n, "translation"), [n]), h = (A) => {
|
|
4967
4967
|
e({ lang: A }), r(A);
|
|
4968
|
-
}, M = vs({ open: a === "lang" || a === "settings" && l === "lang", onClose: () => a === "lang" ? o(null) : c("main"), value: t.lang, onSelect:
|
|
4968
|
+
}, M = vs({ open: a === "lang" || a === "settings" && l === "lang", onClose: () => a === "lang" ? o(null) : c("main"), value: t.lang, onSelect: h, languages: u, none: "As spoken", pinned: t.lang ? [t.lang] : [], recent: s, keepOpen: !0 }), N = () => {
|
|
4969
4969
|
o(null), c("main");
|
|
4970
4970
|
}, m = t.lang ? /* @__PURE__ */ i("span", { style: { fontSize: 19, lineHeight: 1 }, children: d.flag }) : /* @__PURE__ */ i(de, { d: q.langAuto, size: 19, sw: 1.7 }), w = /* @__PURE__ */ i("button", { type: "button", className: "gfull__btn", "aria-label": `Language: ${t.lang ? d.label : "As spoken"}`, title: t.lang ? d.label : "As spoken", onClick: (A) => {
|
|
4971
4971
|
A.stopPropagation(), c("main"), o((K) => K === "lang" ? null : "lang");
|
|
@@ -4975,24 +4975,24 @@ function jc(t, e) {
|
|
|
4975
4975
|
/* @__PURE__ */ i(de, { d: q.chevronLeft, size: 18, sw: 1.8 }),
|
|
4976
4976
|
"Back"
|
|
4977
4977
|
] })
|
|
4978
|
-
] }),
|
|
4978
|
+
] }), g = { display: "flex", flexDirection: "column", gap: 2, paddingBottom: 14 }, C = (A, K, j) => /* @__PURE__ */ f("div", { className: "srow", children: [
|
|
4979
4979
|
/* @__PURE__ */ f("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
4980
4980
|
/* @__PURE__ */ i("div", { className: "srow__t", children: A }),
|
|
4981
4981
|
/* @__PURE__ */ i("div", { className: "srow__s", children: K })
|
|
4982
4982
|
] }),
|
|
4983
4983
|
j
|
|
4984
|
-
] }),
|
|
4984
|
+
] }), x = /* @__PURE__ */ f("div", { style: { display: "flex", flexDirection: "column" }, children: [
|
|
4985
4985
|
/* @__PURE__ */ i("div", { style: { position: "sticky", top: 0, zIndex: 1, padding: "4px 14px 10px", background: "var(--vs-surface-raised)" }, children: M.search }),
|
|
4986
4986
|
M.list
|
|
4987
|
-
] }), k = l === "lang" ?
|
|
4988
|
-
C("Show subtitles", "Captions over the video", /* @__PURE__ */ i(
|
|
4989
|
-
C("Show speaker labels", "Who is speaking, before each line", /* @__PURE__ */ i(
|
|
4990
|
-
C("Highlight words", "Follow each word as it is spoken", /* @__PURE__ */ i(
|
|
4991
|
-
] }) : l === "audio" ? /* @__PURE__ */ f("div", { style:
|
|
4992
|
-
C("Translate audio", t.lang ? "Hear the translation read aloud instead of the original speech" : "Pick a language to hear the translation read aloud", /* @__PURE__ */ i(
|
|
4987
|
+
] }), k = l === "lang" ? x : l === "subs" ? /* @__PURE__ */ f("div", { style: g, children: [
|
|
4988
|
+
C("Show subtitles", "Captions over the video", /* @__PURE__ */ i(Nt, { checked: t.subtitles, onChange: (A) => e({ subtitles: A }), label: "Show subtitles" })),
|
|
4989
|
+
C("Show speaker labels", "Who is speaking, before each line", /* @__PURE__ */ i(Nt, { checked: t.speakerLabels, onChange: (A) => e({ speakerLabels: A }), label: "Show speaker labels" })),
|
|
4990
|
+
C("Highlight words", "Follow each word as it is spoken", /* @__PURE__ */ i(Nt, { checked: t.wordHighlight, onChange: (A) => e({ wordHighlight: A }), label: "Highlight words" }))
|
|
4991
|
+
] }) : l === "audio" ? /* @__PURE__ */ f("div", { style: g, children: [
|
|
4992
|
+
C("Translate audio", t.lang ? "Hear the translation read aloud instead of the original speech" : "Pick a language to hear the translation read aloud", /* @__PURE__ */ i(Nt, { checked: t.translateAudio && !!t.lang, onChange: (A) => e({ translateAudio: A }), label: "Translate audio", disabled: !t.lang })),
|
|
4993
4993
|
C("Voices", t.voices === "cloned" ? "Each speaker in their own cloned voice, where they agreed to it" : "Synthetic voices matched to each speaker", /* @__PURE__ */ i(as, { value: t.voices, onChange: (A) => e({ voices: A }), size: "sm", options: [{ value: "synthetic", label: "Synthetic" }, { value: "cloned", label: "Cloned" }] })),
|
|
4994
|
-
C(Ln, "Takes out everything that isn't speech: music, ambience and noise.", /* @__PURE__ */ i(
|
|
4995
|
-
] }) : /* @__PURE__ */ f("div", { style:
|
|
4994
|
+
C(Ln, "Takes out everything that isn't speech: music, ambience and noise.", /* @__PURE__ */ i(Nt, { checked: t.removeBackground, onChange: (A) => e({ removeBackground: A }), label: Ln }))
|
|
4995
|
+
] }) : /* @__PURE__ */ f("div", { style: g, children: [
|
|
4996
4996
|
/* @__PURE__ */ f("div", { className: "srow srow--tap", role: "button", onClick: () => c("lang"), children: [
|
|
4997
4997
|
/* @__PURE__ */ f("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
4998
4998
|
/* @__PURE__ */ i("div", { className: "srow__t", children: "Language" }),
|
|
@@ -5018,7 +5018,7 @@ function jc(t, e) {
|
|
|
5018
5018
|
v
|
|
5019
5019
|
] })
|
|
5020
5020
|
] }), J = /* @__PURE__ */ f(Pe, { children: [
|
|
5021
|
-
/* @__PURE__ */ i($t, { open: a === "lang", onClose: N, title: "LANGUAGE", kind: "picker", sticky: !0, children: /* @__PURE__ */ i(os, { children:
|
|
5021
|
+
/* @__PURE__ */ i($t, { open: a === "lang", onClose: N, title: "LANGUAGE", kind: "picker", sticky: !0, children: /* @__PURE__ */ i(os, { children: x }) }),
|
|
5022
5022
|
/* @__PURE__ */ i($t, { open: a === "settings", onClose: N, title: { main: "SETTINGS", lang: "LANGUAGE", subs: "SUBTITLES", audio: "AUDIO" }[l], titleNode: l === "main" ? void 0 : p, kind: l === "main" ? "settings" : "settings vs-sheet--page", sticky: !0, children: /* @__PURE__ */ i(os, { children: k }) })
|
|
5023
5023
|
] });
|
|
5024
5024
|
return {
|
|
@@ -5030,7 +5030,7 @@ function jc(t, e) {
|
|
|
5030
5030
|
}
|
|
5031
5031
|
};
|
|
5032
5032
|
}
|
|
5033
|
-
const
|
|
5033
|
+
const Ui = {
|
|
5034
5034
|
"signing-in": "Sign in to VocalStack in the window that opened…",
|
|
5035
5035
|
consent: "Confirm in the VocalStack window…",
|
|
5036
5036
|
looking: "Looking for your transcription of this video…",
|
|
@@ -5051,7 +5051,7 @@ function Ic(t, e) {
|
|
|
5051
5051
|
s(!0), l(null);
|
|
5052
5052
|
let m;
|
|
5053
5053
|
try {
|
|
5054
|
-
m =
|
|
5054
|
+
m = Ei(t, N, a);
|
|
5055
5055
|
} catch (w) {
|
|
5056
5056
|
m = Promise.reject(w);
|
|
5057
5057
|
}
|
|
@@ -5060,8 +5060,8 @@ function Ic(t, e) {
|
|
|
5060
5060
|
}).catch((w) => l(w instanceof Error ? w.message : "Something went wrong. Please try again.")).finally(() => {
|
|
5061
5061
|
s(!1), a(null);
|
|
5062
5062
|
});
|
|
5063
|
-
}, [t, n, e]),
|
|
5064
|
-
return { busy: n, status: r, err: o, connected: c, connect:
|
|
5063
|
+
}, [t, n, e]), h = qe(() => u({ connect: !0 }), [u]), M = qe((N, m) => u({ url: N, ask: m }), [u]);
|
|
5064
|
+
return { busy: n, status: r, err: o, connected: c, connect: h, start: M };
|
|
5065
5065
|
}
|
|
5066
5066
|
function Oc(t) {
|
|
5067
5067
|
return /\.(mp4|webm|mov|m4v|ogv|mkv)(\?|#|$)/i.test(t);
|
|
@@ -5073,12 +5073,12 @@ function Cc({ poster: t, src: e }) {
|
|
|
5073
5073
|
const bc = { live: !1, atEdge: !1, edgeFrac: null, pct: 0, atLabel: "0:00", labelAt: () => "0:00", endLabel: "0:00", onSeek: () => {
|
|
5074
5074
|
} };
|
|
5075
5075
|
function Ls({ idle: t, poster: e, src: n, title: s, page: r, onAct: a, children: o }) {
|
|
5076
|
-
const l = jc(t.prefs, t.set), c =
|
|
5076
|
+
const l = jc(t.prefs, t.set), c = _i(), d = z(null), [u, h] = O(!1);
|
|
5077
5077
|
Qt(() => {
|
|
5078
5078
|
var v;
|
|
5079
5079
|
const N = (v = d.current) == null ? void 0 : v.parentElement;
|
|
5080
5080
|
if (!N) return;
|
|
5081
|
-
const m = () =>
|
|
5081
|
+
const m = () => h(N.getBoundingClientRect().width < 560);
|
|
5082
5082
|
if (m(), typeof ResizeObserver > "u") return;
|
|
5083
5083
|
const w = new ResizeObserver(m);
|
|
5084
5084
|
return w.observe(N), () => w.disconnect();
|
|
@@ -5087,25 +5087,25 @@ function Ls({ idle: t, poster: e, src: n, title: s, page: r, onAct: a, children:
|
|
|
5087
5087
|
}, onNext: () => {
|
|
5088
5088
|
}, playing: !1, playable: !0, playTitle: "Connect to play", onPlay: a };
|
|
5089
5089
|
return /* @__PURE__ */ f("div", { ref: d, className: `vsp-idleroot${u ? " vsp-idleroot--small" : ""}`, children: [
|
|
5090
|
-
/* @__PURE__ */ i(
|
|
5090
|
+
/* @__PURE__ */ i(Ai, { page: r, picture: /* @__PURE__ */ i(Cc, { poster: e, src: n }), title: s, desk: c, pos: bc, sub: null, mute: { muted: t.prefs.muted, onToggle: () => t.set({ muted: !t.prefs.muted }) }, cc: { on: t.prefs.subtitles, onToggle: () => t.set({ subtitles: !t.prefs.subtitles }) }, chip: l.chip, transport: M, picker: l.sheets, sheet: null, voices: null, voicesBtn: null, sheetOpen: l.sheetOpen, onSettings: l.openSettings, onShare: () => bs(t.shareUrl ?? window.location.href, s), copied: null, onTouch: () => {
|
|
5091
5091
|
} }),
|
|
5092
5092
|
!l.sheetOpen && /* @__PURE__ */ i("div", { className: "vsp-idle", "data-theme": "dark", children: /* @__PURE__ */ i("div", { className: "vsp-idle__box", children: o }) })
|
|
5093
5093
|
] });
|
|
5094
5094
|
}
|
|
5095
|
-
function
|
|
5095
|
+
function Ri({ connect: t, onClick: e, label: n }) {
|
|
5096
5096
|
return /* @__PURE__ */ f(Pe, { children: [
|
|
5097
5097
|
/* @__PURE__ */ f("button", { type: "button", className: "vsp-idle__connect", onClick: e, disabled: t.busy, children: [
|
|
5098
5098
|
t.busy ? /* @__PURE__ */ i(ct, { size: 18, color: "#050507", track: "rgba(5,5,7,.2)" }) : /* @__PURE__ */ i(de, { d: q.link, size: 18, sw: 1.8 }),
|
|
5099
5099
|
/* @__PURE__ */ i("span", { children: t.busy ? "Waiting for VocalStack…" : n })
|
|
5100
5100
|
] }),
|
|
5101
|
-
t.busy && /* @__PURE__ */ i("div", { className: "vsp-idle__note", role: "status", children:
|
|
5101
|
+
t.busy && /* @__PURE__ */ i("div", { className: "vsp-idle__note", role: "status", children: Ui[t.status ?? "checking"] }),
|
|
5102
5102
|
t.err && /* @__PURE__ */ i("div", { className: "vsp-end__err", role: "alert", children: t.err })
|
|
5103
5103
|
] });
|
|
5104
5104
|
}
|
|
5105
5105
|
function xc({ idle: t, src: e, ask: n, connect: s, page: r, poster: a = null, onClear: o }) {
|
|
5106
5106
|
const l = () => s.start(e, n);
|
|
5107
5107
|
return /* @__PURE__ */ f(Ls, { idle: t, poster: a, src: e, title: is(e), page: r, onAct: l, children: [
|
|
5108
|
-
/* @__PURE__ */ i(
|
|
5108
|
+
/* @__PURE__ */ i(Ri, { connect: s, onClick: l, label: s.connected ? "Play with VocalStack" : "Connect to VocalStack" }),
|
|
5109
5109
|
!s.busy && /* @__PURE__ */ i("div", { className: "vsp-idle__note", children: s.connected ? `Plays ${is(e)} with subtitles and spoken translations.` : `Connect to play ${is(e)} with subtitles and spoken translations.` }),
|
|
5110
5110
|
o && !s.busy && /* @__PURE__ */ i("button", { type: "button", className: "vsp-idle__other", onClick: o, children: "Choose another video" })
|
|
5111
5111
|
] });
|
|
@@ -5127,10 +5127,10 @@ function Dc({ idle: t, connect: e, page: n, poster: s = null, onPick: r }) {
|
|
|
5127
5127
|
/* @__PURE__ */ i("input", { ref: l, className: "vsp-idle__input", type: "url", inputMode: "url", enterKeyHint: "go", autoComplete: "off", spellCheck: !1, placeholder: "Paste a video link", value: a, onChange: (M) => o(M.target.value), "aria-label": "Video link", autoFocus: !0 }),
|
|
5128
5128
|
e.busy && /* @__PURE__ */ i(ct, { size: 15, color: "#eef0f8", track: "rgba(255,255,255,.2)" })
|
|
5129
5129
|
] }) }),
|
|
5130
|
-
e.busy ? /* @__PURE__ */ i("div", { className: "vsp-idle__note", role: "status", children:
|
|
5130
|
+
e.busy ? /* @__PURE__ */ i("div", { className: "vsp-idle__note", role: "status", children: Ui[e.status ?? "checking"] }) : /* @__PURE__ */ i("div", { className: "vsp-idle__note", children: "YouTube, Vimeo, an mp3 or any video link. Press Enter or ▶ to play it here with subtitles and spoken translations." }),
|
|
5131
5131
|
e.err && /* @__PURE__ */ i("div", { className: "vsp-end__err", role: "alert", children: e.err })
|
|
5132
5132
|
] }) : /* @__PURE__ */ f(Ls, { idle: t, poster: s, src: null, title: "VocalStack", page: n, onAct: e.connect, children: [
|
|
5133
|
-
/* @__PURE__ */ i(
|
|
5133
|
+
/* @__PURE__ */ i(Ri, { connect: e, onClick: e.connect, label: "Connect to VocalStack" }),
|
|
5134
5134
|
!e.busy && /* @__PURE__ */ i("div", { className: "vsp-idle__note", children: "Connect your VocalStack account to watch any video with subtitles and spoken translations." })
|
|
5135
5135
|
] });
|
|
5136
5136
|
}
|
|
@@ -5147,7 +5147,7 @@ function Sc(t, e, n) {
|
|
|
5147
5147
|
}
|
|
5148
5148
|
let a = !0;
|
|
5149
5149
|
r(void 0);
|
|
5150
|
-
const o = new
|
|
5150
|
+
const o = new ni({ baseUrl: (n ?? Ti).replace(/\/$/, ""), token: async () => (typeof e == "function" ? await e() : e) || void 0 }), l = o.transcriptions.lookup;
|
|
5151
5151
|
if (!l) {
|
|
5152
5152
|
r(null);
|
|
5153
5153
|
return;
|
|
@@ -5161,39 +5161,43 @@ function Sc(t, e, n) {
|
|
|
5161
5161
|
};
|
|
5162
5162
|
}, [t, e, n]), s;
|
|
5163
5163
|
}
|
|
5164
|
-
const Ac = 100,
|
|
5164
|
+
const Ac = 100, Xr = (t) => t == null ? null : t ? "on" : "off";
|
|
5165
5165
|
function Ec(t) {
|
|
5166
5166
|
const e = t.syncUrl && typeof window < "u" ? new URLSearchParams(window.location.search) : null, n = { ...t.initial ?? {}, ...t.settings ?? {} }, s = (a) => a === "on" || a === "off" ? a : null, r = Number(e == null ? void 0 : e.get("t"));
|
|
5167
5167
|
return {
|
|
5168
5168
|
lang: (e == null ? void 0 : e.get("lang")) || n.lang || null,
|
|
5169
|
-
labels: s(e == null ? void 0 : e.get("labels")) ??
|
|
5170
|
-
words: s(e == null ? void 0 : e.get("words")) ??
|
|
5169
|
+
labels: s(e == null ? void 0 : e.get("labels")) ?? Xr(n.speakerLabels),
|
|
5170
|
+
words: s(e == null ? void 0 : e.get("words")) ?? Xr(n.wordHighlight),
|
|
5171
5171
|
cc: e != null && e.get("cc") ? e.get("cc") !== "off" : n.subtitles ?? !0,
|
|
5172
5172
|
translateAudio: e != null && e.get("audio") ? e.get("audio") !== "original" : n.translateAudio ?? !0,
|
|
5173
5173
|
clonedVoices: e != null && e.get("voices") ? e.get("voices") !== "stock" : (n.voices ?? "cloned") === "cloned",
|
|
5174
|
-
removeBackground: e && e.get("bg") ?
|
|
5174
|
+
removeBackground: e && e.get("bg") ? Za(e) : n.removeBackground ?? !1,
|
|
5175
5175
|
startAt: Number.isFinite(r) && r > 0 ? r : t.startAt ?? null
|
|
5176
5176
|
};
|
|
5177
5177
|
}
|
|
5178
|
-
const Wc =
|
|
5178
|
+
const Wc = Na(function(e, n) {
|
|
5179
5179
|
var P;
|
|
5180
5180
|
const s = z(null);
|
|
5181
|
-
|
|
5182
|
-
seek: (
|
|
5181
|
+
pa(n, () => ({
|
|
5182
|
+
seek: (b) => {
|
|
5183
5183
|
var ue;
|
|
5184
|
-
return (ue = s.current) == null ? void 0 : ue.seek(
|
|
5184
|
+
return (ue = s.current) == null ? void 0 : ue.seek(b);
|
|
5185
5185
|
},
|
|
5186
5186
|
play: () => {
|
|
5187
|
-
var
|
|
5188
|
-
return (
|
|
5187
|
+
var b;
|
|
5188
|
+
return (b = s.current) == null ? void 0 : b.play();
|
|
5189
|
+
},
|
|
5190
|
+
toggleMute: () => {
|
|
5191
|
+
var b;
|
|
5192
|
+
return (b = s.current) == null ? void 0 : b.toggleMute();
|
|
5189
5193
|
},
|
|
5190
5194
|
pause: () => {
|
|
5191
|
-
var
|
|
5192
|
-
return (
|
|
5195
|
+
var b;
|
|
5196
|
+
return (b = s.current) == null ? void 0 : b.pause();
|
|
5193
5197
|
},
|
|
5194
5198
|
toggle: () => {
|
|
5195
|
-
var
|
|
5196
|
-
return (
|
|
5199
|
+
var b;
|
|
5200
|
+
return (b = s.current) == null ? void 0 : b.toggle();
|
|
5197
5201
|
}
|
|
5198
5202
|
}), []);
|
|
5199
5203
|
const [r, a] = O({ id: e.id ?? "", token: e.token });
|
|
@@ -5204,37 +5208,37 @@ const Wc = fa(function(e, n) {
|
|
|
5204
5208
|
Y(() => {
|
|
5205
5209
|
o != null && o.id && a({ id: o.id, token: e.token });
|
|
5206
5210
|
}, [o == null ? void 0 : o.id]);
|
|
5207
|
-
const [l, c] = O(null), [d, u] = O(() => ({ ...vc, ...Object.fromEntries(Object.entries({ ...e.initial ?? {}, ...e.settings ?? {} }).filter(([,
|
|
5208
|
-
u((ue) => ({ ...ue, ...
|
|
5209
|
-
}, shareUrl: (P = e.shareUrl) == null ? void 0 : P.call(e, null) }, { muted: m, ...w } =
|
|
5211
|
+
const [l, c] = O(null), [d, u] = O(() => ({ ...vc, ...Object.fromEntries(Object.entries({ ...e.initial ?? {}, ...e.settings ?? {} }).filter(([, b]) => b !== void 0)) })), [h, M] = O({}), N = { prefs: d, set: (b) => {
|
|
5212
|
+
u((ue) => ({ ...ue, ...b })), M((ue) => ({ ...ue, ...b }));
|
|
5213
|
+
}, shareUrl: (P = e.shareUrl) == null ? void 0 : P.call(e, null) }, { muted: m, ...w } = h;
|
|
5210
5214
|
Y(() => {
|
|
5211
5215
|
c(null);
|
|
5212
5216
|
}, [e.id, e.src]);
|
|
5213
|
-
const v = e.src ?? l, p = !r.id && !!v && (l != null || o !== void 0),
|
|
5217
|
+
const v = e.src ?? l, p = !r.id && !!v && (l != null || o !== void 0), g = !r.id && !e.src && !l, C = wi({ id: r.id, token: r.token, baseUrl: e.baseUrl, listen: r.listen }), { source: x, gone: k, error: J, reload: A } = Eo(C, r.id), K = Yo(C, (x == null ? void 0 : x.recording.id) ?? null), j = Ie(() => So(C, K), [C, K]);
|
|
5214
5218
|
Y(() => {
|
|
5215
|
-
var
|
|
5216
|
-
|
|
5217
|
-
}, [
|
|
5218
|
-
var
|
|
5219
|
-
J && ((
|
|
5219
|
+
var b;
|
|
5220
|
+
x && ((b = e.onSource) == null || b.call(e, x));
|
|
5221
|
+
}, [x]), Y(() => {
|
|
5222
|
+
var b;
|
|
5223
|
+
J && ((b = e.onError) == null || b.call(e, J));
|
|
5220
5224
|
}, [J]);
|
|
5221
|
-
const S =
|
|
5222
|
-
return Y(() => (
|
|
5225
|
+
const S = _i(e.compact ? !1 : e.desk), $ = (e.layout ?? "embed") === "embed", L = e.appUrl ?? (e.endCard ? e.endCard.appUrl : void 0), I = qe((b) => a({ id: b.transcriptionId, token: null, listen: { transcriptionId: b.transcriptionId, recordingId: b.recordingId, token: b.token } }), []), E = Ic(L, I), oe = z(null);
|
|
5226
|
+
return Y(() => (Kr($ ? oe.current : null), () => Kr(null)), [$]), /* @__PURE__ */ i(Co, { value: j, children: /* @__PURE__ */ i("div", { ref: oe, className: `vsp${$ ? " vsp--embed" : ""}${e.className ? ` ${e.className}` : ""}`, "data-theme": (e.mode ?? "video") === "video" || e.dark ? "dark" : "light", "data-mode": (e.mode ?? "video") === "video" ? "video" : "transcript", children: g ? /* @__PURE__ */ i(Dc, { idle: N, connect: E, page: !$, poster: e.poster ?? null, onPick: c }) : p ? /* @__PURE__ */ i(xc, { idle: N, src: v, ask: !l, connect: E, page: !$, poster: e.poster ?? null, onClear: l ? () => c(null) : void 0 }) : r.id ? /* @__PURE__ */ i(Yc, { ...e, initial: { ...e.initial ?? {}, ...w }, startMuted: m === !0, handle: s, id: r.id, api: j, shared: x, gone: k, loadError: J, reread: A, desk: S, dark: (e.mode ?? "video") === "video" || !!e.dark, onStarted: (b) => a({ id: b.transcriptionId, token: null, listen: { transcriptionId: b.transcriptionId, recordingId: b.recordingId, token: b.token } }) }, r.id) : /* @__PURE__ */ i("div", { className: "vsp-gate", "data-theme": "dark", children: /* @__PURE__ */ i("span", { className: "gfull__spin gfull__holdspin", "aria-label": "Loading" }) }) }) });
|
|
5223
5227
|
});
|
|
5224
5228
|
function Yc(t) {
|
|
5225
|
-
var cr, ur, dr, Mr,
|
|
5226
|
-
const { api: e, shared: n, gone: s, desk: r, dark: a } = t, o = t.id ?? "", l = Ie(() => Ec(t), []), c = (t.mode ?? "video") === "video", d = ((ur = (cr = n == null ? void 0 : n.job) == null ? void 0 : cr.source) == null ? void 0 : ur.kind) === "url" ? fs(n.job.source.url) : null, u = c && !(n && !d), [
|
|
5229
|
+
var cr, ur, dr, Mr, gr, hr, fr, Nr, pr, mr, yr, Tr, wr, Lr, kr, vr, jr, zr, Ir, Or, Cr, br, xr, Dr;
|
|
5230
|
+
const { api: e, shared: n, gone: s, desk: r, dark: a } = t, o = t.id ?? "", l = Ie(() => Ec(t), []), c = (t.mode ?? "video") === "video", d = ((ur = (cr = n == null ? void 0 : n.job) == null ? void 0 : cr.source) == null ? void 0 : ur.kind) === "url" ? fs(n.job.source.url) : null, u = c && !(n && !d), [h, M] = O(t.loadError);
|
|
5227
5231
|
Y(() => {
|
|
5228
5232
|
t.loadError && M(t.loadError);
|
|
5229
5233
|
}, [t.loadError]);
|
|
5230
|
-
const [N, m] = O("none"), [w, v] = O(!1), [p,
|
|
5234
|
+
const [N, m] = O("none"), [w, v] = O(!1), [p, g] = O(""), [C, x] = Ul(), [k, J] = O(null), [A, K] = O(u ? "listen" : "read"), [j, S] = O(!1), $ = z(null), L = z(/* @__PURE__ */ new Map()), [I, E] = O("main"), oe = (T) => {
|
|
5231
5235
|
const pe = document.querySelector(".vs-sheet--settings"), Re = pe == null ? void 0 : pe.parentElement;
|
|
5232
5236
|
pe && Re && I === "main" && T !== "main" && Re.style.setProperty("--vs-sheet-top", `${Math.round(pe.getBoundingClientRect().top - Re.getBoundingClientRect().top)}px`), E(T);
|
|
5233
5237
|
};
|
|
5234
5238
|
Y(() => {
|
|
5235
5239
|
j || oe("main");
|
|
5236
5240
|
}, [j]);
|
|
5237
|
-
const [P,
|
|
5241
|
+
const [P, b] = O(u), ue = (n == null ? void 0 : n.recording) ?? null, B = (ue == null ? void 0 : ue.id) ?? null, [F, ie] = O(l.lang), re = typeof F == "string" ? F : null, [le, ve] = O(l.labels), [Le, Te] = O(l.words), [we, Ee] = O(l.cc), [Be, Oe] = O(l.translateAudio), [ye, te] = O(l.clonedVoices), [H, X] = O(l.removeBackground), y = t.settings;
|
|
5238
5242
|
Y(() => {
|
|
5239
5243
|
(y == null ? void 0 : y.lang) !== void 0 && ie(y.lang);
|
|
5240
5244
|
}, [y == null ? void 0 : y.lang]), Y(() => {
|
|
@@ -5254,22 +5258,22 @@ function Yc(t) {
|
|
|
5254
5258
|
Y(() => {
|
|
5255
5259
|
if (!t.syncUrl) return;
|
|
5256
5260
|
const T = new URL(window.location.href);
|
|
5257
|
-
re ? T.searchParams.set("lang", re) : T.searchParams.delete("lang"), le ? T.searchParams.set("labels", le) : T.searchParams.delete("labels"), Le ? T.searchParams.set("words", Le) : T.searchParams.delete("words"), we ? T.searchParams.delete("cc") : T.searchParams.set("cc", "off"), Be ? T.searchParams.delete("audio") : T.searchParams.set("audio", "original"), ye ? T.searchParams.delete("voices") : T.searchParams.set("voices", "stock"),
|
|
5261
|
+
re ? T.searchParams.set("lang", re) : T.searchParams.delete("lang"), le ? T.searchParams.set("labels", le) : T.searchParams.delete("labels"), Le ? T.searchParams.set("words", Le) : T.searchParams.delete("words"), we ? T.searchParams.delete("cc") : T.searchParams.set("cc", "off"), Be ? T.searchParams.delete("audio") : T.searchParams.set("audio", "original"), ye ? T.searchParams.delete("voices") : T.searchParams.set("voices", "stock"), qa(T, H), T.href !== window.location.href && window.history.replaceState(window.history.state, "", T);
|
|
5258
5262
|
}, [re, le, Le, we, Be, ye, H]), Y(() => {
|
|
5259
5263
|
n && !n.allowTranslate && re && ie(null);
|
|
5260
5264
|
}, [n, re]);
|
|
5261
|
-
const { model: G, error: me, clearError: V, setLanguage: Ye, mergeTranslations: je, translating: Ve, translateFailed: Ae, shownLang: Z } =
|
|
5265
|
+
const { model: G, error: me, clearError: V, setLanguage: Ye, mergeTranslations: je, translating: Ve, translateFailed: Ae, shownLang: Z } = Po(B, {
|
|
5262
5266
|
lang: null,
|
|
5263
5267
|
onFrame: (T) => {
|
|
5264
5268
|
T.type === "job.progress" && J({ state: T.state, processedS: T.processedS ?? 0, totalS: T.totalS ?? null, segmentsDone: T.segmentsDone ?? 0, segmentsTotal: T.segmentsTotal ?? null, pct: T.pct ?? 0, error: T.error ?? null });
|
|
5265
5269
|
}
|
|
5266
|
-
}), se = Ie(() =>
|
|
5270
|
+
}), se = Ie(() => po(G).filter((T) => !T.suppressed), [G]), ge = Qo((n == null ? void 0 : n.job) ?? null), Me = ["done", "failed", "stopped"].includes(ts((ge == null ? void 0 : ge.state) ?? ((dr = n == null ? void 0 : n.job) == null ? void 0 : dr.state))), ce = Me ? ge : k ?? ge, ke = !!k && !["done", "failed", "stopped"].includes(ts(k.state)), We = z(0);
|
|
5267
5271
|
Y(() => {
|
|
5268
5272
|
!Me || !ke || Date.now() - We.current < 1e4 || (We.current = Date.now(), t.reread());
|
|
5269
5273
|
}, [Me, ke, k == null ? void 0 : k.state, k == null ? void 0 : k.processedS, o]);
|
|
5270
|
-
const xe = ts((ce == null ? void 0 : ce.state) ?? ((Mr = n == null ? void 0 : n.job) == null ? void 0 : Mr.state)), Ce = !!B && (xe === "transcribing" || xe === "queued"), _ = u && !s && (!n || (Ce || xe === "cropping") && se.length === 0), U = Ce ? (ce == null ? void 0 : ce.pct) ?? 0 : 100, W =
|
|
5274
|
+
const xe = ts((ce == null ? void 0 : ce.state) ?? ((Mr = n == null ? void 0 : n.job) == null ? void 0 : Mr.state)), Ce = !!B && (xe === "transcribing" || xe === "queued"), _ = u && !s && (!n || (Ce || xe === "cropping") && se.length === 0), U = Ce ? (ce == null ? void 0 : ce.pct) ?? 0 : 100, W = Bo(n == null ? void 0 : n.job, ce) ?? (ue == null ? void 0 : ue.mediaDurationS) ?? null, ee = ((gr = G.segments.values().next().value) == null ? void 0 : gr.language) ?? (ue == null ? void 0 : ue.spokenLanguage) ?? null, fe = n != null && n.sharedBy ? `Shared by ${n.sharedBy}` : "", Ne = ((Nr = (fr = (hr = n == null ? void 0 : n.job) == null ? void 0 : hr.source) == null ? void 0 : fr.name) == null ? void 0 : Nr.trim()) || null, ze = n ? ((pr = n.name) == null ? void 0 : pr.trim()) || Ne : null, Ue = !!((mr = n == null ? void 0 : n.job) != null && mr.hasAudio), be = (yr = n == null ? void 0 : n.job) == null ? void 0 : yr.source, Se = !Ue && !!be && (be.kind !== "url" || be.bytes != null) && (xe === "transcribing" || xe === "queued" || xe === "done"), st = B && (n != null && n.allowDownload) && Ue ? xa(e.origin, B, e.cred) : B && (n != null && n.allowDownload) && Se ? qn(e.origin, B, "source", e.cred) : null, Xe = se[se.length - 1], Ot = Xe ? ((Tr = Xe.words[Xe.words.length - 1]) == null ? void 0 : Tr.end) ?? Xe.start : 0, ut = u && Ce ? Math.max(Ot, (ce == null ? void 0 : ce.processedS) ?? 0) : null, Ge = Hl(st, (Ue || Se) && !!(n != null && n.allowDownload), se, W, Se ? ((Lr = (wr = n == null ? void 0 : n.job) == null ? void 0 : wr.crop) == null ? void 0 : Lr.startS) ?? 0 : 0, ut), Qe = ((vr = (kr = n == null ? void 0 : n.job) == null ? void 0 : kr.source) == null ? void 0 : vr.kind) === "url" ? fs(n.job.source.url) : null, rt = Bl(se, W, ((zr = (jr = n == null ? void 0 : n.job) == null ? void 0 : jr.crop) == null ? void 0 : zr.startS) ?? 0, ut), He = !!Qe, Lt = He ? rt.player : Ge, gt = Li(), Bt = z(null), ne = Zl({ recordingId: B, model: G, rows: se, lenS: W, ended: !!B && !Ce, cred: e.cred, langs: gt, srcLang: ee, canTranslate: !!(n != null && n.allowTranslate), pickedLang: F, setPickedLang: ie, side: r && !P ? Gl : void 0, hearOriginal: ae, timed: !!Qe, stockVoices: u && !ye, stickyPicker: u, pickerBusy: Bt.current }), pt = z(null);
|
|
5271
5275
|
Y(() => {
|
|
5272
|
-
!B ||
|
|
5276
|
+
!B || pt.current === re || (pt.current = re, Ye(re));
|
|
5273
5277
|
}, [re, B]);
|
|
5274
5278
|
const D = He ? rt.player : ne.on ? ne.player : Lt;
|
|
5275
5279
|
Y(() => {
|
|
@@ -5282,41 +5286,41 @@ function Yc(t) {
|
|
|
5282
5286
|
const Xt = Ie(() => se.filter((T) => T.sentenceId != null).map((T, pe, Re) => {
|
|
5283
5287
|
var Fe;
|
|
5284
5288
|
return { sid: T.sentenceId, start: T.start, end: ((Fe = Re[pe + 1]) == null ? void 0 : Fe.start) ?? Et(T, T.start, T.start + 4) };
|
|
5285
|
-
}), [se]),
|
|
5289
|
+
}), [se]), Ct = co({ on: He && ne.on, lines: Xt, clips: ne.clips, t: D.t, playing: D.playing, muted: D.muted }), at = !!re && (Ve || ne.relang || ne.on && Ct.missing != null);
|
|
5286
5290
|
Bt.current = at ? re : null, Y(() => {
|
|
5287
|
-
He && ne.on &&
|
|
5288
|
-
}, [
|
|
5289
|
-
const
|
|
5291
|
+
He && ne.on && Ct.sid != null && ne.setNear(Ct.sid);
|
|
5292
|
+
}, [Ct.sid, He, ne.on]), $l([Lt, ne.player], ne.sampling);
|
|
5293
|
+
const bt = z(null);
|
|
5290
5294
|
Y(() => {
|
|
5291
|
-
Ce && !D.playing &&
|
|
5295
|
+
Ce && !D.playing && bt.current && (bt.current.scrollTop = bt.current.scrollHeight);
|
|
5292
5296
|
}, [Ce, se.length]);
|
|
5293
|
-
const zn = Jl(
|
|
5297
|
+
const zn = Jl(bt, se, w, p, v), Ht = /* @__PURE__ */ i(Kl, { open: w, q: p, onQ: g, onClose: () => v(!1), hits: zn, desk: r, inline: r }), Ke = (n == null ? void 0 : n.name) || t.src || o, ot = !!(n != null && n.allowDownload), Vt = !!(n != null && n.allowExport), ht = ne.readLang, dt = ht ? ((Ir = gt == null ? void 0 : gt.languages.find((T) => T.code === ht)) == null ? void 0 : Ir.name) ?? ht.toUpperCase() : null, _t = async () => {
|
|
5294
5298
|
if (B)
|
|
5295
5299
|
try {
|
|
5296
5300
|
if (ht && ne.canSpeak) {
|
|
5297
|
-
|
|
5301
|
+
x(`Preparing ${Ke} in ${dt}${ne.readVoiceName ? `, read by ${ne.readVoiceName}` : ""} — the download starts when it is ready.`), await Wo(e, { recordingId: B, lang: ht, voiceKey: ne.readVoiceKey, cred: e.cred, request: ne.requestTrack }), x(`Downloading ${Ke} in ${dt}.`);
|
|
5298
5302
|
return;
|
|
5299
5303
|
}
|
|
5300
5304
|
if (Ue) {
|
|
5301
|
-
|
|
5305
|
+
x(`Preparing ${Ke} as MP3 — the download starts when it is ready.`), await Ho(qn(e.origin, B, "delivery", e.cred)), x(`Downloading ${Ke}.`);
|
|
5302
5306
|
return;
|
|
5303
5307
|
}
|
|
5304
|
-
Cs(qn(e.origin, B, "source", e.cred)),
|
|
5308
|
+
Cs(qn(e.origin, B, "source", e.cred)), x(`Downloading ${Ke} — the full audio, since the transcript is still being written.`);
|
|
5305
5309
|
} catch (T) {
|
|
5306
5310
|
throw M(wt(T)), T;
|
|
5307
5311
|
}
|
|
5308
5312
|
}, lt = (T) => {
|
|
5309
5313
|
if (!B) return;
|
|
5310
|
-
const pe =
|
|
5311
|
-
return
|
|
5314
|
+
const pe = hs.find((Fe) => Fe.key === T).name, Re = dt ? ` in ${dt}` : "";
|
|
5315
|
+
return Vo(e, B, T, { lang: ht }).then(() => x(Ce ? `${pe} exported${Re} for the first ${se.length} segments — the rest is still transcribing.` : `${pe} exported${Re}.`)).catch((Fe) => {
|
|
5312
5316
|
throw M(wt(Fe)), Fe;
|
|
5313
5317
|
});
|
|
5314
|
-
}, Wt = Ce ? "MORE TO COME…" : "END OF TRANSCRIPT", it = Ce ? "var(--brand)" : "var(--ink-28)", Ft =
|
|
5318
|
+
}, Wt = Ce ? "MORE TO COME…" : "END OF TRANSCRIPT", it = Ce ? "var(--brand)" : "var(--ink-28)", Ft = $o(ce, se.length), kt = D.has && (!ne.relang || !!Qe), Ze = z(D);
|
|
5315
5319
|
Ze.current = D;
|
|
5316
|
-
const
|
|
5320
|
+
const xt = `${re ?? ""}|${ne.on ? "voice" : "source"}`, mt = z({ key: xt, idx: 0, t: 0, playing: !1, until: 0 });
|
|
5317
5321
|
Y(() => {
|
|
5318
|
-
const T =
|
|
5319
|
-
if (T.key !==
|
|
5322
|
+
const T = mt.current;
|
|
5323
|
+
if (T.key !== xt && (T.key = xt, T.until = Date.now() + 15e3), !He) {
|
|
5320
5324
|
if (!T.until) {
|
|
5321
5325
|
T.idx = D.idx, T.t = D.t, T.playing = D.playing;
|
|
5322
5326
|
return;
|
|
@@ -5328,38 +5332,38 @@ function Yc(t) {
|
|
|
5328
5332
|
!D.has || ne.relang || (T.until = 0, Math.abs(D.t - T.t) > 0.5 && (D.seekFrac && D.dur > 0 ? D.seekFrac(T.t / D.dur) : D.seekRow(T.idx)), T.playing && !D.playing && (et.current = !0, D.toggle()));
|
|
5329
5333
|
}
|
|
5330
5334
|
});
|
|
5331
|
-
const
|
|
5332
|
-
u && (
|
|
5333
|
-
const [en,
|
|
5335
|
+
const Dt = z(!1), et = z(!1);
|
|
5336
|
+
u && (li.video = !0);
|
|
5337
|
+
const [en, vt] = O(!1), [In, On] = O(!1);
|
|
5334
5338
|
Y(() => {
|
|
5335
|
-
if (!u ||
|
|
5336
|
-
|
|
5339
|
+
if (!u || Dt.current || !kt || !P || _ || t.autoplay === !1) return;
|
|
5340
|
+
Dt.current = !0;
|
|
5337
5341
|
const T = (Fe) => {
|
|
5338
5342
|
Ze.current.playing || et.current || (Ze.current.toggle(), Fe > 0 && setTimeout(() => T(Fe - 1), 1500));
|
|
5339
5343
|
}, pe = () => {
|
|
5340
|
-
Ze.current.muted || Ze.current.toggleMute(),
|
|
5344
|
+
Ze.current.muted || Ze.current.toggleMute(), vt(!0), T(3);
|
|
5341
5345
|
}, Re = Ze.current;
|
|
5342
5346
|
if (!Re.autoplay || t.startMuted) {
|
|
5343
5347
|
pe();
|
|
5344
5348
|
return;
|
|
5345
5349
|
}
|
|
5346
5350
|
Re.autoplay().then((Fe) => {
|
|
5347
|
-
Fe === !1 ?
|
|
5351
|
+
Fe === !1 ? vt(!0) : Fe == null && !et.current && pe();
|
|
5348
5352
|
});
|
|
5349
5353
|
}, [u, kt, P, _]);
|
|
5350
|
-
const
|
|
5351
|
-
en && (
|
|
5352
|
-
|
|
5354
|
+
const jt = z(!1), Cn = () => {
|
|
5355
|
+
en && (vt(!1), jt.current = !0, setTimeout(() => {
|
|
5356
|
+
jt.current = !1;
|
|
5353
5357
|
}, 500), Ze.current.muted && Ze.current.toggleMute());
|
|
5354
5358
|
}, tn = () => {
|
|
5355
|
-
if (
|
|
5356
|
-
|
|
5359
|
+
if (jt.current) {
|
|
5360
|
+
jt.current = !1;
|
|
5357
5361
|
return;
|
|
5358
5362
|
}
|
|
5359
|
-
|
|
5363
|
+
vt(!1), Ze.current.toggleMute();
|
|
5360
5364
|
}, nn = () => {
|
|
5361
|
-
if (
|
|
5362
|
-
|
|
5365
|
+
if (jt.current) {
|
|
5366
|
+
jt.current = !1;
|
|
5363
5367
|
return;
|
|
5364
5368
|
}
|
|
5365
5369
|
et.current = !0, Ze.current.toggle();
|
|
@@ -5372,12 +5376,12 @@ function Yc(t) {
|
|
|
5372
5376
|
const T = setTimeout(() => De(!0), 180);
|
|
5373
5377
|
return () => clearTimeout(T);
|
|
5374
5378
|
}, [Ve]);
|
|
5375
|
-
const $e = Q ? Z : re,
|
|
5376
|
-
Lt.pause(), ne.player.pause(), K(T), T === "read" && P && (qt(!1),
|
|
5377
|
-
}, _e = ne.barChip, Ut =
|
|
5378
|
-
T === "summary" && Gt && /* @__PURE__ */ i(
|
|
5379
|
-
T === "export" && /* @__PURE__ */ i(
|
|
5380
|
-
] }),
|
|
5379
|
+
const $e = Q ? Z : re, zt = rl(B, re, se, je), St = yl(Tl(ue), B, ne.readLang), Pi = ot || Vt, Qi = (((Cr = (Or = n == null ? void 0 : n.job) == null ? void 0 : Or.crop) == null ? void 0 : Cr.startS) ?? 0) + ss(D, se), bn = A === "listen", At = bn && !!Qe, $i = (T) => {
|
|
5380
|
+
Lt.pause(), ne.player.pause(), K(T), T === "read" && P && (qt(!1), b(!1));
|
|
5381
|
+
}, _e = ne.barChip, Ut = vi(_e.label), Ss = /* @__PURE__ */ i(as, { value: A, onChange: $i, bordered: !1, options: dc(Ut, !!Qe) }), Rt = [...Gt ? [{ key: "summary", label: "Summary" }] : [], ...Pi ? [{ key: "export", label: "Export" }] : []], As = (T) => /* @__PURE__ */ f(Pe, { children: [
|
|
5382
|
+
T === "summary" && Gt && /* @__PURE__ */ i(wl, { s: St }),
|
|
5383
|
+
T === "export" && /* @__PURE__ */ i(ml, { audio: ot ? { name: Ke, meta: ht && ne.canSpeak || Ue ? `MP3${W ? ` · ${Tt(W)}` : ""}` : "ORIGINAL AUDIO", onClick: _t } : null, formats: Vt, onExport: lt })
|
|
5384
|
+
] }), Bi = (T) => /* @__PURE__ */ i(el, { index: D.idx, total: Math.max(1, se.length), frac: D.dur > 0 ? Math.min(1, D.t / D.dur) : 0, glideMs: D.wordSync ? 0 : 220, atLabel: Tt(D.t), durLabel: Tt(D.dur), stepLabel: T ? `${D.idx + 1} / ${se.length}` : "", onSeek: ne.relang ? Wl : D.seekRow, onSeekFrac: ne.relang ? void 0 : D.seekFrac, onScrubStart: D.hold, onScrubEnd: D.release }), Es = {
|
|
5381
5385
|
live: !1,
|
|
5382
5386
|
atEdge: !1,
|
|
5383
5387
|
edgeFrac: null,
|
|
@@ -5390,24 +5394,24 @@ function Yc(t) {
|
|
|
5390
5394
|
var pe;
|
|
5391
5395
|
ne.relang || (pe = D.seekFrac) == null || pe.call(D, T);
|
|
5392
5396
|
}
|
|
5393
|
-
}, [
|
|
5397
|
+
}, [Hi, Vi] = gc(ne.on && !!D.preparing && D.playing, 1500), xn = ne.on && ((br = D.error) == null ? void 0 : br.code) === "voice_not_started", Dn = ne.canSpeak && !ne.error && !xn, rn = re ? ((xr = gt == null ? void 0 : gt.languages.find((T) => T.code === re)) == null ? void 0 : xr.name) ?? _e.label : "", tt = P ? Mc({ lang: re, langName: rn, translating: Ve && !!re, translateFailed: Ae, voiceFailed: xn, relang: ne.relang, starting: ne.on ? D.starting : null, slowLine: Hi, lineSince: Vi }) : null, Sn = !!Qe && !!tt && (tt.kind === "translating" || tt.kind === "voice" && ne.relang), Ys = !Sn || !tt ? null : tt.kind === "translating" ? `Translating into ${rn || "the new language"}…` : `Preparing the ${rn || "translated"} voice…`, an = !Sn && ((tt == null ? void 0 : tt.kind) === "voice" || (tt == null ? void 0 : tt.kind) === "starting"), _s = vs({ ...ne.langList, keepOpen: !0, open: I === "lang", onClose: () => oe("main") }), Us = Ga(H, ne.on), Wi = u && Us.bed && ot && B && (!Ce || st) ? Ar(e.origin, B, e.cred) : null, Rs = so(Wi, { t: ss(D, se), playing: D.playing && !an && !(D.timed && D.preparing), muted: D.muted }), Fi = u && Us.speech && ot && B && (!Ce || st) ? Ar(e.origin, B, e.cred, "speech") : null, An = Ni(Fi, { t: ss(D, se), playing: !ne.on && D.playing, muted: D.muted }), En = !ne.on && An.on;
|
|
5394
5398
|
Y(() => {
|
|
5395
5399
|
var T;
|
|
5396
5400
|
rt.setVideoSound(!(He && (ne.on || En))), (T = Ge.silence) == null || T.call(Ge, !He && En);
|
|
5397
5401
|
}, [He, ne.on, En, st]);
|
|
5398
|
-
const Yn = ot ? ne.on ? Rs : An.state : "unavailable", _n = Be && Dn && !!re,
|
|
5402
|
+
const Yn = ot ? ne.on ? Rs : An.state : "unavailable", _n = Be && Dn && !!re, Gi = _n ? [`Translated${ne.hasClone ? ye ? ", cloned voices" : ", synthetic voices" : ""}`, !H && ot && Rs !== "unavailable" ? "with background sound" : null].filter(Boolean).join(" ") : H && Yn !== "unavailable" ? "Original speech, background removed" : "Original sound", Zi = () => {
|
|
5399
5403
|
if ((tt == null ? void 0 : tt.kind) === "translateFailed") {
|
|
5400
5404
|
Ye(re);
|
|
5401
5405
|
return;
|
|
5402
5406
|
}
|
|
5403
5407
|
et.current = !0, D.toggle();
|
|
5404
|
-
},
|
|
5408
|
+
}, qi = () => {
|
|
5405
5409
|
const T = D.idx;
|
|
5406
5410
|
D.pause(), ie(null), et.current = !0, Lt.playRow(T);
|
|
5407
5411
|
}, Ps = { prevOn: D.idx > 0, nextOn: D.idx < se.length - 1, onPrev: D.prev, onNext: D.next, playing: D.playing, playable: kt, playTitle: ne.playTitle ?? (D.playing ? "Pause" : "Play"), onPlay: () => {
|
|
5408
5412
|
et.current = !0, D.toggle();
|
|
5409
5413
|
}, busy: ne.relang && !Qe || an };
|
|
5410
|
-
|
|
5414
|
+
go(kt ? { playing: D.playing, toggle: () => {
|
|
5411
5415
|
et.current = !0, D.toggle();
|
|
5412
5416
|
}, next: D.next, prev: D.prev } : null, ze);
|
|
5413
5417
|
const Un = { background: "transparent", color: "#eef0f8", width: 74, justifyContent: "center", boxSizing: "border-box" }, Rn = (T, pe) => !_e.can || !R.language ? null : u ? /* @__PURE__ */ f("button", { type: "button", className: "gfull__btn", title: at ? `${_e.label ?? _e.code}: still being prepared` : _e.label ?? _e.code, "aria-label": `Language: ${_e.label ?? _e.code}`, "aria-busy": at || void 0, onClick: () => {
|
|
@@ -5416,28 +5420,28 @@ function Yc(t) {
|
|
|
5416
5420
|
/* @__PURE__ */ i("span", { style: { fontSize: pe === "sm" ? 17 : 21, lineHeight: 1 }, children: _e.flag }),
|
|
5417
5421
|
at && /* @__PURE__ */ i("span", { style: { position: "absolute", right: 2, bottom: 2, display: "flex", borderRadius: 999, background: "rgba(5,6,21,.7)", padding: 1 }, children: /* @__PURE__ */ i(ct, { size: 11, color: "#eef0f8", track: "rgba(255,255,255,.25)" }) })
|
|
5418
5422
|
] }) : /* @__PURE__ */ i(wn, { flag: _e.flag, code: _e.code, label: _e.label, bordered: !1, size: pe, onClick: _e.onClick, style: T }), Qs = { on: !1, title: "Voices", onClick: () => {
|
|
5419
|
-
} }, [
|
|
5423
|
+
} }, [Ki, Ji] = O(!1);
|
|
5420
5424
|
Y(() => {
|
|
5421
|
-
D.t > 0.3 &&
|
|
5425
|
+
D.t > 0.3 && Ji(!0);
|
|
5422
5426
|
}, [D.t]);
|
|
5423
5427
|
const $s = Qe && /* @__PURE__ */ f(Pe, { children: [
|
|
5424
|
-
/* @__PURE__ */ i(
|
|
5428
|
+
/* @__PURE__ */ i(El, { ytId: Qe, title: Ke, t: Qi, playing: D.playing && !an, waiting: ne.on && !!D.timed && !!D.preparing, seekN: D.seekN, onTime: (T) => {
|
|
5425
5429
|
var pe, Re, Fe;
|
|
5426
5430
|
return (Fe = D.videoAt) == null ? void 0 : Fe.call(D, T - (((Re = (pe = n == null ? void 0 : n.job) == null ? void 0 : pe.crop) == null ? void 0 : Re.startS) ?? 0));
|
|
5427
5431
|
}, onToggle: D.has ? nn : void 0, onAd: On, lead: He ? rt.lead : void 0 }),
|
|
5428
|
-
/* @__PURE__ */ i("div", { className: "vsp-poster", "aria-hidden": "true", style: { backgroundImage: `url(https://i.ytimg.com/vi/${Qe}/hqdefault.jpg)`, opacity:
|
|
5429
|
-
] }), Bs = At && Qe && !P ? /* @__PURE__ */ i(
|
|
5430
|
-
qt(!0),
|
|
5431
|
-
}, copied: null }) }) : null, Je = D.wordSync ?
|
|
5432
|
+
/* @__PURE__ */ i("div", { className: "vsp-poster", "aria-hidden": "true", style: { backgroundImage: `url(https://i.ytimg.com/vi/${Qe}/hqdefault.jpg)`, opacity: Ki ? 0 : 1 }, children: !D.playing && /* @__PURE__ */ i("span", { className: "vsp-poster__play", children: /* @__PURE__ */ i("svg", { viewBox: "0 0 24 24", width: "42%", height: "42%", fill: "currentColor", style: { marginLeft: "6%" }, children: Zr }) }) })
|
|
5433
|
+
] }), Bs = At && Qe && !P ? /* @__PURE__ */ i(Ll, { ytId: Qe, title: Ke, radius: 14, large: !0, style: r ? void 0 : { margin: "8px 20px 2px" }, picture: $s, children: /* @__PURE__ */ i(oc, { pos: Es, transport: Ps, chip: Rn({ ...Un, width: 64, height: 28, minHeight: 28, padding: "0 8px" }, "sm"), voices: Qs, onFull: () => {
|
|
5434
|
+
qt(!0), b(!0);
|
|
5435
|
+
}, copied: null }) }) : null, Je = D.wordSync ? Zo(se, D.idx, D.t) ? se[D.idx] : void 0 : se[D.idx];
|
|
5432
5436
|
for (const T of se) for (const [pe, Re] of Object.entries(T.translations)) Re && L.current.set(`${T.sentenceId ?? T.start}|${pe}`, Re);
|
|
5433
|
-
const Hs = (T, pe) => T.translations[pe] || L.current.get(`${T.sentenceId ?? T.start}|${pe}`) || null, Pn = (T, pe) => !T || !pe || T.language === pe || !!Hs(T, pe),
|
|
5434
|
-
Je && Pn(Je,
|
|
5435
|
-
const Vs = Je &&
|
|
5437
|
+
const Hs = (T, pe) => T.translations[pe] || L.current.get(`${T.sentenceId ?? T.start}|${pe}`) || null, Pn = (T, pe) => !T || !pe || T.language === pe || !!Hs(T, pe), yt = Pn(Je, re) ? re : Pn(Je, $.current) ? $.current : re;
|
|
5438
|
+
Je && Pn(Je, yt) && ($.current = yt);
|
|
5439
|
+
const Vs = Je && yt && Je.language !== yt ? Hs(Je, yt) : null, Xi = Je && Vs && yt && !Je.translations[yt] ? Object.assign([...se], { [D.idx]: { ...Je, translations: { ...Je.translations, [yt]: Vs } } }) : se, on = Je ? bi(Xi, D.idx, yt) : [], ln = Le ? Le === "on" : !u || ne.on || !$e || $e === ee, Ws = ln ? Gr(D, D.idx, on) : null, Fs = on.map((T, pe) => ({ t: T.text, sp: pe < on.length - 1 ? " " : "", dim: Ws != null && pe > Ws })), cn = le ? le === "on" : u ? !1 : Io(G, se, ue == null ? void 0 : ue.settings), Gs = { lang: re, subtitles: we, speakerLabels: cn, wordHighlight: ln, translateAudio: Be, voices: ye ? "cloned" : "synthetic", removeBackground: H }, ea = JSON.stringify(Gs), un = z(t.onSettingsChange);
|
|
5436
5440
|
un.current = t.onSettingsChange, Y(() => {
|
|
5437
5441
|
var T;
|
|
5438
5442
|
(T = un.current) == null || T.call(un, Gs);
|
|
5439
|
-
}, [
|
|
5440
|
-
const dn = Je && Je.speaker >= 0 && cn ? Is(G, Je.speaker) : null, [
|
|
5443
|
+
}, [ea]);
|
|
5444
|
+
const dn = Je && Je.speaker >= 0 && cn ? Is(G, Je.speaker) : null, [ta, Zs] = O(!1), [Qn, qs] = O(null), [na, Ks] = O(null), $n = z(void 0);
|
|
5441
5445
|
Y(() => () => window.clearTimeout($n.current), []);
|
|
5442
5446
|
const Bn = z(void 0);
|
|
5443
5447
|
Y(() => () => window.clearTimeout(Bn.current), []);
|
|
@@ -5461,11 +5465,11 @@ function Yc(t) {
|
|
|
5461
5465
|
const T = Mn.current;
|
|
5462
5466
|
T == null || !D.playing || (Mn.current = null, Math.abs(D.t - T) > 2 && Hn(T));
|
|
5463
5467
|
}, [D.playing]);
|
|
5464
|
-
const
|
|
5468
|
+
const sa = (T) => {
|
|
5465
5469
|
et.current = !0, Mn.current = null, Hn(Math.max(0, T));
|
|
5466
5470
|
};
|
|
5467
5471
|
t.handle.current = {
|
|
5468
|
-
seek: (T) =>
|
|
5472
|
+
seek: (T) => sa(T),
|
|
5469
5473
|
play: () => {
|
|
5470
5474
|
et.current = !0, Ze.current.playing || Ze.current.toggle();
|
|
5471
5475
|
},
|
|
@@ -5474,6 +5478,9 @@ function Yc(t) {
|
|
|
5474
5478
|
},
|
|
5475
5479
|
toggle: () => {
|
|
5476
5480
|
et.current = !0, Ze.current.toggle();
|
|
5481
|
+
},
|
|
5482
|
+
toggleMute: () => {
|
|
5483
|
+
vt(!1), Ze.current.toggleMute();
|
|
5477
5484
|
}
|
|
5478
5485
|
}, Y(() => () => {
|
|
5479
5486
|
t.handle.current = null;
|
|
@@ -5486,68 +5493,68 @@ function Yc(t) {
|
|
|
5486
5493
|
const pe = () => {
|
|
5487
5494
|
const Fe = er.current;
|
|
5488
5495
|
if (!Fe) return;
|
|
5489
|
-
const
|
|
5490
|
-
Nn !== T && (T = Nn, Fe(
|
|
5496
|
+
const ft = Ze.current, Mt = { t: ft.t, dur: ft.dur, playing: ft.playing, idx: ft.idx, seekN: ft.seekN, lang: tr.current, muted: ft.muted }, Nn = `${Mt.t.toFixed(2)}|${Mt.dur}|${Mt.playing}|${Mt.idx}|${Mt.seekN}|${Mt.lang}|${Mt.muted}`;
|
|
5497
|
+
Nn !== T && (T = Nn, Fe(Mt));
|
|
5491
5498
|
};
|
|
5492
5499
|
pe();
|
|
5493
5500
|
const Re = window.setInterval(pe, Ac);
|
|
5494
5501
|
return () => window.clearInterval(Re);
|
|
5495
5502
|
}, []);
|
|
5496
|
-
const
|
|
5503
|
+
const ra = () => bs(Js(null), Ke, () => {
|
|
5497
5504
|
window.clearTimeout(Bn.current), Zs(!0), Bn.current = window.setTimeout(() => Zs(!1), 2200);
|
|
5498
5505
|
}), nr = (T, pe, Re) => {
|
|
5499
|
-
const Fe =
|
|
5500
|
-
return /* @__PURE__ */ f("div", { className: "srow srow--tap", role: "button", "aria-busy":
|
|
5506
|
+
const Fe = hs.find((Nn) => Nn.key === T), ft = Qn === T, Mt = na === T;
|
|
5507
|
+
return /* @__PURE__ */ f("div", { className: "srow srow--tap", role: "button", "aria-busy": ft || void 0, style: Qn && !ft ? { opacity: 0.45, pointerEvents: "none" } : void 0, onClick: () => {
|
|
5501
5508
|
Qn || (qs(T), Promise.resolve().then(() => lt(T)).then(() => {
|
|
5502
5509
|
Ks(T), window.clearTimeout($n.current), $n.current = window.setTimeout(() => Ks(null), 1600);
|
|
5503
5510
|
}).catch(() => {
|
|
5504
5511
|
}).finally(() => qs(null)));
|
|
5505
5512
|
}, children: [
|
|
5506
|
-
|
|
5513
|
+
ft ? /* @__PURE__ */ i(ct, { size: 17, color: "var(--brand)", track: "var(--fill-12)" }) : /* @__PURE__ */ i(de, { d: Fe.icon, size: 17, sw: 1.5, style: { flex: "none", color: "var(--ink-70)" } }),
|
|
5507
5514
|
/* @__PURE__ */ f("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
5508
5515
|
/* @__PURE__ */ i("div", { className: "srow__t", children: pe }),
|
|
5509
5516
|
/* @__PURE__ */ i("div", { className: "srow__s", children: Re })
|
|
5510
5517
|
] }),
|
|
5511
|
-
/* @__PURE__ */ i(de, { d:
|
|
5518
|
+
/* @__PURE__ */ i(de, { d: Mt ? q.check : q.downloaded, size: 17, sw: 1.6, style: { flex: "none", color: Mt ? "var(--brand)" : "var(--ink-62)" } })
|
|
5512
5519
|
] });
|
|
5513
|
-
},
|
|
5520
|
+
}, ia = /* @__PURE__ */ f("span", { className: "vs-sheet__title", style: { position: "relative" }, children: [
|
|
5514
5521
|
" ",
|
|
5515
5522
|
/* @__PURE__ */ f("button", { type: "button", onClick: () => oe("main"), "aria-label": "Back", style: { position: "absolute", left: -6, top: "50%", transform: "translateY(-50%)", display: "inline-flex", alignItems: "center", gap: 2, padding: "4px 6px 4px 0", border: 0, background: "none", color: "var(--ink-96)", fontFamily: "var(--vs-font-sans)", fontSize: 15, fontWeight: 600, letterSpacing: 0, lineHeight: 1, whiteSpace: "nowrap", cursor: "pointer" }, children: [
|
|
5516
5523
|
/* @__PURE__ */ i(de, { d: q.chevronLeft, size: 18, sw: 1.8 }),
|
|
5517
5524
|
"Back"
|
|
5518
5525
|
] })
|
|
5519
|
-
] }),
|
|
5526
|
+
] }), gn = /* @__PURE__ */ i(de, { d: q.chevronRight, size: 17, sw: 1.6, style: { flex: "none", color: "var(--ink-45)" } }), aa = { main: "SETTINGS", lang: "LANGUAGE", subs: "SUBTITLES", audio: "AUDIO", export: "EXPORT" }[I], hn = { display: "flex", flexDirection: "column", gap: 2, paddingBottom: 14 }, Vn = u ? /* @__PURE__ */ i($t, { open: j, onClose: () => S(!1), title: aa, titleNode: I === "main" ? void 0 : ia, doneLabel: Ut.done, kind: I === "main" ? "settings" : "settings vs-sheet--page", sticky: !0, children: /* @__PURE__ */ i(os, { children: I === "lang" ? /* @__PURE__ */ f("div", { style: { display: "flex", flexDirection: "column" }, children: [
|
|
5520
5527
|
/* @__PURE__ */ i("div", { style: { position: "sticky", top: 0, zIndex: 1, padding: "4px 14px 10px", background: "var(--vs-surface-raised)" }, children: _s.search }),
|
|
5521
5528
|
_s.list
|
|
5522
|
-
] }) : I === "subs" ? /* @__PURE__ */ f("div", { style:
|
|
5529
|
+
] }) : I === "subs" ? /* @__PURE__ */ f("div", { style: hn, children: [
|
|
5523
5530
|
/* @__PURE__ */ f("div", { className: "srow", children: [
|
|
5524
5531
|
/* @__PURE__ */ f("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
5525
5532
|
/* @__PURE__ */ i("div", { className: "srow__t", children: "Show subtitles" }),
|
|
5526
5533
|
/* @__PURE__ */ i("div", { className: "srow__s", children: "Captions over the video" })
|
|
5527
5534
|
] }),
|
|
5528
|
-
/* @__PURE__ */ i(
|
|
5535
|
+
/* @__PURE__ */ i(Nt, { checked: we, onChange: Ee, label: "Show subtitles" })
|
|
5529
5536
|
] }),
|
|
5530
5537
|
/* @__PURE__ */ f("div", { className: "srow", children: [
|
|
5531
5538
|
/* @__PURE__ */ f("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
5532
5539
|
/* @__PURE__ */ i("div", { className: "srow__t", children: "Show speaker labels" }),
|
|
5533
5540
|
/* @__PURE__ */ i("div", { className: "srow__s", children: "Who is speaking, before each line" })
|
|
5534
5541
|
] }),
|
|
5535
|
-
/* @__PURE__ */ i(
|
|
5542
|
+
/* @__PURE__ */ i(Nt, { checked: cn, onChange: (T) => ve(T ? "on" : "off"), label: "Show speaker labels" })
|
|
5536
5543
|
] }),
|
|
5537
5544
|
/* @__PURE__ */ f("div", { className: "srow", children: [
|
|
5538
5545
|
/* @__PURE__ */ f("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
5539
5546
|
/* @__PURE__ */ i("div", { className: "srow__t", children: "Highlight words" }),
|
|
5540
5547
|
/* @__PURE__ */ i("div", { className: "srow__s", children: "Follow each word as it is spoken" })
|
|
5541
5548
|
] }),
|
|
5542
|
-
/* @__PURE__ */ i(
|
|
5549
|
+
/* @__PURE__ */ i(Nt, { checked: ln, onChange: (T) => Te(T ? "on" : "off"), label: "Highlight words" })
|
|
5543
5550
|
] })
|
|
5544
|
-
] }) : I === "audio" ? /* @__PURE__ */ f("div", { style:
|
|
5551
|
+
] }) : I === "audio" ? /* @__PURE__ */ f("div", { style: hn, children: [
|
|
5545
5552
|
/* @__PURE__ */ f("div", { className: "srow", children: [
|
|
5546
5553
|
/* @__PURE__ */ f("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
5547
5554
|
/* @__PURE__ */ i("div", { className: "srow__t", children: "Translate audio" }),
|
|
5548
5555
|
/* @__PURE__ */ i("div", { className: "srow__s", children: re ? Dn ? "Hear the translation read aloud instead of the original speech" : ne.canSpeak ? "Not available right now" : "Not available in this language" : "Pick a language to hear the translation read aloud" })
|
|
5549
5556
|
] }),
|
|
5550
|
-
/* @__PURE__ */ i(
|
|
5557
|
+
/* @__PURE__ */ i(Nt, { checked: _n, onChange: Oe, label: "Translate audio", disabled: !Dn || !re })
|
|
5551
5558
|
] }),
|
|
5552
5559
|
_n && ne.hasClone && /* @__PURE__ */ f("div", { className: "srow", children: [
|
|
5553
5560
|
/* @__PURE__ */ f("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
@@ -5559,35 +5566,35 @@ function Yc(t) {
|
|
|
5559
5566
|
/* @__PURE__ */ f("div", { className: "srow", children: [
|
|
5560
5567
|
/* @__PURE__ */ f("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
5561
5568
|
/* @__PURE__ */ i("div", { className: "srow__t", children: Ln }),
|
|
5562
|
-
/* @__PURE__ */ i("div", { className: "srow__s", children:
|
|
5569
|
+
/* @__PURE__ */ i("div", { className: "srow__s", children: Fa(H, Yn, "video", ne.on ? 0 : An.untilS) })
|
|
5563
5570
|
] }),
|
|
5564
|
-
/* @__PURE__ */ i(
|
|
5571
|
+
/* @__PURE__ */ i(Nt, { checked: H && ot, onChange: X, label: Ln, disabled: !ot || Yn === "unavailable" && !H })
|
|
5565
5572
|
] })
|
|
5566
|
-
] }) : I === "export" ? /* @__PURE__ */ f("div", { style:
|
|
5573
|
+
] }) : I === "export" ? /* @__PURE__ */ f("div", { style: hn, children: [
|
|
5567
5574
|
nr("srt", "Subtitles", "SRT / VTT caption cues, ready for a video editor or a player"),
|
|
5568
5575
|
nr("pdf", "PDF", "Formatted transcript in paragraphs, with timestamps and speaker labels")
|
|
5569
|
-
] }) : /* @__PURE__ */ i("div", { style:
|
|
5576
|
+
] }) : /* @__PURE__ */ i("div", { style: hn, children: [
|
|
5570
5577
|
_e.can && R.language && /* @__PURE__ */ f("div", { className: "srow srow--tap", role: "button", onClick: () => oe("lang"), children: [
|
|
5571
5578
|
/* @__PURE__ */ f("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
5572
5579
|
/* @__PURE__ */ i("div", { className: "srow__t", children: "Language" }),
|
|
5573
5580
|
/* @__PURE__ */ i("div", { className: "srow__s", children: re ? `Translated to ${_e.label ?? re.toUpperCase()}` : "Original language" })
|
|
5574
5581
|
] }),
|
|
5575
5582
|
/* @__PURE__ */ i("span", { style: { fontSize: 18, lineHeight: 1 }, children: _e.flag }),
|
|
5576
|
-
|
|
5583
|
+
gn
|
|
5577
5584
|
] }, "lang"),
|
|
5578
5585
|
R.subtitles && /* @__PURE__ */ f("div", { className: "srow srow--tap", role: "button", onClick: () => oe("subs"), children: [
|
|
5579
5586
|
/* @__PURE__ */ f("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
5580
5587
|
/* @__PURE__ */ i("div", { className: "srow__t", children: "Subtitles" }),
|
|
5581
5588
|
/* @__PURE__ */ i("div", { className: "srow__s", children: we ? "On · speaker labels and word highlighting" : "Off" })
|
|
5582
5589
|
] }),
|
|
5583
|
-
|
|
5590
|
+
gn
|
|
5584
5591
|
] }, "subs"),
|
|
5585
5592
|
R.audio && /* @__PURE__ */ f("div", { className: "srow srow--tap", role: "button", onClick: () => oe("audio"), children: [
|
|
5586
5593
|
/* @__PURE__ */ f("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
5587
5594
|
/* @__PURE__ */ i("div", { className: "srow__t", children: "Audio" }),
|
|
5588
|
-
/* @__PURE__ */ i("div", { className: "srow__s", children:
|
|
5595
|
+
/* @__PURE__ */ i("div", { className: "srow__s", children: Gi })
|
|
5589
5596
|
] }),
|
|
5590
|
-
|
|
5597
|
+
gn
|
|
5591
5598
|
] }, "audio"),
|
|
5592
5599
|
R.export && Vt && !!B && /* @__PURE__ */ f("div", { className: "srow srow--tap", role: "button", onClick: () => oe("export"), children: [
|
|
5593
5600
|
/* @__PURE__ */ f("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
@@ -5597,7 +5604,7 @@ function Yc(t) {
|
|
|
5597
5604
|
] }),
|
|
5598
5605
|
/* @__PURE__ */ i("div", { className: "srow__s", children: "Subtitles (SRT / VTT) or a PDF of the transcript" })
|
|
5599
5606
|
] }),
|
|
5600
|
-
|
|
5607
|
+
gn
|
|
5601
5608
|
] }, "export")
|
|
5602
5609
|
].filter(Boolean).flatMap((T, pe) => pe ? [/* @__PURE__ */ i("div", { className: "sdiv" }, `d${pe}`), T] : [T]) }) }) }) : /* @__PURE__ */ i($t, { open: j, onClose: () => S(!1), title: Ut.settings, doneLabel: Ut.done, drawer: r, children: /* @__PURE__ */ f("div", { style: { display: "flex", flexDirection: "column", gap: 2 }, children: [
|
|
5603
5610
|
_e.can && /* @__PURE__ */ f(Pe, { children: [
|
|
@@ -5615,8 +5622,8 @@ function Yc(t) {
|
|
|
5615
5622
|
/* @__PURE__ */ i("div", { className: "sdiv" })
|
|
5616
5623
|
] }),
|
|
5617
5624
|
t.settingsExtra
|
|
5618
|
-
] }) }),
|
|
5619
|
-
|
|
5625
|
+
] }) }), It = P && At && Qe && /* @__PURE__ */ i(
|
|
5626
|
+
Ai,
|
|
5620
5627
|
{
|
|
5621
5628
|
page: (t.layout ?? "embed") === "page",
|
|
5622
5629
|
picture: $s,
|
|
@@ -5627,7 +5634,7 @@ function Yc(t) {
|
|
|
5627
5634
|
cc: R.subtitles ? { on: we, onToggle: () => Ee((T) => !T) } : void 0,
|
|
5628
5635
|
noFull: !R.fullscreen,
|
|
5629
5636
|
ad: In,
|
|
5630
|
-
wait: tt && !Sn ? /* @__PURE__ */ i(fc, { state: tt, line: an ? Fs.map((T) => T.t + T.sp).join("") : null, onRetry:
|
|
5637
|
+
wait: tt && !Sn ? /* @__PURE__ */ i(fc, { state: tt, line: an ? Fs.map((T) => T.t + T.sp).join("") : null, onRetry: Zi, onOriginal: qi }) : D.edgeWait ? `Transcribing ${Math.round(U)}% — it plays on as more is written` : null,
|
|
5631
5638
|
pct: Ce ? Math.round(U) : null,
|
|
5632
5639
|
sub: we && Je ? { who: dn ? zs(G, Je.speaker) : null, color: dn ? dn.fg ?? `var(--lane-${dn.lane})` : "#fff", words: Fs, cursor: Gr(D, D.idx, on) } : null,
|
|
5633
5640
|
chip: Rn(r ? Un : { ...Un, width: 64, padding: "0 6px" }, r ? void 0 : "sm"),
|
|
@@ -5637,12 +5644,12 @@ function Yc(t) {
|
|
|
5637
5644
|
voices: null,
|
|
5638
5645
|
voicesBtn: u ? null : Qs,
|
|
5639
5646
|
sheetOpen: ne.sheetsOpen || j,
|
|
5640
|
-
onShare: u && R.share ?
|
|
5647
|
+
onShare: u && R.share ? ra : void 0,
|
|
5641
5648
|
onSettings: u && R.settings ? () => {
|
|
5642
5649
|
ne.closePicker(), S((T) => !T);
|
|
5643
5650
|
} : void 0,
|
|
5644
5651
|
paused: t.compact ? null : { title: Ke, summary: St.state === "ready" ? St.summary ?? null : null, share: R.share ? { url: Js, at: D.t } : null },
|
|
5645
|
-
copied:
|
|
5652
|
+
copied: ta ? /* @__PURE__ */ f("div", { className: "gfull__toast", "aria-live": "polite", children: [
|
|
5646
5653
|
/* @__PURE__ */ i(de, { d: q.check, size: 13, sw: 2 }),
|
|
5647
5654
|
"Link copied"
|
|
5648
5655
|
] }) : en ? /* @__PURE__ */ f("div", { className: "gfull__toast gfull__soundtip", "aria-live": "polite", children: [
|
|
@@ -5651,7 +5658,7 @@ function Yc(t) {
|
|
|
5651
5658
|
] }) : Ys ? /* @__PURE__ */ f("div", { className: "gfull__toast", role: "status", "aria-live": "polite", children: [
|
|
5652
5659
|
/* @__PURE__ */ i(ct, { size: 13, color: "#eef0f8", track: "rgba(255,255,255,.25)" }),
|
|
5653
5660
|
Ys
|
|
5654
|
-
] }) : ne.on && (He ?
|
|
5661
|
+
] }) : ne.on && (He ? Ct.missing != null : D.silent) ? /* @__PURE__ */ f("div", { className: "gfull__toast", role: "status", "aria-live": "polite", children: [
|
|
5655
5662
|
/* @__PURE__ */ i(ct, { size: 13, color: "#eef0f8", track: "rgba(255,255,255,.25)" }),
|
|
5656
5663
|
`${rn || "Translated"} voice is still being prepared · playing with subtitles`
|
|
5657
5664
|
] }) : null,
|
|
@@ -5659,12 +5666,12 @@ function Yc(t) {
|
|
|
5659
5666
|
qt(!0), Cn();
|
|
5660
5667
|
},
|
|
5661
5668
|
onClose: u ? void 0 : () => {
|
|
5662
|
-
qt(!1),
|
|
5669
|
+
qt(!1), b(!1);
|
|
5663
5670
|
}
|
|
5664
5671
|
}
|
|
5665
5672
|
);
|
|
5666
5673
|
Y(() => {
|
|
5667
|
-
!u && P && !At && (qt(!1),
|
|
5674
|
+
!u && P && !At && (qt(!1), b(!1));
|
|
5668
5675
|
}, [u, P, At]);
|
|
5669
5676
|
const sr = Ce && /* @__PURE__ */ f("div", { className: `pubprog${r ? " pubprog--desk" : ""}${w ? " pubprog--find" : ""}`, children: [
|
|
5670
5677
|
/* @__PURE__ */ f("div", { className: "pubprog__row", children: [
|
|
@@ -5674,20 +5681,20 @@ function Yc(t) {
|
|
|
5674
5681
|
/* @__PURE__ */ i("span", { className: "s", children: Ft })
|
|
5675
5682
|
] }),
|
|
5676
5683
|
!r && /* @__PURE__ */ i("div", { className: "pubprog__bar", style: { marginTop: 8 }, children: /* @__PURE__ */ i("div", { style: { width: `${U}%` } }) })
|
|
5677
|
-
] }), Wn = s && /* @__PURE__ */ i("div", { className: "hint", style: { padding: "30px 20px", textAlign: "center", fontSize: 13 }, children: "This link is no longer shared. Ask the person who sent it for a new one." }), rr = /* @__PURE__ */ i(ql, { model: G, rows: se, player: D, tail: Wt, tailFg: it, running: Ce, desk: r, feedRef:
|
|
5684
|
+
] }), Wn = s && /* @__PURE__ */ i("div", { className: "hint", style: { padding: "30px 20px", textAlign: "center", fontSize: 13 }, children: "This link is no longer shared. Ask the person who sent it for a new one." }), rr = /* @__PURE__ */ i(ql, { model: G, rows: se, player: D, tail: Wt, tailFg: it, running: Ce, desk: r, feedRef: bt, listener: !0, showLabels: cn, find: p, findOpen: !r && w, lang: $e, warm: Q, onVisible: zt, wordHl: ln }), Fn = /* @__PURE__ */ i(Xo, { error: h ?? me ?? (xn && P ? null : D.error) ?? ne.error, onClose: () => {
|
|
5678
5685
|
M(null), V(), D.clearError(), ne.clearError();
|
|
5679
5686
|
} }), ir = [W ? Tt(W) : null, ee ? ee.toUpperCase() : null, fe || "Read-only copy"].filter(Boolean).join(" · "), ar = (T) => /* @__PURE__ */ i("div", { className: "ctrans", children: ne.noVoice ? ne.noVoiceNote : /* @__PURE__ */ f(Pe, { children: [
|
|
5680
5687
|
/* @__PURE__ */ f("div", { className: "ctrans__row", children: [
|
|
5681
5688
|
/* @__PURE__ */ i("span", { className: "ctrans__sp", "aria-hidden": "true" }),
|
|
5682
5689
|
/* @__PURE__ */ f("div", { className: "ctrans__mid", children: [
|
|
5683
5690
|
/* @__PURE__ */ i("button", { type: "button", className: "ctrans__step", "aria-label": "Previous segment", title: "Previous segment", style: { opacity: D.idx <= 0 ? 0.3 : 1 }, onClick: D.prev, children: /* @__PURE__ */ i(de, { d: q.chevronLeft, size: 16, sw: 1.8 }) }),
|
|
5684
|
-
/* @__PURE__ */ i("button", { type: "button", className: "ctrans__play", "aria-label": ne.relang ? "Preparing audio" : D.playing ? "Pause" : "Play", title: ne.relang ? "Preparing audio…" : ne.playTitle ?? (D.playing ? "Pause" : "Play"), disabled: !kt, onClick: D.toggle, children: ne.relang ? /* @__PURE__ */ i("span", { className: "ctrans__spin" }) : /* @__PURE__ */ i("svg", { viewBox: "0 0 24 24", width: 16, height: 16, fill: "currentColor", "aria-hidden": "true", style: D.playing ? void 0 : { marginLeft: 2 }, children: D.playing ?
|
|
5691
|
+
/* @__PURE__ */ i("button", { type: "button", className: "ctrans__play", "aria-label": ne.relang ? "Preparing audio" : D.playing ? "Pause" : "Play", title: ne.relang ? "Preparing audio…" : ne.playTitle ?? (D.playing ? "Pause" : "Play"), disabled: !kt, onClick: D.toggle, children: ne.relang ? /* @__PURE__ */ i("span", { className: "ctrans__spin" }) : /* @__PURE__ */ i("svg", { viewBox: "0 0 24 24", width: 16, height: 16, fill: "currentColor", "aria-hidden": "true", style: D.playing ? void 0 : { marginLeft: 2 }, children: D.playing ? Yl : Zr }) }),
|
|
5685
5692
|
/* @__PURE__ */ i("button", { type: "button", className: "ctrans__step", "aria-label": "Next segment", title: "Next segment", style: { opacity: D.idx >= se.length - 1 ? 0.3 : 1 }, onClick: D.next, children: /* @__PURE__ */ i(de, { d: q.chevronRight, size: 16, sw: 1.8 }) })
|
|
5686
5693
|
] }),
|
|
5687
5694
|
/* @__PURE__ */ i("span", { className: "ctrans__mute", children: sn(36) })
|
|
5688
5695
|
] }),
|
|
5689
|
-
/* @__PURE__ */ i("div", { className: "ctrans__scrub", children:
|
|
5690
|
-
] }) }),
|
|
5696
|
+
/* @__PURE__ */ i("div", { className: "ctrans__scrub", children: Bi(T) })
|
|
5697
|
+
] }) }), oa = jl("ga", { tabs: Rt, cur: N, pref: (Dr = Rt[0]) == null ? void 0 : Dr.key, onPick: m }), or = Math.max(0, Math.min(100, Math.round(U))), la = _ && /* @__PURE__ */ f("div", { className: "gfull gfull--hold", "data-theme": "dark", role: "status", "aria-live": "polite", children: [
|
|
5691
5698
|
Qe && /* @__PURE__ */ i("div", { className: "gfull__holdbg", style: { backgroundImage: `url(https://i.ytimg.com/vi/${Qe}/hqdefault.jpg)` } }),
|
|
5692
5699
|
/* @__PURE__ */ i("div", { className: "gfull__hold", children: n ? /* @__PURE__ */ f(Pe, { children: [
|
|
5693
5700
|
Ke && /* @__PURE__ */ i("div", { className: "gfull__holdt", children: Ke }),
|
|
@@ -5704,16 +5711,16 @@ function Yc(t) {
|
|
|
5704
5711
|
var T;
|
|
5705
5712
|
(T = fn.current) == null || T.call(fn, lr);
|
|
5706
5713
|
}, [lr]);
|
|
5707
|
-
const [
|
|
5714
|
+
const [ca, Gn] = O(!1), Zn = !!It && !_ && (He ? !!D.ended : !D.playing && D.dur > 0 && D.t >= D.dur - 0.5);
|
|
5708
5715
|
Y(() => {
|
|
5709
5716
|
Zn || Gn(!1);
|
|
5710
5717
|
}, [Zn]);
|
|
5711
|
-
const
|
|
5718
|
+
const ua = t.endCard !== !1 && Zn && !ca && /* @__PURE__ */ i(kc, { options: { appUrl: t.appUrl, ...t.endCard || {} }, onStarted: t.onStarted, onClose: () => Gn(!0), onReplay: () => {
|
|
5712
5719
|
Gn(!0), et.current = !0, D.seekFrac ? D.seekFrac(0) : D.seekRow(0), D.playing || D.toggle();
|
|
5713
5720
|
} });
|
|
5714
5721
|
if (u) return /* @__PURE__ */ f(Pe, { children: [
|
|
5715
|
-
s ? /* @__PURE__ */ i("div", { className: "gfull", "data-theme": "dark", children: Wn }) :
|
|
5716
|
-
|
|
5722
|
+
s ? /* @__PURE__ */ i("div", { className: "gfull", "data-theme": "dark", children: Wn }) : la || It || /* @__PURE__ */ i("div", { className: "gfull", "data-theme": "dark" }),
|
|
5723
|
+
ua,
|
|
5717
5724
|
Fn
|
|
5718
5725
|
] });
|
|
5719
5726
|
if (r) {
|
|
@@ -5741,28 +5748,28 @@ function Yc(t) {
|
|
|
5741
5748
|
Ss
|
|
5742
5749
|
] })
|
|
5743
5750
|
] }),
|
|
5744
|
-
pe && /* @__PURE__ */ f(
|
|
5751
|
+
pe && /* @__PURE__ */ f(Ol, { id: "ga", className: "listenerside", gap: 20, plain: !0, children: [
|
|
5745
5752
|
!ne.sidePanel && T,
|
|
5746
5753
|
!ne.sidePanel && Bs,
|
|
5747
|
-
!ne.sidePanel && Rt.length > 0 && /* @__PURE__ */ i("div", { "data-panel-grid": "", className: "listenerside__panels", children: /* @__PURE__ */ i(
|
|
5754
|
+
!ne.sidePanel && Rt.length > 0 && /* @__PURE__ */ i("div", { "data-panel-grid": "", className: "listenerside__panels", children: /* @__PURE__ */ i(zl, { col: oa, order: ["summary", "export"], onPick: m, grip: { summary: 40, export: 28 }, render: (Re) => /* @__PURE__ */ i(Sr, { panel: !0, children: As(Re) }) }) }),
|
|
5748
5755
|
ne.sidePanel
|
|
5749
5756
|
] })
|
|
5750
5757
|
] }),
|
|
5751
|
-
!
|
|
5752
|
-
!(u &&
|
|
5753
|
-
|
|
5758
|
+
!It && ne.sheets,
|
|
5759
|
+
!(u && It) && Vn,
|
|
5760
|
+
It,
|
|
5754
5761
|
Fn
|
|
5755
5762
|
] });
|
|
5756
5763
|
}
|
|
5757
|
-
const
|
|
5758
|
-
/* @__PURE__ */ i(
|
|
5764
|
+
const da = Rt.length > 0 && !w && /* @__PURE__ */ i("div", { className: "txwidget", children: /* @__PURE__ */ f(Sr, { panel: !0, children: [
|
|
5765
|
+
/* @__PURE__ */ i(Oi, { tabs: Rt, current: N, onPick: m, gap: N !== "none" }),
|
|
5759
5766
|
N !== "none" && As(N)
|
|
5760
5767
|
] }) });
|
|
5761
5768
|
return /* @__PURE__ */ f(Pe, { children: [
|
|
5762
5769
|
/* @__PURE__ */ i(cc, { dark: a, title: n ? Ke : "", subline: n ? ir : "", onOptions: () => S(!0), optionsActive: j }),
|
|
5763
5770
|
Wn,
|
|
5764
5771
|
sr,
|
|
5765
|
-
!s &&
|
|
5772
|
+
!s && da,
|
|
5766
5773
|
!s && Bs,
|
|
5767
5774
|
!s && /* @__PURE__ */ f("div", { style: { position: "relative", flex: 1, minHeight: 0, display: "flex", flexDirection: "column" }, children: [
|
|
5768
5775
|
Ht,
|
|
@@ -5776,60 +5783,60 @@ function Yc(t) {
|
|
|
5776
5783
|
/* @__PURE__ */ i("div", { style: { flex: 1, minWidth: 0 }, children: Ss })
|
|
5777
5784
|
] })
|
|
5778
5785
|
] }),
|
|
5779
|
-
!
|
|
5780
|
-
!(u &&
|
|
5781
|
-
|
|
5786
|
+
!It && ne.sheets,
|
|
5787
|
+
!(u && It) && Vn,
|
|
5788
|
+
It,
|
|
5782
5789
|
Fn
|
|
5783
5790
|
] });
|
|
5784
5791
|
}
|
|
5785
5792
|
export {
|
|
5786
|
-
|
|
5787
|
-
|
|
5793
|
+
ml as ExportPanel,
|
|
5794
|
+
Ai as FullVideo,
|
|
5788
5795
|
oc as MiniPlayer,
|
|
5789
5796
|
_l as MuteButton,
|
|
5790
5797
|
Wl as NO_SEEK,
|
|
5791
|
-
|
|
5792
|
-
|
|
5798
|
+
Yl as PAUSE_D,
|
|
5799
|
+
Zr as PLAY_D,
|
|
5793
5800
|
Gl as PUB_SIDE,
|
|
5794
5801
|
Vc as PanelSeek,
|
|
5795
|
-
|
|
5802
|
+
Co as PlayerApiProvider,
|
|
5796
5803
|
Ln as REMOVE_BG_LABEL,
|
|
5797
|
-
|
|
5798
|
-
|
|
5799
|
-
|
|
5800
|
-
|
|
5804
|
+
Va as REMOVE_BG_NOTE,
|
|
5805
|
+
el as ReplayScrub,
|
|
5806
|
+
ll as SpeakerCast,
|
|
5807
|
+
wl as SummaryPanel,
|
|
5801
5808
|
Hc as Transport,
|
|
5802
5809
|
Kl as TxFind,
|
|
5803
5810
|
ql as TxLines,
|
|
5804
5811
|
Wc as VocalStackPlayer,
|
|
5805
|
-
|
|
5806
|
-
|
|
5807
|
-
|
|
5812
|
+
cl as VoiceSheetBody,
|
|
5813
|
+
El as YtFollow,
|
|
5814
|
+
Fa as bedNote,
|
|
5808
5815
|
qt as browserFull,
|
|
5809
5816
|
Et as lineEnd,
|
|
5810
|
-
|
|
5817
|
+
bi as lineWords,
|
|
5811
5818
|
ss as pictureT,
|
|
5812
5819
|
yn as placePosition,
|
|
5813
5820
|
Tn as realFull,
|
|
5814
5821
|
Bc as setErrorReporter,
|
|
5815
|
-
|
|
5816
|
-
|
|
5822
|
+
Kr as setFullTarget,
|
|
5823
|
+
Al as snapPosition,
|
|
5817
5824
|
Gr as spokenWordOf,
|
|
5818
|
-
|
|
5819
|
-
|
|
5825
|
+
Ga as trackPlan,
|
|
5826
|
+
wi as useApi,
|
|
5820
5827
|
hl as useArchiveVoice,
|
|
5821
|
-
|
|
5828
|
+
so as useBackgroundBed,
|
|
5822
5829
|
$l as useDuck,
|
|
5823
5830
|
Jl as useFindPull,
|
|
5824
5831
|
Ul as useFlash,
|
|
5825
5832
|
Yt as usePlayerApi,
|
|
5826
|
-
|
|
5827
|
-
|
|
5828
|
-
|
|
5833
|
+
Ni as useSeparatedTrack,
|
|
5834
|
+
yl as useSummaryIn,
|
|
5835
|
+
Po as useTranscript,
|
|
5829
5836
|
Hl as useTxPlayer,
|
|
5830
5837
|
Zl as useTxVoice,
|
|
5831
|
-
|
|
5832
|
-
|
|
5838
|
+
rl as useViewportTranslation,
|
|
5839
|
+
Ml as useVoiceCatalogue,
|
|
5833
5840
|
Bl as useYtLead
|
|
5834
5841
|
};
|
|
5835
5842
|
//# sourceMappingURL=index.js.map
|