@wexio/messenger-widget-react 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -150
- package/dist/{widget-react-BfPdgAQ-.js → widget-react-A2LiLuw0.js} +1151 -1006
- package/dist/{widget-react-DwL_rsx_.js → widget-react-B0fjhAJD.js} +72 -56
- package/dist/{widget-react-D-QrEVpv.js → widget-react-BC-2nOW4.js} +1 -1
- package/dist/{widget-react-CZs0xRrr.js → widget-react-BMpc2uNT2.js} +1 -1
- package/dist/widget-react-BNG2P8TD.js +337 -0
- package/dist/widget-react-BcPE3ZoY.js +337 -0
- package/dist/widget-react-BdgqHrUV.js +337 -0
- package/dist/widget-react-BdohGq4s2.js +337 -0
- package/dist/widget-react-BthaWcns.js +337 -0
- package/dist/widget-react-C-8yYmmX2.js +337 -0
- package/dist/widget-react-C2atp9Wc.js +337 -0
- package/dist/widget-react-C7J17SWR.js +337 -0
- package/dist/{widget-react-BAOIDvhV.js → widget-react-CB6Jxluy.js} +1362 -1328
- package/dist/widget-react-CKZ5tNDZ.js +337 -0
- package/dist/widget-react-CLRkytx8.js +337 -0
- package/dist/widget-react-CMvMg68M.js +337 -0
- package/dist/widget-react-COu0Pgwj2.js +337 -0
- package/dist/widget-react-CSqqxBrZ2.js +337 -0
- package/dist/widget-react-CVLlTbB_2.js +337 -0
- package/dist/{widget-react-DtOeNw5z.js → widget-react-CVx50FQP2.js} +18 -9
- package/dist/{widget-react-AgErOR36.js → widget-react-CYlAGnu_2.js} +19 -7
- package/dist/{widget-react-CPYwD6FR.js → widget-react-CdjAa7d12.js} +2 -2
- package/dist/widget-react-Cfgp7JeP.js +337 -0
- package/dist/widget-react-CozbWJT5.js +337 -0
- package/dist/widget-react-Crxd4qSM.js +337 -0
- package/dist/widget-react-D3ZFysG9.js +337 -0
- package/dist/widget-react-DAT3UgdW2.js +285 -0
- package/dist/widget-react-DRyfg-bL.js +337 -0
- package/dist/widget-react-DhC6mv1r.js +337 -0
- package/dist/widget-react-DiF8_rWm.js +337 -0
- package/dist/widget-react-DjXlAiu5.js +337 -0
- package/dist/widget-react-DkhMvmdX2.js +337 -0
- package/dist/{widget-react-CUuKGDZN.js → widget-react-DqRO9d652.js} +2 -2
- package/dist/widget-react-Dq_sYldT.js +337 -0
- package/dist/{widget-react-Cj_zbk_F.js → widget-react-Dr-NACA0.js} +19 -7
- package/dist/widget-react-DviuEPoq.js +337 -0
- package/dist/{widget-react-CDPzwV1i.js → widget-react-DxkbC0xE.js} +1823 -1833
- package/dist/widget-react-JOt2DXbR.js +337 -0
- package/dist/widget-react-L8PMkUr7.js +337 -0
- package/dist/widget-react-LWisk9g6.js +337 -0
- package/dist/{widget-react-DSw03RG7.js → widget-react-_xdGdTzK.js} +1 -1
- package/dist/widget-react-fNts-U3I2.js +337 -0
- package/dist/widget-react-iKCOmnGh.js +337 -0
- package/dist/{widget-react-C5COLy3m.js → widget-react-wTlmXnex2.js} +1 -1
- package/dist/widget-react-xzOjEdXk2.js +337 -0
- package/dist/widget-react.d.ts +10 -19
- package/dist/widget-react.js +4028 -3450
- package/package.json +1 -1
- package/dist/widget-react-AgErOR36.js.map +0 -1
- package/dist/widget-react-BAOIDvhV.js.map +0 -1
- package/dist/widget-react-BfPdgAQ-.js.map +0 -1
- package/dist/widget-react-BxvW64LH.js.map +0 -1
- package/dist/widget-react-C5COLy3m.js.map +0 -1
- package/dist/widget-react-CAWxn8I0.js +0 -247
- package/dist/widget-react-CAWxn8I0.js.map +0 -1
- package/dist/widget-react-CDPzwV1i.js.map +0 -1
- package/dist/widget-react-CPYwD6FR.js.map +0 -1
- package/dist/widget-react-CUBFPjaV.js.map +0 -1
- package/dist/widget-react-CUuKGDZN.js.map +0 -1
- package/dist/widget-react-CZs0xRrr.js.map +0 -1
- package/dist/widget-react-Cj_zbk_F.js.map +0 -1
- package/dist/widget-react-D-QrEVpv.js.map +0 -1
- package/dist/widget-react-D8TPnM9r.js.map +0 -1
- package/dist/widget-react-DE7AVrCo.js.map +0 -1
- package/dist/widget-react-DOX6j7_Q.js.map +0 -1
- package/dist/widget-react-DSw03RG7.js.map +0 -1
- package/dist/widget-react-Dew7YaLU.js.map +0 -1
- package/dist/widget-react-DtOeNw5z.js.map +0 -1
- package/dist/widget-react-DwL_rsx_.js.map +0 -1
- package/dist/widget-react.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget-react-CPYwD6FR.js","names":[],"sources":["../node_modules/lucide-react/dist/esm/icons/square.mjs","../node_modules/wavesurfer.js/dist/plugins/record.esm.js","../components/widget/tabs/messages-tab/composer/voice-recorder-bar/helpers.ts","../components/widget/tabs/messages-tab/composer/voice-recorder-bar/index.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }]\n];\nconst Square = createLucideIcon(\"square\", __iconNode);\n\nexport { __iconNode, Square as default };\n//# sourceMappingURL=square.mjs.map\n","function i(i,t,e,s){return new(e||(e=Promise))((function(r,o){function n(i){try{d(s.next(i))}catch(i){o(i)}}function a(i){try{d(s.throw(i))}catch(i){o(i)}}function d(i){var t;i.done?r(i.value):(t=i.value,t instanceof e?t:new e((function(i){i(t)}))).then(n,a)}d((s=s.apply(i,t||[])).next())}))}\"function\"==typeof SuppressedError&&SuppressedError;class t{constructor(){this.listeners={}}on(i,t,e){if(this.listeners[i]||(this.listeners[i]=new Set),null==e?void 0:e.once){const e=(...s)=>{this.un(i,e),t(...s)};return this.listeners[i].add(e),()=>this.un(i,e)}return this.listeners[i].add(t),()=>this.un(i,t)}un(i,t){var e;null===(e=this.listeners[i])||void 0===e||e.delete(t)}once(i,t){return this.on(i,t,{once:!0})}unAll(){this.listeners={}}emit(i,...t){this.listeners[i]&&this.listeners[i].forEach((i=>i(...t)))}}class e extends t{constructor(i){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=i}onInit(){}_init(i){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=i,this.onInit()}destroy(){this.emit(\"destroy\"),this.subscriptions.forEach((i=>i())),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}}class s extends t{constructor(){super(...arguments),this.animationFrameId=null,this.isRunning=!1}start(){if(this.isRunning)return;this.isRunning=!0;const i=()=>{this.isRunning&&(this.emit(\"tick\"),this.animationFrameId=requestAnimationFrame(i))};i()}stop(){this.isRunning=!1,null!==this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null)}destroy(){this.stop()}}const r=100,o=[\"audio/webm\",\"audio/wav\",\"audio/mpeg\",\"audio/mp4\",\"audio/mp3\"];class n extends e{constructor(i){var t,e,r,o,n,a;super(Object.assign(Object.assign({},i),{audioBitsPerSecond:null!==(t=i.audioBitsPerSecond)&&void 0!==t?t:128e3,scrollingWaveform:null!==(e=i.scrollingWaveform)&&void 0!==e&&e,scrollingWaveformWindow:null!==(r=i.scrollingWaveformWindow)&&void 0!==r?r:5,continuousWaveform:null!==(o=i.continuousWaveform)&&void 0!==o&&o,renderRecordedAudio:null===(n=i.renderRecordedAudio)||void 0===n||n,mediaRecorderTimeslice:null!==(a=i.mediaRecorderTimeslice)&&void 0!==a?a:void 0})),this.stream=null,this.mediaRecorder=null,this.dataWindow=null,this.isWaveformPaused=!1,this.lastStartTime=0,this.lastDuration=0,this.duration=0,this.micStream=null,this.recordedBlobUrl=null,this.timer=new s,this.subscriptions.push(this.timer.on(\"tick\",(()=>{const i=performance.now()-this.lastStartTime;this.duration=this.isPaused()?this.duration:this.lastDuration+i,this.emit(\"record-progress\",this.duration)})))}static create(i){return new n(i||{})}renderMicStream(i){var t;const e=new AudioContext,s=e.createMediaStreamSource(i),o=e.createAnalyser();s.connect(o),(this.options.continuousWaveform||this.options.scrollingWaveform)&&(o.fftSize=32);const n=o.frequencyBinCount,a=new Float32Array(n);let d=0;this.wavesurfer&&(null!==(t=this.originalOptions)&&void 0!==t||(this.originalOptions=Object.assign({},this.wavesurfer.options)),this.wavesurfer.options.interact=!1,this.options.scrollingWaveform&&(this.wavesurfer.options.cursorWidth=0,this.wavesurfer.options.normalize=!0,this.wavesurfer.options.maxPeak=1));const h=setInterval((()=>{var i,t,e,s;if(!this.isWaveformPaused){if(o.getFloatTimeDomainData(a),this.options.scrollingWaveform){const i=Math.floor((this.options.scrollingWaveformWindow||0)*r);let t=0;for(let i=0;i<n;i++){const e=Math.abs(a[i]);e>t&&(t=e)}this.dataWindow||(this.dataWindow=new Float32Array(i));const e=new Float32Array(i);if(this.dataWindow&&this.dataWindow.length>0){const t=i-1,s=this.dataWindow.slice(-t);e.set(s,0)}e[i-1]=t,this.dataWindow=e}else if(this.options.continuousWaveform){if(!this.dataWindow){const e=this.options.continuousWaveformDuration?Math.round(this.options.continuousWaveformDuration*r):(null!==(t=null===(i=this.wavesurfer)||void 0===i?void 0:i.getWidth())&&void 0!==t?t:0)*window.devicePixelRatio;this.dataWindow=new Float32Array(e)}let e=0;for(let i=0;i<n;i++){const t=Math.abs(a[i]);t>e&&(e=t)}if(d+1>this.dataWindow.length){const i=new Float32Array(2*this.dataWindow.length);i.set(this.dataWindow,0),this.dataWindow=i}this.dataWindow[d]=e,d++}else this.dataWindow=a;if(this.wavesurfer){const i=(null!==(s=null===(e=this.dataWindow)||void 0===e?void 0:e.length)&&void 0!==s?s:0)/r;this.wavesurfer.load(\"\",[this.dataWindow],this.options.scrollingWaveform?this.options.scrollingWaveformWindow:i).then((()=>{this.wavesurfer&&this.options.continuousWaveform&&(this.wavesurfer.setTime(this.getDuration()/1e3),this.wavesurfer.options.minPxPerSec||this.wavesurfer.setOptions({minPxPerSec:this.wavesurfer.getWidth()/this.wavesurfer.getDuration()}))})).catch((i=>{console.error(\"Error rendering real-time recording data:\",i)}))}}}),10);return{onDestroy:()=>{clearInterval(h),null==s||s.disconnect(),null==e||e.close()},onEnd:()=>{this.isWaveformPaused=!0,this.stopMic()}}}startMic(t){return i(this,void 0,void 0,(function*(){let i;this.micStream&&this.stopMic();try{i=yield navigator.mediaDevices.getUserMedia({audio:null==t||t})}catch(i){throw new Error(\"Error accessing the microphone: \"+i.message)}const e=this.renderMicStream(i);return this.micStream=e,this.unsubscribeDestroy=this.once(\"destroy\",e.onDestroy),this.unsubscribeRecordEnd=this.once(\"record-end\",e.onEnd),this.stream=i,i}))}stopMic(){var i,t,e;null===(i=this.micStream)||void 0===i||i.onDestroy(),null===(t=this.unsubscribeDestroy)||void 0===t||t.call(this),null===(e=this.unsubscribeRecordEnd)||void 0===e||e.call(this),this.micStream=null,this.unsubscribeDestroy=void 0,this.unsubscribeRecordEnd=void 0,this.stream&&(this.stream.getTracks().forEach((i=>i.stop())),this.stream=null,this.mediaRecorder=null)}startRecording(t){return i(this,void 0,void 0,(function*(){const i=this.stream||(yield this.startMic(t));this.dataWindow=null;const e=this.mediaRecorder||new MediaRecorder(i,{mimeType:this.options.mimeType||o.find((i=>MediaRecorder.isTypeSupported(i))),audioBitsPerSecond:this.options.audioBitsPerSecond});this.mediaRecorder=e,this.stopRecording();const s=[];e.ondataavailable=i=>{i.data.size>0&&s.push(i.data),this.emit(\"record-data-available\",i.data)};const r=i=>{var t;const r=new Blob(s,{type:e.mimeType});this.emit(i,r),this.options.renderRecordedAudio&&(this.applyOriginalOptionsIfNeeded(),this.recordedBlobUrl&&URL.revokeObjectURL(this.recordedBlobUrl),this.recordedBlobUrl=URL.createObjectURL(r),null===(t=this.wavesurfer)||void 0===t||t.load(this.recordedBlobUrl))};e.onpause=()=>r(\"record-pause\"),e.onstop=()=>r(\"record-end\"),e.start(this.options.mediaRecorderTimeslice),this.lastStartTime=performance.now(),this.lastDuration=0,this.duration=0,this.isWaveformPaused=!1,this.timer.start(),this.emit(\"record-start\")}))}getDuration(){return this.duration}isRecording(){var i;return\"recording\"===(null===(i=this.mediaRecorder)||void 0===i?void 0:i.state)}isPaused(){var i;return\"paused\"===(null===(i=this.mediaRecorder)||void 0===i?void 0:i.state)}isActive(){var i;return\"inactive\"!==(null===(i=this.mediaRecorder)||void 0===i?void 0:i.state)}stopRecording(){var i;this.isActive()&&(null===(i=this.mediaRecorder)||void 0===i||i.stop(),this.timer.stop())}pauseRecording(){var i,t;this.isRecording()&&(this.isWaveformPaused=!0,null===(i=this.mediaRecorder)||void 0===i||i.requestData(),null===(t=this.mediaRecorder)||void 0===t||t.pause(),this.timer.stop(),this.lastDuration=this.duration)}resumeRecording(){var i;this.isPaused()&&(this.isWaveformPaused=!1,null===(i=this.mediaRecorder)||void 0===i||i.resume(),this.timer.start(),this.lastStartTime=performance.now(),this.emit(\"record-resume\"))}static getAvailableAudioDevices(){return i(this,void 0,void 0,(function*(){return navigator.mediaDevices.enumerateDevices().then((i=>i.filter((i=>\"audioinput\"===i.kind))))}))}destroy(){this.applyOriginalOptionsIfNeeded(),super.destroy(),this.stopRecording(),this.stopMic(),this.recordedBlobUrl&&(URL.revokeObjectURL(this.recordedBlobUrl),this.recordedBlobUrl=null)}applyOriginalOptionsIfNeeded(){this.wavesurfer&&this.originalOptions&&(this.wavesurfer.setOptions(this.originalOptions),delete this.originalOptions)}}export{n as default};\n","/**\n * Pure helpers for the voice recorder bar — duration formatting, MIME\n * selection, and base64 decoding. Kept out of the component so the\n * formatting + MIME logic can be unit-tested in isolation.\n */\n\n/** Format a second count as `m:ss` (e.g. 75 → \"1:15\"). Clamps negatives. */\nexport function formatDuration(totalSec: number): string {\n const safe = Math.max(0, totalSec);\n const m = Math.floor(safe / 60);\n const s = safe % 60;\n return `${m}:${s.toString().padStart(2, \"0\")}`;\n}\n\n/**\n * Per-browser MIME pick. Chrome/Firefox prefer `audio/webm`; Safari\n * only supports `audio/mp4`. Returning `null` lets the MediaRecorder\n * pick its own default — the BE accepts both opus + aac via the\n * existing audio-mime allowlist.\n */\nexport function pickMime(): string | null {\n if (typeof MediaRecorder === \"undefined\") return null;\n const candidates = [\"audio/webm;codecs=opus\", \"audio/webm\", \"audio/mp4\", \"audio/ogg\"];\n for (const m of candidates) {\n if (MediaRecorder.isTypeSupported?.(m)) return m;\n }\n return null;\n}\n\n/** Decode a Blob to its raw base64 payload (strips the data-URL prefix). */\nexport async function blobToBase64(blob: Blob): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const result = reader.result;\n if (typeof result !== \"string\") {\n reject(new Error(\"FileReader returned non-string result\"));\n return;\n }\n const comma = result.indexOf(\",\");\n resolve(comma >= 0 ? result.slice(comma + 1) : result);\n };\n reader.onerror = () => reject(reader.error ?? new Error(\"read failed\"));\n reader.readAsDataURL(blob);\n });\n}\n","\"use client\";\n\n// `lucide-animated` has no `SendIcon` (or `SquareIcon` runtime export\n// — typing-only). Use static lucide-react for both glyphs; the\n// composer's morph button also uses the same `Send` icon, so the\n// visitor sees a consistent send affordance across the widget.\nimport { Send, Square } from \"lucide-react\";\nimport { motion } from \"motion/react\";\nimport { useTranslations } from \"next-intl\";\nimport { type ComponentType, useEffect, useRef, useState } from \"react\";\nimport WaveSurfer from \"wavesurfer.js\";\nimport RecordPlugin from \"wavesurfer.js/dist/plugins/record.esm.js\";\nimport { PauseIcon, PlayIcon, XIcon } from \"@/components/widget/icons/animated\";\nimport { useIconHover } from \"@/lib/use-icon-hover\";\nimport { cn } from \"@/lib/utils\";\nimport { blobToBase64, formatDuration, pickMime } from \"./helpers\";\n\nexport interface VoiceRecording {\n /** MIME of the captured blob (`audio/webm;codecs=opus` on Chrome,\n * `audio/mp4` on Safari). */\n mimetype: string;\n /** Raw base64 payload — no `data:…;base64,` prefix; ready for the\n * BE's `uploadVisitorMedia` mutation. */\n base64: string;\n /** Decoded byte length — caller compares against the 10 MB cap. */\n size: number;\n /** `voice-<ts>.<ext>` — picked from the recorder's mimetype. */\n filename: string;\n}\n\ninterface VoiceRecorderBarProps {\n /** Visitor tapped Send in preview — ship the blob + close. */\n onComplete: (rec: VoiceRecording) => void;\n /** Visitor tapped Cancel at any phase — close, no upload. */\n onCancel: () => void;\n /** Mic permission denied / no MediaRecorder support / etc. */\n onError: (kind: \"denied\" | \"unsupported\" | \"failed\") => void;\n}\n\n/**\n * Replaces the chat composer while the visitor is recording a voice\n * note. Two phases — `recording` → `preview` — and a hand-rolled\n * `MediaRecorder` for capture so we don't depend on the\n * `wavesurfer.js` Record plugin's internal `record-end` plumbing\n * (which has subtle event-unsubscribe races when its `stopMic` runs;\n * the symptom was the Stop button silently doing nothing in some\n * browsers). The plugin is still in play — but only for the live\n * mic-stream visualisation; the recorded blob comes from our own\n * recorder.\n *\n * **Lifecycle**:\n * - mount → ask for mic permission, hand the stream to the\n * plugin for the live waveform AND start our own\n * `MediaRecorder` collecting chunks.\n * - stop → stop OUR recorder; its `onstop` builds the blob,\n * stops the plugin's live render, loads the blob into\n * wavesurfer for playback, and flips phase to `preview`.\n * - cancel → bail (no upload).\n * - send → hand the cached blob to `onComplete`.\n *\n * **Brand fidelity**: wavesurfer canvas can't resolve CSS variables;\n * we read `--wx-primary` / `--wx-fg-muted` from the document root on\n * mount and feed real hex values to the instance so the waveform\n * matches the operator's accent in both themes.\n */\nexport function VoiceRecorderBar({ onComplete, onCancel, onError }: VoiceRecorderBarProps) {\n const t = useTranslations(\"messages\");\n const containerRef = useRef<HTMLDivElement | null>(null);\n const wavesurferRef = useRef<WaveSurfer | null>(null);\n // Narrow shape of the plugin API surface we actually call. We\n // don't subscribe to its events — we just use it for mic + waveform.\n const recordPluginRef = useRef<{\n startMic: () => Promise<MediaStream>;\n stopMic: () => void;\n } | null>(null);\n const mediaRecorderRef = useRef<MediaRecorder | null>(null);\n const chunksRef = useRef<Blob[]>([]);\n const tickIntervalRef = useRef<number | null>(null);\n\n const [phase, setPhase] = useState<\"recording\" | \"preview\">(\"recording\");\n const [elapsedSec, setElapsedSec] = useState(0);\n const [previewPlaying, setPreviewPlaying] = useState(false);\n // Encoded blob — held so Send fires onComplete with no second\n // base64 round-trip.\n const recordedRef = useRef<VoiceRecording | null>(null);\n // True only when the visitor explicitly cancelled (X button).\n // Different from the per-effect \"strict-mode cancelled\" flag —\n // that one lives inside the effect closure so the React 18\n // dev-strict double-mount doesn't wedge state.\n const userCancelledRef = useRef(false);\n\n // Mount-only — the recorder instance is single-shot per session, so\n // `onError` (and the other captured callbacks) are deliberately NOT\n // deps: re-running this would re-acquire the mic on every parent\n // render that passes a fresh callback identity.\n // biome-ignore lint/correctness/useExhaustiveDependencies: intentional mount-only mic-acquisition effect — see note above\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n if (typeof window === \"undefined\" || !window.MediaRecorder) {\n onError(\"unsupported\");\n return;\n }\n\n // `effectCancelled` is captured in this effect's closure ONLY —\n // each strict-mode re-mount gets its own. The old ref-based flag\n // was shared across both runs: the first cleanup set it to true,\n // the second effect's async `startMic().then(...)` then bailed\n // because the ref was still true. Result on dev: recorder never\n // even started. Local-scoping the flag fixes it.\n let effectCancelled = false;\n userCancelledRef.current = false;\n\n // Read the theme tokens off the CONTAINER, not\n // `document.documentElement` — in the React-component embed the\n // `--wx-*` vars live on the Shadow DOM host, never on the host\n // page's `<html>`, so `documentElement` would resolve to empty and\n // the waveform would always fall back to the hardcoded colours.\n // The container inherits the vars in every embed mode.\n const styles = getComputedStyle(container);\n const primary = styles.getPropertyValue(\"--wx-primary\").trim() || \"#5b6cff\";\n const muted = styles.getPropertyValue(\"--wx-fg-muted\").trim() || \"#6b7280\";\n\n const ws = WaveSurfer.create({\n container,\n waveColor: muted,\n progressColor: primary,\n cursorColor: primary,\n cursorWidth: 2,\n height: 32,\n barWidth: 2,\n barGap: 2,\n barRadius: 2,\n interact: true,\n // `continuousWaveform` makes wavesurfer's internal scroll element\n // wider than the bar — it would otherwise paint its own\n // horizontal scrollbar under the waveform. Visitors never scroll\n // a live recording / short voice note, so hide it.\n hideScrollbar: true,\n });\n wavesurferRef.current = ws;\n\n ws.on(\"play\", () => setPreviewPlaying(true));\n ws.on(\"pause\", () => setPreviewPlaying(false));\n ws.on(\"finish\", () => setPreviewPlaying(false));\n\n const plugin = ws.registerPlugin(\n RecordPlugin.create({\n continuousWaveform: true,\n continuousWaveformDuration: 60,\n // `renderRecordedAudio: false` — we drive the playback load\n // ourselves once recording stops, so the plugin shouldn't\n // try to load its own (empty) buffer.\n renderRecordedAudio: false,\n }),\n ) as unknown as NonNullable<typeof recordPluginRef.current>;\n recordPluginRef.current = plugin;\n\n // Local mirrors captured in this effect's closure — used by\n // cleanup so we tear down THIS effect's resources, not whatever\n // the (newer) component instance has set into the shared refs.\n let localTickInterval: number | null = null;\n let localRecorder: MediaRecorder | null = null;\n\n /**\n * Two-step bring-up so the plugin's live waveform AND our\n * MediaRecorder both feed off the same mic stream:\n *\n * 1. `plugin.startMic()` does `getUserMedia` + sets up an\n * AudioContext → AnalyserNode → canvas-drawing interval.\n * 2. We attach `MediaRecorder` to that stream for capture.\n *\n * If `getUserMedia` rejects, surface as `denied`; everything\n * else lands in `failed`.\n */\n plugin\n .startMic()\n .then((stream) => {\n if (effectCancelled || userCancelledRef.current) {\n // Strict-mode tear-down: cleanup already ran (it called\n // plugin.stopMic() while `this.stream` was still null\n // because getUserMedia hadn't resolved yet). Now that\n // getUserMedia HAS resolved, the plugin set its `stream`\n // to this freshly-acquired one — nobody will release it\n // unless we do. Stop the tracks here so the OS mic\n // indicator clears.\n try {\n stream.getTracks().forEach((track) => {\n track.stop();\n });\n } catch {}\n try {\n plugin.stopMic();\n } catch {}\n return;\n }\n const mime = pickMime();\n const recorder = mime\n ? new MediaRecorder(stream, { mimeType: mime })\n : new MediaRecorder(stream);\n mediaRecorderRef.current = recorder;\n localRecorder = recorder;\n chunksRef.current = [];\n recorder.addEventListener(\"dataavailable\", (e) => {\n if (e.data && e.data.size > 0) chunksRef.current.push(e.data);\n });\n recorder.addEventListener(\"stop\", () => {\n // strict-mode tear-down OR user cancel → discard the take.\n if (effectCancelled || userCancelledRef.current) return;\n // Release the mic + live-waveform render IMMEDIATELY (not\n // after base64 encoding). FileReader can take hundreds of\n // ms on long recordings — without this the browser keeps\n // the \"tab is using microphone\" indicator on for that\n // whole window after the visitor already tapped Stop.\n try {\n plugin.stopMic();\n } catch {}\n if (localTickInterval !== null) {\n clearInterval(localTickInterval);\n localTickInterval = null;\n tickIntervalRef.current = null;\n }\n const finalMime = recorder.mimeType || mime || \"audio/webm\";\n const blob = new Blob(chunksRef.current, { type: finalMime });\n blobToBase64(blob)\n .then((base64) => {\n if (effectCancelled || userCancelledRef.current) return;\n const ext = finalMime.includes(\"mp4\") ? \"mp4\" : \"webm\";\n // `recorder.mimeType` carries the codec param\n // (`audio/webm;codecs=opus`). The upload allowlist (client +\n // the BE's `WebUploadService.ALLOWED_MIMES`) matches the BARE\n // type `audio/webm`, so the codec suffix 415s. Strip it for the\n // upload — the blob above keeps the full type for local\n // playback, where the codec still gets inferred.\n const uploadMime = finalMime.split(\";\")[0].trim();\n recordedRef.current = {\n base64,\n mimetype: uploadMime,\n size: blob.size,\n filename: `voice-${Date.now()}.${ext}`,\n };\n // Load the playable blob THEN reset cursor +\n // re-enable seeking:\n // 1. The plugin's `renderMicStream` force-sets\n // `interact: false` and (because we set\n // `renderRecordedAudio: false`) never restores\n // it — re-flip here so the visitor can scrub.\n // 2. During recording the plugin called\n // `setTime(duration / 1000)` on every tick, so\n // after stop the cursor sits at the end. Reset\n // to 0 so playback starts at the beginning.\n //\n // `loadBlob(blob)` — NOT `load(objectURL)`: wavesurfer's\n // `load()` does a `fetch()` of the URL, and a host page\n // with a strict `connect-src` CSP (no `blob:`) blocks\n // fetching `blob:` URLs — the preview would hang on a\n // forever spinner. `loadBlob` decodes the in-memory Blob\n // directly, no network request, no CSP surface.\n ws.loadBlob(blob)\n .then(() => {\n if (effectCancelled || userCancelledRef.current) return;\n try {\n ws.setOptions({ interact: true });\n } catch {}\n try {\n ws.setTime(0);\n } catch {}\n })\n .catch(() => {});\n setPhase(\"preview\");\n })\n .catch(() => onError(\"failed\"));\n });\n recorder.start();\n\n // Drive the duration counter from our own tick — independent\n // of the plugin so the counter survives any plugin oddity.\n // Only setElapsedSec when the displayed second changes so we\n // don't trigger 10 renders/sec.\n const startedAt = performance.now();\n localTickInterval = window.setInterval(() => {\n const ms = performance.now() - startedAt;\n const sec = Math.floor(ms / 1000);\n setElapsedSec((prev) => (prev === sec ? prev : sec));\n }, 250);\n tickIntervalRef.current = localTickInterval;\n })\n .catch((err: Error) => {\n if (effectCancelled) return;\n const msg = err?.message ?? \"\";\n onError(msg.includes(\"Permission\") || msg.includes(\"denied\") ? \"denied\" : \"failed\");\n });\n\n return () => {\n effectCancelled = true;\n if (localTickInterval !== null) {\n clearInterval(localTickInterval);\n }\n try {\n if (localRecorder?.state === \"recording\") {\n localRecorder.stop();\n }\n } catch {}\n try {\n plugin.stopMic();\n } catch {}\n ws.destroy();\n // Only null shared refs if this effect's instance is still the\n // one parked there — protects against the strict-mode race\n // where the second effect's setup races past this cleanup.\n if (wavesurferRef.current === ws) wavesurferRef.current = null;\n if (recordPluginRef.current === plugin) recordPluginRef.current = null;\n if (mediaRecorderRef.current === localRecorder) {\n mediaRecorderRef.current = null;\n }\n };\n }, []);\n\n const handleCancel = () => {\n userCancelledRef.current = true;\n try {\n if (mediaRecorderRef.current?.state === \"recording\") {\n mediaRecorderRef.current.stop();\n }\n } catch {}\n try {\n recordPluginRef.current?.stopMic();\n } catch {}\n try {\n wavesurferRef.current?.pause();\n } catch {}\n onCancel();\n };\n\n const handleStop = () => {\n // Stops OUR MediaRecorder. Its `stop` listener does the rest —\n // builds the blob, swaps wavesurfer to playback mode, flips\n // phase to `preview`.\n try {\n if (mediaRecorderRef.current?.state === \"recording\") {\n mediaRecorderRef.current.stop();\n }\n } catch {}\n };\n\n const handlePreviewToggle = () => {\n const ws = wavesurferRef.current;\n if (!ws) return;\n if (ws.isPlaying()) {\n ws.pause();\n } else {\n ws.play();\n }\n };\n\n const handleSend = () => {\n const rec = recordedRef.current;\n if (!rec) return;\n onComplete(rec);\n };\n\n return (\n <motion.div\n key=\"voice-recorder\"\n initial={{ opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.18 }}\n className={cn(\n \"flex items-center gap-1.5 rounded-wx-lg border border-wx-border bg-wx-bg px-2 py-2\",\n )}\n >\n <IconBtn\n Icon={XIcon}\n onClick={handleCancel}\n ariaLabel={t(\"cancelRecording\")}\n intent=\"ghost\"\n />\n\n {/* `min-w-0` on BOTH flex levels is load-bearing: a flex item's\n default `min-width: auto` won't let it shrink below its\n content's intrinsic width. wavesurfer's continuous-waveform\n canvas can be far wider than a narrow embedded preview — so\n without `min-w-0` the container refuses to shrink, grows to\n fit, wavesurfer's ResizeObserver re-renders even wider, and\n the bar oscillates forever. `overflow-hidden` on the\n waveform host clips any residual overscroll. */}\n <div className=\"flex h-9 min-w-0 flex-1 items-center gap-2 rounded-full bg-wx-bg-elevated px-3\">\n {phase === \"recording\" && (\n <span\n aria-hidden=\"true\"\n className=\"h-2 w-2 shrink-0 animate-pulse rounded-full bg-wx-danger\"\n />\n )}\n <div\n ref={containerRef}\n aria-hidden=\"true\"\n className={cn(\n \"min-w-0 flex-1 overflow-hidden\",\n // Click-to-seek only matters in preview; during recording\n // the canvas has nothing to seek to and we don't want\n // it competing with action buttons for taps.\n phase !== \"preview\" && \"pointer-events-none\",\n )}\n />\n <span className=\"shrink-0 font-mono text-xs tabular-nums text-wx-fg-muted\">\n {formatDuration(elapsedSec)}\n </span>\n </div>\n\n {phase === \"recording\" && (\n <motion.button\n type=\"button\"\n onClick={handleStop}\n aria-label={t(\"stopRecording\")}\n whileHover={{ scale: 1.08 }}\n whileTap={{ scale: 0.9 }}\n transition={{ type: \"spring\", stiffness: 400, damping: 22 }}\n className={cn(\n \"flex h-8 w-8 shrink-0 items-center justify-center rounded-full transition-colors\",\n \"text-wx-fg-muted hover:bg-wx-bg-elevated hover:text-wx-fg\",\n )}\n >\n <Square size={14} />\n </motion.button>\n )}\n\n {phase === \"preview\" && (\n <>\n <IconBtn\n Icon={previewPlaying ? PauseIcon : PlayIcon}\n onClick={handlePreviewToggle}\n ariaLabel={previewPlaying ? t(\"pauseRecording\") : t(\"playPreview\")}\n intent=\"ghost\"\n />\n <motion.button\n type=\"button\"\n onClick={handleSend}\n aria-label={t(\"sendCta\")}\n whileHover={{ scale: 1.08 }}\n whileTap={{ scale: 0.9 }}\n transition={{ type: \"spring\", stiffness: 400, damping: 22 }}\n className={cn(\n \"flex h-8 w-8 shrink-0 items-center justify-center rounded-full transition-colors\",\n \"bg-wx-primary text-wx-primary-fg hover:bg-wx-primary-hover\",\n )}\n >\n <Send size={14} />\n </motion.button>\n </>\n )}\n </motion.div>\n );\n}\n\n/**\n * Tight icon button for the recorder bar. Every glyph in here is a\n * `lucide-animated` icon, which wraps its SVG in a `<div>` that\n * exposes `startAnimation` / `stopAnimation` on its ref handle —\n * `useIconHover` propagates the button-level hover/focus to those\n * methods so the icon animates only when the visitor hovers the tap\n * target, not the SVG itself (the SVG sits behind the button's\n * hit area, so direct hover never works the way visitors expect).\n *\n * Type-wise, every lucide-animated icon's ref handle implements the\n * same `startAnimation?()` / `stopAnimation?()` shape — the union of\n * those handles is structurally compatible with `useIconHover`'s\n * default, so a single helper covers every icon we use.\n */\ntype LucideAnimatedHandle = {\n // Match `lucide-animated`'s per-icon `*IconHandle` types, which declare\n // these as non-optional. Marking them optional here makes the local\n // type unassignable from the real handle (TS can't widen `() => void`\n // to `(() => void) | undefined` at a covariant ref position), which\n // surfaces as the `Icon={XIcon}` build error.\n startAnimation: () => void;\n stopAnimation: () => void;\n};\n\ntype LucideAnimatedIcon = ComponentType<{\n ref?: React.Ref<LucideAnimatedHandle>;\n size?: number;\n}>;\n\nfunction IconBtn({\n Icon,\n onClick,\n ariaLabel,\n intent,\n size = 16,\n}: {\n Icon: LucideAnimatedIcon;\n onClick: () => void;\n ariaLabel: string;\n intent: \"ghost\" | \"primary\";\n size?: number;\n}) {\n const hover = useIconHover<LucideAnimatedHandle>();\n return (\n <motion.button\n type=\"button\"\n onClick={onClick}\n aria-label={ariaLabel}\n whileHover={{ scale: 1.08 }}\n whileTap={{ scale: 0.9 }}\n transition={{ type: \"spring\", stiffness: 400, damping: 22 }}\n {...hover.parentHandlers}\n className={cn(\n \"flex h-8 w-8 shrink-0 items-center justify-center rounded-full transition-colors\",\n intent === \"primary\"\n ? \"bg-wx-primary text-wx-primary-fg hover:bg-wx-primary-hover\"\n : \"text-wx-fg-muted hover:bg-wx-bg-elevated hover:text-wx-fg\",\n )}\n >\n <Icon ref={hover.iconRef} size={size} />\n </motion.button>\n );\n}\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget-react-CUBFPjaV.js","names":[],"sources":["../node_modules/lucide-react/dist/esm/icons/external-link.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M15 3h6v6\", key: \"1q9fwt\" }],\n [\"path\", { d: \"M10 14 21 3\", key: \"gplh6r\" }],\n [\"path\", { d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\", key: \"a6xqqp\" }]\n];\nconst ExternalLink = createLucideIcon(\"external-link\", __iconNode);\n\nexport { __iconNode, ExternalLink as default };\n//# sourceMappingURL=external-link.mjs.map\n"],"x_google_ignoreList":[0],"mappings":";;;;;AAcA,IAAM,IAAe,EAAiB,iBAAiB;CAJrD,CAAC,QAAQ;EAAE,GAAG;EAAa,KAAK;EAAU,CAAC;CAC3C,CAAC,QAAQ;EAAE,GAAG;EAAe,KAAK;EAAU,CAAC;CAC7C,CAAC,QAAQ;EAAE,GAAG;EAA4D,KAAK;EAAU,CAAC;CAErC,CAAW"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget-react-CUuKGDZN.js","names":["i","r","o","s","c","a","t","e","n"],"sources":["../node_modules/@wavesurfer/react/dist/index.js","../node_modules/wavesurfer.js/dist/plugins/hover.esm.js","../components/widget/tabs/messages-tab/message/audio-bubble-player.tsx"],"sourcesContent":["import{jsx as n}from\"react/jsx-runtime\";import{memo as t,useRef as e,useState as r,useMemo as o,useEffect as s}from\"react\";import c from\"wavesurfer.js\";\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */function i(n,t){var e={};for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&t.indexOf(r)<0&&(e[r]=n[r]);if(null!=n&&\"function\"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(n);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(n,r[o])&&(e[r[o]]=n[r[o]])}return e}function u(n,t){const[e,u]=r(null),a=o((()=>i(t,[\"plugins\"])),[t]),f=o((()=>Object.entries(a).flat()),[a]);return s((()=>{if(!(null==n?void 0:n.current))return;const e=c.create(Object.assign(Object.assign({},a),{plugins:t.plugins,container:n.current}));return u(e),()=>{e.destroy()}}),[n,t.plugins,...f]),e}const a=/^on([A-Z])/,f=n=>a.test(n);function l(n,t){const e=o((()=>Object.entries(t).flat()),[t]);s((()=>{if(!n)return;const e=Object.entries(t);if(!e.length)return;const r=e.map((([t,e])=>{const r=t.replace(a,((n,t)=>t.toLowerCase()));return n.on(r,((...t)=>e(n,...t)))}));return()=>{r.forEach((n=>n()))}}),[n,...e])}const p=t((t=>{const r=e(null),[s,c]=function(n){return o((()=>{const t=Object.assign({},n),e=Object.assign({},n);for(const n in t)f(n)?delete t[n]:delete e[n];return[t,e]}),[n])}(t);return l(u(r,s),c),n(\"div\",{ref:r})}));function O(n){var{container:t}=n;const e=u(t,i(n,[\"container\"])),c=function(n){const[t,e]=r(!1),[c,i]=r(!1),[u,a]=r(!1),[f,l]=r(0);return s((()=>{if(!n)return;const t=[n.on(\"load\",(()=>{e(!1),i(!1),l(0)})),n.on(\"ready\",(()=>{e(!0),i(!1),a(!1),l(0)})),n.on(\"finish\",(()=>{a(!0)})),n.on(\"play\",(()=>{i(!0)})),n.on(\"pause\",(()=>{i(!1)})),n.on(\"timeupdate\",(()=>{l(n.getCurrentTime())})),n.on(\"destroy\",(()=>{e(!1),i(!1)}))];return()=>{t.forEach((n=>n()))}}),[n]),o((()=>({isReady:t,isPlaying:c,hasFinished:u,currentTime:f})),[c,u,f,t])}(e);return o((()=>Object.assign(Object.assign({},c),{wavesurfer:e})),[c,e])}export{p as default,O as useWavesurfer};\n","class t{constructor(){this.listeners={}}on(t,e,s){if(this.listeners[t]||(this.listeners[t]=new Set),null==s?void 0:s.once){const s=(...i)=>{this.un(t,s),e(...i)};return this.listeners[t].add(s),()=>this.un(t,s)}return this.listeners[t].add(e),()=>this.un(t,e)}un(t,e){var s;null===(s=this.listeners[t])||void 0===s||s.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach((t=>t(...e)))}}class e extends t{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit(\"destroy\"),this.subscriptions.forEach((t=>t())),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}}function s(t,e){const i=e.xmlns?document.createElementNS(e.xmlns,t):document.createElement(t);for(const[t,n]of Object.entries(e))if(\"children\"===t&&n)for(const[t,e]of Object.entries(n))e instanceof Node?i.appendChild(e):\"string\"==typeof e?i.appendChild(document.createTextNode(e)):i.appendChild(s(t,e));else\"style\"===t?Object.assign(i.style,n):\"textContent\"===t?i.textContent=n:i.setAttribute(t,n.toString());return i}function i(t,e,i){const n=s(t,e||{});return null==i||i.appendChild(n),n}function n(t,e){let s;const i=()=>{s&&(s(),s=void 0),s=t()},n=e.map((t=>t.subscribe(i)));return i(),()=>{s&&(s(),s=void 0),n.forEach((t=>t()))}}function r(t,e){const s=function(t){let e=t;const s=new Set;return{get value(){return e},set(t){Object.is(e,t)||(e=t,s.forEach((t=>t(e))))},update(t){this.set(t(e))},subscribe:t=>(s.add(t),()=>s.delete(t))}}(null),i=t=>{s.set(t)};return t.addEventListener(e,i),s._cleanup=()=>{t.removeEventListener(e,i)},s}const o={lineWidth:1,labelSize:11,labelPreferLeft:!1,formatTimeCallback:t=>`${Math.floor(t/60)}:${`0${Math.floor(t)%60}`.slice(-2)}`};class a extends e{constructor(t){super(t||{}),this.lastPointerPosition=null,this.options=Object.assign({},o,t),this.wrapper=i(\"div\",{part:\"hover\"}),this.label=i(\"span\",{part:\"hover-label\"},this.wrapper)}static create(t){return new a(t)}addUnits(t){return`${t}${\"number\"==typeof t?\"px\":\"\"}`}onInit(){if(!this.wavesurfer)throw Error(\"WaveSurfer is not initialized\");const t=this.wavesurfer.options,e=this.options.lineColor||t.cursorColor||t.progressColor;Object.assign(this.wrapper.style,{position:\"absolute\",zIndex:10,left:0,top:0,height:\"100%\",pointerEvents:\"none\",borderLeft:`${this.addUnits(this.options.lineWidth)} solid ${e}`,opacity:\"0\",transition:\"opacity .1s ease-in\"}),Object.assign(this.label.style,{display:\"block\",backgroundColor:this.options.labelBackground,color:this.options.labelColor,fontSize:`${this.addUnits(this.options.labelSize)}`,transition:\"transform .1s ease-in\",padding:\"2px 3px\"});const s=this.wavesurfer.getWrapper();s.appendChild(this.wrapper);const i=this.wavesurfer.getState(),o=r(s,\"pointermove\"),a=r(s,\"pointerleave\");this.subscriptions.push(n((()=>{const t=o.value;if(!t||!this.wavesurfer)return;this.lastPointerPosition={clientX:t.clientX,clientY:t.clientY};const e=this.wavesurfer.getWrapper().getBoundingClientRect(),{width:s}=e,n=t.clientX-e.left,r=Math.min(1,Math.max(0,n/s)),a=Math.min(s-this.options.lineWidth-1,n);this.wrapper.style.transform=`translateX(${a}px)`,this.wrapper.style.opacity=\"1\";const l=i.duration.value;this.label.textContent=this.options.formatTimeCallback(l*r);const h=this.label.offsetWidth,p=this.options.labelPreferLeft?a-h>0:a+h>s;this.label.style.transform=p?`translateX(-${h+this.options.lineWidth}px)`:\"\",this.emit(\"hover\",r)}),[o,i.duration])),this.subscriptions.push(n((()=>{a.value&&(this.wrapper.style.opacity=\"0\",this.lastPointerPosition=null,this.wrapper.style.transform=\"\")}),[a]));const l=()=>{if(this.lastPointerPosition&&this.wavesurfer){const t=this.wavesurfer.getWrapper().getBoundingClientRect(),{width:e}=t,s=this.lastPointerPosition.clientX-t.left,n=Math.min(1,Math.max(0,s/e)),r=Math.min(e-this.options.lineWidth-1,s);this.wrapper.style.transform=`translateX(${r}px)`;const o=i.duration.value;this.label.textContent=this.options.formatTimeCallback(o*n);const a=this.label.offsetWidth,l=this.options.labelPreferLeft?r-a>0:r+a>e;this.label.style.transform=l?`translateX(-${a+this.options.lineWidth}px)`:\"\"}};this.subscriptions.push(this.wavesurfer.on(\"zoom\",l)),this.subscriptions.push(this.wavesurfer.on(\"scroll\",l))}destroy(){super.destroy(),this.wrapper.remove()}}export{a as default};\n","\"use client\";\n\nimport { useWavesurfer } from \"@wavesurfer/react\";\nimport { ExternalLink, Loader2, Pause, Play } from \"lucide-react\";\nimport { useTranslations } from \"next-intl\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport Hover from \"wavesurfer.js/dist/plugins/hover.esm.js\";\nimport { cn } from \"@/lib/utils\";\n\ninterface AudioBubblePlayerProps {\n src: string;\n /** When `true`, the player sits inside the visitor's own bubble\n * (dark surface in light theme, light in dark theme) — the\n * internal palette inverts to match. */\n onDark?: boolean;\n}\n\n/**\n * Brand-themed voice-note player. Replaces the browser's native\n * `<audio controls>` with a wavesurfer.js waveform + a single\n * play/pause affordance — matches the FE app's `AudioPlayer` (its\n * pattern is the source of this port).\n *\n * **Theme adaptation**: wavesurfer renders to `<canvas>` which can't\n * resolve CSS variables — we read the relevant `--wx-*` tokens on\n * mount and pass real hex strings to wavesurfer. The `onDark` flag\n * flips the palette so the same component reads correctly on the\n * visitor's own dark bubble AND the operator's elevated bubble.\n *\n * **Hover plugin** gives visitors a thin vertical line + tooltip\n * showing the time position under the cursor — the standard\n * messenger UX for scrubbing through a voice note.\n */\nexport function AudioBubblePlayer({ src, onDark = false }: AudioBubblePlayerProps) {\n const t = useTranslations(\"messages\");\n const containerRef = useRef<HTMLDivElement>(null);\n const [colors, setColors] = useState<{\n wave: string;\n progress: string;\n hoverLine: string;\n } | null>(null);\n const [loadError, setLoadError] = useState(false);\n\n // Resolve theme tokens to concrete hex strings on mount — wavesurfer\n // needs RGB/hex, not CSS-var references. Re-runs whenever `onDark`\n // changes (defensive — the flag is stable in practice but the cost\n // is one extra read).\n useEffect(() => {\n // Read the tokens off the CONTAINER, not `document.documentElement`\n // — in the React-component embed the `--wx-*` vars live on the\n // Shadow DOM host, never the host page's `<html>`, so reading from\n // `documentElement` would resolve to empty and the waveform would\n // always use the hardcoded fallbacks. The container inherits the\n // vars in every embed mode.\n const el = containerRef.current;\n if (!el) return;\n const styles = getComputedStyle(el);\n const primary = styles.getPropertyValue(\"--wx-primary\").trim() || \"#121314\";\n const primaryFg = styles.getPropertyValue(\"--wx-primary-fg\").trim() || \"#ffffff\";\n const fgMuted = styles.getPropertyValue(\"--wx-fg-muted\").trim() || \"#6b7280\";\n if (onDark) {\n // Visitor's own bubble — wave on the bubble's own foreground\n // colour, dimmed for the unplayed portion.\n setColors({\n wave: hexToRgba(primaryFg, 0.35),\n progress: primaryFg,\n hoverLine: primaryFg,\n });\n } else {\n setColors({\n wave: fgMuted,\n progress: primary,\n hoverLine: primary,\n });\n }\n }, [onDark]);\n\n const plugins = useMemo(() => {\n if (!colors) return [];\n return [\n Hover.create({\n lineColor: colors.hoverLine,\n lineWidth: 1,\n labelBackground: colors.hoverLine,\n labelColor: onDark ? \"#121314\" : \"#ffffff\",\n labelSize: \"10px\",\n }),\n ];\n }, [colors, onDark]);\n\n // Match the FE app's fetch params — `credentials: \"omit\"` so the\n // browser doesn't attach cookies, which avoids the CORS preflight\n // failures cookies sometimes trigger on bare-CDN sources.\n const fetchParams = useMemo<RequestInit>(() => ({ credentials: \"omit\" }), []);\n\n // Skip the hook entirely until the palette is resolved — otherwise\n // wavesurfer mounts with default (visible) blue colours for a\n // frame before we swap them in. Also skip once we've recorded a\n // load error so wavesurfer doesn't retry forever.\n const { wavesurfer, isReady, isPlaying, currentTime } = useWavesurfer({\n container: containerRef,\n url: colors && !loadError ? src : undefined,\n waveColor: colors?.wave,\n progressColor: colors?.progress,\n cursorColor: colors?.progress,\n barWidth: 2,\n barRadius: 2,\n cursorWidth: 1,\n height: 24,\n // Voice notes are short — the visitor never needs to scroll the\n // waveform, and wavesurfer's internal scroll element would\n // otherwise paint a horizontal scrollbar under the wave on hover.\n hideScrollbar: true,\n plugins,\n fetchParams,\n });\n\n // Surface a fallback when the audio can't be loaded (CORS-blocked\n // source, 404, etc.) — keeps the bubble from sitting on a forever\n // spinner. Visitors get an \"Open\" link that opens the raw URL in\n // a new tab as the escape hatch.\n useEffect(() => {\n if (!wavesurfer) return;\n const onError = () => setLoadError(true);\n wavesurfer.on(\"error\", onError);\n return () => {\n wavesurfer.un(\"error\", onError);\n };\n }, [wavesurfer]);\n\n const handlePlayPause = () => {\n wavesurfer?.playPause();\n };\n\n if (loadError) {\n return (\n <a\n href={src}\n target=\"_blank\"\n rel=\"noopener\"\n className={cn(\n // `w-60` intrinsic, `max-w-full` so it shrinks to fit a\n // narrow mobile bubble instead of overflowing its corners.\n \"inline-flex w-60 max-w-full items-center gap-2 rounded-wx-sm px-3 py-2 text-xs font-medium\",\n onDark\n ? \"bg-wx-primary-fg/10 text-wx-primary-fg hover:bg-wx-primary-fg/20\"\n : \"bg-wx-bg/60 text-wx-fg hover:bg-wx-bg\",\n )}\n >\n <ExternalLink size={12} className=\"shrink-0\" />\n <span className=\"truncate\">{t(\"openAudio\")}</span>\n </a>\n );\n }\n\n // Single-row flex so play button + waveform + time counter share\n // one baseline — vertical centering \"just works\" without manual\n // pixel nudges. `w-60` is the intrinsic target width; `max-w-full`\n // lets it shrink to fit a narrow mobile bubble instead of\n // overflowing the rounded corners (a plain `w-full` would collapse\n // it tiny inside the shrink-wrapped bubble). `min-w-0` lets the flex\n // children shrink rather than force the row wider than its parent.\n return (\n <div className=\"flex w-60 max-w-full min-w-0 items-center gap-3\">\n <button\n type=\"button\"\n onClick={handlePlayPause}\n aria-label={isPlaying ? t(\"pauseAudio\") : t(\"playAudio\")}\n className={cn(\n \"flex h-8 w-8 shrink-0 items-center justify-center rounded-full transition-opacity\",\n onDark\n ? \"bg-wx-primary-fg text-wx-primary hover:opacity-90\"\n : \"bg-wx-primary text-wx-primary-fg hover:bg-wx-primary-hover\",\n )}\n >\n {!isReady ? (\n <Loader2 size={12} className=\"animate-spin\" />\n ) : isPlaying ? (\n <Pause size={12} />\n ) : (\n // Optical centering — the play triangle's visual mass\n // sits left of the SVG bounding box.\n <Play size={12} className=\"translate-x-[1px]\" />\n )}\n </button>\n <div ref={containerRef} className=\"min-w-0 flex-1\" />\n <span\n className={cn(\n \"shrink-0 font-mono text-[10px] tabular-nums\",\n onDark ? \"text-wx-primary-fg/70\" : \"text-wx-fg-subtle\",\n )}\n >\n {isReady ? formatTime(currentTime) : \"0:00\"}\n </span>\n </div>\n );\n}\n\nfunction formatTime(time: number): string {\n const m = Math.floor(time / 60);\n const s = Math.floor(time % 60)\n .toString()\n .padStart(2, \"0\");\n return `${m}:${s}`;\n}\n\n/**\n * Wavesurfer's canvas can't resolve CSS opacity — for the unplayed\n * waveform tint we feed a literal `rgba()` string built from the\n * resolved foreground hex.\n */\nfunction hexToRgba(hex: string, alpha: number): string {\n const clean = hex.replace(\"#\", \"\");\n if (clean.length !== 6) return hex;\n const r = parseInt(clean.substring(0, 2), 16);\n const g = parseInt(clean.substring(2, 4), 16);\n const b = parseInt(clean.substring(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget-react-CZs0xRrr.js","names":[],"sources":["../node_modules/wavesurfer.js/dist/wavesurfer.esm.js"],"sourcesContent":["function t(t,e,i,n){return new(i||(i=Promise))((function(s,r){function o(t){try{l(n.next(t))}catch(t){r(t)}}function a(t){try{l(n.throw(t))}catch(t){r(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,a)}l((n=n.apply(t,e||[])).next())}))}\"function\"==typeof SuppressedError&&SuppressedError;class e{constructor(){this.listeners={}}on(t,e,i){if(this.listeners[t]||(this.listeners[t]=new Set),null==i?void 0:i.once){const i=(...n)=>{this.un(t,i),e(...n)};return this.listeners[t].add(i),()=>this.un(t,i)}return this.listeners[t].add(e),()=>this.un(t,e)}un(t,e){var i;null===(i=this.listeners[t])||void 0===i||i.delete(e)}once(t,e){return this.on(t,e,{once:!0})}unAll(){this.listeners={}}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach((t=>t(...e)))}}const i={decode:function(e,i){return t(this,void 0,void 0,(function*(){const t=new AudioContext({sampleRate:i});try{return yield t.decodeAudioData(e)}finally{t.close()}}))},createBuffer:function(t,e){if(!t||0===t.length)throw new Error(\"channelData must be a non-empty array\");if(e<=0)throw new Error(\"duration must be greater than 0\");if(\"number\"==typeof t[0]&&(t=[t]),!t[0]||0===t[0].length)throw new Error(\"channelData must contain non-empty channel arrays\");!function(t){const e=t[0];if(e.some((t=>t>1||t<-1))){const i=e.length;let n=0;for(let t=0;t<i;t++){const i=Math.abs(e[t]);i>n&&(n=i)}for(const e of t)for(let t=0;t<i;t++)e[t]/=n}}(t);const i=t.map((t=>t instanceof Float32Array?t:Float32Array.from(t)));return{duration:e,length:i[0].length,sampleRate:i[0].length/e,numberOfChannels:i.length,getChannelData:t=>{const e=i[t];if(!e)throw new Error(`Channel ${t} not found`);return e},copyFromChannel:AudioBuffer.prototype.copyFromChannel,copyToChannel:AudioBuffer.prototype.copyToChannel}}};function n(t,e){const i=e.xmlns?document.createElementNS(e.xmlns,t):document.createElement(t);for(const[t,s]of Object.entries(e))if(\"children\"===t&&s)for(const[t,e]of Object.entries(s))e instanceof Node?i.appendChild(e):\"string\"==typeof e?i.appendChild(document.createTextNode(e)):i.appendChild(n(t,e));else\"style\"===t?Object.assign(i.style,s):\"textContent\"===t?i.textContent=s:i.setAttribute(t,s.toString());return i}function s(t,e,i){const s=n(t,e||{});return null==i||i.appendChild(s),s}var r=Object.freeze({__proto__:null,createElement:s,default:s});const o={fetchBlob:function(e,i,n){return t(this,void 0,void 0,(function*(){const s=yield fetch(e,n);if(s.status>=400)throw new Error(`Failed to fetch ${e}: ${s.status} (${s.statusText})`);return function(e,i){t(this,void 0,void 0,(function*(){if(!e.body||!e.headers)return;const t=e.body.getReader(),n=Number(e.headers.get(\"Content-Length\"))||0;let s=0;const r=t=>{s+=(null==t?void 0:t.length)||0;const e=Math.round(s/n*100);i(e)};try{for(;;){const e=yield t.read();if(e.done)break;r(e.value)}}catch(t){console.warn(\"Progress tracking error:\",t)}}))}(s.clone(),i),s.blob()}))}};function a(t){let e=t;const i=new Set;return{get value(){return e},set(t){Object.is(e,t)||(e=t,i.forEach((t=>t(e))))},update(t){this.set(t(e))},subscribe:t=>(i.add(t),()=>i.delete(t))}}function l(t,e){const i=a(t());return e.forEach((e=>e.subscribe((()=>{const e=t();Object.is(i.value,e)||i.set(e)})))),{get value(){return i.value},subscribe:t=>i.subscribe(t)}}function h(t,e){let i;const n=()=>{i&&(i(),i=void 0),i=t()},s=e.map((t=>t.subscribe(n)));return n(),()=>{i&&(i(),i=void 0),s.forEach((t=>t()))}}class c extends e{get isPlayingSignal(){return this._isPlaying}get currentTimeSignal(){return this._currentTime}get durationSignal(){return this._duration}get volumeSignal(){return this._volume}get mutedSignal(){return this._muted}get playbackRateSignal(){return this._playbackRate}get seekingSignal(){return this._seeking}constructor(t){super(),this.isExternalMedia=!1,this.reactiveMediaEventCleanups=[],t.media?(this.media=t.media,this.isExternalMedia=!0):this.media=document.createElement(\"audio\"),this._isPlaying=a(!1),this._currentTime=a(0),this._duration=a(0),this._volume=a(this.media.volume),this._muted=a(this.media.muted),this._playbackRate=a(this.media.playbackRate||1),this._seeking=a(!1),this.setupReactiveMediaEvents(),t.mediaControls&&(this.media.controls=!0),t.autoplay&&(this.media.autoplay=!0),null!=t.playbackRate&&this.onMediaEvent(\"canplay\",(()=>{null!=t.playbackRate&&(this.media.playbackRate=t.playbackRate)}),{once:!0})}setupReactiveMediaEvents(){this.reactiveMediaEventCleanups.push(this.onMediaEvent(\"play\",(()=>{this._isPlaying.set(!0)}))),this.reactiveMediaEventCleanups.push(this.onMediaEvent(\"pause\",(()=>{this._isPlaying.set(!1)}))),this.reactiveMediaEventCleanups.push(this.onMediaEvent(\"ended\",(()=>{this._isPlaying.set(!1)}))),this.reactiveMediaEventCleanups.push(this.onMediaEvent(\"timeupdate\",(()=>{this._currentTime.set(this.media.currentTime)}))),this.reactiveMediaEventCleanups.push(this.onMediaEvent(\"durationchange\",(()=>{this._duration.set(this.media.duration||0)}))),this.reactiveMediaEventCleanups.push(this.onMediaEvent(\"loadedmetadata\",(()=>{this._duration.set(this.media.duration||0)}))),this.reactiveMediaEventCleanups.push(this.onMediaEvent(\"seeking\",(()=>{this._seeking.set(!0)}))),this.reactiveMediaEventCleanups.push(this.onMediaEvent(\"seeked\",(()=>{this._seeking.set(!1)}))),this.reactiveMediaEventCleanups.push(this.onMediaEvent(\"volumechange\",(()=>{this._volume.set(this.media.volume),this._muted.set(this.media.muted)}))),this.reactiveMediaEventCleanups.push(this.onMediaEvent(\"ratechange\",(()=>{this._playbackRate.set(this.media.playbackRate)})))}onMediaEvent(t,e,i){return this.media.addEventListener(t,e,i),()=>this.media.removeEventListener(t,e,i)}getSrc(){return this.media.currentSrc||this.media.src||\"\"}revokeSrc(){const t=this.getSrc();t.startsWith(\"blob:\")&&URL.revokeObjectURL(t)}canPlayType(t){return\"\"!==this.media.canPlayType(t)}setSrc(t,e){const i=this.getSrc();if(t&&i===t)return;this.revokeSrc();const n=e instanceof Blob&&(this.canPlayType(e.type)||!t)?URL.createObjectURL(e):t;if(i&&this.media.removeAttribute(\"src\"),n||t)try{this.media.src=n}catch(e){this.media.src=t}}destroy(){this.reactiveMediaEventCleanups.forEach((t=>t())),this.reactiveMediaEventCleanups=[],this.isExternalMedia||(this.media.pause(),this.revokeSrc(),this.media.removeAttribute(\"src\"),this.media.load(),this.media.remove())}setMediaElement(t){this.reactiveMediaEventCleanups.forEach((t=>t())),this.reactiveMediaEventCleanups=[],this.media=t,this.setupReactiveMediaEvents()}play(){return t(this,void 0,void 0,(function*(){try{return yield this.media.play()}catch(t){if(t instanceof DOMException&&\"AbortError\"===t.name)return;throw t}}))}pause(){this.media.pause()}isPlaying(){return!this.media.paused&&!this.media.ended}setTime(t){this.media.currentTime=Math.max(0,Math.min(t,this.getDuration()))}getDuration(){return this.media.duration}getCurrentTime(){return this.media.currentTime}getVolume(){return this.media.volume}setVolume(t){this.media.volume=t}getMuted(){return this.media.muted}setMuted(t){this.media.muted=t}getPlaybackRate(){return this.media.playbackRate}isSeeking(){return this.media.seeking}setPlaybackRate(t,e){null!=e&&(this.media.preservesPitch=e),this.media.playbackRate=t}getMediaElement(){return this.media}setSinkId(t){return this.media.setSinkId(t)}}function u({maxTop:t,maxBottom:e,halfHeight:i,vScale:n,barMinHeight:s=0,barAlign:r}){let o=Math.round(t*i*n);let a=o+Math.round(e*i*n)||1;return a<s&&(a=s,r||(o=a/2)),{topHeight:o,totalHeight:a}}function d({barAlign:t,halfHeight:e,topHeight:i,totalHeight:n,canvasHeight:s}){return\"top\"===t?0:\"bottom\"===t?s-n:e-i}function p(t,e,i){const n=e-t.left,s=i-t.top;return[n/t.width,s/t.height]}function m(t){return Boolean(t.barWidth||t.barGap||t.barAlign)}function g(t,e){if(!m(e))return t;const i=e.barWidth||.5,n=i+(e.barGap||i/2);return 0===n?t:Math.floor(t/n)*n}function v({scrollLeft:t,totalWidth:e,numCanvases:i}){if(0===e)return[0];const n=t/e,s=Math.floor(n*i);return[s-1,s,s+1]}function f(t){const e=t._cleanup;\"function\"==typeof e&&e()}function b(t){const e=a({scrollLeft:t.scrollLeft,scrollWidth:t.scrollWidth,clientWidth:t.clientWidth}),i=l((()=>function(t){const{scrollLeft:e,scrollWidth:i,clientWidth:n}=t;if(0===i)return{startX:0,endX:1};const s=e/i,r=(e+n)/i;return{startX:Math.max(0,Math.min(1,s)),endX:Math.max(0,Math.min(1,r))}}(e.value)),[e]),n=l((()=>function(t){return{left:t.scrollLeft,right:t.scrollLeft+t.clientWidth}}(e.value)),[e]),s=()=>{e.set({scrollLeft:t.scrollLeft,scrollWidth:t.scrollWidth,clientWidth:t.clientWidth})};t.addEventListener(\"scroll\",s,{passive:!0});return{scrollData:e,percentages:i,bounds:n,cleanup:()=>{t.removeEventListener(\"scroll\",s),f(e)}}}class y extends e{constructor(t,e){super(),this.timeouts=[],this.isScrollable=!1,this.audioData=null,this.resizeObserver=null,this.lastContainerWidth=0,this.isDragging=!1,this.subscriptions=[],this.unsubscribeOnScroll=[],this.dragStream=null,this.scrollStream=null,this.containerInlinePadding=0,this.subscriptions=[],this.options=t;const i=this.parentFromOptionsContainer(t.container);this.parent=i;const[n,s]=this.initHtml();i.appendChild(n),this.container=n,this.scrollContainer=s.querySelector(\".scroll\"),this.wrapper=s.querySelector(\".wrapper\"),this.canvasWrapper=s.querySelector(\".canvases\"),this.progressWrapper=s.querySelector(\".progress\"),this.cursor=s.querySelector(\".cursor\"),this.calculateInlinePadding(),e&&s.appendChild(e),this.initEvents()}parentFromOptionsContainer(t){let e;if(\"string\"==typeof t?e=document.querySelector(t):t instanceof HTMLElement&&(e=t),!e)throw new Error(\"Container not found\");return e}initEvents(){this.wrapper.addEventListener(\"click\",(t=>{const e=this.wrapper.getBoundingClientRect(),[i,n]=p(e,t.clientX,t.clientY);this.emit(\"click\",i,n)})),this.wrapper.addEventListener(\"dblclick\",(t=>{const e=this.wrapper.getBoundingClientRect(),[i,n]=p(e,t.clientX,t.clientY);this.emit(\"dblclick\",i,n)})),!0!==this.options.dragToSeek&&\"object\"!=typeof this.options.dragToSeek||this.initDrag(),this.scrollStream=b(this.scrollContainer);const t=h((()=>{const{startX:t,endX:e}=this.scrollStream.percentages.value,{left:i,right:n}=this.scrollStream.bounds.value;this.emit(\"scroll\",t,e,i,n)}),[this.scrollStream.percentages,this.scrollStream.bounds]);if(this.subscriptions.push(t),\"function\"==typeof ResizeObserver){const t=this.createDelay(100);this.resizeObserver=new ResizeObserver((()=>{t().then((()=>this.onContainerResize())).catch((()=>{}))})),this.resizeObserver.observe(this.scrollContainer)}}onContainerResize(){const t=this.parent.clientWidth;this.calculateInlinePadding(),t===this.lastContainerWidth&&\"auto\"!==this.options.height||(this.lastContainerWidth=t,this.reRender(),this.emit(\"resize\"))}initDrag(){if(this.dragStream)return;this.dragStream=function(t,e={}){const{threshold:i=3,mouseButton:n=0,touchDelay:s=100}=e,r=a(null),o=new Map,l=matchMedia(\"(pointer: coarse)\").matches;let h=()=>{};const c=e=>{if(e.button!==n)return;if(o.set(e.pointerId,e),o.size>1)return;let a=e.clientX,c=e.clientY,u=!1;const d=Date.now(),p=t.getBoundingClientRect(),{left:m,top:g}=p,v=t=>{if(t.defaultPrevented||o.size>1)return;if(l&&Date.now()-d<s)return;const e=t.clientX,n=t.clientY,h=e-a,p=n-c;(u||Math.abs(h)>i||Math.abs(p)>i)&&(t.preventDefault(),t.stopPropagation(),u||(r.set({type:\"start\",x:a-m,y:c-g}),u=!0),r.set({type:\"move\",x:e-m,y:n-g,deltaX:h,deltaY:p}),a=e,c=n)},f=t=>{if(o.delete(t.pointerId),u){const e=t.clientX,i=t.clientY;r.set({type:\"end\",x:e-m,y:i-g})}h()},b=t=>{o.delete(t.pointerId),t.relatedTarget&&t.relatedTarget!==document.documentElement||f(t)},y=t=>{u&&(t.stopPropagation(),t.preventDefault())},C=t=>{t.defaultPrevented||o.size>1||u&&t.preventDefault()};document.addEventListener(\"pointermove\",v),document.addEventListener(\"pointerup\",f),document.addEventListener(\"pointerout\",b),document.addEventListener(\"pointercancel\",b),document.addEventListener(\"touchmove\",C,{passive:!1}),document.addEventListener(\"click\",y,{capture:!0}),h=()=>{document.removeEventListener(\"pointermove\",v),document.removeEventListener(\"pointerup\",f),document.removeEventListener(\"pointerout\",b),document.removeEventListener(\"pointercancel\",b),document.removeEventListener(\"touchmove\",C),setTimeout((()=>{document.removeEventListener(\"click\",y,{capture:!0})}),10)}};return t.addEventListener(\"pointerdown\",c),{signal:r,cleanup:()=>{h(),t.removeEventListener(\"pointerdown\",c),o.clear(),f(r)}}}(this.wrapper);const t=h((()=>{const t=this.dragStream.signal.value;if(!t)return;const e=this.wrapper.getBoundingClientRect().width,i=(n=t.x/e)<0?0:n>1?1:n;var n;\"start\"===t.type?(this.isDragging=!0,this.emit(\"dragstart\",i)):\"move\"===t.type?this.emit(\"drag\",i):\"end\"===t.type&&(this.isDragging=!1,this.emit(\"dragend\",i))}),[this.dragStream.signal]);this.subscriptions.push(t)}calculateInlinePadding(){const{paddingLeft:t,paddingRight:e}=getComputedStyle(this.scrollContainer),i=parseFloat(t)+parseFloat(e);this.containerInlinePadding=Number.isNaN(i)?0:i}initHtml(){const t=document.createElement(\"div\"),e=t.attachShadow({mode:\"open\"}),i=this.options.cspNonce&&\"string\"==typeof this.options.cspNonce?this.options.cspNonce.replace(/\"/g,\"\"):\"\";return e.innerHTML=`\\n <style${i?` nonce=\"${i}\"`:\"\"}>\\n :host {\\n user-select: none;\\n min-width: 1px;\\n }\\n :host audio {\\n display: block;\\n width: 100%;\\n }\\n :host .scroll {\\n overflow-x: auto;\\n overflow-y: hidden;\\n width: 100%;\\n position: relative;\\n }\\n :host .noScrollbar {\\n scrollbar-color: transparent;\\n scrollbar-width: none;\\n }\\n :host .noScrollbar::-webkit-scrollbar {\\n display: none;\\n -webkit-appearance: none;\\n }\\n :host .wrapper {\\n position: relative;\\n overflow: visible;\\n z-index: 2;\\n }\\n :host .canvases {\\n min-height: ${this.getHeight(this.options.height,this.options.splitChannels)}px;\\n pointer-events: none;\\n }\\n :host .canvases > div {\\n position: relative;\\n }\\n :host canvas {\\n display: block;\\n position: absolute;\\n top: 0;\\n image-rendering: pixelated;\\n }\\n :host .progress {\\n pointer-events: none;\\n position: absolute;\\n z-index: 2;\\n top: 0;\\n left: 0;\\n width: 0;\\n height: 100%;\\n overflow: hidden;\\n }\\n :host .progress > div {\\n position: relative;\\n }\\n :host .cursor {\\n pointer-events: none;\\n position: absolute;\\n z-index: 5;\\n top: 0;\\n left: 0;\\n height: 100%;\\n border-radius: 2px;\\n }\\n </style>\\n\\n <div class=\"scroll\" part=\"scroll\">\\n <div class=\"wrapper\" part=\"wrapper\">\\n <div class=\"canvases\" part=\"canvases\"></div>\\n <div class=\"progress\" part=\"progress\"></div>\\n <div class=\"cursor\" part=\"cursor\"></div>\\n </div>\\n </div>\\n `,[t,e]}setOptions(t){var e;if(this.options.container!==t.container){const e=this.parentFromOptionsContainer(t.container);e.appendChild(this.container),this.parent=e}!0===t.dragToSeek||\"object\"==typeof this.options.dragToSeek?this.initDrag():(null===(e=this.dragStream)||void 0===e||e.cleanup(),this.dragStream=null),this.options=t,this.reRender()}getWrapper(){return this.wrapper}getWidth(){return this.scrollContainer.clientWidth-this.containerInlinePadding}getScroll(){return this.scrollContainer.scrollLeft}setScroll(t){this.scrollContainer.scrollLeft=t}setScrollPercentage(t){const{scrollWidth:e}=this.scrollContainer,i=e*t;this.setScroll(i)}destroy(){var t;this.subscriptions.forEach((t=>t())),this.container.remove(),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),null===(t=this.unsubscribeOnScroll)||void 0===t||t.forEach((t=>t())),this.unsubscribeOnScroll=[],this.dragStream&&(this.dragStream.cleanup(),this.dragStream=null),this.scrollStream&&(this.scrollStream.cleanup(),this.scrollStream=null)}createDelay(t=10){let e,i;const n=()=>{e&&(clearTimeout(e),e=void 0),i&&(i(),i=void 0)};return this.timeouts.push(n),()=>new Promise(((s,r)=>{n(),i=r,e=setTimeout((()=>{e=void 0,i=void 0,s()}),t)}))}getHeight(t,e){var i;const n=(null===(i=this.audioData)||void 0===i?void 0:i.numberOfChannels)||1;return function({optionsHeight:t,optionsSplitChannels:e,parentHeight:i,numberOfChannels:n,defaultHeight:s=128}){if(null==t)return s;const r=Number(t);if(!isNaN(r))return r;if(\"auto\"===t){const t=i||s;return(null==e?void 0:e.every((t=>!t.overlay)))?t/n:t}return s}({optionsHeight:t,optionsSplitChannels:e,parentHeight:this.parent.clientHeight,numberOfChannels:n,defaultHeight:128})}convertColorValues(t,e){return function(t,e,i){if(!Array.isArray(t))return t||\"\";if(0===t.length)return\"#999\";if(t.length<2)return t[0]||\"\";const n=document.createElement(\"canvas\"),s=n.getContext(\"2d\"),r=null!=i?i:n.height*e,o=s.createLinearGradient(0,0,0,r||e),a=1/(t.length-1);return t.forEach(((t,e)=>{o.addColorStop(e*a,t)})),o}(t,this.getPixelRatio(),null==e?void 0:e.canvas.height)}getPixelRatio(){return t=window.devicePixelRatio,Math.max(1,t||1);var t}renderBarWaveform(t,e,i,n){const{width:s,height:r}=i.canvas,{halfHeight:o,barWidth:a,barRadius:l,barIndexScale:h,barSpacing:c,barMinHeight:p}=function({width:t,height:e,length:i,options:n,pixelRatio:s}){const r=e/2,o=n.barWidth?n.barWidth*s:1,a=n.barGap?n.barGap*s:n.barWidth?o/2:0,l=o+a||1;return{halfHeight:r,barWidth:o,barGap:a,barRadius:n.barRadius||0,barMinHeight:n.barMinHeight?n.barMinHeight*s:0,barIndexScale:i>0?t/l/i:0,barSpacing:l}}({width:s,height:r,length:(t[0]||[]).length,options:e,pixelRatio:this.getPixelRatio()}),m=function({channelData:t,barIndexScale:e,barSpacing:i,barWidth:n,halfHeight:s,vScale:r,canvasHeight:o,barAlign:a,barMinHeight:l}){const h=t[0]||[],c=t[1]||h,p=h.length,m=[];let g=0,v=0,f=0;for(let t=0;t<=p;t++){const p=Math.round(t*e);if(p>g){const{topHeight:t,totalHeight:e}=u({maxTop:v,maxBottom:f,halfHeight:s,vScale:r,barMinHeight:l,barAlign:a}),h=d({barAlign:a,halfHeight:s,topHeight:t,totalHeight:e,canvasHeight:o});m.push({x:g*i,y:h,width:n,height:e}),g=p,v=0,f=0}const b=Math.abs(h[t]||0),y=Math.abs(c[t]||0);b>v&&(v=b),y>f&&(f=y)}return m}({channelData:t,barIndexScale:h,barSpacing:c,barWidth:a,halfHeight:o,vScale:n,canvasHeight:r,barAlign:e.barAlign,barMinHeight:p});i.beginPath();for(const t of m)l&&\"roundRect\"in i?i.roundRect(t.x,t.y,t.width,t.height,l):i.rect(t.x,t.y,t.width,t.height);i.fill(),i.closePath()}renderLineWaveform(t,e,i,n){const{width:s,height:r}=i.canvas,o=function({channelData:t,width:e,height:i,vScale:n}){const s=i/2,r=t[0]||[];return[r,t[1]||r].map(((t,i)=>{const r=t.length,o=r?e/r:0,a=s,l=0===i?-1:1,h=[{x:0,y:a}];let c=0,u=0;for(let e=0;e<=r;e++){const i=Math.round(e*o);if(i>c){const t=a+(Math.round(u*s*n)||1)*l;h.push({x:c,y:t}),c=i,u=0}const r=Math.abs(t[e]||0);r>u&&(u=r)}return h.push({x:c,y:a}),h}))}({channelData:t,width:s,height:r,vScale:n});i.beginPath();for(const t of o)if(t.length){i.moveTo(t[0].x,t[0].y);for(let e=1;e<t.length;e++){const n=t[e];i.lineTo(n.x,n.y)}}i.fill(),i.closePath()}renderWaveform(t,e,i){if(i.fillStyle=this.convertColorValues(e.waveColor,i),e.renderFunction)return void e.renderFunction(t,i);const n=function({channelData:t,barHeight:e,normalize:i,maxPeak:n}){var s;const r=e||1;if(!i)return r;const o=t[0];if(!o||0===o.length)return r;let a=null!=n?n:0;if(!n)for(let t=0;t<o.length;t++){const e=null!==(s=o[t])&&void 0!==s?s:0,i=Math.abs(e);i>a&&(a=i)}return a?r/a:r}({channelData:t,barHeight:e.barHeight,normalize:e.normalize,maxPeak:e.maxPeak});m(e)?this.renderBarWaveform(t,e,i,n):this.renderLineWaveform(t,e,i,n)}renderSingleCanvas(t,e,i,n,s,r,o){const a=this.getPixelRatio(),l=document.createElement(\"canvas\");l.width=Math.round(i*a),l.height=Math.round(n*a),l.style.width=`${i}px`,l.style.height=`${n}px`,l.style.left=`${Math.round(s)}px`,r.appendChild(l);const h=l.getContext(\"2d\");if(e.renderFunction?(h.fillStyle=this.convertColorValues(e.waveColor,h),e.renderFunction(t,h)):this.renderWaveform(t,e,h),l.width>0&&l.height>0){const t=l.cloneNode(),i=t.getContext(\"2d\");i.drawImage(l,0,0),i.globalCompositeOperation=\"source-in\",i.fillStyle=this.convertColorValues(e.progressColor,i),i.fillRect(0,0,l.width,l.height),o.appendChild(t)}}renderMultiCanvas(t,e,i,n,s,r){const o=this.getPixelRatio(),{clientWidth:a}=this.scrollContainer,l=i/o,h=function({clientWidth:t,totalWidth:e,options:i}){return g(Math.min(8e3,t,e),i)}({clientWidth:a,totalWidth:l,options:e});let c={};if(0===h)return;const u=i=>{if(i<0||i>=d)return;if(c[i])return;c[i]=!0;const o=i*h;let a=Math.min(l-o,h);if(a=g(a,e),a<=0)return;const u=function({channelData:t,offset:e,clampedWidth:i,totalWidth:n}){return t.map((t=>{const s=Math.floor(e/n*t.length),r=Math.floor((e+i)/n*t.length);return t.slice(s,r)}))}({channelData:t,offset:o,clampedWidth:a,totalWidth:l});this.renderSingleCanvas(u,e,a,n,o,s,r)},d=Math.ceil(l/h);if(!this.isScrollable){for(let t=0;t<d;t++)u(t);return}if(v({scrollLeft:this.scrollContainer.scrollLeft,totalWidth:l,numCanvases:d}).forEach((t=>u(t))),d>1){const t=this.on(\"scroll\",(()=>{const{scrollLeft:t}=this.scrollContainer;Object.keys(c).length>10&&(s.innerHTML=\"\",r.innerHTML=\"\",c={}),v({scrollLeft:t,totalWidth:l,numCanvases:d}).forEach((t=>u(t)))}));this.unsubscribeOnScroll.push(t)}}renderChannel(t,e,i,n){var{overlay:s}=e,r=function(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(i[n]=t[n]);if(null!=t&&\"function\"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(t);s<n.length;s++)e.indexOf(n[s])<0&&Object.prototype.propertyIsEnumerable.call(t,n[s])&&(i[n[s]]=t[n[s]])}return i}(e,[\"overlay\"]);const o=document.createElement(\"div\"),a=this.getHeight(r.height,r.splitChannels);o.style.height=`${a}px`,s&&n>0&&(o.style.marginTop=`-${a}px`),this.canvasWrapper.style.minHeight=`${a}px`,this.canvasWrapper.appendChild(o);const l=o.cloneNode();this.progressWrapper.appendChild(l),this.renderMultiCanvas(t,r,i,a,o,l)}render(e){return t(this,void 0,void 0,(function*(){var t;this.timeouts.forEach((t=>t())),this.timeouts=[],this.canvasWrapper.innerHTML=\"\",this.progressWrapper.innerHTML=\"\",null!=this.options.width&&(this.scrollContainer.style.width=\"number\"==typeof this.options.width?`${this.options.width}px`:this.options.width);const i=this.getPixelRatio(),n=this.scrollContainer.clientWidth-this.containerInlinePadding,{scrollWidth:s,isScrollable:r,useParentWidth:o,width:a}=function({duration:t,minPxPerSec:e=0,parentWidth:i,fillParent:n,pixelRatio:s}){const r=Math.ceil(t*e),o=r>i,a=Boolean(n&&!o);return{scrollWidth:r,isScrollable:o,useParentWidth:a,width:(a?i:r)*s}}({duration:e.duration,minPxPerSec:this.options.minPxPerSec||0,parentWidth:n,fillParent:this.options.fillParent,pixelRatio:i});if(this.isScrollable=r,this.wrapper.style.width=o?\"100%\":`${s}px`,this.scrollContainer.style.overflowX=this.isScrollable?\"auto\":\"hidden\",this.scrollContainer.classList.toggle(\"noScrollbar\",!!this.options.hideScrollbar),this.cursor.style.backgroundColor=`${this.options.cursorColor||this.options.progressColor}`,this.cursor.style.width=`${this.options.cursorWidth}px`,this.audioData=e,this.emit(\"render\"),this.options.splitChannels)for(let i=0;i<e.numberOfChannels;i++){const n=Object.assign(Object.assign({},this.options),null===(t=this.options.splitChannels)||void 0===t?void 0:t[i]);this.renderChannel([e.getChannelData(i)],n,a,i)}else{const t=[e.getChannelData(0)];e.numberOfChannels>1&&t.push(e.getChannelData(1)),this.renderChannel(t,this.options,a,0)}Promise.resolve().then((()=>this.emit(\"rendered\")))}))}reRender(){if(this.unsubscribeOnScroll.forEach((t=>t())),this.unsubscribeOnScroll=[],!this.audioData)return;const{scrollWidth:t}=this.scrollContainer,{right:e}=this.progressWrapper.getBoundingClientRect();if(this.render(this.audioData),!this.isScrollable&&this.scrollContainer.scrollLeft)this.scrollContainer.scrollLeft=0;else if(this.isScrollable&&t!==this.scrollContainer.scrollWidth){const{right:t}=this.progressWrapper.getBoundingClientRect(),i=function(t){const e=2*t;return(e<0?Math.floor(e):Math.ceil(e))/2}(t-e);this.scrollContainer.scrollLeft+=i}}zoom(t){this.options.minPxPerSec=t,this.reRender()}scrollIntoView(t,e=!1){var i;const{scrollLeft:n,scrollWidth:s,clientWidth:r}=this.scrollContainer,o=t*s,a=n,l=n+r,h=r/2;if(this.isDragging){const t=30;o+t>l?this.scrollContainer.scrollLeft+=t:o-t<a&&(this.scrollContainer.scrollLeft-=t)}else{(o<a||o>l)&&(this.scrollContainer.scrollLeft=o-(this.options.autoCenter?h:0));const t=o-n-h;if(e&&this.options.autoCenter&&t>0){const e=null===(i=this.audioData)||void 0===i?void 0:i.duration;if(void 0===e||e<=0)return void(this.scrollContainer.scrollLeft+=t);const n=s/e;this.scrollContainer.scrollLeft+=n<=600?Math.min(t,10):t}}}renderProgress(t,e){if(isNaN(t))return;const i=100*t;this.canvasWrapper.style.clipPath=`polygon(${i}% 0%, 100% 0%, 100% 100%, ${i}% 100%)`,this.progressWrapper.style.width=`${i}%`,this.cursor.style.left=`${i}%`,this.cursor.style.transform=this.options.cursorWidth?`translateX(-${t*this.options.cursorWidth}px)`:\"\",this.isScrollable&&this.options.autoScroll&&this.audioData&&this.audioData.duration>0&&this.scrollIntoView(t,e)}exportImage(e,i,n){return t(this,void 0,void 0,(function*(){const t=this.canvasWrapper.querySelectorAll(\"canvas\");if(!t.length)throw new Error(\"No waveform data\");if(\"dataURL\"===n){const n=Array.from(t).map((t=>t.toDataURL(e,i)));return Promise.resolve(n)}return Promise.all(Array.from(t).map((t=>new Promise(((n,s)=>{t.toBlob((t=>{t?n(t):s(new Error(\"Could not export image\"))}),e,i)})))))}))}}class C extends e{constructor(){super(...arguments),this.animationFrameId=null,this.isRunning=!1}start(){if(this.isRunning)return;this.isRunning=!0;const t=()=>{this.isRunning&&(this.emit(\"tick\"),this.animationFrameId=requestAnimationFrame(t))};t()}stop(){this.isRunning=!1,null!==this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null)}destroy(){this.stop()}}class S extends e{constructor(t=new AudioContext){super(),this.bufferNode=null,this.playStartTime=0,this.playbackPosition=0,this._muted=!1,this._playbackRate=1,this._duration=void 0,this.buffer=null,this.currentSrc=\"\",this.paused=!0,this.crossOrigin=null,this.seeking=!1,this.autoplay=!1,this.addEventListener=this.on,this.removeEventListener=this.un,this.audioContext=t,this.gainNode=this.audioContext.createGain(),this.gainNode.connect(this.audioContext.destination)}load(){return t(this,void 0,void 0,(function*(){}))}get src(){return this.currentSrc}set src(t){if(this.currentSrc=t,this._duration=void 0,!t)return this.buffer=null,void this.emit(\"emptied\");fetch(t).then((e=>{if(e.status>=400)throw new Error(`Failed to fetch ${t}: ${e.status} (${e.statusText})`);return e.arrayBuffer()})).then((e=>this.currentSrc!==t?null:this.audioContext.decodeAudioData(e))).then((e=>{this.currentSrc===t&&(this.buffer=e,this.emit(\"loadedmetadata\"),this.emit(\"canplay\"),this.autoplay&&this.play())})).catch((t=>{console.error(\"WebAudioPlayer load error:\",t)}))}_play(){if(!this.paused)return;this.paused=!1,this.bufferNode&&(this.bufferNode.onended=null,this.bufferNode.disconnect()),this.bufferNode=this.audioContext.createBufferSource(),this.buffer&&(this.bufferNode.buffer=this.buffer),this.bufferNode.playbackRate.value=this._playbackRate,this.bufferNode.connect(this.gainNode);let t=this.playbackPosition;(t>=this.duration||t<0)&&(t=0,this.playbackPosition=0),this.bufferNode.start(this.audioContext.currentTime,t),this.playStartTime=this.audioContext.currentTime,this.bufferNode.onended=()=>{this.currentTime>=this.duration&&(this.pause(),this.emit(\"ended\"))}}_pause(){var t;this.paused=!0,null===(t=this.bufferNode)||void 0===t||t.stop(),this.playbackPosition+=(this.audioContext.currentTime-this.playStartTime)*this._playbackRate}play(){return t(this,void 0,void 0,(function*(){this.paused&&(this._play(),this.emit(\"play\"))}))}pause(){this.paused||(this._pause(),this.emit(\"pause\"))}stopAt(t){const e=t-this.currentTime,i=this.bufferNode;null==i||i.stop(this.audioContext.currentTime+e),null==i||i.addEventListener(\"ended\",(()=>{i===this.bufferNode&&(this.bufferNode=null,this.pause())}),{once:!0})}setSinkId(e){return t(this,void 0,void 0,(function*(){return this.audioContext.setSinkId(e)}))}get playbackRate(){return this._playbackRate}set playbackRate(t){const e=!this.paused;e&&this._pause(),this._playbackRate=t,e&&this._play(),this.bufferNode&&(this.bufferNode.playbackRate.value=t)}get currentTime(){return this.paused?this.playbackPosition:this.playbackPosition+(this.audioContext.currentTime-this.playStartTime)*this._playbackRate}set currentTime(t){const e=!this.paused;e&&this._pause(),this.playbackPosition=t,e&&this._play(),this.emit(\"seeking\"),this.emit(\"timeupdate\")}get duration(){var t,e;return null!==(t=this._duration)&&void 0!==t?t:(null===(e=this.buffer)||void 0===e?void 0:e.duration)||0}set duration(t){this._duration=t}get volume(){return this.gainNode.gain.value}set volume(t){this.gainNode.gain.value=t,this.emit(\"volumechange\")}get muted(){return this._muted}set muted(t){this._muted!==t&&(this._muted=t,this._muted?this.gainNode.disconnect():this.gainNode.connect(this.audioContext.destination))}canPlayType(t){return/^(audio|video)\\//.test(t)}getGainNode(){return this.gainNode}getChannelData(){const t=[];if(!this.buffer)return t;const e=this.buffer.numberOfChannels;for(let i=0;i<e;i++)t.push(this.buffer.getChannelData(i));return t}removeAttribute(t){switch(t){case\"src\":this.src=\"\";break;case\"playbackRate\":this.playbackRate=0;break;case\"currentTime\":this.currentTime=0;break;case\"duration\":this.duration=0;break;case\"volume\":this.volume=0;break;case\"muted\":this.muted=!1}}}const P={waveColor:\"#999\",progressColor:\"#555\",cursorWidth:1,minPxPerSec:0,fillParent:!0,interact:!0,dragToSeek:!1,autoScroll:!0,autoCenter:!0,sampleRate:8e3};class E extends c{static create(t){return new E(t)}getState(){return this.wavesurferState}getRenderer(){return this.renderer}constructor(t){const e=t.media||(\"WebAudio\"===t.backend?new S:void 0);super({media:e,mediaControls:t.mediaControls,autoplay:t.autoplay,playbackRate:t.audioRate}),this.plugins=[],this.decodedData=null,this.stopAtPosition=null,this.subscriptions=[],this.mediaSubscriptions=[],this.abortController=null,this.reactiveCleanups=[],this.options=Object.assign({},P,t);const{state:i,actions:n}=function(t){var e,i,n,s,r,o;const h=null!==(e=null==t?void 0:t.currentTime)&&void 0!==e?e:a(0),c=null!==(i=null==t?void 0:t.duration)&&void 0!==i?i:a(0),u=null!==(n=null==t?void 0:t.isPlaying)&&void 0!==n?n:a(!1),d=null!==(s=null==t?void 0:t.isSeeking)&&void 0!==s?s:a(!1),p=null!==(r=null==t?void 0:t.volume)&&void 0!==r?r:a(1),m=null!==(o=null==t?void 0:t.playbackRate)&&void 0!==o?o:a(1),g=a(null),v=a(null),f=a(\"\"),b=a(0),y=a(0),C=l((()=>!u.value),[u]),S=l((()=>null!==g.value),[g]),P=l((()=>S.value&&c.value>0),[S,c]),E=l((()=>h.value),[h]),w=l((()=>c.value>0?h.value/c.value:0),[h,c]);return{state:{currentTime:h,duration:c,isPlaying:u,isPaused:C,isSeeking:d,volume:p,playbackRate:m,audioBuffer:g,peaks:v,url:f,zoom:b,scrollPosition:y,canPlay:S,isReady:P,progress:E,progressPercent:w},actions:{setCurrentTime:t=>{const e=Math.max(0,Math.min(c.value||1/0,t));h.set(e)},setDuration:t=>{c.set(Math.max(0,t))},setPlaying:t=>{u.set(t)},setSeeking:t=>{d.set(t)},setVolume:t=>{const e=Math.max(0,Math.min(1,t));p.set(e)},setPlaybackRate:t=>{const e=Math.max(.1,Math.min(16,t));m.set(e)},setAudioBuffer:t=>{g.set(t),t&&c.set(t.duration)},setPeaks:t=>{v.set(t)},setUrl:t=>{f.set(t)},setZoom:t=>{b.set(Math.max(0,t))},setScrollPosition:t=>{y.set(Math.max(0,t))}}}}({isPlaying:this.isPlayingSignal,currentTime:this.currentTimeSignal,duration:this.durationSignal,volume:this.volumeSignal,playbackRate:this.playbackRateSignal,isSeeking:this.seekingSignal});this.wavesurferState=i,this.wavesurferActions=n,this.timer=new C;const s=e?void 0:this.getMediaElement();this.renderer=new y(this.options,s),this.initPlayerEvents(),this.initRendererEvents(),this.initTimerEvents(),this.initReactiveState(),this.initPlugins();const r=this.options.url||this.getSrc()||\"\";Promise.resolve().then((()=>{this.emit(\"init\");const{peaks:t,duration:e}=this.options;(r||t&&e)&&this.load(r,t,e).catch((t=>{this.emit(\"error\",t instanceof Error?t:new Error(String(t)))}))}))}updateProgress(t=this.getCurrentTime()){return this.renderer.renderProgress(t/this.getDuration(),this.isPlaying()),t}initTimerEvents(){this.subscriptions.push(this.timer.on(\"tick\",(()=>{if(!this.isSeeking()){const t=this.updateProgress();this.emit(\"timeupdate\",t),this.emit(\"audioprocess\",t),null!=this.stopAtPosition&&this.isPlaying()&&t>=this.stopAtPosition&&this.pause()}})))}initReactiveState(){this.reactiveCleanups.push(function(t,e){const i=[];i.push(h((()=>{const i=t.isPlaying.value;e.emit(i?\"play\":\"pause\")}),[t.isPlaying])),i.push(h((()=>{const i=t.currentTime.value;e.emit(\"timeupdate\",i),t.isPlaying.value&&e.emit(\"audioprocess\",i)}),[t.currentTime,t.isPlaying])),i.push(h((()=>{t.isSeeking.value&&e.emit(\"seeking\",t.currentTime.value)}),[t.isSeeking,t.currentTime]));let n=!1;i.push(h((()=>{t.isReady.value&&!n&&(n=!0,e.emit(\"ready\",t.duration.value))}),[t.isReady,t.duration]));let s=!1;return i.push(h((()=>{const i=t.isPlaying.value,n=t.currentTime.value,r=t.duration.value,o=r>0&&n>=r;s&&!i&&o&&e.emit(\"finish\"),s=i&&o}),[t.isPlaying,t.currentTime,t.duration])),i.push(h((()=>{const i=t.zoom.value;i>0&&e.emit(\"zoom\",i)}),[t.zoom])),()=>{i.forEach((t=>t()))}}(this.wavesurferState,{emit:this.emit.bind(this)}))}initPlayerEvents(){this.isPlaying()&&(this.emit(\"play\"),this.timer.start()),this.mediaSubscriptions.push(this.onMediaEvent(\"timeupdate\",(()=>{const t=this.updateProgress();this.emit(\"timeupdate\",t)})),this.onMediaEvent(\"play\",(()=>{this.emit(\"play\"),this.timer.start()})),this.onMediaEvent(\"pause\",(()=>{this.emit(\"pause\"),this.timer.stop(),this.stopAtPosition=null})),this.onMediaEvent(\"emptied\",(()=>{this.timer.stop(),this.stopAtPosition=null})),this.onMediaEvent(\"ended\",(()=>{this.emit(\"timeupdate\",this.getDuration()),this.emit(\"finish\"),this.stopAtPosition=null})),this.onMediaEvent(\"seeking\",(()=>{this.emit(\"seeking\",this.getCurrentTime())})),this.onMediaEvent(\"error\",(()=>{var t;this.emit(\"error\",null!==(t=this.getMediaElement().error)&&void 0!==t?t:new Error(\"Media error\")),this.stopAtPosition=null})))}initRendererEvents(){this.subscriptions.push(this.renderer.on(\"click\",((t,e)=>{this.options.interact&&(this.seekTo(t),this.emit(\"interaction\",t*this.getDuration()),this.emit(\"click\",t,e))})),this.renderer.on(\"dblclick\",((t,e)=>{this.emit(\"dblclick\",t,e)})),this.renderer.on(\"scroll\",((t,e,i,n)=>{const s=this.getDuration();this.emit(\"scroll\",t*s,e*s,i,n)})),this.renderer.on(\"render\",(()=>{this.emit(\"redraw\")})),this.renderer.on(\"rendered\",(()=>{this.emit(\"redrawcomplete\")})),this.renderer.on(\"dragstart\",(t=>{this.emit(\"dragstart\",t)})),this.renderer.on(\"dragend\",(t=>{this.emit(\"dragend\",t)})),this.renderer.on(\"resize\",(()=>{this.emit(\"resize\")})));{let t;const e=this.renderer.on(\"drag\",(e=>{var i;if(!this.options.interact)return;this.renderer.renderProgress(e),clearTimeout(t);let n=0;const s=this.options.dragToSeek;this.isPlaying()?n=0:!0===s?n=200:s&&\"object\"==typeof s&&(n=null!==(i=s.debounceTime)&&void 0!==i?i:200),t=setTimeout((()=>{this.seekTo(e)}),n),this.emit(\"interaction\",e*this.getDuration()),this.emit(\"drag\",e)}));this.subscriptions.push((()=>{clearTimeout(t),e()}))}}initPlugins(){var t;(null===(t=this.options.plugins)||void 0===t?void 0:t.length)&&this.options.plugins.forEach((t=>{this.registerPlugin(t)}))}unsubscribePlayerEvents(){this.mediaSubscriptions.forEach((t=>t())),this.mediaSubscriptions=[]}setOptions(t){this.options=Object.assign({},this.options,t),t.duration&&!t.peaks&&(this.decodedData=i.createBuffer(this.exportPeaks(),t.duration)),t.peaks&&t.duration&&(this.decodedData=i.createBuffer(t.peaks,t.duration)),this.renderer.setOptions(this.options),t.audioRate&&this.setPlaybackRate(t.audioRate),null!=t.mediaControls&&(this.getMediaElement().controls=t.mediaControls)}registerPlugin(t){if(this.plugins.includes(t))return t;t._init(this),this.plugins.push(t);const e=t.once(\"destroy\",(()=>{this.plugins=this.plugins.filter((e=>e!==t)),this.subscriptions=this.subscriptions.filter((t=>t!==e))}));return this.subscriptions.push(e),t}unregisterPlugin(t){this.plugins=this.plugins.filter((e=>e!==t)),t.destroy()}getWrapper(){return this.renderer.getWrapper()}getWidth(){return this.renderer.getWidth()}getScroll(){return this.renderer.getScroll()}setScroll(t){return this.renderer.setScroll(t)}setScrollTime(t){const e=t/this.getDuration();this.renderer.setScrollPercentage(e)}getActivePlugins(){return this.plugins}loadAudio(e,n,s,r){return t(this,void 0,void 0,(function*(){var t;if(this.emit(\"load\",e),!this.options.media&&this.isPlaying()&&this.pause(),this.decodedData=null,this.stopAtPosition=null,null===(t=this.abortController)||void 0===t||t.abort(),this.abortController=null,!n&&!s){const t=this.options.fetchParams||{};window.AbortController&&!t.signal&&(this.abortController=new AbortController,t.signal=this.abortController.signal);const i=t=>this.emit(\"loading\",t);n=yield o.fetchBlob(e,i,t);const s=this.options.blobMimeType;s&&(n=new Blob([n],{type:s}))}this.setSrc(e,n);const a=yield new Promise((t=>{const e=r||this.getDuration();e?t(e):this.mediaSubscriptions.push(this.onMediaEvent(\"loadedmetadata\",(()=>t(this.getDuration())),{once:!0}))}));if(!e&&!n){const t=this.getMediaElement();t instanceof S&&(t.duration=a)}if(s)this.decodedData=i.createBuffer(s,a||0);else if(n){const t=yield n.arrayBuffer();this.decodedData=yield i.decode(t,this.options.sampleRate)}this.decodedData&&(this.emit(\"decode\",this.getDuration()),this.renderer.render(this.decodedData)),this.emit(\"ready\",this.getDuration())}))}load(e,i,n){return t(this,void 0,void 0,(function*(){try{return yield this.loadAudio(e,void 0,i,n)}catch(t){throw this.emit(\"error\",t),t}}))}loadBlob(e,i,n){return t(this,void 0,void 0,(function*(){try{return yield this.loadAudio(\"\",e,i,n)}catch(t){throw this.emit(\"error\",t),t}}))}zoom(t){if(!this.decodedData)throw new Error(\"No audio loaded\");this.renderer.zoom(t),this.emit(\"zoom\",t)}getDecodedData(){return this.decodedData}exportPeaks({channels:t=2,maxLength:e=8e3,precision:i=1e4}={}){if(!this.decodedData)throw new Error(\"The audio has not been decoded yet\");const n=Math.min(t,this.decodedData.numberOfChannels),s=[];for(let t=0;t<n;t++){const n=this.decodedData.getChannelData(t),r=[],o=n.length/e;for(let t=0;t<e;t++){const e=n.slice(Math.floor(t*o),Math.ceil((t+1)*o));let s=0;for(let t=0;t<e.length;t++){const i=e[t];Math.abs(i)>Math.abs(s)&&(s=i)}r.push(Math.round(s*i)/i)}s.push(r)}return s}getDuration(){let t=super.getDuration()||0;return 0!==t&&t!==1/0||!this.decodedData||(t=this.decodedData.duration),t}toggleInteraction(t){this.options.interact=t}setTime(t){this.stopAtPosition=null,super.setTime(t),this.updateProgress(t),this.emit(\"timeupdate\",t)}seekTo(t){const e=this.getDuration()*t;this.setTime(e)}play(e,i){const n=Object.create(null,{play:{get:()=>super.play}});return t(this,void 0,void 0,(function*(){null!=e&&this.setTime(e);const t=yield n.play.call(this);return null!=i&&(this.media instanceof S?this.media.stopAt(i):this.stopAtPosition=i),t}))}playPause(){return t(this,void 0,void 0,(function*(){return this.isPlaying()?this.pause():this.play()}))}stop(){this.pause(),this.setTime(0)}skip(t){this.setTime(this.getCurrentTime()+t)}empty(){this.load(\"\",[[0]],.001)}setMediaElement(t){this.unsubscribePlayerEvents(),super.setMediaElement(t),this.initPlayerEvents()}exportImage(){return t(this,arguments,void 0,(function*(t=\"image/png\",e=1,i=\"dataURL\"){return this.renderer.exportImage(t,e,i)}))}destroy(){var t;this.emit(\"destroy\"),null===(t=this.abortController)||void 0===t||t.abort(),this.plugins.forEach((t=>t.destroy())),this.subscriptions.forEach((t=>t())),this.unsubscribePlayerEvents(),this.reactiveCleanups.forEach((t=>t())),this.reactiveCleanups=[],this.timer.destroy(),this.renderer.destroy(),super.destroy()}}E.BasePlugin=class extends e{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit(\"destroy\"),this.subscriptions.forEach((t=>t())),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}},E.dom=r;export{E as default};\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget-react-Cj_zbk_F.js","names":[],"sources":["../messages/en.json"],"sourcesContent":["{\n \"tabs\": {\n \"home\": \"Home\",\n \"messages\": \"Messages\",\n \"help\": \"Help\",\n \"news\": \"News\",\n \"profile\": \"Profile\"\n },\n \"header\": {\n \"close\": \"Close\",\n \"back\": \"Back\",\n \"conversationSubtitle\": \"Our team can also help\",\n \"helpTitle\": \"Help\",\n \"newsTitle\": \"News\",\n \"expand\": \"Expand widget\",\n \"collapse\": \"Collapse widget\"\n },\n \"launcher\": {\n \"open\": \"Open chat\",\n \"close\": \"Close chat\"\n },\n \"home\": {\n \"greetingHeadline\": \"Hi there 👋\",\n \"greetingSubheadline\": \"How can we help?\",\n \"askTitle\": \"Ask a question\",\n \"askSubtitle\": \"Our bot and team can help\",\n \"recentMessageLabel\": \"Recent message\",\n \"recentMessageTitle\": \"Recent message\",\n \"recentMessageFromFallback\": \"Gaia\",\n \"recentMessageAgo\": \"4h\",\n \"recentMessageSample\": \"Hi there 👋 Thanks for reaching out - we'll be right back with you.\",\n \"featuredArticleLoading\": \"Featured article\",\n \"featuredArticleTap\": \"Tap to read\",\n \"featuredArticleEmpty\": \"Pick an article\",\n \"featuredArticleSetUp\": \"Configure this block in your dashboard\",\n \"featuredArticleDemoEyebrow\": \"Pioneer · Save the date\",\n \"featuredArticleDemoHeadline\": \"October 8, 2026\",\n \"featuredArticleDemoSubline\": \"San Francisco · In-person + virtual\",\n \"featuredArticleDemoCta\": \"See the launch agenda\",\n \"seeAgenda\": \"See the launch agenda\",\n \"browseHelp\": \"Browse Help\",\n \"whatsNew\": \"What's new\",\n \"searchPlaceholder\": \"Search for help\",\n \"pinnedArticlesTitle\": \"Read these first\",\n \"popularArticlesTitle\": \"Popular articles\",\n \"pinnedArticleRow\": \"Pinned article {n}\",\n \"newsPreviewTitle\": \"Latest news\",\n \"newsPreviewRow\": \"News update {n}\",\n \"myConversationsTitle\": \"Your conversations\",\n \"myConversationsEmpty\": \"View your conversations\",\n \"teamStatusOnline\": \"We're online\",\n \"teamStatusReplyTime\": \"Usually replies in a few minutes\"\n },\n \"messages\": {\n \"today\": \"Today\",\n \"yesterday\": \"Yesterday\",\n \"unreadMessages\": \"Unread messages\",\n \"emptyTitle\": \"No messages yet\",\n \"emptyBody\": \"Start a conversation and our team will get back to you here.\",\n \"sendCta\": \"Send us a message\",\n \"attach\": \"Attach a file\",\n \"commands\": \"Quick commands\",\n \"record\": \"Record a voice message\",\n \"stopRecording\": \"Stop recording\",\n \"recording\": \"Recording…\",\n \"uploading\": \"Uploading…\",\n \"uploadFailed\": \"Upload failed\",\n \"voiceDenied\": \"Microphone access denied\",\n \"voiceUnsupported\": \"Voice recording isn't supported in this browser\",\n \"fileTooLarge\": \"File is too large (max 10MB)\",\n \"fileMimeNotAllowed\": \"This file type isn't supported\",\n \"emoji\": \"Insert emoji\",\n \"cancelRecording\": \"Cancel recording\",\n \"pauseRecording\": \"Pause recording\",\n \"resumeRecording\": \"Resume recording\",\n \"playPreview\": \"Play recording\",\n \"emojiPicker\": \"Emoji picker\",\n \"emojiSearch\": \"Search…\",\n \"playAudio\": \"Play\",\n \"pauseAudio\": \"Pause\",\n \"openAudio\": \"Open audio\",\n \"removeAttachment\": \"Remove\",\n \"aiAssistant\": \"AI assistant\",\n \"operator\": \"Operator\",\n \"openImage\": \"Open image\",\n \"openPreview\": \"Open preview\",\n \"play\": \"Play\",\n \"pause\": \"Pause\",\n \"typing\": \"typing…\",\n \"aiThinking\": \"thinking…\",\n \"aiSearching\": \"browsing…\",\n \"typingSomeone\": \"Someone\",\n \"signInToChat\": \"Please sign in to start the conversation.\",\n \"signInUnavailable\": \"Sign-in is not available right now.\",\n \"googleSignIn\": \"Sign in with Google\",\n \"passkeySignIn\": \"Sign in with a passkey\",\n \"passkeyRegister\": \"First time? Set up a passkey\",\n \"passkeyError\": \"Couldn't sign in. Please try again.\",\n \"passkeyNoCredential\": \"No passkey on this device yet — tap “Set up a passkey” to create one.\",\n \"googleSignInDemo\": \"Continue with Google\"\n },\n \"prechat\": {\n \"title\": \"Before we start\",\n \"subtitle\": \"A few quick details so our team can help you faster.\",\n \"labelName\": \"Name\",\n \"labelEmail\": \"Email\",\n \"labelPhone\": \"Phone\",\n \"labelCustom\": \"Details\",\n \"required\": \"Required\",\n \"invalidEmail\": \"Please enter a valid email\",\n \"invalidPhone\": \"Please enter a valid phone number\",\n \"submit\": \"Continue\",\n \"submitFailed\": \"Couldn't submit - please try again.\"\n },\n \"help\": {\n \"searchPlaceholder\": \"Search for help\",\n \"emptyTitle\": \"No articles yet\",\n \"emptyBody\": \"Your operator hasn't published anything yet.\",\n \"back\": \"Back\",\n \"helpful\": \"Was this helpful?\",\n \"yes\": \"Yes\",\n \"no\": \"No\",\n \"thanks\": \"Thanks for the feedback.\",\n \"unresolvedCta\": \"Still need help? Message us\",\n \"noResults\": \"No results\",\n \"articleNotFound\": \"Article not found\",\n \"writtenBy\": \"Written by {names}\",\n \"relatedTitle\": \"Related articles\",\n \"collectionsCount\": \"{count, plural, =0 {No collections} one {# collection} other {# collections}}\",\n \"articlesCount\": \"{count, plural, =0 {No articles} one {Articles: #} other {Articles: #}}\",\n \"authorsByline\": \"Authors {first}{remaining, plural, =0 {} one { and # more} other { and # more}}\"\n },\n \"news\": {\n \"emptyTitle\": \"No updates yet\",\n \"emptyBody\": \"Check back here for product news and announcements.\",\n \"helpful\": \"Was this article helpful?\",\n \"yes\": \"Yes\",\n \"no\": \"No\",\n \"thanks\": \"Thanks for the feedback.\",\n \"searchPlaceholder\": \"Search news\",\n \"noResults\": \"No matching posts\",\n \"editedAt\": \"edited {when}\",\n \"articleNotFound\": \"Article not found.\",\n \"readOriginal\": \"Read the original\",\n \"relatedTitle\": \"Related\",\n \"writtenBy\": \"Written by {names}\"\n },\n \"reactions\": {\n \"ariaLabel\": \"Reactions\",\n \"tapAria\": \"React with {emoji}\"\n },\n \"languageSelector\": {\n \"title\": \"Read in another language\",\n \"ariaLabel\": \"Article languages\"\n },\n \"branding\": {\n \"poweredBy\": \"Powered by\",\n \"wexio\": \"Wexio\"\n },\n \"sound\": {\n \"mute\": \"Mute notification sounds\",\n \"unmute\": \"Unmute notification sounds\"\n },\n \"article\": {\n \"tableOfContents\": \"Table of contents\",\n \"tabFallback\": \"Tab {n}\"\n },\n \"peek\": {\n \"newMessage\": \"New message\",\n \"dismiss\": \"Dismiss\",\n \"aiAssistant\": \"AI assistant\",\n \"operator\": \"Operator\"\n },\n \"lightbox\": {\n \"mediaPreview\": \"Media preview\",\n \"close\": \"Close preview\",\n \"previous\": \"Previous\",\n \"next\": \"Next\"\n },\n \"profile\": {\n \"title\": \"Your profile\",\n \"subtitle\": \"Update your info and how the widget behaves.\",\n \"uploadAvatar\": \"Change photo\",\n \"removeAvatar\": \"Remove photo\",\n \"avatarUploading\": \"Uploading…\",\n \"preferencesHeading\": \"Preferences\",\n \"preferenceLanguage\": \"Language\",\n \"preferenceDesktopNotifications\": \"Desktop notifications\",\n \"preferenceDesktopNotificationsHint\": \"Get a system notification when the widget isn't focused.\",\n \"preferenceThemeMode\": \"Theme\",\n \"themeAuto\": \"Match system\",\n \"themeLight\": \"Light\",\n \"themeDark\": \"Dark\",\n \"themeLocked\": \"Theme is set by the operator.\",\n \"pinnedHint\": \"Set by the operator — not editable.\",\n \"requiredHint\": \"Required\",\n \"invalidEmail\": \"Please enter a valid email address.\",\n \"invalidPhone\": \"Use international format, e.g. +14155552671.\",\n \"noFields\": \"There's nothing to edit here yet.\",\n \"save\": \"Save changes\",\n \"saving\": \"Saving…\",\n \"cancel\": \"Discard\",\n \"saved\": \"Changes saved.\",\n \"loading\": \"Loading profile…\",\n \"loadError\": \"Couldn't load your profile. Please try again.\",\n \"retry\": \"Retry\",\n \"errorFieldNotAllowed\": \"This field isn't editable in this widget. Try refreshing.\",\n \"errorFieldPinned\": \"This field is locked by your account.\",\n \"errorFieldInvalid\": \"Some values aren't valid. Check the highlighted fields.\",\n \"errorThemeLocked\": \"Theme is locked by the operator.\",\n \"errorFeatureDisabled\": \"Profile editing has been turned off by the operator.\",\n \"errorGeneric\": \"Couldn't save your changes. Please try again.\",\n \"notificationsBlocked\": \"Notifications are blocked by the browser. Update site permissions to enable.\",\n \"notificationsRequest\": \"Allow notifications when prompted to enable this.\",\n \"systemFields\": {\n \"avatar\": \"Photo\",\n \"wexioId\": \"Wexio ID\",\n \"telegramId\": \"Telegram ID\",\n \"whatsappId\": \"WhatsApp ID\",\n \"viberId\": \"Viber ID\",\n \"instagramId\": \"Instagram ID\",\n \"optInWhatsapp\": \"WhatsApp opt-in\",\n \"webVerified\": \"Verified visitor\",\n \"firstName\": \"First name\",\n \"lastName\": \"Last name\",\n \"username\": \"Username\",\n \"language\": \"Language\",\n \"email\": \"Email\",\n \"phone\": \"Phone\",\n \"company\": \"Company\",\n \"location\": \"Location\",\n \"isValid\": \"Account valid\",\n \"chatStatus\": \"Chat status\",\n \"chatCategory\": \"Chat category\",\n \"priority\": \"Priority\",\n \"leadSource\": \"Lead source\",\n \"leadStatus\": \"Lead status\",\n \"interestLevel\": \"Interest level\",\n \"productInterest\": \"Product interest\",\n \"budgetRange\": \"Budget\",\n \"purchaseTimeline\": \"Purchase timeline\",\n \"lastMessageSentAt\": \"Last message sent\",\n \"lastMessageReceivedAt\": \"Last message received\",\n \"lastSeenAt\": \"Last seen\",\n \"firstMessageReceivedAt\": \"First contact\",\n \"isBlocked\": \"Blocked\",\n \"registrationDate\": \"Registered\",\n \"aiAvailable\": \"AI assistance\",\n \"totalMessagesSent\": \"Messages sent\",\n \"totalMessagesReceived\": \"Messages received\",\n \"totalAiMessagesSent\": \"AI messages sent\",\n \"totalBotMessagesSent\": \"Bot messages sent\",\n \"totalUserMessagesSent\": \"Operator messages sent\",\n \"flowCompletionRate\": \"Flow completion rate\",\n \"lastFlowCompleted\": \"Last completed flow\",\n \"totalFlowsStarted\": \"Flows started\",\n \"totalFlowsCompleted\": \"Flows completed\"\n },\n \"systemFieldOptions\": {\n \"chatStatus\": {\n \"ISSUE\": \"Issue\",\n \"RESOLVED\": \"Resolved\",\n \"PENDING\": \"Pending\",\n \"IN_PROGRESS\": \"In progress\",\n \"CLOSED\": \"Closed\"\n },\n \"chatCategory\": {\n \"SALES\": \"Sales\",\n \"SUPPORT\": \"Support\",\n \"BILLING\": \"Billing\",\n \"FEEDBACK\": \"Feedback\",\n \"GENERAL\": \"General\",\n \"OTHER\": \"Other\"\n },\n \"priority\": {\n \"LOW\": \"Low\",\n \"MEDIUM\": \"Medium\",\n \"HIGH\": \"High\",\n \"URGENT\": \"Urgent\"\n },\n \"leadStatus\": {\n \"NEW\": \"New\",\n \"CONTACTED\": \"Contacted\",\n \"QUALIFIED\": \"Qualified\",\n \"NEGOTIATING\": \"Negotiating\",\n \"WON\": \"Won\",\n \"LOST\": \"Lost\"\n },\n \"interestLevel\": {\n \"LOW\": \"Low\",\n \"MEDIUM\": \"Medium\",\n \"HIGH\": \"High\",\n \"VERY_HIGH\": \"Very high\"\n }\n }\n }\n}\n"],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget-react-D-QrEVpv.js","names":[],"sources":["../messages/demo.uk.json"],"sourcesContent":["{\n \"recentMessage\": {\n \"sender\": \"Gaia\",\n \"preview\": \"Вітаємо 👋 Дякуємо, що звернулися. Незабаром повернуся з відповіддю…\",\n \"ageLabel\": \"4 год\"\n },\n \"news\": {\n \"demo-news-1\": {\n \"title\": \"Pioneer 2026: збережіть дату\",\n \"excerpt\": \"Ми знову в Сан-Франциско 8 жовтня. Двері о 9:00, кейноут о 10:00.\",\n \"body\": \"## Що на вас чекає\\n\\nЦьогорічний кейноут - про те, що ми випустили відкрито, і про те, що буде далі. Живі демо, а не слайди.\\n\\n- **Дорожня карта Gaia** - куди рухається наш ШІ найближчі два квартали.\\n- **Історії клієнтів** - три команди розкажуть, як удвічі скоротили час першої відповіді.\\n- **Практичні воркшопи** - беріть ноутбук і збудуйте флоу разом з нашими інженерами.\\n\\n## Як дістатися\\n\\nМайданчик - круїзний термінал Pier 27 просто на набережній Ембаркадеро. Найближча станція BART - Embarcadero, 12 хвилин пішки вздовж води.\\n\\n## Квитки\\n\\nКількість квитків за раннім бронюванням обмежена, продаж стартує наступного тижня. Чинні клієнти мають перевагу, тож стежте за поштою.\\n\\n> Не виходить бути особисто? Кейноут транслюватимемо наживо, а записи з'являться тут того ж вечора.\"\n },\n \"demo-news-2\": {\n \"title\": \"Що ми випустили у квітні\",\n \"excerpt\": \"Три нові тригери автоматизації та значно швидший пошук у скриньці.\",\n \"body\": \"<p>Квітень був насиченим. Ось усе, що вийшло, коротко:</p>\\n<table>\\n<thead><tr><th>Напрям</th><th>Що змінилось</th><th>Чому це важливо</th></tr></thead>\\n<tbody>\\n<tr><td>Пошук у скриньці</td><td>Миттєві результати під час набору</td><td>50 тис. розмов, менш ніж 100 мс</td></tr>\\n<tr><td>Автоматизація</td><td>Три нові тригери</td><td>Покинутий кошик, повторний візит, тихий відвідувач</td></tr>\\n<tr><td>Редактор</td><td>Чернетка переживає перемикання вкладки</td><td>Жодних загублених недописаних відповідей</td></tr>\\n<tr><td>Темна тема</td><td>Без білого спалаху під час відкриття</td><td>Чистіше завантаження на темних сайтах</td></tr>\\n</tbody>\\n</table>\\n<p>Ось новий пошук у дії - результати з'являються ще до того, як ви завершите набір:</p>\\n<img src=\\\"https://picsum.photos/seed/wexio-search/1024/576\\\" alt=\\\"Пошук у скриньці з миттєвими результатами\\\" />\\n<p>Торкніться зображення, щоб роздивитись ближче. Є побажання? Напишіть тут - ми читаємо кожне.</p>\"\n },\n \"demo-news-3\": {\n \"title\": \"Gaia тепер говорить 28 мовами\",\n \"excerpt\": \"Автовизначення мови відвідувача або фіксація однієї. Без зайвих налаштувань.\",\n \"body\": \"<p>Gaia тепер відповідає 28 мовами, які визначаються автоматично з першого повідомлення відвідувача. Питання, які ми чуємо найчастіше:</p>\\n<details><summary>Як працює визначення мови?</summary><p>Gaia читає перше повідомлення й відповідає тією ж мовою. Якщо ваші статті довідки є цією мовою - цитує їх; інакше відповідає за найближчим відповідником і позначає прогалину для вас.</p></details>\\n<details><summary>Чи можна зафіксувати одну мову?</summary><p>Так. Виберіть її в <strong>Налаштування → ШІ → Мова</strong>, і Gaia дотримуватиметься її, хай би що писав відвідувач.</p></details>\\n<details><summary>Що бачать оператори?</summary><p>Транскрипти лишаються мовою вашої команди, з оригінальним повідомленням поруч із перекладом.</p></details>\\n<p>Короткий погляд на те, як Gaia змінює мову посеред розмови:</p>\\n<img src=\\\"https://picsum.photos/seed/wexio-lang/1024/576\\\" alt=\\\"Gaia відповідає кількома мовами\\\" />\"\n },\n \"demo-news-4\": {\n \"title\": \"Надсилайте розмови прямо в Slack\",\n \"excerpt\": \"Підключіть будь-який вебхук до каналу Slack. Без жодного коду.\",\n \"body\": \"## Підключення у два кліки\\n\\nЗайдіть у **Інтеграції → Slack**, натисніть *Підключити* й підтвердьте дозволи. Виберіть канал, куди потраплятимуть нові розмови - більшість команд використовують `#support`.\\n\\n## Що ви отримуєте\\n\\n- Повідомлення в Slack щойно починається чат, з посиланням назад у скриньку.\\n- Відповіді операторів у гілці під вихідним повідомленням.\\n- Відповідайте прямо зі Slack - ми передамо це відвідувачу в реальному часі.\\n\\n## Вебхуки теж\\n\\nУже надсилаєте події зі своїх систем? Спрямуйте будь-який вебхук у канал Slack і обійдіться без власної інтеграції.\"\n },\n \"demo-news-5\": {\n \"title\": \"Скринька 2.0: сортуйте без миші\",\n \"excerpt\": \"Нові скорочення для призначення, відкладання й закриття - усе з клавіатури.\",\n \"body\": \"<p>Скринька 2.0 побудована навколо клавіатури. Ось шпаргалка, згрупована за дією:</p>\\n<div data-type=\\\"tabs\\\">\\n<div data-type=\\\"tab\\\"><div data-tab-label>Навігація</div><ul><li><code>j</code> / <code>k</code> - наступна / попередня розмова</li><li><code>g</code> потім <code>i</code> - перейти до скриньки</li></ul></div>\\n<div data-type=\\\"tab\\\"><div data-tab-label>Дії</div><ul><li><code>e</code> - закрити</li><li><code>a</code> - призначити собі</li><li><code>s</code> - відкласти</li></ul></div>\\n<div data-type=\\\"tab\\\"><div data-tab-label>Написання</div><ul><li><code>Cmd+Enter</code> - надіслати</li><li><code>/</code> - збережені відповіді</li><li><code>Cmd+K</code> - палітра команд</li></ul></div>\\n</div>\\n<p>Оновлена скринька - усе на відстані однієї клавіші:</p>\\n<img src=\\\"https://picsum.photos/seed/wexio-inbox/1024/576\\\" alt=\\\"Оновлена скринька, побудована навколо клавіатури\\\" />\"\n },\n \"demo-news-6\": {\n \"title\": \"Самостійний експорт і видалення даних\",\n \"excerpt\": \"Обробляйте запити щодо даних у клік. Готово до GDPR з коробки.\",\n \"body\": \"## Експорт\\n\\nУ профілі будь-якого відвідувача натисніть **Експортувати дані**, щоб згенерувати JSON-набір з усіма повідомленнями, подіями й атрибутами, які ми про нього зберігаємо. Завантаження миттєве, а запит фіксується для ваших записів.\\n\\n## Видалення\\n\\n**Видалити дані** прибирає відвідувача й вичищає його повідомлення зі скриньки, пошуку та будь-якої підключеної CRM через той самий вебхук-міст. Дію зафіксовано, і вона незворотна.\\n\\n## Для вашого DPO\\n\\n- Кожен експорт і видалення має позначку часу й автора.\\n- Терміни зберігання налаштовуються для кожного робочого простору.\\n- Угода про обробку даних - на запит.\"\n },\n \"demo-news-7\": {\n \"title\": \"Бета мобільного SDK: iOS та Android\",\n \"excerpt\": \"Та сама розмова у вашому застосунку. Місця в беті вже відкриті.\",\n \"body\": \"## Одна розмова на будь-якому екрані\\n\\nВідвідувач, що почав чат на сайті, може продовжити його у застосунку - авторизованим і з повною історією. Та сама Gaia, ті самі оператори, та сама скринька.\\n\\n## Що в беті\\n\\n- Нативний лаунчер для SwiftUI і Jetpack Compose.\\n- Пуш-сповіщення про нові відповіді.\\n- Офлайн-черга, тож повідомлення надсилаються, щойно з'явиться зв'язок.\\n\\n## Приєднатися\\n\\nЩотижня ми підключаємо кілька команд. Напишіть тут свою платформу й приблизну місячну аудиторію - і ми надішлемо ключ.\\n\\n> Бета означає гострі кути. Ми випускаємо виправлення щотижня й читаємо кожен звіт про помилку.\"\n },\n \"demo-news-8\": {\n \"title\": \"Дивіться, які відповіді ШІ справді спрацювали\",\n \"excerpt\": \"Відстежуйте, чи привела відповідь Gaia до вирішення, передавання чи виходу.\",\n \"body\": \"## Новий розділ\\n\\n**Аналітика → Результати ШІ** розкладає кожну відповідь Gaia за тим, що сталося далі:\\n\\n- **Вирішено** - відвідувач отримав потрібне й пішов задоволений.\\n- **Передано** - Gaia передала розмову людині.\\n- **Вихід** - відвідувач закрив віджет, нічого не вирішивши.\\n\\n## Деталі по статтях\\n\\nЗайдіть у будь-яку статтю довідки, щоб побачити, як часто Gaia цитує її і чи приводять ці цитування до вирішення. Низький показник на популярній статті зазвичай означає, що переписати треба контент, а не ШІ.\\n\\n## Дійте за цим\\n\\nВідсортуйте за часткою виходів, щоб знайти питання, з якими Gaia плутається найбільше, і закрийте прогалину флоу або кращою статтею.\"\n },\n \"tags\": {\n \"events\": \"Події\",\n \"product\": \"Продукт\",\n \"release\": \"Реліз\",\n \"ai\": \"ШІ\",\n \"languages\": \"Мови\",\n \"integrations\": \"Інтеграції\",\n \"slack\": \"Slack\",\n \"inbox\": \"Скринька\",\n \"privacy\": \"Приватність\",\n \"security\": \"Безпека\",\n \"mobile\": \"Мобільний\",\n \"beta\": \"Бета\",\n \"analytics\": \"Аналітика\"\n },\n \"categories\": {\n \"company\": \"Компанія\",\n \"product\": \"Продукт\",\n \"engineering\": \"Інженерія\"\n }\n },\n \"help\": {\n \"categories\": {\n \"demo-cat-getting-started\": {\n \"title\": \"Початок роботи\",\n \"description\": \"Встановіть віджет і налаштуйте свою першу розмову.\"\n },\n \"demo-cat-automation\": {\n \"title\": \"Автоматизація\",\n \"description\": \"Сценарії, тригери та ШІ-автовідповідь.\"\n },\n \"demo-cat-integrations\": {\n \"title\": \"Інтеграції\",\n \"description\": \"Підключіть свою CRM, Slack і CMS.\"\n },\n \"demo-cat-billing\": {\n \"title\": \"Оплата та тарифи\",\n \"description\": \"Тарифні плани, рахунки та керування місцями.\"\n }\n },\n \"articles\": {\n \"demo-article-install\": {\n \"title\": \"Встановіть віджет Wexio на свій сайт\",\n \"excerpt\": \"30-секундний фрагмент, який ви вставляєте перед закривальним тегом </body>.\",\n \"body\": \"## Додайте скрипт завантажувача\\n\\nВставте цей фрагмент на кожну сторінку, де має з'являтися віджет:\\n\\n```html\\n<script\\n src=\\\"https://cdn.wexio.io/loader.js\\\"\\n data-public-key=\\\"pk_live_YOUR_KEY\\\"\\n></script>\\n```\\n\\nЗавантажувач додає плаваючу кнопку в нижньому правому куті. Натисніть її, щоб відкрити панель чату.\\n\\n## Перевірте встановлення\\n\\n- Відкрийте сторінку, що містить фрагмент.\\n- Відкрийте консоль браузера.\\n- Ви маєте побачити `[wexio] widget mounted`.\\n\\n## Налаштуйте вигляд\\n\\nВіджет зчитує кольори бренду з вашої панелі керування. Змініть їх у розділі **Налаштування → Бренд**.\\n\\n> Потрібна допомога? Натисніть «Досі потрібна допомога? Напишіть нам» нижче, і ми вас проведемо.\"\n },\n \"demo-article-flows\": {\n \"title\": \"Створіть свій перший сценарій автоматизації\",\n \"excerpt\": \"Перетягуйте, відпускайте та запустіть вітального бота менш ніж за п'ять хвилин.\",\n \"body\": \"## Що таке сценарій?\\n\\nСценарій - це невелике дерево кроків розмови (запитання, відповіді й умови), яке запускається, щойно відвідувач відповідає тригеру.\\n\\n## Три типи тригерів\\n\\n1. **Відвідувач відкрив віджет** - привітайте новачків.\\n2. **Відвідувач поставив запитання** - Gaia (ШІ) намагається відповісти; якщо не може, керування бере сценарій.\\n3. **Отримано вебхук** - ваша CMS чи платформа електронної комерції надсилає подію; сценарій запускається в потрібному чаті.\\n\\n## Найкращі практики\\n\\n- Тримайте перші відповіді коротшими за 80 символів.\\n- Пропонуйте 2-3 чипи швидких відповідей, а не запитання з вільним текстом.\\n- Завжди залишайте запасний вихід - *«Поговорити з людиною»*.\"\n },\n \"demo-article-slack\": {\n \"title\": \"Пересилайте чати у Slack\",\n \"excerpt\": \"Дублюйте кожну нову розмову в обраний канал Slack.\",\n \"body\": \"## Підключіть свій робочий простір\\n\\nУ розділі **Інтеграції → Slack** натисніть *Підключити*. Вас перенаправить на екран OAuth Slack - підтвердьте запитані дозволи (`chat:write`, `channels:read`).\\n\\n## Виберіть канал\\n\\nПісля авторизації виберіть цільовий канал (або створіть новий, як-от `#support`).\\n\\n## Що пересилається\\n\\n- Перше повідомлення з прямим посиланням назад до вхідних wexio.\\n- Відповіді операторів як повідомлення у гілці.\\n- Відповіді відвідувачів у реальному часі через міст SSE.\\n\\n## Зворотний напрямок\\n\\nОператори можуть відповідати *зі* Slack - wexio слухає відповіді в гілках Slack і публікує їх назад у віджет.\"\n },\n \"demo-article-billing\": {\n \"title\": \"Оновіть свій тариф і платіжні дані\",\n \"excerpt\": \"Змінюйте тарифи, картку або завантажуйте рахунки.\",\n \"body\": \"## Тарифи\\n\\n- **Безкоштовний** - 1 віджет, базові функції, бейдж «Powered by Wexio».\\n- **Стандартний** - необмежено віджетів, автоматизацій, інтеграцій.\\n- **Корпоративний** - white-label, SLA, виділена підтримка.\\n\\n## Зміна тарифу\\n\\n**Налаштування → Оплата → Змінити тариф**. Підвищення набуває чинності одразу; пониження застосовується наприкінці поточного циклу.\\n\\n## Рахунки\\n\\nЗавантажте будь-який рахунок у PDF з розділу **Оплата → Історія**. Ми також надсилаємо копію електронною поштою під час кожного поновлення.\"\n },\n \"demo-article-theme\": {\n \"title\": \"Налаштуйте тему віджета\",\n \"excerpt\": \"Узгодьте віджет зі своїм брендом - кольори, заокруглення, темний режим.\",\n \"body\": \"## Кольори бренду\\n\\nУ розділі **Налаштування → Бренд** задайте:\\n\\n- **Основний** - керує кнопкою запуску, кнопкою надсилання, рамками фокуса.\\n- **Тло** - поверхня панелі (світла) і пара для темного режиму.\\n\\n## Заокруглення\\n\\nВиберіть із `sm`, `md`, `lg` для щільнішого або м'якшого вигляду. Зміна застосовується наживо до кожного віджета на кожній сторінці.\\n\\n## Темний режим\\n\\nЗа замовчуванням = слідувати системним налаштуванням відвідувача. Закріпіть **завжди світлий** або **завжди темний**, якщо ваш сайт сам не підтримує темний режим.\"\n },\n \"demo-article-handoff\": {\n \"title\": \"Передавання від Gaia до оператора-людини\",\n \"excerpt\": \"Коли ШІ недостатньо - спрямуйте відвідувача до колеги.\",\n \"body\": \"## Тригери\\n\\nGaia передає розмову автоматично, коли:\\n\\n- Відвідувач пише *«поговорити з людиною»* (або будь-який локалізований варіант).\\n- Те саме запитання поставлено двічі без вирішення.\\n- Намір відвідувача відповідає правилу маршрутизації (напр., оплата → фінансова команда).\\n\\n## Маршрутизація\\n\\nНалаштуйте **Маршрутизація → Правила**, щоб спрямовувати певні наміри до конкретних команд чи операторів. Підтримуються і кругова черга, і найменш завантажений.\\n\\n## Поза робочим часом\\n\\nЯкщо жоден оператор не онлайн, Gaia пропонує зворотний дзвінок або форму передавання на пошту, замість того щоб вдавати, ніби хтось доступний.\"\n },\n \"demo-article-crm\": {\n \"title\": \"Синхронізуйте розмови зі своєю CRM\",\n \"excerpt\": \"Надсилайте кожен чат у HubSpot, Salesforce або Pipedrive.\",\n \"body\": \"## Підтримувані CRM\\n\\n- HubSpot (OAuth)\\n- Salesforce (OAuth)\\n- Pipedrive (API-токен)\\n- Власні через вебхуки\\n\\n## Що синхронізується\\n\\n- Нові розмови створюють контакт (якщо його ще немає) і нотатку.\\n- Відповіді операторів додаються до стрічки контакту.\\n- Теги, застосовані у wexio, дублюються в CRM.\\n\\n## Двосторонньо\\n\\nНотатки операторів, додані в CRM, можуть публікуватися назад у wexio через приймач вебхуків - див. *Інтеграції → Вебхуки → Вхідні*.\"\n },\n \"demo-article-shortcuts\": {\n \"title\": \"Клавіатурні скорочення для операторів\",\n \"excerpt\": \"Сортуйте вдвічі швидше - без миші.\",\n \"body\": \"## Навігація вхідними\\n\\n- `j` / `k` - наступна / попередня розмова\\n- `e` - вирішити\\n- `a` - призначити мені\\n- `s` - відкласти\\n\\n## Редактор\\n\\n- `Cmd+Enter` - надіслати\\n- `/` - відкрити вибір збережених відповідей\\n- `Cmd+K` - командна палітра (усе)\\n\\n## Порада\\n\\nНаведіть курсор на будь-яку кнопку на панелі керування - підказка покаже її скорочення.\"\n }\n },\n \"tags\": {\n \"setup\": \"Налаштування\",\n \"install\": \"Встановлення\",\n \"automation\": \"Автоматизація\",\n \"flows\": \"Флоу\",\n \"integrations\": \"Інтеграції\",\n \"slack\": \"Slack\",\n \"billing\": \"Оплата\",\n \"plans\": \"Тарифи\",\n \"design\": \"Дизайн\",\n \"ai\": \"ШІ\",\n \"crm\": \"CRM\",\n \"productivity\": \"Продуктивність\",\n \"inbox\": \"Скринька\"\n }\n },\n \"conversation\": {\n \"visitorName\": \"Ви\",\n \"messages\": {\n \"m-demo-1\": {\n \"text\": \"Вітаємо 👋 Дякуємо, що звернулися. Я Gaia, ШІ від wexio - рада допомогти.\",\n \"ageLabel\": \"4 год\",\n \"buttons\": [\"Як працює тарифікація?\", \"Що таке Gaia?\", \"Поговорити з людиною\"]\n },\n \"m-demo-2\": {\n \"text\": \"Я оцінюю віджет для нашого сайту документації - чи підтримує він темний режим із коробки?\",\n \"ageLabel\": \"4 год\"\n },\n \"m-demo-3\": {\n \"text\": \"Так - за замовчуванням віджет слідує системним налаштуванням ваших відвідувачів, а оператори можуть закріпити світлий або темний режим на панелі керування.\",\n \"ageLabel\": \"4 год\"\n },\n \"m-demo-4\": {\n \"text\": \"Ось знімок екрана з елементами керування темою на панелі 👇\",\n \"ageLabel\": \"4 год\",\n \"mediaAlts\": [\"Елементи керування темою на панелі\"]\n },\n \"m-demo-gallery-captioned\": {\n \"text\": \"Три реальні впровадження, які ми запустили минулого тижня - різні галузі, однаковий час налаштування.\",\n \"ageLabel\": \"4 год\",\n \"mediaAlts\": [\n \"Впровадження в SaaS-панелі\",\n \"Впровадження в оформленні замовлення e-commerce\",\n \"Впровадження на сайті документації\"\n ]\n },\n \"m-demo-gallery-bare\": {\n \"text\": \"\",\n \"ageLabel\": \"4 год\",\n \"mediaAlts\": [\n \"Моє налаштування, кадр 1\",\n \"Моє налаштування, кадр 2\",\n \"Моє налаштування, кадр 3\",\n \"Моє налаштування, кадр 4\"\n ]\n },\n \"m-demo-5\": {\n \"text\": \"Хочете 30-секундний огляд того, як відвідувачі взаємодіють із віджетом? Натисніть відтворення 👇\",\n \"ageLabel\": \"4 год\",\n \"mediaAlts\": [\"Огляд віджета\"]\n },\n \"m-demo-6\": {\n \"text\": \"Чудово. А документація?\",\n \"ageLabel\": \"3 год\"\n },\n \"m-demo-7\": {\n \"text\": \"Ось повний посібник з інтеграції у PDF - почніть із §2, якщо у вас уже є акаунт Wexio.\",\n \"ageLabel\": \"3 год\",\n \"mediaAlts\": [\"Посібник з інтеграції Wexio.pdf\"]\n },\n \"m-demo-8\": {\n \"text\": \"І коротка голосова нотатка з поясненням потоку автентифікації - простіше, ніж друкувати:\",\n \"ageLabel\": \"3 год\",\n \"mediaAlts\": [\"Голосова нотатка про потік автентифікації\"]\n },\n \"m-demo-9\": {\n \"text\": \"Ідеально. Ще одне - який найпростіший спосіб почати?\",\n \"ageLabel\": \"2 год\"\n },\n \"m-demo-10\": {\n \"text\": \"Виберіть варіант, що підходить - ми можемо створити пісочницю, надіслати фрагмент для встановлення або зустрітися на 10-хвилинний дзвінок:\",\n \"ageLabel\": \"2 год\",\n \"buttons\": [\n \"📦 Створити проєкт-пісочницю\",\n \"📋 Надішліть мені фрагмент для встановлення\",\n \"📞 Забронювати 10-хв дзвінок\",\n \"💬 Продовжити спілкування тут\"\n ]\n }\n }\n },\n \"messenger\": {\n \"welcome\": {\n \"system\": \"Ви спілкуєтеся з Gaia, нашим ШІ-помічником.\",\n \"hint\": \"Порада: ви можете будь-коли прикріпити файл або записати голосове.\",\n \"greeting\": \"Привіт 👋 Я Gaia, ШІ від Wexio. Запитуйте про що завгодно або виберіть швидку дію, щоб почати.\"\n },\n \"replies\": {\n \"pricing\": {\n \"text\": \"Wexio безкоштовний для одного віджета; платні тарифи починаються від $39/міс і відкривають автоматизації, інтеграції та white-label.\",\n \"planBtn\": \"Показати тарифи\",\n \"salesBtn\": \"Звʼязатися з продажами\"\n },\n \"gaia\": {\n \"text\": \"Gaia - це ШІ-агент, що миттєво відповідає на запитання відвідувачів. Вона вчиться з ваших статей довідки й передає розмову людині, коли не може допомогти.\",\n \"handoffBtn\": \"Як працює передавання?\"\n },\n \"human\": {\n \"text\": \"Звісно - підключаю Алекса з команди. Він відповість за кілька хвилин у робочі години.\"\n },\n \"fallback\": {\n \"text\": \"Зрозуміло - перевірю це й невдовзі повернуся з відповіддю.\"\n }\n }\n }\n}\n"],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget-react-D8TPnM9r.js","names":[],"sources":["../lib/use-icon-hover.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useRef } from \"react\";\n\n/**\n * Trigger a `lucide-animated` icon's animation from a **parent**\n * element rather than the icon itself.\n *\n * `lucide-animated` icons listen to their own `mouseenter` /\n * `mouseleave` by default — so visitors hovering a button never see\n * the icon animate (they're hovering the button, not the SVG). This\n * hook returns:\n *\n * - `iconRef` — pass to the icon via `<MicIcon ref={iconRef} />`\n * - `parentHandlers` — spread onto the parent (button / pill /\n * row) you want to drive the hover from\n *\n * The icon's handle type carries `startAnimation` / `stopAnimation`\n * methods; we call them defensively (the spread `?.` short-circuits\n * if the icon's ref shape ever changes upstream).\n *\n * Usage:\n * const { iconRef, parentHandlers } = useIconHover<MicIconHandle>();\n * <button {...parentHandlers}>\n * <MicIcon ref={iconRef} />\n * </button>\n */\nexport function useIconHover<\n Handle extends {\n startAnimation?: () => void;\n stopAnimation?: () => void;\n },\n>(): {\n iconRef: React.MutableRefObject<Handle | null>;\n parentHandlers: {\n onMouseEnter: () => void;\n onMouseLeave: () => void;\n onFocus: () => void;\n onBlur: () => void;\n };\n} {\n const iconRef = useRef<Handle | null>(null);\n\n const start = useCallback(() => {\n iconRef.current?.startAnimation?.();\n }, []);\n const stop = useCallback(() => {\n iconRef.current?.stopAnimation?.();\n }, []);\n\n return {\n iconRef,\n parentHandlers: {\n onMouseEnter: start,\n onMouseLeave: stop,\n // Keyboard parity — when a button gets focus via Tab, the\n // icon should animate too, matching mouse-hover behaviour.\n onFocus: start,\n onBlur: stop,\n },\n };\n}\n"],"mappings":";;;;;;AA2BA,SAAgB,IAad;CACA,IAAM,IAAU,EAAsB,KAAK,EAErC,IAAQ,QAAkB;EAC9B,EAAQ,SAAS,kBAAkB;IAClC,EAAE,CAAC,EACA,IAAO,QAAkB;EAC7B,EAAQ,SAAS,iBAAiB;IACjC,EAAE,CAAC;CAEN,OAAO;EACL;EACA,gBAAgB;GACd,cAAc;GACd,cAAc;GAGd,SAAS;GACT,QAAQ;GACT;EACF"}
|