ysyt-react-agent-lib 1.2.11 → 1.2.13

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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-CelVA0on.js"),s=require("react"),i=require("./index-CoG84G5_.js"),c=s.memo(({open:n,onCallBack:r,queryFetch:x})=>{const[o,a]=s.useState([]);return s.useEffect(()=>{(async()=>{try{await x({success:t=>{a(t.data||[])}})}catch(t){console.log(t)}})()},[n]),e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:e.jsxRuntimeExports.jsx(i.Modal,{open:n,title:"咨询",footer:!1,onCancel:()=>r(),children:e.jsxRuntimeExports.jsx(e.ModelBody,{children:o.length===0?e.jsxRuntimeExports.jsx(e.Empty,{image:e.Empty.PRESENTED_IMAGE_SIMPLE,description:"暂无咨询坐席"}):e.jsxRuntimeExports.jsx(e.Space,{wrap:!0,children:o.map(t=>e.jsxRuntimeExports.jsx(i.Tag,{color:"processing",onClick:()=>r(t.agent_no),children:e.jsxRuntimeExports.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[e.jsxRuntimeExports.jsx(e.YsytIconSvg,{name:"zixun"}),e.jsxRuntimeExports.jsxs("span",{style:{marginLeft:10},children:["咨询坐席: ",t.agent_name]})]})},t.agent_no))})})})})});exports.default=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-Cpa30Nx-.js"),s=require("react"),i=require("./index-DdLdcMrH.js"),c=s.memo(({open:n,onCallBack:r,queryFetch:x})=>{const[o,a]=s.useState([]);return s.useEffect(()=>{(async()=>{try{await x({success:t=>{a(t.data||[])}})}catch(t){console.log(t)}})()},[n]),e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:e.jsxRuntimeExports.jsx(i.Modal,{open:n,title:"咨询",footer:!1,onCancel:()=>r(),children:e.jsxRuntimeExports.jsx(e.ModelBody,{children:o.length===0?e.jsxRuntimeExports.jsx(e.Empty,{image:e.Empty.PRESENTED_IMAGE_SIMPLE,description:"暂无咨询坐席"}):e.jsxRuntimeExports.jsx(e.Space,{wrap:!0,children:o.map(t=>e.jsxRuntimeExports.jsx(i.Tag,{color:"processing",onClick:()=>r(t.agent_no),children:e.jsxRuntimeExports.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[e.jsxRuntimeExports.jsx(e.YsytIconSvg,{name:"zixun"}),e.jsxRuntimeExports.jsxs("span",{style:{marginLeft:10},children:["咨询坐席: ",t.agent_name]})]})},t.agent_no))})})})})});exports.default=c;
@@ -1,6 +1,6 @@
1
- import { j as e, M as l, E as r, S as i, Y as d } from "./index-BlA2fdYC.mjs";
1
+ import { j as e, M as l, E as r, S as i, Y as d } from "./index-C-tn5rNr.mjs";
2
2
  import { memo as m, useState as g, useEffect as x } from "react";
3
- import { M as p, T as j } from "./index-CqPQT_Nd.mjs";
3
+ import { M as p, T as j } from "./index-DHAj-ZSX.mjs";
4
4
  const E = m(({ open: t, onCallBack: a, queryFetch: o }) => {
5
5
  const [n, c] = g([]);
6
6
  return x(() => {
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-CelVA0on.js"),t=require("react"),l=require("./index-CoG84G5_.js"),m=t.memo(({open:o,onCallBack:n,queryFetch:u})=>{const[x,p]=t.useState([]),[r,c]=t.useState(0),[i,d]=t.useState(""),[j,a]=t.useState(!1);return t.useEffect(()=>{(async()=>{a(!0);try{await u({success:s=>{p(s.data||[])}})}catch(s){console.log(s)}a(!1)})()},[o]),e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:e.jsxRuntimeExports.jsx(l.Modal,{open:o,title:"转接",footer:!1,onCancel:()=>n(),children:e.jsxRuntimeExports.jsxs(e.ModelBody,{children:[e.jsxRuntimeExports.jsx("div",{children:e.jsxRuntimeExports.jsx(e.Radio.Group,{options:[{label:"转接坐席",value:0},{label:"转接外线",value:1}],value:r,onChange:s=>c(s.target.value)})}),e.jsxRuntimeExports.jsx(e.Spin,{spinning:j,children:e.jsxRuntimeExports.jsxs("div",{style:{borderTop:"1px solid #eee",marginTop:10,paddingTop:10},children:[r===0&&e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:x.length===0?e.jsxRuntimeExports.jsx(e.Empty,{image:e.Empty.PRESENTED_IMAGE_SIMPLE,description:"暂无转接坐席"}):e.jsxRuntimeExports.jsx(e.Space,{wrap:!0,children:x.map(s=>e.jsxRuntimeExports.jsx(l.Tag,{color:"processing",onClick:()=>n(s.agent_no,0),children:e.jsxRuntimeExports.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[e.jsxRuntimeExports.jsx(e.YsytIconSvg,{name:"zixun"}),e.jsxRuntimeExports.jsxs("span",{style:{marginRight:10},children:["转接坐席: ",s.agent_name]})]})},s.agent_no))})}),r===1&&e.jsxRuntimeExports.jsxs("div",{style:{width:"100%",display:"flex",alignItems:"center",gap:"0 5px"},children:[e.jsxRuntimeExports.jsx(e.Input,{style:{flex:1},value:i,onChange:s=>d(s.target.value),placeholder:"请输入外线号码, 回车转接",onPressEnter:()=>{n(i,1)}}),e.jsxRuntimeExports.jsx(e.YsytIconSvg,{name:"boda",color:"#1D92E9",size:25,onClick:()=>{n(i,1)}})]})]})})]})})})});exports.default=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-Cpa30Nx-.js"),t=require("react"),l=require("./index-DdLdcMrH.js"),m=t.memo(({open:o,onCallBack:n,queryFetch:u})=>{const[x,p]=t.useState([]),[r,c]=t.useState(0),[i,d]=t.useState(""),[j,a]=t.useState(!1);return t.useEffect(()=>{(async()=>{a(!0);try{await u({success:s=>{p(s.data||[])}})}catch(s){console.log(s)}a(!1)})()},[o]),e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:e.jsxRuntimeExports.jsx(l.Modal,{open:o,title:"转接",footer:!1,onCancel:()=>n(),children:e.jsxRuntimeExports.jsxs(e.ModelBody,{children:[e.jsxRuntimeExports.jsx("div",{children:e.jsxRuntimeExports.jsx(e.Radio.Group,{options:[{label:"转接坐席",value:0},{label:"转接外线",value:1}],value:r,onChange:s=>c(s.target.value)})}),e.jsxRuntimeExports.jsx(e.Spin,{spinning:j,children:e.jsxRuntimeExports.jsxs("div",{style:{borderTop:"1px solid #eee",marginTop:10,paddingTop:10},children:[r===0&&e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:x.length===0?e.jsxRuntimeExports.jsx(e.Empty,{image:e.Empty.PRESENTED_IMAGE_SIMPLE,description:"暂无转接坐席"}):e.jsxRuntimeExports.jsx(e.Space,{wrap:!0,children:x.map(s=>e.jsxRuntimeExports.jsx(l.Tag,{color:"processing",onClick:()=>n(s.agent_no,0),children:e.jsxRuntimeExports.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[e.jsxRuntimeExports.jsx(e.YsytIconSvg,{name:"zixun"}),e.jsxRuntimeExports.jsxs("span",{style:{marginRight:10},children:["转接坐席: ",s.agent_name]})]})},s.agent_no))})}),r===1&&e.jsxRuntimeExports.jsxs("div",{style:{width:"100%",display:"flex",alignItems:"center",gap:"0 5px"},children:[e.jsxRuntimeExports.jsx(e.Input,{style:{flex:1},value:i,onChange:s=>d(s.target.value),placeholder:"请输入外线号码, 回车转接",onPressEnter:()=>{n(i,1)}}),e.jsxRuntimeExports.jsx(e.YsytIconSvg,{name:"boda",color:"#1D92E9",size:25,onClick:()=>{n(i,1)}})]})]})})]})})})});exports.default=m;
@@ -1,6 +1,6 @@
1
- import { j as e, M as h, R as j, a as f, E as d, S as y, Y as c, I as v } from "./index-BlA2fdYC.mjs";
1
+ import { j as e, M as h, R as j, a as f, E as d, S as y, Y as c, I as v } from "./index-C-tn5rNr.mjs";
2
2
  import { memo as E, useState as n, useEffect as T } from "react";
3
- import { M as I, T as M } from "./index-CqPQT_Nd.mjs";
3
+ import { M as I, T as M } from "./index-DHAj-ZSX.mjs";
4
4
  const _ = E(({ open: l, onCallBack: a, queryFetch: p }) => {
5
5
  const [o, g] = n([]), [t, x] = n(0), [r, m] = n(""), [u, i] = n(!1);
6
6
  return T(() => {
@@ -10131,7 +10131,7 @@ let Ow = class {
10131
10131
  async start() {
10132
10132
  const e = kf.makeURI(`sip:${this.config.user}@${this.config.server}`);
10133
10133
  if (!e) throw new Error("无效的SIP配置");
10134
- const n = { uri: e, authorizationUsername: this.config.user, authorizationPassword: this.config.password, sendInitialProvisionalResponse: !1, transportOptions: { server: this.config.webSocket, connectionTimeout: 10, keepAliveInterval: 20, keepAliveDebounce: 10 }, contactName: this.config.user, contactParams: { transport: "wss" }, userAgentString: "SwiftSIP/1.1.33", sessionDescriptionHandlerFactoryOptions: { alwaysAcquireMediaFirst: !0, peerConnectionConfiguration: { iceServers: [{ urls: "stun:stun.l.google.com:19302" }], iceCandidatePoolSize: 0, iceTransportPolicy: "all", rtcpMuxPolicy: "require", bundlePolicy: "balanced", certificates: void 0, peerIdentity: void 0 }, iceGatheringTimeout: 1e3 }, logBuiltinEnabled: X.logBuiltinEnabled };
10134
+ const n = { uri: e, authorizationUsername: this.config.user, authorizationPassword: this.config.password, sendInitialProvisionalResponse: !1, transportOptions: { server: this.config.webSocket, connectionTimeout: 10, keepAliveInterval: 20, keepAliveDebounce: 10 }, contactName: this.config.user, contactParams: { transport: "wss" }, userAgentString: "SwiftSIP/2.0.21", sessionDescriptionHandlerFactoryOptions: { alwaysAcquireMediaFirst: !0, peerConnectionConfiguration: { iceServers: [{ urls: "stun:stun.l.google.com:19302" }], iceCandidatePoolSize: 0, iceTransportPolicy: "all", rtcpMuxPolicy: "require", bundlePolicy: "balanced", certificates: void 0, peerIdentity: void 0 }, iceGatheringTimeout: 1e3 }, logBuiltinEnabled: X.logBuiltinEnabled };
10135
10135
  this.userAgent = new kf(n), this.setupEventListeners(), await this.userAgent.start(), await this.register();
10136
10136
  }
10137
10137
  setupEventListeners() {
@@ -11024,7 +11024,9 @@ class dn {
11024
11024
  j.updateCustomerInfo(void 0);
11025
11025
  }, 500), this.stateIdleChange()) : a === 0 && (ge.emit(oe.OUT_SUCCESS), clearTimeout(X.autoStateTimer))), o === it.AGENT_STATE) {
11026
11026
  const { state: d, state_name: g } = A;
11027
- X.stateObject = { state: d, state_name: g }, (u = X.stateBeforeChange) != null && u.state || X.stateObject.state !== Tt.IDLE && (X.stateObject.state !== Tt.BUSY || g === "整理") || (X.stateBeforeChange = X.stateObject), g === "振铃中" && j.updateDisplayText(Zt.AGENT_RINGING), d === Tt.UNREGISTERED && j.updateActionConfigs(Jw), d === Tt.IDLE && X.stateObject.state === Tt.UNREGISTERED && j.updateActionConfigs(Kn), ge.emit(oe.AGENT_STATE, { state: d, state_name: g });
11027
+ X.stateObject = { state: d, state_name: g }, (u = X.stateBeforeChange) != null && u.state || X.stateObject.state !== Tt.IDLE && (X.stateObject.state !== Tt.BUSY || g === "整理") || (X.stateBeforeChange = X.stateObject), g === "振铃中" && j.updateDisplayText(Zt.AGENT_RINGING);
11028
+ const p = j.get("isCalling");
11029
+ d !== Tt.UNREGISTERED || p || j.updateActionConfigs(Jw), d === Tt.IDLE && X.stateObject.state === Tt.UNREGISTERED && j.updateActionConfigs(Kn), ge.emit(oe.AGENT_STATE, { state: d, state_name: g });
11028
11030
  } else if (o === it.OUT_CALL_INCOMING_CALL) {
11029
11031
  try {
11030
11032
  await this.getCustomerInfo(A.trace_id || A.customer_phone);
@@ -32807,7 +32809,7 @@ const UO = {
32807
32809
  空闲: 1,
32808
32810
  离线: 0,
32809
32811
  未注册: 4
32810
- }, PO = $m(() => import("./ConsultModel-GamXNyyy.mjs")), LO = $m(() => import("./TransferModel-ev4oVyha.mjs")), fc = an.div`
32812
+ }, PO = $m(() => import("./ConsultModel-P5EN916G.mjs")), LO = $m(() => import("./TransferModel-BgF9uQFj.mjs")), fc = an.div`
32811
32813
  width: 25px;
32812
32814
  height: 25px;
32813
32815
  background: ${({
@@ -33018,7 +33020,7 @@ const UO = {
33018
33020
  return null;
33019
33021
  }
33020
33022
  }), (ae = S.current) == null || ae.on(oe.AGENT_STATE, ($) => {
33021
- Y($.state_name), D((/* @__PURE__ */ new Date()).getTime()), l == null || l(oe.AGENT_STATE, $);
33023
+ Y($.state_name), D((/* @__PURE__ */ new Date()).getTime()), l == null || l(oe.AGENT_STATE, $), $.state === Tt.UNREGISTERED && bt.warning("当前已掉线,自动重连中,请检查网络");
33022
33024
  }).on(oe.CALL_PROGRESS, ($) => {
33023
33025
  Z($);
33024
33026
  }).on(je.WEBSITE_DELAY, ($) => {
@@ -152,7 +152,7 @@ React keys must be passed directly to JSX without using spread:
152
152
  `+i+`
153
153
  `);if(this.state===dt.Connected){if(this.onMessage)try{this.onMessage(i)}catch(o){throw this.logger.error(o.toString()),this.logger.error("Exception thrown by onMessage callback"),o}}else this.logger.warn("Received message while not connected, discarding...")}else this.logger.warn("Received empty message, discarding...")}onWebSocketOpen(e,n){n===this._ws&&this._state===dt.Connecting&&(this.logger.log(`WebSocket opened ${this.server}`),this.transitionState(dt.Connected))}transitionLoopDetectedError(e){let n="A state transition loop has been detected.";return n+=` An attempt to transition from ${this._state} to ${e} before the prior transition completed.`,n+=" Perhaps you are synchronously calling connect() or disconnect() from a callback or state change handler?",this.logger.error(n),new oA("Loop detected.")}transitionState(e,n){const r=()=>{throw new Error(`Invalid state transition from ${this._state} to ${e}`)};if(this.transitioningState)throw this.transitionLoopDetectedError(e);switch(this.transitioningState=!0,this._state){case dt.Connecting:e!==dt.Connected&&e!==dt.Disconnecting&&e!==dt.Disconnected&&r();break;case dt.Connected:e!==dt.Disconnecting&&e!==dt.Disconnected&&r();break;case dt.Disconnecting:e!==dt.Connecting&&e!==dt.Disconnected&&r();break;case dt.Disconnected:e!==dt.Connecting&&r();break;default:throw new Error("Unknown state.")}const i=this._state;this._state=e;const o=this.connectResolve,A=this.connectReject;i===dt.Connecting&&(this.connectPromise=void 0,this.connectResolve=void 0,this.connectReject=void 0);const a=this.disconnectResolve,s=this.disconnectReject;if(i===dt.Disconnecting&&(this.disconnectPromise=void 0,this.disconnectResolve=void 0,this.disconnectReject=void 0),this.connectTimeout&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0),this.logger.log(`Transitioned from ${i} to ${this._state}`),this._stateEventEmitter.emit(this._state),e===dt.Connected&&(this.startSendingKeepAlives(),this.onConnect))try{this.onConnect()}catch(l){throw this.logger.error(l.toString()),this.logger.error("Exception thrown by onConnect callback"),l}if(i===dt.Connected&&(this.stopSendingKeepAlives(),this.onDisconnect))try{n?this.onDisconnect(n):this.onDisconnect()}catch(l){throw this.logger.error(l.toString()),this.logger.error("Exception thrown by onDisconnect callback"),l}if(i===dt.Connecting){if(!o)throw new Error("Connect resolve undefined.");if(!A)throw new Error("Connect reject undefined.");e===dt.Connected?o():A(n||new Error("Connect aborted."))}if(i===dt.Disconnecting){if(!a)throw new Error("Disconnect resolve undefined.");if(!s)throw new Error("Disconnect reject undefined.");e===dt.Disconnected?a():s(n||new Error("Disconnect aborted."))}this.transitioningState=!1}clearKeepAliveTimeout(){this.keepAliveDebounceTimeout&&clearTimeout(this.keepAliveDebounceTimeout),this.keepAliveDebounceTimeout=void 0}sendKeepAlive(){return this.keepAliveDebounceTimeout?Promise.resolve():(this.keepAliveDebounceTimeout=setTimeout(()=>{this.clearKeepAliveTimeout()},1e3*this.configuration.keepAliveDebounce),this.send(`\r
154
154
  \r
155
- `))}startSendingKeepAlives(){this.configuration.keepAliveInterval&&!this.keepAliveInterval&&(this.keepAliveInterval=setInterval(()=>{this.sendKeepAlive(),this.startSendingKeepAlives()},(e=>{const n=.8*e;return 1e3*(Math.random()*(e-n)+n)})(this.configuration.keepAliveInterval)))}stopSendingKeepAlives(){this.keepAliveInterval&&clearInterval(this.keepAliveInterval),this.keepAliveDebounceTimeout&&clearTimeout(this.keepAliveDebounceTimeout),this.keepAliveInterval=void 0,this.keepAliveDebounceTimeout=void 0}};w0.defaultOptions={server:"",connectionTimeout:5,keepAliveInterval:0,keepAliveDebounce:10,traceSip:!0};let Tf=class za{constructor(e={}){if(this._publishers={},this._registerers={},this._sessions={},this._subscriptions={},this._state=xn.Stopped,this._stateEventEmitter=new BA,this.delegate=e.delegate,this.options=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},za.defaultOptions()),{sipjsId:Hi(5)}),{uri:new Ri("sip","anonymous."+Hi(6),"anonymous.invalid")}),{viaHost:Hi(12)+".invalid"}),za.stripUndefinedProperties(e)),this.options.hackIpInContact)if(typeof this.options.hackIpInContact=="boolean"&&this.options.hackIpInContact){const i=Math.floor(Math.random()*254+1);this.options.viaHost="192.0.2."+i}else this.options.hackIpInContact&&(this.options.viaHost=this.options.hackIpInContact);switch(this.loggerFactory=new Jy,this.logger=this.loggerFactory.getLogger("sip.UserAgent"),this.loggerFactory.builtinEnabled=this.options.logBuiltinEnabled,this.loggerFactory.connector=this.options.logConnector,this.options.logLevel){case"error":this.loggerFactory.level=In.error;break;case"warn":this.loggerFactory.level=In.warn;break;case"log":this.loggerFactory.level=In.log;break;case"debug":this.loggerFactory.level=In.debug}if(this.options.logConfiguration&&(this.logger.log("Configuration:"),Object.keys(this.options).forEach(n=>{const r=this.options[n];switch(n){case"uri":case"sessionDescriptionHandlerFactory":this.logger.log("· "+n+": "+r);break;case"authorizationPassword":this.logger.log("· "+n+": NOT SHOWN");break;case"transportConstructor":this.logger.log("· "+n+": "+r.name);break;default:this.logger.log("· "+n+": "+JSON.stringify(r))}})),this.options.transportOptions){const n=this.options.transportOptions,r=n.maxReconnectionAttempts,i=n.reconnectionTimeout;r!==void 0&&this.logger.warn('The transport option "maxReconnectionAttempts" as has apparently been specified and has been deprecated. It will no longer be available starting with SIP.js release 0.16.0. Please update accordingly.'),i!==void 0&&this.logger.warn('The transport option "reconnectionTimeout" as has apparently been specified and has been deprecated. It will no longer be available starting with SIP.js release 0.16.0. Please update accordingly.'),e.reconnectionDelay===void 0&&i!==void 0&&(this.options.reconnectionDelay=i),e.reconnectionAttempts===void 0&&r!==void 0&&(this.options.reconnectionAttempts=r)}if(e.reconnectionDelay!==void 0&&this.logger.warn('The user agent option "reconnectionDelay" as has apparently been specified and has been deprecated. It will no longer be available starting with SIP.js release 0.16.0. Please update accordingly.'),e.reconnectionAttempts!==void 0&&this.logger.warn('The user agent option "reconnectionAttempts" as has apparently been specified and has been deprecated. It will no longer be available starting with SIP.js release 0.16.0. Please update accordingly.'),this._transport=new this.options.transportConstructor(this.getLogger("sip.Transport"),this.options.transportOptions),this.initTransportCallbacks(),this._contact=this.initContact(),this._instanceId=this.options.instanceId?this.options.instanceId:za.newUUID(),Vn.parse(this._instanceId,"uuid")===-1)throw new Error("Invalid instanceId.");this._userAgentCore=this.initCore()}static makeURI(e){return Vn.URIParse(e)}static defaultOptions(){return{allowLegacyNotifications:!1,authorizationHa1:"",authorizationPassword:"",authorizationUsername:"",delegate:{},contactName:"",contactParams:{transport:"ws"},displayName:"",forceRport:!1,gracefulShutdown:!0,hackAllowUnregisteredOptionTags:!1,hackIpInContact:!1,hackViaTcp:!1,instanceId:"",instanceIdAlwaysAdded:!1,logBuiltinEnabled:!0,logConfiguration:!0,logConnector:()=>{},logLevel:"log",noAnswerTimeout:60,preloadedRouteSet:[],reconnectionAttempts:0,reconnectionDelay:4,sendInitialProvisionalResponse:!0,sessionDescriptionHandlerFactory:fw(),sessionDescriptionHandlerFactoryOptions:{},sipExtension100rel:xr.Unsupported,sipExtensionReplaces:xr.Unsupported,sipExtensionExtraSupported:[],sipjsId:"",transportConstructor:w0,transportOptions:{},uri:new Ri("sip","anonymous","anonymous.invalid"),userAgentString:"SIP.js/0.21.1",viaHost:""}}static newUUID(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const n=Math.floor(16*Math.random());return(e==="x"?n:n%4+8).toString(16)})}static stripUndefinedProperties(e){return Object.keys(e).reduce((n,r)=>(e[r]!==void 0&&(n[r]=e[r]),n),{})}get configuration(){return this.options}get contact(){return this._contact}get instanceId(){return this._instanceId}get state(){return this._state}get stateChange(){return this._stateEventEmitter}get transport(){return this._transport}get userAgentCore(){return this._userAgentCore}getLogger(e,n){return this.loggerFactory.getLogger(e,n)}getLoggerFactory(){return this.loggerFactory}isConnected(){return this.transport.isConnected()}reconnect(){return this.state===xn.Stopped?Promise.reject(new Error("User agent stopped.")):Promise.resolve().then(()=>this.transport.connect())}start(){return this.state===xn.Started?(this.logger.warn("User agent already started"),Promise.resolve()):(this.logger.log(`Starting ${this.configuration.uri}`),this.transitionState(xn.Started),this.transport.connect())}async stop(){if(this.state===xn.Stopped)return this.logger.warn("User agent already stopped"),Promise.resolve();if(this.logger.log(`Stopping ${this.configuration.uri}`),!this.options.gracefulShutdown)return this.logger.log("Dispose of transport"),this.transport.dispose().catch(a=>{throw this.logger.error(a.message),a}),this.logger.log("Dispose of core"),this.userAgentCore.dispose(),this._publishers={},this._registerers={},this._sessions={},this._subscriptions={},this.transitionState(xn.Stopped),Promise.resolve();const e=Object.assign({},this._publishers),n=Object.assign({},this._registerers),r=Object.assign({},this._sessions),i=Object.assign({},this._subscriptions),o=this.transport,A=this.userAgentCore;this.logger.log("Dispose of registerers");for(const a in n)n[a]&&await n[a].dispose().catch(s=>{throw this.logger.error(s.message),delete this._registerers[a],s});this.logger.log("Dispose of sessions");for(const a in r)r[a]&&await r[a].dispose().catch(s=>{throw this.logger.error(s.message),delete this._sessions[a],s});this.logger.log("Dispose of subscriptions");for(const a in i)i[a]&&await i[a].dispose().catch(s=>{throw this.logger.error(s.message),delete this._subscriptions[a],s});this.logger.log("Dispose of publishers");for(const a in e)e[a]&&await e[a].dispose().catch(s=>{throw this.logger.error(s.message),delete this._publishers[a],s});this.logger.log("Dispose of transport"),await o.dispose().catch(a=>{throw this.logger.error(a.message),a}),this.logger.log("Dispose of core"),A.dispose(),this.transitionState(xn.Stopped)}_makeInviter(e,n){return new h0(this,e,n)}attemptReconnection(e=1){const n=this.options.reconnectionAttempts,r=this.options.reconnectionDelay;e>n?this.logger.log("Maximum reconnection attempts reached"):(this.logger.log(`Reconnection attempt ${e} of ${n} - trying`),setTimeout(()=>{this.reconnect().then(()=>{this.logger.log(`Reconnection attempt ${e} of ${n} - succeeded`)}).catch(i=>{this.logger.error(i.message),this.logger.log(`Reconnection attempt ${e} of ${n} - failed`),this.attemptReconnection(++e)})},e===1?0:1e3*r))}initContact(){const e=this.options.contactName!==""?this.options.contactName:Hi(8),n=this.options.contactParams;return{pubGruu:void 0,tempGruu:void 0,uri:new Ri("sip",e,this.options.viaHost,void 0,n),toString:(r={})=>{const i=r.anonymous||!1,o=r.outbound||!1,A=r.register||!1;let a="<";return a+=i?this.contact.tempGruu||`sip:anonymous@anonymous.invalid;transport=${n.transport?n.transport:"ws"}`:A?this.contact.uri:this.contact.pubGruu||this.contact.uri,o&&(a+=";ob"),a+=">",this.options.instanceIdAlwaysAdded&&(a+=';+sip.instance="<urn:uuid:'+this._instanceId+'>"'),a}}}initCore(){let e=[];e.push("outbound"),this.options.sipExtension100rel===xr.Supported&&e.push("100rel"),this.options.sipExtensionReplaces===xr.Supported&&e.push("replaces"),this.options.sipExtensionExtraSupported&&e.push(...this.options.sipExtensionExtraSupported),this.options.hackAllowUnregisteredOptionTags||(e=e.filter(o=>Zy[o])),e=Array.from(new Set(e));const n=e.slice();(this.contact.pubGruu||this.contact.tempGruu)&&n.push("gruu");const r={aor:this.options.uri,contact:this.contact,displayName:this.options.displayName,loggerFactory:this.loggerFactory,hackViaTcp:this.options.hackViaTcp,routeSet:this.options.preloadedRouteSet,supportedOptionTags:e,supportedOptionTagsResponse:n,sipjsId:this.options.sipjsId,userAgentHeaderFieldValue:this.options.userAgentString,viaForceRport:this.options.forceRport,viaHost:this.options.viaHost,authenticationFactory:()=>{const o=this.options.authorizationUsername?this.options.authorizationUsername:this.options.uri.user,A=this.options.authorizationPassword?this.options.authorizationPassword:void 0,a=this.options.authorizationHa1?this.options.authorizationHa1:void 0;return new zy(this.getLoggerFactory(),a,o,A)},transportAccessor:()=>this.transport},i={onInvite:o=>{var A;const a=new Xc(this,o);if(o.delegate={onCancel:s=>{a._onCancel(s)},onTransportError:s=>{this.logger.error("A transport error has occurred while handling an incoming INVITE request.")}},o.trying(),this.options.sipExtensionReplaces!==xr.Unsupported){const s=o.message.parseHeader("replaces");if(s){const l=s.call_id;if(typeof l!="string")throw new Error("Type of call id is not string");const u=s.replaces_to_tag;if(typeof u!="string")throw new Error("Type of to tag is not string");const d=s.replaces_from_tag;if(typeof d!="string")throw new Error("type of from tag is not string");const g=l+u+d,p=this.userAgentCore.dialogs.get(g);if(!p)return void a.reject({statusCode:481});if(!p.early&&s.early_only===!0)return void a.reject({statusCode:486});const V=this._sessions[l+d]||this._sessions[l+u]||void 0;if(!V)throw new Error("Session does not exist.");a._replacee=V}}if(!((A=this.delegate)===null||A===void 0)&&A.onInvite)return a.autoSendAnInitialProvisionalResponse?void a.progress().then(()=>{var s;if(((s=this.delegate)===null||s===void 0?void 0:s.onInvite)===void 0)throw new Error("onInvite undefined.");this.delegate.onInvite(a)}):void this.delegate.onInvite(a);a.reject({statusCode:486})},onMessage:o=>{if(this.delegate&&this.delegate.onMessage){const A=new g0(o);this.delegate.onMessage(A)}else o.accept()},onNotify:o=>{if(this.delegate&&this.delegate.onNotify){const A=new Jc(o);this.delegate.onNotify(A)}else this.options.allowLegacyNotifications?o.accept():o.reject({statusCode:481})},onRefer:o=>{this.logger.warn("Received an out of dialog REFER request"),this.delegate&&this.delegate.onReferRequest?this.delegate.onReferRequest(o):o.reject({statusCode:405})},onRegister:o=>{this.logger.warn("Received an out of dialog REGISTER request"),this.delegate&&this.delegate.onRegisterRequest?this.delegate.onRegisterRequest(o):o.reject({statusCode:405})},onSubscribe:o=>{this.logger.warn("Received an out of dialog SUBSCRIBE request"),this.delegate&&this.delegate.onSubscribeRequest?this.delegate.onSubscribeRequest(o):o.reject({statusCode:405})}};return new gw(r,i)}initTransportCallbacks(){this.transport.onConnect=()=>this.onTransportConnect(),this.transport.onDisconnect=e=>this.onTransportDisconnect(e),this.transport.onMessage=e=>this.onTransportMessage(e)}onTransportConnect(){this.state!==xn.Stopped&&this.delegate&&this.delegate.onConnect&&this.delegate.onConnect()}onTransportDisconnect(e){this.state!==xn.Stopped&&(this.delegate&&this.delegate.onDisconnect&&this.delegate.onDisconnect(e),e&&this.options.reconnectionAttempts>0&&this.attemptReconnection())}onTransportMessage(e){const n=Za.parseMessage(e,this.getLogger("sip.Parser"));if(!n)return void this.logger.warn("Failed to parse incoming message. Dropping.");if(this.state===xn.Stopped&&n instanceof Ro)return void this.logger.warn(`Received ${n.method} request while stopped. Dropping.`);const r=()=>{const i=["from","to","call_id","cseq","via"];for(const o of i)if(!n.hasHeader(o))return this.logger.warn(`Missing mandatory header field : ${o}.`),!1;return!0};if(n instanceof Ro){if(!r())return void this.logger.warn("Request missing mandatory header field. Dropping.");if(!n.toTag&&n.callId.substr(0,5)===this.options.sipjsId)return void this.userAgentCore.replyStateless(n,{statusCode:482});const i=OA(n.body),o=n.getHeader("content-length");if(o&&i<Number(o))return void this.userAgentCore.replyStateless(n,{statusCode:400})}if(n instanceof Bi){if(!r())return void this.logger.warn("Response missing mandatory header field. Dropping.");if(n.getHeaders("via").length>1)return void this.logger.warn("More than one Via header field present in the response. Dropping.");if(n.via.host!==this.options.viaHost||n.via.port!==void 0)return void this.logger.warn("Via sent-by in the response does not match UA Via host value. Dropping.");const i=OA(n.body),o=n.getHeader("content-length");if(o&&i<Number(o))return void this.logger.warn("Message body length is lower than the value in Content-Length header field. Dropping.")}if(n instanceof Ro)this.userAgentCore.receiveIncomingRequestFromTransport(n);else{if(!(n instanceof Bi))throw new Error("Invalid message type.");this.userAgentCore.receiveIncomingResponseFromTransport(n)}}transitionState(e,n){const r=()=>{throw new Error(`Invalid state transition from ${this._state} to ${e}`)};switch(this._state){case xn.Started:e!==xn.Stopped&&r();break;case xn.Stopped:e!==xn.Started&&r();break;default:throw new Error("Unknown state.")}this.logger.log(`Transitioned from ${this._state} to ${e}`),this._state=e,this._stateEventEmitter.emit(this._state)}},I0=class{constructor(e){this.listeners=[],this.keyListeners={},this.data={...e},this.proxy=new Proxy(this.data,{set:(n,r,i)=>(n[r]!==i&&(n[r]=i,this.notify(),this.notifyKey(r,i)),!0)})}getState(){return this.proxy}setState(e,n=!1){let r=!1;for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)){const o=this.data[i],A=e[i];(n||o!==A)&&(this.data[i]=A,r=!0,this.notifyKey(i,A))}(r||n)&&this.notify()}subscribe(e){return this.listeners.push(e),()=>{this.listeners=this.listeners.filter(n=>n!==e)}}subscribeKey(e,n){return this.keyListeners[e]||(this.keyListeners[e]=[]),this.keyListeners[e].push(n),()=>{this.keyListeners[e]=this.keyListeners[e].filter(r=>r!==n)}}notify(){const e=this.getState();for(const n of this.listeners)n(e)}notifyKey(e,n){const r=this.keyListeners[e];r&&r.forEach(i=>i(n))}};var Rt,wn,rt,Cr,oe,Ge,Ht;(function(t){t[t.IDLE=1]="IDLE",t[t.BUSY=2]="BUSY",t[t.RINGING=3]="RINGING",t[t.OFFLINE=0]="OFFLINE",t[t.UNREGISTERED=4]="UNREGISTERED"})(Rt||(Rt={})),function(t){t.OUTGOING="outgoing",t.INCOMING="incoming",t.CONSULT="consult",t.MEETING="meeting",t.TRANSFER="transfer",t.PREDICT_OUT_CALL="predict_out_call"}(wn||(wn={})),function(t){t[t.OUT_CALL=100]="OUT_CALL",t[t.AGENT_STATE=101]="AGENT_STATE",t[t.OUT_CALL_INCOMING_CALL=102]="OUT_CALL_INCOMING_CALL",t[t.OUT_CALL_RINGING=103]="OUT_CALL_RINGING",t[t.OUT_CALL_ANSWER=104]="OUT_CALL_ANSWER",t[t.CALL_HOLD=105]="CALL_HOLD",t[t.CALL_UNHOLD=106]="CALL_UNHOLD",t[t.OUT_CALL_END=107]="OUT_CALL_END",t[t.CONSULT_REQUEST=108]="CONSULT_REQUEST",t[t.CONSULT_RINGING=109]="CONSULT_RINGING",t[t.CONSULT_ANSWER=110]="CONSULT_ANSWER",t[t.CONSULT_FAIL=111]="CONSULT_FAIL",t[t.MUTE=112]="MUTE",t[t.UNMUTE=113]="UNMUTE",t[t.CONSULT_CALL_IN=114]="CONSULT_CALL_IN",t[t.CONSULT_CALL_IN_SUCCESS=115]="CONSULT_CALL_IN_SUCCESS",t[t.CONSULT_RETURN_CALL=125]="CONSULT_RETURN_CALL",t[t.CONSULT_RETURN_CALL_SUCCESS=126]="CONSULT_RETURN_CALL_SUCCESS",t[t.CONSULT_TRANSFER=116]="CONSULT_TRANSFER",t[t.CONSULT_TRANSFER_FAILED=118]="CONSULT_TRANSFER_FAILED",t[t.CONSULT_TRANSFER_OFF_HOOK=117]="CONSULT_TRANSFER_OFF_HOOK",t[t.INCOMING_CALL=119]="INCOMING_CALL",t[t.INCOMING_CALL_OFF_HOOK=120]="INCOMING_CALL_OFF_HOOK",t[t.INCOMING_CALL_END=121]="INCOMING_CALL_END",t[t.SATISFACTION_EVALUATION=122]="SATISFACTION_EVALUATION",t[t.CONSULT_THREE_WAY=123]="CONSULT_THREE_WAY",t[t.CONSULT_THREE_WAY_RESULT=124]="CONSULT_THREE_WAY_RESULT",t[t.TRANSFER=127]="TRANSFER",t[t.TRANSFER_FAILED=128]="TRANSFER_FAILED",t[t.TRANSFER_INCOMING_CALL=129]="TRANSFER_INCOMING_CALL",t[t.TRANSFER_OFF_HOOK=130]="TRANSFER_OFF_HOOK",t[t.AGENT_HANGUP=131]="AGENT_HANGUP",t[t.KICK_OFFLINE=132]="KICK_OFFLINE",t[t.CONTINUOUS_NOT_ANSWER=133]="CONTINUOUS_NOT_ANSWER",t[t.PREVIEW_OUT_CALL=134]="PREVIEW_OUT_CALL",t[t.SIGN_OUT=135]="SIGN_OUT",t[t.SIGN_IN_SWITCH_DEVICE=136]="SIGN_IN_SWITCH_DEVICE",t[t.LISTEN_CALL_FAILED=137]="LISTEN_CALL_FAILED",t[t.LISTEN_INCOMING_CALL=138]="LISTEN_INCOMING_CALL",t[t.LISTEN_INCOMING_CALL_OFF_HOOK=139]="LISTEN_INCOMING_CALL_OFF_HOOK",t[t.EAR_SPEECH=140]="EAR_SPEECH",t[t.STOP_EAR_SPEECH=141]="STOP_EAR_SPEECH",t[t.CALL_FORCE_INSERT=142]="CALL_FORCE_INSERT",t[t.INTERNAL_CALL_START_CONSULT=145]="INTERNAL_CALL_START_CONSULT",t[t.INTERNAL_CALL_END_CONSULT=146]="INTERNAL_CALL_END_CONSULT",t[t.CALL_SIP_INCOMING_CALL=147]="CALL_SIP_INCOMING_CALL"}(rt||(rt={})),function(t){t.WEB_RTC_CONNECTING="connecting",t.WEB_RTC_CONNECTED="connected",t.WEB_RTC_DISCONNECTING="disconnecting",t.WEB_RTC_DISCONNECTED="disconnected",t.WEB_RTC_REGISTERED="registered",t.WEB_RTC_UNREGISTERED="unregistered",t.WEB_RTC_TERMINATED="terminated",t.WEB_RTC_REGISTER_FAILED="register_failed",t.WEB_RTC_ANSWER_FAILED="answer_failed",t.WEB_RTC_SEND_DTMF="send_dtmf"}(Cr||(Cr={})),function(t){t.CUSTOMER_INFO="customer_info",t.CALL_PROGRESS="call_progress",t.OUT_INCOMING_CALL="out_call_incoming_call",t.INTERNAL_OUT_INCOMING_CALL="internal_out_incoming_call",t.PREVIEW_OUT_INCOMING_CALL="preview_out_incoming_call",t.OUT_SUCCESS="out_call_success",t.OUT_FAILED="out_call_failed",t.OUT_RINGING="out_call_ringing",t.OUT_OFF_ANSWER="out_call_answer",t.INTERNAL_OUT_OFF_ANSWER="internal_out_call_answer",t.HOLD_SUCCESS="hold_success",t.HOLD_FAILED="hold_failed",t.UNHOLD_SUCCESS="unhold_success",t.UNHOLD_FAILED="unhold_failed",t.OUT_HANGUP="out_call_hangup",t.CONSULT_RINGING="consult_ringing",t.CONSULT_OFF_HOOK="consult_off_hook",t.CONSULT_FAILED="consult_failed",t.CONSULT_INCOMING="consult_incoming",t.CONSULT_CALL_IN_SUCCESS="consult_call_in_success",t.CONSULT_RETURN_CALL_SUCCESS="consult_return_call_success",t.OTHER_SIDE_CONSULT_HANGUP="other_side_consult_hangup",t.OUR_SIDE_CONSULT_HANGUP="our_side_consult_hangup",t.AGENT_STATE="agent_state",t.MUTE_SUCCESS="mute_success",t.MUTE_FAILED="mute_failed",t.UNMUTE_SUCCESS="unmute_success",t.UNMUTE_FAILED="unmute_failed",t.CONSULT_TRANSFER_SUCCESS="consult_transfer_success",t.CONSULT_TRANSFER_FAILED="consult_transfer_failed",t.CONSULT_TRANSFER_OFF_HOOK="consult_transfer_off_hook",t.INCOMING_CALL="incoming_call",t.INCOMING_CALL_IN="incoming_call_in",t.PREDICT_INCOMING_CALL="predict_incoming_call",t.DUAL_CALL_INCOMING_CALL="dual_call_incoming_call",t.INCOMING_CALL_OFF_HOOK="incoming_call_off_hook",t.INCOMING_CALL_IN_OFF_HOOK="incoming_call_in_off_hook",t.INCOMING_CALL_END="incoming_call_end",t.SATISFACTION_EVALUATION_SUCCESS="satisfaction_evaluation_success",t.SATISFACTION_EVALUATION_FAILED="satisfaction_evaluation_failed",t.CONSULT_THREE_WAY_SUCCESS="consult_three_way_success",t.CONSULT_THREE_WAY_FAILED="consult_three_way_failed",t.THREE_WAY_OUR_SIDE_HANGUP="three_way_our_side_hangup",t.TRANSFER_FAILED="transfer_failed",t.TRANSFER_PROGRESS="transfer_progress",t.TRANSFER_INCOMING_CALL="transfer_incoming_call",t.TRANSFER_OFF_HOOK="transfer_off_hook",t.TRANSFER_END="transfer_end",t.REJECT="reject",t.LISTEN_CALL_FAILED="listen_call_failed",t.LISTEN_INCOMING_CALL="listen_incoming_call",t.LISTEN_INCOMING_CALL_OFF_HOOK="listen_incoming_call_off_hook",t.LISTEN_HANGUP="listen_hangup",t.EAR_SPEECH_SUCCESS="ear_speech_success",t.EAR_SPEECH_BE_SUCCESS="ear_speech_be_success",t.EAR_SPEECH_FAILED="ear_speech_failed",t.STOP_EAR_SPEECH_SUCCESS="stop_ear_speech_success",t.STOP_EAR_SPEECH_FAILED="stop_ear_speech_failed",t.CALL_FORCE_INSERT_SUCCESS="call_force_insert_success",t.CALL_FORCE_INSERT_SUCCESS_LISTENER="call_force_insert_success_listener",t.CALL_FORCE_INSERT_FAILED="call_force_insert_failed",t.CALL_SIP_INCOMING_CALL="call_sip_incoming_call"}(oe||(oe={})),function(t){t.EVENT_ALL="event_all",t.NOTIFICATION_CLICK="notification_click",t.UPDATE_ANSWER_DEVICE="update_answer_device",t.PHONE_BAR_OPERATION="phone_bar_operation",t.AGENT_INIT_STATUS="agent_init_status",t.WEBSITE_DELAY="website_delay",t.SELECT_EXTERNAL_NUMBER="select_external_number",t.FAIL_NOTIFICATION="fail_notification",t.KICK_OFF="kick_off",t.DESTROY="destroy",t.NETWORK_OFFLINE="network_offline",t.NETWORK_ONLINE="network_online",t.SIGN_OUT="sign_out",t.SIGN_IN_SWITCH_DEVICE="sign_in_switch_device"}(Ge||(Ge={})),function(t){t.RINGING="客户振铃",t.AGENT_RINGING="振铃中",t.CALLING="通话中",t.CONSULTING="正在咨询",t.CONSULT_CALL_IN="咨询来电",t.INCOMING_CALL="客户来电",t.MEETING="会议中",t.TRANSFERRING="转接中",t.TRANSFER_INCOMING_CALL="转接来电",t.HOLDING="保持中",t.MUTING="静音中",t.LISTENING="监听来电",t.LINKING="正在链接",t.OTHER_SIDE_CONSULTING="对方正咨询"}(Ht||(Ht={}));const AA={all:Vi=Vi||new Map,on:function(t,e){var n=Vi.get(t);n?n.push(e):Vi.set(t,[e])},off:function(t,e){var n=Vi.get(t);n&&(e?n.splice(n.indexOf(e)>>>0,1):Vi.set(t,[]))},emit:function(t,e){var n=Vi.get(t);n&&n.slice().map(function(r){r(e)}),(n=Vi.get("*"))&&n.slice().map(function(r){r(t,e)})}};var Vi;const ge={on:(t,e)=>(AA.on(t,e),ge),off(t,e){AA.off(t,e)},emit(t,e){AA.emit(t,e),AA.emit(Ge.EVENT_ALL,{event:t,data:e})},clearAllListeners(){AA.all.clear()}},_={agentInfo:{},isRtcReconnecting:!1,sessionId:"",enableBrowserAlert:!1,autoStateTimer:null,autoAnswerTimer:null,logBuiltinEnabled:!1,browserAlertTime:3e3,latency:0,monitoredAgentNo:"",earSpeakAgent:"",stateObject:{state:Rt.BUSY,state_name:"忙碌"}},pr={isCalling:!1,direction:null,outCallIsAnswer:!1,incomingIsAnswer:!1,transferIsAnswer:!1,isMeeting:!1,isHold:!1,displayText:"",isMuted:!1,consultIsAnswer:!1,actionConfigs:[],answerDevice:1,selectOutNumber:"",customerObject:void 0,isNextState:!0,isSipConnected:!1},P=new class extends I0{updateIsCalling(t){this.setState({isCalling:t})}updateDirection(t){this.setState({direction:t})}updateOutCallIsAnswer(t){this.setState({outCallIsAnswer:t})}updateIsHold(t){var n;if(((n=_.stateObject)==null?void 0:n.state)===Rt.UNREGISTERED)return;const e=this.get("actionConfigs");if(t){const r=[...e.filter(i=>i!=="hold")];r.push("unhold"),this.updateActionConfigs(r)}else{const r=[...e.filter(i=>i!=="unhold")];r.push("hold"),this.updateActionConfigs(r)}this.getState().isHold=t}updateDisplayText(t){this.setState({displayText:t}),ge.emit(oe.CALL_PROGRESS,t)}updateActionConfigs(t,e=!0){const{show_satisfaction:n}=_.agentInfo||{},r=this.get("answerDevice"),i=t.filter(o=>(n!==0||o!=="satisfaction"||!e)&&(r!==2||o!=="answer"));this.setState({actionConfigs:i}),ge.emit(Ge.PHONE_BAR_OPERATION,i)}updateConsultIsAnswer(t){this.setState({consultIsAnswer:t})}updateIsMuted(t){var n;if(((n=_.stateObject)==null?void 0:n.state)===Rt.UNREGISTERED)return;const e=this.get("actionConfigs");if(t){const r=[...e.filter(i=>i!=="mute")];r.push("unmute"),this.updateActionConfigs(r)}else{const r=[...e.filter(i=>i!=="unmute")];r.push("mute"),this.updateActionConfigs(r)}this.setState({isMuted:t})}updateIncomingIsAnswer(t){this.setState({incomingIsAnswer:t})}updateAnswerDevice(t){this.setState({answerDevice:t}),ge.emit(Ge.UPDATE_ANSWER_DEVICE,t)}updateIsMeeting(t){this.setState({isMeeting:t})}updateTransferIsAnswer(t){this.setState({transferIsAnswer:t})}updateSelectOutNumber(t){ge.emit(Ge.SELECT_EXTERNAL_NUMBER,t),this.setState({selectOutNumber:t})}updateCustomerInfo(t){const e=this.get("displayText");if(t&&e){const{contact_count:n,customer_name:r,phone:i,city:o,province:A,is_vip:a,in_contact_count:s,trace_id:l,contact_count_month:u,in_contact_count_month:d}=t;ge.emit(oe.CUSTOMER_INFO,{customer_name:r||"未知客户",phone:i,city:o||"未知",province:A||"未知",contact_count:n||0,in_contact_count:s||0,is_vip:a,trace_id:l,contact_count_month:u||0,in_contact_count_month:d||0})}else ge.emit(oe.CUSTOMER_INFO,void 0);this.setState({customerObject:t})}updateIsNextState(t){this.setState({isNextState:t}),t?ge.emit(Ge.NETWORK_ONLINE):(_.stateObject={state:Rt.OFFLINE,state_name:"离线"},this.updateActionConfigs([]),ge.emit(oe.AGENT_STATE,_.stateObject),ge.emit(Ge.NETWORK_OFFLINE))}updateIsSipConnected(t){this.setState({isSipConnected:t})}reset(){this.updateAnswerDevice(1),this.updateIsCalling(pr.isCalling),this.updateDirection(pr.direction),this.updateOutCallIsAnswer(pr.outCallIsAnswer),this.updateIsHold(pr.isHold),this.updateDisplayText(pr.displayText),this.updateActionConfigs(pr.actionConfigs),this.updateConsultIsAnswer(pr.consultIsAnswer),this.updateIsMuted(pr.isMuted),this.updateIncomingIsAnswer(pr.incomingIsAnswer),this.updateIsMeeting(pr.isMeeting),this.updateTransferIsAnswer(pr.transferIsAnswer),this.updateCustomerInfo(void 0)}getCallInfo(){return this.getState()}get(t){return this.getState()[t]}}(pr),b0=new class extends I0{updateRttObject(t){this.setState({rttObject:t}),ge.emit(Ge.WEBSITE_DELAY,t)}}({rttObject:{rtt:null,jitter:null,packetsLost:null,packetsReceived:null,packetsSent:null,sendBitrate:null,recvBitrate:null,codec:null}});let hw=class{constructor(e,n){this.config=e,this.eventCallback=n,this.userAgent=null,this.registerer=null,this.activeSession=null,this.callTimeoutTimer=null,this.incomingInvitation=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimer=null,this.isOffline=!1,this.isManuallyStopped=!1,this.registerInterval=6e4,this.handleNetworkInfoChange=r=>{var i,o;(i=r.rttObject)!=null&&i.rtt&&((((o=r.rttObject)==null?void 0:o.rtt)||-1)===-1?this.isOffline||(this.isOffline=!0,this.handleOffline()):this.isOffline&&(this.isOffline=!1,this.handleOnline()))},this.handleOffline=()=>{console.warn("[SIPClient] 网络断开,准备销毁 SIP 客户端",new Date().toLocaleString()),ge.emit(Ge.FAIL_NOTIFICATION,"网络断开,准备销毁 SIP 客户端"),this.destroy()},this.handleOnline=()=>{console.warn("[SIPClient] 网络恢复,准备重新启动 SIP 客户端",new Date().toLocaleString()),this.reconnect()},this.sleep=r=>new Promise(i=>setTimeout(i,r)),b0.subscribe(this.handleNetworkInfoChange)}async start(){const e=Tf.makeURI(`sip:${this.config.user}@${this.config.server}`);if(!e)throw new Error("无效的SIP配置");const n={uri:e,authorizationUsername:this.config.user,authorizationPassword:this.config.password,sendInitialProvisionalResponse:!1,transportOptions:{server:this.config.webSocket,connectionTimeout:10,keepAliveInterval:20,keepAliveDebounce:10},contactName:this.config.user,contactParams:{transport:"wss"},userAgentString:"SwiftSIP/1.1.33",sessionDescriptionHandlerFactoryOptions:{alwaysAcquireMediaFirst:!0,peerConnectionConfiguration:{iceServers:[{urls:"stun:stun.l.google.com:19302"}],iceCandidatePoolSize:0,iceTransportPolicy:"all",rtcpMuxPolicy:"require",bundlePolicy:"balanced",certificates:void 0,peerIdentity:void 0},iceGatheringTimeout:1e3},logBuiltinEnabled:_.logBuiltinEnabled};this.userAgent=new Tf(n),this.setupEventListeners(),await this.userAgent.start(),await this.register()}setupEventListeners(){this.userAgent&&(this.userAgent.transport.stateChange.addListener(e=>{var r;let n;switch(e){case dt.Connecting:n=Cr.WEB_RTC_CONNECTING;break;case dt.Connected:n=Cr.WEB_RTC_CONNECTED,this.reconnectAttempts=0,_.isRtcReconnecting=!1,P.updateIsSipConnected(!0),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null);break;case dt.Disconnecting:n=Cr.WEB_RTC_DISCONNECTING,P.updateIsSipConnected(!1);break;case dt.Disconnected:{if(P.updateIsSipConnected(!1),this.isManuallyStopped)return void console.warn("[SIP] 手动断开,不触发重连");ge.emit(Ge.FAIL_NOTIFICATION,"软电话链接失败"),n=Cr.WEB_RTC_DISCONNECTED;const i=P.get("answerDevice");if(!_.isRtcReconnecting&&this.reconnectAttempts<this.maxReconnectAttempts&&i===1){this.reconnectAttempts++;const o=1e3*this.reconnectAttempts;console.warn(`SIP WebSocket 断开,第 ${this.reconnectAttempts} 次尝试重连,${o}ms 后重试...`),this.reconnectTimer=setTimeout(()=>{this.reconnect()},o)}else this.reconnectAttempts>=this.maxReconnectAttempts&&(console.error("SIP 重连失败:已达到最大重试次数"),ge.emit(Ge.FAIL_NOTIFICATION,"SIP 重连失败:已达到最大重试次数"));break}default:P.updateIsSipConnected(!1),n="unknown"}(r=this.eventCallback)==null||r.call(this,{type:n})}),this.userAgent.delegate={onInvite:e=>{this.handleIncomingCall(e)}})}async refreshRegister(){if(this.registerer)try{await this.registerer.register(),new Date().toLocaleTimeString()}catch(e){console.error("[SIPClient] REGISTER刷新失败",e)}}async register(){var e,n;if(this.userAgent){this.registerer=new _c(this.userAgent,{expires:120,refreshFrequency:80}),(e=this.registerer)==null||e.stateChange.addListener(r=>{var o;let i;switch(r){case kt.Initial:P.updateDisplayText(Ht.LINKING),i="initial";break;case kt.Registered:P.updateDisplayText(""),i=Cr.WEB_RTC_REGISTERED;break;case kt.Unregistered:i=Cr.WEB_RTC_UNREGISTERED;break;case kt.Terminated:i=Cr.WEB_RTC_TERMINATED;break;default:i="unknown"}(o=this.eventCallback)==null||o.call(this,{type:i})});try{await this.registerer.register()}catch(r){(n=this.eventCallback)==null||n.call(this,{type:Cr.WEB_RTC_REGISTER_FAILED,data:r})}}}attachRemoteAudio(e){const n=e.sessionDescriptionHandler;if(n){const r=n.peerConnection;if(!r)return;const i=new MediaStream;r.getReceivers().forEach(A=>{A.track&&A.track.kind==="audio"&&i.addTrack(A.track)});let o=document.getElementById("sip-remote-audio");o||(o=document.createElement("audio"),o.id="sip-remote-audio",o.autoplay=!0,o.style.display="none",document.body.appendChild(o)),o.srcObject=i,o.play().catch(A=>{console.error("音频播放失败,需要用户交互触发",A)})}}handleSessionState(e,n,r){e.stateChange.addListener(i=>{switch(i){case he.Established:clearTimeout(this.callTimeoutTimer),this.activeSession=e,this.attachRemoteAudio(e);break;case he.Terminating:break;case he.Terminated:this.activeSession=null,clearTimeout(this.callTimeoutTimer);case he.Establishing:}})}handleIncomingCall(e){this.incomingInvitation=e,this.handleSessionState(e,!1),e.progress({statusCode:180,reasonPhrase:"Ringing"}).catch(n=>console.error("发送 180 失败",n)),P.get("direction")===wn.OUTGOING&&this.answerCall()}async answerCall(){var e;if(!this.incomingInvitation)throw new Error("无来电可接听");_.autoAnswerTimer&&(clearTimeout(_.autoAnswerTimer),_.autoAnswerTimer=null);try{await this.incomingInvitation.accept(),this.activeSession=this.incomingInvitation,this.incomingInvitation=null}catch(n){(e=this.eventCallback)==null||e.call(this,{type:Cr.WEB_RTC_ANSWER_FAILED,data:{detail:n}})}}async rejectInCall(){var e;if(this.incomingInvitation)try{await this.incomingInvitation.reject(),this.incomingInvitation=null,P.updateDirection(null),P.updateIsCalling(!1),clearTimeout(this.callTimeoutTimer)}catch(n){(e=this.eventCallback)==null||e.call(this,{type:"error",data:{message:"拒接失败",detail:n}})}}sendDTMF(e){var r;if(!this.activeSession)throw new Error("当前没有活跃的通话");const n=this.activeSession.sessionDescriptionHandler;n&&typeof n.sendDtmf=="function"?(n.sendDtmf(e),(r=this.eventCallback)==null||r.call(this,{type:Cr.WEB_RTC_SEND_DTMF,data:{tone:e}})):console.warn("DTMF发送不支持或未初始化")}async hangup(){if(this.activeSession,this.activeSession){clearTimeout(this.callTimeoutTimer);const e=this.activeSession;if(!e)return;const n=e.state;try{n===he.Established?await e.bye():n===he.Establishing&&(e instanceof h0?await e.cancel():e instanceof Xc&&await e.reject()),clearTimeout(this.callTimeoutTimer)}catch(r){console.error("挂断失败",r)}finally{this.activeSession=null}}}async rejectOutCall(){this.activeSession instanceof Xc&&(await this.activeSession.reject(),this.activeSession=null)}async destroy(){if(this.isManuallyStopped=!0,clearTimeout(this.callTimeoutTimer),this.activeSession&&await this.hangup(),this.registerer){try{await this.registerer.unregister()}catch(e){console.warn("注销失败",e)}this.registerer=null}this.userAgent&&(await this.userAgent.stop(),this.userAgent=null)}async reconnect(){if(!_.isRtcReconnecting){_.isRtcReconnecting=!0;try{await this.destroy(),this.isManuallyStopped=!1,await this.start(),this.isOffline=!1,this.reconnectAttempts=0}catch(e){console.error("重连失败",e),_.isRtcReconnecting=!1}finally{_.isRtcReconnecting=!1}}}async getNetworkStats(){var e;if(this.activeSession){const n=(e=this.activeSession.sessionDescriptionHandler)==null?void 0:e.peerConnection;if(!n)return null;const r=await n.getStats(),i={};return r.forEach(o=>{o.type==="candidate-pair"&&o.state==="succeeded"&&o.currentRoundTripTime!=null&&(i.rtt=+(1e3*o.currentRoundTripTime).toFixed(2)),o.type==="inbound-rtp"&&o.kind==="audio"&&(i.jitter=+(1e3*o.jitter).toFixed(2),i.packetsLost=o.packetsLost,i.packetsReceived=o.packetsReceived,o.bytesReceived&&o.timestamp&&(i.recvBitrate=+(o.bytesReceived/1024).toFixed(2))),o.type==="outbound-rtp"&&o.kind==="audio"&&(i.packetsSent=o.packetsSent,o.bytesSent&&o.timestamp&&(i.sendBitrate=+(o.bytesSent/1024).toFixed(2))),o.type==="codec"&&o.mimeType&&(i.codec=o.mimeType)}),{...i,rtt:(i==null?void 0:i.rtt)||40}}return{rtt:_.latency||1}}};class Bf extends Error{constructor(n,r,i){const o=`${n.status||n.status===0?n.status:""} ${n.statusText||""}`.trim();super(`Request failed with ${o?`status code ${o}`:"an unknown error"}: ${r.method} ${r.url}`);Pr(this,"response");Pr(this,"request");Pr(this,"options");this.name="HTTPError",this.response=n,this.request=r,this.options=i}}let Of=class extends Error{constructor(n){super(`Request timed out: ${n.method} ${n.url}`);Pr(this,"request");this.name="TimeoutError",this.request=n}};const Df=(()=>{let t=!1,e=!1;const n=typeof globalThis.ReadableStream=="function",r=typeof globalThis.Request=="function";if(n&&r)try{e=new globalThis.Request("https://empty.invalid",{body:new globalThis.ReadableStream,method:"POST",get duplex(){return t=!0,"half"}}).headers.has("Content-Type")}catch(i){if(i instanceof Error&&i.message==="unsupported BodyInit type")return!1;throw i}return t&&!e})(),pw=typeof globalThis.AbortController=="function",mw=typeof globalThis.AbortSignal=="function"&&typeof globalThis.AbortSignal.any=="function",Vw=typeof globalThis.ReadableStream=="function",vw=typeof globalThis.FormData=="function",M0=["get","post","put","patch","head","delete"],Cw={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*"},Nf=2147483647,qw=new TextEncoder().encode("------WebKitFormBoundaryaxpyiPgbbPti10Rw").length,R0=Symbol("stop"),Ew={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,onUploadProgress:!0,fetch:!0},yw={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,dispatcher:!0,duplex:!0,priority:!0},ww=(t,e)=>{const n=(i=>{if(!i)return 0;if(i instanceof FormData){let o=0;for(const[A,a]of i)o+=qw,o+=new TextEncoder().encode(`Content-Disposition: form-data; name="${A}"`).length,o+=typeof a=="string"?new TextEncoder().encode(a).length:a.size;return o}if(i instanceof Blob)return i.size;if(i instanceof ArrayBuffer)return i.byteLength;if(typeof i=="string")return new TextEncoder().encode(i).length;if(i instanceof URLSearchParams)return new TextEncoder().encode(i.toString()).length;if("byteLength"in i)return i.byteLength;if(typeof i=="object"&&i!==null)try{const o=JSON.stringify(i);return new TextEncoder().encode(o).length}catch{return 0}return 0})(t.body);let r=0;return new Request(t,{duplex:"half",body:new ReadableStream({async start(i){const o=t.body instanceof ReadableStream?t.body.getReader():new Response("").body.getReader();await async function A(){const{done:a,value:s}=await o.read();if(a)return e&&e({percent:1,transferredBytes:r,totalBytes:Math.max(n,r)},new Uint8Array),void i.close();r+=s.byteLength;let l=n===0?0:r/n;(n<r||l===1)&&(l=.99),e&&e({percent:Number(l.toFixed(2)),transferredBytes:r,totalBytes:n},s),i.enqueue(s),await A()}()}})})},dA=t=>t!==null&&typeof t=="object",Ea=(...t)=>{for(const e of t)if((!dA(e)||Array.isArray(e))&&e!==void 0)throw new TypeError("The `options` argument must be an object");return jd({},...t)},x0=(t={},e={})=>{const n=new globalThis.Headers(t),r=e instanceof globalThis.Headers,i=new globalThis.Headers(e);for(const[o,A]of i.entries())r&&A==="undefined"||A===void 0?n.delete(o):n.set(o,A);return n};function ya(t,e,n){return Object.hasOwn(e,n)&&e[n]===void 0?[]:jd(t[n]??[],e[n]??[])}const T0=(t={},e={})=>({beforeRequest:ya(t,e,"beforeRequest"),beforeRetry:ya(t,e,"beforeRetry"),afterResponse:ya(t,e,"afterResponse"),beforeError:ya(t,e,"beforeError")}),jd=(...t)=>{let e={},n={},r={};for(const i of t)if(Array.isArray(i))Array.isArray(e)||(e=[]),e=[...e,...i];else if(dA(i)){for(let[o,A]of Object.entries(i))dA(A)&&o in e&&(A=jd(e[o],A)),e={...e,[o]:A};dA(i.hooks)&&(r=T0(r,i.hooks),e.hooks=r),dA(i.headers)&&(n=x0(n,i.headers),e.headers=n)}return e},Sw=t=>M0.includes(t)?t.toUpperCase():t,Ff={limit:2,methods:["get","put","head","delete","options","trace"],statusCodes:[408,413,429,500,502,503,504],afterStatusCodes:[413,429,503],maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY,delay:t=>.3*2**(t-1)*1e3},Iw=(t={})=>{if(typeof t=="number")return{...Ff,limit:t};if(t.methods&&!Array.isArray(t.methods))throw new Error("retry.methods must be an array");if(t.statusCodes&&!Array.isArray(t.statusCodes))throw new Error("retry.statusCodes must be an array");return{...Ff,...t}};class us{constructor(e,n={}){Pr(this,"request");Pr(this,"abortController");Pr(this,"_retryCount",0);Pr(this,"_input");Pr(this,"_options");var r,i;if(this._input=e,this._options={...n,headers:x0(this._input.headers,n.headers),hooks:T0({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},n.hooks),method:Sw(n.method??this._input.method??"GET"),prefixUrl:String(n.prefixUrl||""),retry:Iw(n.retry),throwHttpErrors:n.throwHttpErrors!==!1,timeout:n.timeout??1e4,fetch:n.fetch??globalThis.fetch.bind(globalThis)},typeof this._input!="string"&&!(this._input instanceof URL||this._input instanceof globalThis.Request))throw new TypeError("`input` must be a string, URL, or Request");if(this._options.prefixUrl&&typeof this._input=="string"){if(this._input.startsWith("/"))throw new Error("`input` must not begin with a slash when using `prefixUrl`");this._options.prefixUrl.endsWith("/")||(this._options.prefixUrl+="/"),this._input=this._options.prefixUrl+this._input}if(pw&&mw){const o=this._options.signal??this._input.signal;this.abortController=new globalThis.AbortController,this._options.signal=o?AbortSignal.any([o,this.abortController.signal]):this.abortController.signal}if(Df&&(this._options.duplex="half"),this._options.json!==void 0&&(this._options.body=((i=(r=this._options).stringifyJson)==null?void 0:i.call(r,this._options.json))??JSON.stringify(this._options.json),this._options.headers.set("content-type",this._options.headers.get("content-type")??"application/json")),this.request=new globalThis.Request(this._input,this._options),this._options.searchParams){const o="?"+(typeof this._options.searchParams=="string"?this._options.searchParams.replace(/^\?/,""):new URLSearchParams(this._options.searchParams).toString()),A=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,o);!(vw&&this._options.body instanceof globalThis.FormData||this._options.body instanceof URLSearchParams)||this._options.headers&&this._options.headers["content-type"]||this.request.headers.delete("content-type"),this.request=new globalThis.Request(new globalThis.Request(A,{...this.request}),this._options)}if(this._options.onUploadProgress){if(typeof this._options.onUploadProgress!="function")throw new TypeError("The `onUploadProgress` option must be a function");if(!Df)throw new Error("Request streams are not supported in your environment. The `duplex` option for `Request` is not available.");this.request.body&&(this.request=ww(this.request,this._options.onUploadProgress))}}static create(e,n){const r=new us(e,n),i=async()=>{if(typeof r._options.timeout=="number"&&r._options.timeout>Nf)throw new RangeError("The `timeout` option cannot be greater than 2147483647");await Promise.resolve();let A=await r._fetch();for(const a of r._options.hooks.afterResponse){const s=await a(r.request,r._options,r._decorateResponse(A.clone()));s instanceof globalThis.Response&&(A=s)}if(r._decorateResponse(A),!A.ok&&r._options.throwHttpErrors){let a=new Bf(A,r.request,r._options);for(const s of r._options.hooks.beforeError)a=await s(a);throw a}if(r._options.onDownloadProgress){if(typeof r._options.onDownloadProgress!="function")throw new TypeError("The `onDownloadProgress` option must be a function");if(!Vw)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");return((a,s)=>{const l=Number(a.headers.get("content-length"))||0;let u=0;return a.status===204?(s&&s({percent:1,totalBytes:l,transferredBytes:u},new Uint8Array),new Response(null,{status:a.status,statusText:a.statusText,headers:a.headers})):new Response(new ReadableStream({async start(d){const g=a.body.getReader();s&&s({percent:0,transferredBytes:0,totalBytes:l},new Uint8Array),await async function p(){const{done:V,value:v}=await g.read();V?d.close():(s&&(u+=v.byteLength,s({percent:l===0?0:u/l,transferredBytes:u,totalBytes:l},v)),d.enqueue(v),await p())}()}}),{status:a.status,statusText:a.statusText,headers:a.headers})})(A.clone(),r._options.onDownloadProgress)}return A},o=(r._options.retry.methods.includes(r.request.method.toLowerCase())?r._retry(i):i()).finally(async()=>{var A;r.request.bodyUsed||await((A=r.request.body)==null?void 0:A.cancel())});for(const[A,a]of Object.entries(Cw))o[A]=async()=>{r.request.headers.set("accept",r.request.headers.get("accept")||a);const s=await o;if(A==="json"){if(s.status===204||(await s.clone().arrayBuffer()).byteLength===0)return"";if(n.parseJson)return n.parseJson(await s.text())}return s[A]()};return o}_calculateRetryDelay(e){if(this._retryCount++,this._retryCount>this._options.retry.limit||e instanceof Of)throw e;if(e instanceof Bf){if(!this._options.retry.statusCodes.includes(e.response.status))throw e;const r=e.response.headers.get("Retry-After")??e.response.headers.get("RateLimit-Reset")??e.response.headers.get("X-RateLimit-Reset")??e.response.headers.get("X-Rate-Limit-Reset");if(r&&this._options.retry.afterStatusCodes.includes(e.response.status)){let i=1e3*Number(r);Number.isNaN(i)?i=Date.parse(r)-Date.now():i>=Date.parse("2024-01-01")&&(i-=Date.now());const o=this._options.retry.maxRetryAfter??i;return i<o?i:o}if(e.response.status===413)throw e}const n=this._options.retry.delay(this._retryCount);return Math.min(this._options.retry.backoffLimit,n)}_decorateResponse(e){return this._options.parseJson&&(e.json=async()=>this._options.parseJson(await e.text())),e}async _retry(e){try{return await e()}catch(n){const r=Math.min(this._calculateRetryDelay(n),Nf);if(this._retryCount<1)throw n;await async function(i,{signal:o}){return new Promise((A,a)=>{function s(){clearTimeout(l),a(o.reason)}o&&(o.throwIfAborted(),o.addEventListener("abort",s,{once:!0}));const l=setTimeout(()=>{o==null||o.removeEventListener("abort",s),A()},i)})}(r,{signal:this._options.signal});for(const i of this._options.hooks.beforeRetry)if(await i({request:this.request,options:this._options,error:n,retryCount:this._retryCount})===R0)return;return this._retry(e)}}async _fetch(){for(const r of this._options.hooks.beforeRequest){const i=await r(this.request,this._options);if(i instanceof Request){this.request=i;break}if(i instanceof Response)return i}const e=((r,i)=>{const o={};for(const A in i)A in yw||A in Ew||A in r||(o[A]=i[A]);return o})(this.request,this._options),n=this.request;return this.request=n.clone(),this._options.timeout===!1?this._options.fetch(n,e):async function(r,i,o,A){return new Promise((a,s)=>{const l=setTimeout(()=>{o&&o.abort(),s(new Of(r))},A.timeout);A.fetch(r,i).then(a).catch(s).then(()=>{clearTimeout(l)})})}(n,e,this.abortController,this._options)}}/*! MIT License © Sindre Sorhus */const eu=t=>{const e=(n,r)=>us.create(n,Ea(t,r));for(const n of M0)e[n]=(r,i)=>us.create(r,Ea(t,i,{method:n}));return e.create=n=>eu(Ea(n)),e.extend=n=>(typeof n=="function"&&(n=n(t??{})),eu(Ea(t,n))),e.stop=R0,e};var Yl,bw=eu(),Mw=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},B0={exports:{}};/**
155
+ `))}startSendingKeepAlives(){this.configuration.keepAliveInterval&&!this.keepAliveInterval&&(this.keepAliveInterval=setInterval(()=>{this.sendKeepAlive(),this.startSendingKeepAlives()},(e=>{const n=.8*e;return 1e3*(Math.random()*(e-n)+n)})(this.configuration.keepAliveInterval)))}stopSendingKeepAlives(){this.keepAliveInterval&&clearInterval(this.keepAliveInterval),this.keepAliveDebounceTimeout&&clearTimeout(this.keepAliveDebounceTimeout),this.keepAliveInterval=void 0,this.keepAliveDebounceTimeout=void 0}};w0.defaultOptions={server:"",connectionTimeout:5,keepAliveInterval:0,keepAliveDebounce:10,traceSip:!0};let Tf=class za{constructor(e={}){if(this._publishers={},this._registerers={},this._sessions={},this._subscriptions={},this._state=xn.Stopped,this._stateEventEmitter=new BA,this.delegate=e.delegate,this.options=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},za.defaultOptions()),{sipjsId:Hi(5)}),{uri:new Ri("sip","anonymous."+Hi(6),"anonymous.invalid")}),{viaHost:Hi(12)+".invalid"}),za.stripUndefinedProperties(e)),this.options.hackIpInContact)if(typeof this.options.hackIpInContact=="boolean"&&this.options.hackIpInContact){const i=Math.floor(Math.random()*254+1);this.options.viaHost="192.0.2."+i}else this.options.hackIpInContact&&(this.options.viaHost=this.options.hackIpInContact);switch(this.loggerFactory=new Jy,this.logger=this.loggerFactory.getLogger("sip.UserAgent"),this.loggerFactory.builtinEnabled=this.options.logBuiltinEnabled,this.loggerFactory.connector=this.options.logConnector,this.options.logLevel){case"error":this.loggerFactory.level=In.error;break;case"warn":this.loggerFactory.level=In.warn;break;case"log":this.loggerFactory.level=In.log;break;case"debug":this.loggerFactory.level=In.debug}if(this.options.logConfiguration&&(this.logger.log("Configuration:"),Object.keys(this.options).forEach(n=>{const r=this.options[n];switch(n){case"uri":case"sessionDescriptionHandlerFactory":this.logger.log("· "+n+": "+r);break;case"authorizationPassword":this.logger.log("· "+n+": NOT SHOWN");break;case"transportConstructor":this.logger.log("· "+n+": "+r.name);break;default:this.logger.log("· "+n+": "+JSON.stringify(r))}})),this.options.transportOptions){const n=this.options.transportOptions,r=n.maxReconnectionAttempts,i=n.reconnectionTimeout;r!==void 0&&this.logger.warn('The transport option "maxReconnectionAttempts" as has apparently been specified and has been deprecated. It will no longer be available starting with SIP.js release 0.16.0. Please update accordingly.'),i!==void 0&&this.logger.warn('The transport option "reconnectionTimeout" as has apparently been specified and has been deprecated. It will no longer be available starting with SIP.js release 0.16.0. Please update accordingly.'),e.reconnectionDelay===void 0&&i!==void 0&&(this.options.reconnectionDelay=i),e.reconnectionAttempts===void 0&&r!==void 0&&(this.options.reconnectionAttempts=r)}if(e.reconnectionDelay!==void 0&&this.logger.warn('The user agent option "reconnectionDelay" as has apparently been specified and has been deprecated. It will no longer be available starting with SIP.js release 0.16.0. Please update accordingly.'),e.reconnectionAttempts!==void 0&&this.logger.warn('The user agent option "reconnectionAttempts" as has apparently been specified and has been deprecated. It will no longer be available starting with SIP.js release 0.16.0. Please update accordingly.'),this._transport=new this.options.transportConstructor(this.getLogger("sip.Transport"),this.options.transportOptions),this.initTransportCallbacks(),this._contact=this.initContact(),this._instanceId=this.options.instanceId?this.options.instanceId:za.newUUID(),Vn.parse(this._instanceId,"uuid")===-1)throw new Error("Invalid instanceId.");this._userAgentCore=this.initCore()}static makeURI(e){return Vn.URIParse(e)}static defaultOptions(){return{allowLegacyNotifications:!1,authorizationHa1:"",authorizationPassword:"",authorizationUsername:"",delegate:{},contactName:"",contactParams:{transport:"ws"},displayName:"",forceRport:!1,gracefulShutdown:!0,hackAllowUnregisteredOptionTags:!1,hackIpInContact:!1,hackViaTcp:!1,instanceId:"",instanceIdAlwaysAdded:!1,logBuiltinEnabled:!0,logConfiguration:!0,logConnector:()=>{},logLevel:"log",noAnswerTimeout:60,preloadedRouteSet:[],reconnectionAttempts:0,reconnectionDelay:4,sendInitialProvisionalResponse:!0,sessionDescriptionHandlerFactory:fw(),sessionDescriptionHandlerFactoryOptions:{},sipExtension100rel:xr.Unsupported,sipExtensionReplaces:xr.Unsupported,sipExtensionExtraSupported:[],sipjsId:"",transportConstructor:w0,transportOptions:{},uri:new Ri("sip","anonymous","anonymous.invalid"),userAgentString:"SIP.js/0.21.1",viaHost:""}}static newUUID(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const n=Math.floor(16*Math.random());return(e==="x"?n:n%4+8).toString(16)})}static stripUndefinedProperties(e){return Object.keys(e).reduce((n,r)=>(e[r]!==void 0&&(n[r]=e[r]),n),{})}get configuration(){return this.options}get contact(){return this._contact}get instanceId(){return this._instanceId}get state(){return this._state}get stateChange(){return this._stateEventEmitter}get transport(){return this._transport}get userAgentCore(){return this._userAgentCore}getLogger(e,n){return this.loggerFactory.getLogger(e,n)}getLoggerFactory(){return this.loggerFactory}isConnected(){return this.transport.isConnected()}reconnect(){return this.state===xn.Stopped?Promise.reject(new Error("User agent stopped.")):Promise.resolve().then(()=>this.transport.connect())}start(){return this.state===xn.Started?(this.logger.warn("User agent already started"),Promise.resolve()):(this.logger.log(`Starting ${this.configuration.uri}`),this.transitionState(xn.Started),this.transport.connect())}async stop(){if(this.state===xn.Stopped)return this.logger.warn("User agent already stopped"),Promise.resolve();if(this.logger.log(`Stopping ${this.configuration.uri}`),!this.options.gracefulShutdown)return this.logger.log("Dispose of transport"),this.transport.dispose().catch(a=>{throw this.logger.error(a.message),a}),this.logger.log("Dispose of core"),this.userAgentCore.dispose(),this._publishers={},this._registerers={},this._sessions={},this._subscriptions={},this.transitionState(xn.Stopped),Promise.resolve();const e=Object.assign({},this._publishers),n=Object.assign({},this._registerers),r=Object.assign({},this._sessions),i=Object.assign({},this._subscriptions),o=this.transport,A=this.userAgentCore;this.logger.log("Dispose of registerers");for(const a in n)n[a]&&await n[a].dispose().catch(s=>{throw this.logger.error(s.message),delete this._registerers[a],s});this.logger.log("Dispose of sessions");for(const a in r)r[a]&&await r[a].dispose().catch(s=>{throw this.logger.error(s.message),delete this._sessions[a],s});this.logger.log("Dispose of subscriptions");for(const a in i)i[a]&&await i[a].dispose().catch(s=>{throw this.logger.error(s.message),delete this._subscriptions[a],s});this.logger.log("Dispose of publishers");for(const a in e)e[a]&&await e[a].dispose().catch(s=>{throw this.logger.error(s.message),delete this._publishers[a],s});this.logger.log("Dispose of transport"),await o.dispose().catch(a=>{throw this.logger.error(a.message),a}),this.logger.log("Dispose of core"),A.dispose(),this.transitionState(xn.Stopped)}_makeInviter(e,n){return new h0(this,e,n)}attemptReconnection(e=1){const n=this.options.reconnectionAttempts,r=this.options.reconnectionDelay;e>n?this.logger.log("Maximum reconnection attempts reached"):(this.logger.log(`Reconnection attempt ${e} of ${n} - trying`),setTimeout(()=>{this.reconnect().then(()=>{this.logger.log(`Reconnection attempt ${e} of ${n} - succeeded`)}).catch(i=>{this.logger.error(i.message),this.logger.log(`Reconnection attempt ${e} of ${n} - failed`),this.attemptReconnection(++e)})},e===1?0:1e3*r))}initContact(){const e=this.options.contactName!==""?this.options.contactName:Hi(8),n=this.options.contactParams;return{pubGruu:void 0,tempGruu:void 0,uri:new Ri("sip",e,this.options.viaHost,void 0,n),toString:(r={})=>{const i=r.anonymous||!1,o=r.outbound||!1,A=r.register||!1;let a="<";return a+=i?this.contact.tempGruu||`sip:anonymous@anonymous.invalid;transport=${n.transport?n.transport:"ws"}`:A?this.contact.uri:this.contact.pubGruu||this.contact.uri,o&&(a+=";ob"),a+=">",this.options.instanceIdAlwaysAdded&&(a+=';+sip.instance="<urn:uuid:'+this._instanceId+'>"'),a}}}initCore(){let e=[];e.push("outbound"),this.options.sipExtension100rel===xr.Supported&&e.push("100rel"),this.options.sipExtensionReplaces===xr.Supported&&e.push("replaces"),this.options.sipExtensionExtraSupported&&e.push(...this.options.sipExtensionExtraSupported),this.options.hackAllowUnregisteredOptionTags||(e=e.filter(o=>Zy[o])),e=Array.from(new Set(e));const n=e.slice();(this.contact.pubGruu||this.contact.tempGruu)&&n.push("gruu");const r={aor:this.options.uri,contact:this.contact,displayName:this.options.displayName,loggerFactory:this.loggerFactory,hackViaTcp:this.options.hackViaTcp,routeSet:this.options.preloadedRouteSet,supportedOptionTags:e,supportedOptionTagsResponse:n,sipjsId:this.options.sipjsId,userAgentHeaderFieldValue:this.options.userAgentString,viaForceRport:this.options.forceRport,viaHost:this.options.viaHost,authenticationFactory:()=>{const o=this.options.authorizationUsername?this.options.authorizationUsername:this.options.uri.user,A=this.options.authorizationPassword?this.options.authorizationPassword:void 0,a=this.options.authorizationHa1?this.options.authorizationHa1:void 0;return new zy(this.getLoggerFactory(),a,o,A)},transportAccessor:()=>this.transport},i={onInvite:o=>{var A;const a=new Xc(this,o);if(o.delegate={onCancel:s=>{a._onCancel(s)},onTransportError:s=>{this.logger.error("A transport error has occurred while handling an incoming INVITE request.")}},o.trying(),this.options.sipExtensionReplaces!==xr.Unsupported){const s=o.message.parseHeader("replaces");if(s){const l=s.call_id;if(typeof l!="string")throw new Error("Type of call id is not string");const u=s.replaces_to_tag;if(typeof u!="string")throw new Error("Type of to tag is not string");const d=s.replaces_from_tag;if(typeof d!="string")throw new Error("type of from tag is not string");const g=l+u+d,p=this.userAgentCore.dialogs.get(g);if(!p)return void a.reject({statusCode:481});if(!p.early&&s.early_only===!0)return void a.reject({statusCode:486});const V=this._sessions[l+d]||this._sessions[l+u]||void 0;if(!V)throw new Error("Session does not exist.");a._replacee=V}}if(!((A=this.delegate)===null||A===void 0)&&A.onInvite)return a.autoSendAnInitialProvisionalResponse?void a.progress().then(()=>{var s;if(((s=this.delegate)===null||s===void 0?void 0:s.onInvite)===void 0)throw new Error("onInvite undefined.");this.delegate.onInvite(a)}):void this.delegate.onInvite(a);a.reject({statusCode:486})},onMessage:o=>{if(this.delegate&&this.delegate.onMessage){const A=new g0(o);this.delegate.onMessage(A)}else o.accept()},onNotify:o=>{if(this.delegate&&this.delegate.onNotify){const A=new Jc(o);this.delegate.onNotify(A)}else this.options.allowLegacyNotifications?o.accept():o.reject({statusCode:481})},onRefer:o=>{this.logger.warn("Received an out of dialog REFER request"),this.delegate&&this.delegate.onReferRequest?this.delegate.onReferRequest(o):o.reject({statusCode:405})},onRegister:o=>{this.logger.warn("Received an out of dialog REGISTER request"),this.delegate&&this.delegate.onRegisterRequest?this.delegate.onRegisterRequest(o):o.reject({statusCode:405})},onSubscribe:o=>{this.logger.warn("Received an out of dialog SUBSCRIBE request"),this.delegate&&this.delegate.onSubscribeRequest?this.delegate.onSubscribeRequest(o):o.reject({statusCode:405})}};return new gw(r,i)}initTransportCallbacks(){this.transport.onConnect=()=>this.onTransportConnect(),this.transport.onDisconnect=e=>this.onTransportDisconnect(e),this.transport.onMessage=e=>this.onTransportMessage(e)}onTransportConnect(){this.state!==xn.Stopped&&this.delegate&&this.delegate.onConnect&&this.delegate.onConnect()}onTransportDisconnect(e){this.state!==xn.Stopped&&(this.delegate&&this.delegate.onDisconnect&&this.delegate.onDisconnect(e),e&&this.options.reconnectionAttempts>0&&this.attemptReconnection())}onTransportMessage(e){const n=Za.parseMessage(e,this.getLogger("sip.Parser"));if(!n)return void this.logger.warn("Failed to parse incoming message. Dropping.");if(this.state===xn.Stopped&&n instanceof Ro)return void this.logger.warn(`Received ${n.method} request while stopped. Dropping.`);const r=()=>{const i=["from","to","call_id","cseq","via"];for(const o of i)if(!n.hasHeader(o))return this.logger.warn(`Missing mandatory header field : ${o}.`),!1;return!0};if(n instanceof Ro){if(!r())return void this.logger.warn("Request missing mandatory header field. Dropping.");if(!n.toTag&&n.callId.substr(0,5)===this.options.sipjsId)return void this.userAgentCore.replyStateless(n,{statusCode:482});const i=OA(n.body),o=n.getHeader("content-length");if(o&&i<Number(o))return void this.userAgentCore.replyStateless(n,{statusCode:400})}if(n instanceof Bi){if(!r())return void this.logger.warn("Response missing mandatory header field. Dropping.");if(n.getHeaders("via").length>1)return void this.logger.warn("More than one Via header field present in the response. Dropping.");if(n.via.host!==this.options.viaHost||n.via.port!==void 0)return void this.logger.warn("Via sent-by in the response does not match UA Via host value. Dropping.");const i=OA(n.body),o=n.getHeader("content-length");if(o&&i<Number(o))return void this.logger.warn("Message body length is lower than the value in Content-Length header field. Dropping.")}if(n instanceof Ro)this.userAgentCore.receiveIncomingRequestFromTransport(n);else{if(!(n instanceof Bi))throw new Error("Invalid message type.");this.userAgentCore.receiveIncomingResponseFromTransport(n)}}transitionState(e,n){const r=()=>{throw new Error(`Invalid state transition from ${this._state} to ${e}`)};switch(this._state){case xn.Started:e!==xn.Stopped&&r();break;case xn.Stopped:e!==xn.Started&&r();break;default:throw new Error("Unknown state.")}this.logger.log(`Transitioned from ${this._state} to ${e}`),this._state=e,this._stateEventEmitter.emit(this._state)}},I0=class{constructor(e){this.listeners=[],this.keyListeners={},this.data={...e},this.proxy=new Proxy(this.data,{set:(n,r,i)=>(n[r]!==i&&(n[r]=i,this.notify(),this.notifyKey(r,i)),!0)})}getState(){return this.proxy}setState(e,n=!1){let r=!1;for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)){const o=this.data[i],A=e[i];(n||o!==A)&&(this.data[i]=A,r=!0,this.notifyKey(i,A))}(r||n)&&this.notify()}subscribe(e){return this.listeners.push(e),()=>{this.listeners=this.listeners.filter(n=>n!==e)}}subscribeKey(e,n){return this.keyListeners[e]||(this.keyListeners[e]=[]),this.keyListeners[e].push(n),()=>{this.keyListeners[e]=this.keyListeners[e].filter(r=>r!==n)}}notify(){const e=this.getState();for(const n of this.listeners)n(e)}notifyKey(e,n){const r=this.keyListeners[e];r&&r.forEach(i=>i(n))}};var Rt,wn,rt,Cr,oe,Ge,Ht;(function(t){t[t.IDLE=1]="IDLE",t[t.BUSY=2]="BUSY",t[t.RINGING=3]="RINGING",t[t.OFFLINE=0]="OFFLINE",t[t.UNREGISTERED=4]="UNREGISTERED"})(Rt||(Rt={})),function(t){t.OUTGOING="outgoing",t.INCOMING="incoming",t.CONSULT="consult",t.MEETING="meeting",t.TRANSFER="transfer",t.PREDICT_OUT_CALL="predict_out_call"}(wn||(wn={})),function(t){t[t.OUT_CALL=100]="OUT_CALL",t[t.AGENT_STATE=101]="AGENT_STATE",t[t.OUT_CALL_INCOMING_CALL=102]="OUT_CALL_INCOMING_CALL",t[t.OUT_CALL_RINGING=103]="OUT_CALL_RINGING",t[t.OUT_CALL_ANSWER=104]="OUT_CALL_ANSWER",t[t.CALL_HOLD=105]="CALL_HOLD",t[t.CALL_UNHOLD=106]="CALL_UNHOLD",t[t.OUT_CALL_END=107]="OUT_CALL_END",t[t.CONSULT_REQUEST=108]="CONSULT_REQUEST",t[t.CONSULT_RINGING=109]="CONSULT_RINGING",t[t.CONSULT_ANSWER=110]="CONSULT_ANSWER",t[t.CONSULT_FAIL=111]="CONSULT_FAIL",t[t.MUTE=112]="MUTE",t[t.UNMUTE=113]="UNMUTE",t[t.CONSULT_CALL_IN=114]="CONSULT_CALL_IN",t[t.CONSULT_CALL_IN_SUCCESS=115]="CONSULT_CALL_IN_SUCCESS",t[t.CONSULT_RETURN_CALL=125]="CONSULT_RETURN_CALL",t[t.CONSULT_RETURN_CALL_SUCCESS=126]="CONSULT_RETURN_CALL_SUCCESS",t[t.CONSULT_TRANSFER=116]="CONSULT_TRANSFER",t[t.CONSULT_TRANSFER_FAILED=118]="CONSULT_TRANSFER_FAILED",t[t.CONSULT_TRANSFER_OFF_HOOK=117]="CONSULT_TRANSFER_OFF_HOOK",t[t.INCOMING_CALL=119]="INCOMING_CALL",t[t.INCOMING_CALL_OFF_HOOK=120]="INCOMING_CALL_OFF_HOOK",t[t.INCOMING_CALL_END=121]="INCOMING_CALL_END",t[t.SATISFACTION_EVALUATION=122]="SATISFACTION_EVALUATION",t[t.CONSULT_THREE_WAY=123]="CONSULT_THREE_WAY",t[t.CONSULT_THREE_WAY_RESULT=124]="CONSULT_THREE_WAY_RESULT",t[t.TRANSFER=127]="TRANSFER",t[t.TRANSFER_FAILED=128]="TRANSFER_FAILED",t[t.TRANSFER_INCOMING_CALL=129]="TRANSFER_INCOMING_CALL",t[t.TRANSFER_OFF_HOOK=130]="TRANSFER_OFF_HOOK",t[t.AGENT_HANGUP=131]="AGENT_HANGUP",t[t.KICK_OFFLINE=132]="KICK_OFFLINE",t[t.CONTINUOUS_NOT_ANSWER=133]="CONTINUOUS_NOT_ANSWER",t[t.PREVIEW_OUT_CALL=134]="PREVIEW_OUT_CALL",t[t.SIGN_OUT=135]="SIGN_OUT",t[t.SIGN_IN_SWITCH_DEVICE=136]="SIGN_IN_SWITCH_DEVICE",t[t.LISTEN_CALL_FAILED=137]="LISTEN_CALL_FAILED",t[t.LISTEN_INCOMING_CALL=138]="LISTEN_INCOMING_CALL",t[t.LISTEN_INCOMING_CALL_OFF_HOOK=139]="LISTEN_INCOMING_CALL_OFF_HOOK",t[t.EAR_SPEECH=140]="EAR_SPEECH",t[t.STOP_EAR_SPEECH=141]="STOP_EAR_SPEECH",t[t.CALL_FORCE_INSERT=142]="CALL_FORCE_INSERT",t[t.INTERNAL_CALL_START_CONSULT=145]="INTERNAL_CALL_START_CONSULT",t[t.INTERNAL_CALL_END_CONSULT=146]="INTERNAL_CALL_END_CONSULT",t[t.CALL_SIP_INCOMING_CALL=147]="CALL_SIP_INCOMING_CALL"}(rt||(rt={})),function(t){t.WEB_RTC_CONNECTING="connecting",t.WEB_RTC_CONNECTED="connected",t.WEB_RTC_DISCONNECTING="disconnecting",t.WEB_RTC_DISCONNECTED="disconnected",t.WEB_RTC_REGISTERED="registered",t.WEB_RTC_UNREGISTERED="unregistered",t.WEB_RTC_TERMINATED="terminated",t.WEB_RTC_REGISTER_FAILED="register_failed",t.WEB_RTC_ANSWER_FAILED="answer_failed",t.WEB_RTC_SEND_DTMF="send_dtmf"}(Cr||(Cr={})),function(t){t.CUSTOMER_INFO="customer_info",t.CALL_PROGRESS="call_progress",t.OUT_INCOMING_CALL="out_call_incoming_call",t.INTERNAL_OUT_INCOMING_CALL="internal_out_incoming_call",t.PREVIEW_OUT_INCOMING_CALL="preview_out_incoming_call",t.OUT_SUCCESS="out_call_success",t.OUT_FAILED="out_call_failed",t.OUT_RINGING="out_call_ringing",t.OUT_OFF_ANSWER="out_call_answer",t.INTERNAL_OUT_OFF_ANSWER="internal_out_call_answer",t.HOLD_SUCCESS="hold_success",t.HOLD_FAILED="hold_failed",t.UNHOLD_SUCCESS="unhold_success",t.UNHOLD_FAILED="unhold_failed",t.OUT_HANGUP="out_call_hangup",t.CONSULT_RINGING="consult_ringing",t.CONSULT_OFF_HOOK="consult_off_hook",t.CONSULT_FAILED="consult_failed",t.CONSULT_INCOMING="consult_incoming",t.CONSULT_CALL_IN_SUCCESS="consult_call_in_success",t.CONSULT_RETURN_CALL_SUCCESS="consult_return_call_success",t.OTHER_SIDE_CONSULT_HANGUP="other_side_consult_hangup",t.OUR_SIDE_CONSULT_HANGUP="our_side_consult_hangup",t.AGENT_STATE="agent_state",t.MUTE_SUCCESS="mute_success",t.MUTE_FAILED="mute_failed",t.UNMUTE_SUCCESS="unmute_success",t.UNMUTE_FAILED="unmute_failed",t.CONSULT_TRANSFER_SUCCESS="consult_transfer_success",t.CONSULT_TRANSFER_FAILED="consult_transfer_failed",t.CONSULT_TRANSFER_OFF_HOOK="consult_transfer_off_hook",t.INCOMING_CALL="incoming_call",t.INCOMING_CALL_IN="incoming_call_in",t.PREDICT_INCOMING_CALL="predict_incoming_call",t.DUAL_CALL_INCOMING_CALL="dual_call_incoming_call",t.INCOMING_CALL_OFF_HOOK="incoming_call_off_hook",t.INCOMING_CALL_IN_OFF_HOOK="incoming_call_in_off_hook",t.INCOMING_CALL_END="incoming_call_end",t.SATISFACTION_EVALUATION_SUCCESS="satisfaction_evaluation_success",t.SATISFACTION_EVALUATION_FAILED="satisfaction_evaluation_failed",t.CONSULT_THREE_WAY_SUCCESS="consult_three_way_success",t.CONSULT_THREE_WAY_FAILED="consult_three_way_failed",t.THREE_WAY_OUR_SIDE_HANGUP="three_way_our_side_hangup",t.TRANSFER_FAILED="transfer_failed",t.TRANSFER_PROGRESS="transfer_progress",t.TRANSFER_INCOMING_CALL="transfer_incoming_call",t.TRANSFER_OFF_HOOK="transfer_off_hook",t.TRANSFER_END="transfer_end",t.REJECT="reject",t.LISTEN_CALL_FAILED="listen_call_failed",t.LISTEN_INCOMING_CALL="listen_incoming_call",t.LISTEN_INCOMING_CALL_OFF_HOOK="listen_incoming_call_off_hook",t.LISTEN_HANGUP="listen_hangup",t.EAR_SPEECH_SUCCESS="ear_speech_success",t.EAR_SPEECH_BE_SUCCESS="ear_speech_be_success",t.EAR_SPEECH_FAILED="ear_speech_failed",t.STOP_EAR_SPEECH_SUCCESS="stop_ear_speech_success",t.STOP_EAR_SPEECH_FAILED="stop_ear_speech_failed",t.CALL_FORCE_INSERT_SUCCESS="call_force_insert_success",t.CALL_FORCE_INSERT_SUCCESS_LISTENER="call_force_insert_success_listener",t.CALL_FORCE_INSERT_FAILED="call_force_insert_failed",t.CALL_SIP_INCOMING_CALL="call_sip_incoming_call"}(oe||(oe={})),function(t){t.EVENT_ALL="event_all",t.NOTIFICATION_CLICK="notification_click",t.UPDATE_ANSWER_DEVICE="update_answer_device",t.PHONE_BAR_OPERATION="phone_bar_operation",t.AGENT_INIT_STATUS="agent_init_status",t.WEBSITE_DELAY="website_delay",t.SELECT_EXTERNAL_NUMBER="select_external_number",t.FAIL_NOTIFICATION="fail_notification",t.KICK_OFF="kick_off",t.DESTROY="destroy",t.NETWORK_OFFLINE="network_offline",t.NETWORK_ONLINE="network_online",t.SIGN_OUT="sign_out",t.SIGN_IN_SWITCH_DEVICE="sign_in_switch_device"}(Ge||(Ge={})),function(t){t.RINGING="客户振铃",t.AGENT_RINGING="振铃中",t.CALLING="通话中",t.CONSULTING="正在咨询",t.CONSULT_CALL_IN="咨询来电",t.INCOMING_CALL="客户来电",t.MEETING="会议中",t.TRANSFERRING="转接中",t.TRANSFER_INCOMING_CALL="转接来电",t.HOLDING="保持中",t.MUTING="静音中",t.LISTENING="监听来电",t.LINKING="正在链接",t.OTHER_SIDE_CONSULTING="对方正咨询"}(Ht||(Ht={}));const AA={all:Vi=Vi||new Map,on:function(t,e){var n=Vi.get(t);n?n.push(e):Vi.set(t,[e])},off:function(t,e){var n=Vi.get(t);n&&(e?n.splice(n.indexOf(e)>>>0,1):Vi.set(t,[]))},emit:function(t,e){var n=Vi.get(t);n&&n.slice().map(function(r){r(e)}),(n=Vi.get("*"))&&n.slice().map(function(r){r(t,e)})}};var Vi;const ge={on:(t,e)=>(AA.on(t,e),ge),off(t,e){AA.off(t,e)},emit(t,e){AA.emit(t,e),AA.emit(Ge.EVENT_ALL,{event:t,data:e})},clearAllListeners(){AA.all.clear()}},_={agentInfo:{},isRtcReconnecting:!1,sessionId:"",enableBrowserAlert:!1,autoStateTimer:null,autoAnswerTimer:null,logBuiltinEnabled:!1,browserAlertTime:3e3,latency:0,monitoredAgentNo:"",earSpeakAgent:"",stateObject:{state:Rt.BUSY,state_name:"忙碌"}},pr={isCalling:!1,direction:null,outCallIsAnswer:!1,incomingIsAnswer:!1,transferIsAnswer:!1,isMeeting:!1,isHold:!1,displayText:"",isMuted:!1,consultIsAnswer:!1,actionConfigs:[],answerDevice:1,selectOutNumber:"",customerObject:void 0,isNextState:!0,isSipConnected:!1},P=new class extends I0{updateIsCalling(t){this.setState({isCalling:t})}updateDirection(t){this.setState({direction:t})}updateOutCallIsAnswer(t){this.setState({outCallIsAnswer:t})}updateIsHold(t){var n;if(((n=_.stateObject)==null?void 0:n.state)===Rt.UNREGISTERED)return;const e=this.get("actionConfigs");if(t){const r=[...e.filter(i=>i!=="hold")];r.push("unhold"),this.updateActionConfigs(r)}else{const r=[...e.filter(i=>i!=="unhold")];r.push("hold"),this.updateActionConfigs(r)}this.getState().isHold=t}updateDisplayText(t){this.setState({displayText:t}),ge.emit(oe.CALL_PROGRESS,t)}updateActionConfigs(t,e=!0){const{show_satisfaction:n}=_.agentInfo||{},r=this.get("answerDevice"),i=t.filter(o=>(n!==0||o!=="satisfaction"||!e)&&(r!==2||o!=="answer"));this.setState({actionConfigs:i}),ge.emit(Ge.PHONE_BAR_OPERATION,i)}updateConsultIsAnswer(t){this.setState({consultIsAnswer:t})}updateIsMuted(t){var n;if(((n=_.stateObject)==null?void 0:n.state)===Rt.UNREGISTERED)return;const e=this.get("actionConfigs");if(t){const r=[...e.filter(i=>i!=="mute")];r.push("unmute"),this.updateActionConfigs(r)}else{const r=[...e.filter(i=>i!=="unmute")];r.push("mute"),this.updateActionConfigs(r)}this.setState({isMuted:t})}updateIncomingIsAnswer(t){this.setState({incomingIsAnswer:t})}updateAnswerDevice(t){this.setState({answerDevice:t}),ge.emit(Ge.UPDATE_ANSWER_DEVICE,t)}updateIsMeeting(t){this.setState({isMeeting:t})}updateTransferIsAnswer(t){this.setState({transferIsAnswer:t})}updateSelectOutNumber(t){ge.emit(Ge.SELECT_EXTERNAL_NUMBER,t),this.setState({selectOutNumber:t})}updateCustomerInfo(t){const e=this.get("displayText");if(t&&e){const{contact_count:n,customer_name:r,phone:i,city:o,province:A,is_vip:a,in_contact_count:s,trace_id:l,contact_count_month:u,in_contact_count_month:d}=t;ge.emit(oe.CUSTOMER_INFO,{customer_name:r||"未知客户",phone:i,city:o||"未知",province:A||"未知",contact_count:n||0,in_contact_count:s||0,is_vip:a,trace_id:l,contact_count_month:u||0,in_contact_count_month:d||0})}else ge.emit(oe.CUSTOMER_INFO,void 0);this.setState({customerObject:t})}updateIsNextState(t){this.setState({isNextState:t}),t?ge.emit(Ge.NETWORK_ONLINE):(_.stateObject={state:Rt.OFFLINE,state_name:"离线"},this.updateActionConfigs([]),ge.emit(oe.AGENT_STATE,_.stateObject),ge.emit(Ge.NETWORK_OFFLINE))}updateIsSipConnected(t){this.setState({isSipConnected:t})}reset(){this.updateAnswerDevice(1),this.updateIsCalling(pr.isCalling),this.updateDirection(pr.direction),this.updateOutCallIsAnswer(pr.outCallIsAnswer),this.updateIsHold(pr.isHold),this.updateDisplayText(pr.displayText),this.updateActionConfigs(pr.actionConfigs),this.updateConsultIsAnswer(pr.consultIsAnswer),this.updateIsMuted(pr.isMuted),this.updateIncomingIsAnswer(pr.incomingIsAnswer),this.updateIsMeeting(pr.isMeeting),this.updateTransferIsAnswer(pr.transferIsAnswer),this.updateCustomerInfo(void 0)}getCallInfo(){return this.getState()}get(t){return this.getState()[t]}}(pr),b0=new class extends I0{updateRttObject(t){this.setState({rttObject:t}),ge.emit(Ge.WEBSITE_DELAY,t)}}({rttObject:{rtt:null,jitter:null,packetsLost:null,packetsReceived:null,packetsSent:null,sendBitrate:null,recvBitrate:null,codec:null}});let hw=class{constructor(e,n){this.config=e,this.eventCallback=n,this.userAgent=null,this.registerer=null,this.activeSession=null,this.callTimeoutTimer=null,this.incomingInvitation=null,this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectTimer=null,this.isOffline=!1,this.isManuallyStopped=!1,this.registerInterval=6e4,this.handleNetworkInfoChange=r=>{var i,o;(i=r.rttObject)!=null&&i.rtt&&((((o=r.rttObject)==null?void 0:o.rtt)||-1)===-1?this.isOffline||(this.isOffline=!0,this.handleOffline()):this.isOffline&&(this.isOffline=!1,this.handleOnline()))},this.handleOffline=()=>{console.warn("[SIPClient] 网络断开,准备销毁 SIP 客户端",new Date().toLocaleString()),ge.emit(Ge.FAIL_NOTIFICATION,"网络断开,准备销毁 SIP 客户端"),this.destroy()},this.handleOnline=()=>{console.warn("[SIPClient] 网络恢复,准备重新启动 SIP 客户端",new Date().toLocaleString()),this.reconnect()},this.sleep=r=>new Promise(i=>setTimeout(i,r)),b0.subscribe(this.handleNetworkInfoChange)}async start(){const e=Tf.makeURI(`sip:${this.config.user}@${this.config.server}`);if(!e)throw new Error("无效的SIP配置");const n={uri:e,authorizationUsername:this.config.user,authorizationPassword:this.config.password,sendInitialProvisionalResponse:!1,transportOptions:{server:this.config.webSocket,connectionTimeout:10,keepAliveInterval:20,keepAliveDebounce:10},contactName:this.config.user,contactParams:{transport:"wss"},userAgentString:"SwiftSIP/2.0.21",sessionDescriptionHandlerFactoryOptions:{alwaysAcquireMediaFirst:!0,peerConnectionConfiguration:{iceServers:[{urls:"stun:stun.l.google.com:19302"}],iceCandidatePoolSize:0,iceTransportPolicy:"all",rtcpMuxPolicy:"require",bundlePolicy:"balanced",certificates:void 0,peerIdentity:void 0},iceGatheringTimeout:1e3},logBuiltinEnabled:_.logBuiltinEnabled};this.userAgent=new Tf(n),this.setupEventListeners(),await this.userAgent.start(),await this.register()}setupEventListeners(){this.userAgent&&(this.userAgent.transport.stateChange.addListener(e=>{var r;let n;switch(e){case dt.Connecting:n=Cr.WEB_RTC_CONNECTING;break;case dt.Connected:n=Cr.WEB_RTC_CONNECTED,this.reconnectAttempts=0,_.isRtcReconnecting=!1,P.updateIsSipConnected(!0),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null);break;case dt.Disconnecting:n=Cr.WEB_RTC_DISCONNECTING,P.updateIsSipConnected(!1);break;case dt.Disconnected:{if(P.updateIsSipConnected(!1),this.isManuallyStopped)return void console.warn("[SIP] 手动断开,不触发重连");ge.emit(Ge.FAIL_NOTIFICATION,"软电话链接失败"),n=Cr.WEB_RTC_DISCONNECTED;const i=P.get("answerDevice");if(!_.isRtcReconnecting&&this.reconnectAttempts<this.maxReconnectAttempts&&i===1){this.reconnectAttempts++;const o=1e3*this.reconnectAttempts;console.warn(`SIP WebSocket 断开,第 ${this.reconnectAttempts} 次尝试重连,${o}ms 后重试...`),this.reconnectTimer=setTimeout(()=>{this.reconnect()},o)}else this.reconnectAttempts>=this.maxReconnectAttempts&&(console.error("SIP 重连失败:已达到最大重试次数"),ge.emit(Ge.FAIL_NOTIFICATION,"SIP 重连失败:已达到最大重试次数"));break}default:P.updateIsSipConnected(!1),n="unknown"}(r=this.eventCallback)==null||r.call(this,{type:n})}),this.userAgent.delegate={onInvite:e=>{this.handleIncomingCall(e)}})}async refreshRegister(){if(this.registerer)try{await this.registerer.register(),new Date().toLocaleTimeString()}catch(e){console.error("[SIPClient] REGISTER刷新失败",e)}}async register(){var e,n;if(this.userAgent){this.registerer=new _c(this.userAgent,{expires:120,refreshFrequency:80}),(e=this.registerer)==null||e.stateChange.addListener(r=>{var o;let i;switch(r){case kt.Initial:P.updateDisplayText(Ht.LINKING),i="initial";break;case kt.Registered:P.updateDisplayText(""),i=Cr.WEB_RTC_REGISTERED;break;case kt.Unregistered:i=Cr.WEB_RTC_UNREGISTERED;break;case kt.Terminated:i=Cr.WEB_RTC_TERMINATED;break;default:i="unknown"}(o=this.eventCallback)==null||o.call(this,{type:i})});try{await this.registerer.register()}catch(r){(n=this.eventCallback)==null||n.call(this,{type:Cr.WEB_RTC_REGISTER_FAILED,data:r})}}}attachRemoteAudio(e){const n=e.sessionDescriptionHandler;if(n){const r=n.peerConnection;if(!r)return;const i=new MediaStream;r.getReceivers().forEach(A=>{A.track&&A.track.kind==="audio"&&i.addTrack(A.track)});let o=document.getElementById("sip-remote-audio");o||(o=document.createElement("audio"),o.id="sip-remote-audio",o.autoplay=!0,o.style.display="none",document.body.appendChild(o)),o.srcObject=i,o.play().catch(A=>{console.error("音频播放失败,需要用户交互触发",A)})}}handleSessionState(e,n,r){e.stateChange.addListener(i=>{switch(i){case he.Established:clearTimeout(this.callTimeoutTimer),this.activeSession=e,this.attachRemoteAudio(e);break;case he.Terminating:break;case he.Terminated:this.activeSession=null,clearTimeout(this.callTimeoutTimer);case he.Establishing:}})}handleIncomingCall(e){this.incomingInvitation=e,this.handleSessionState(e,!1),e.progress({statusCode:180,reasonPhrase:"Ringing"}).catch(n=>console.error("发送 180 失败",n)),P.get("direction")===wn.OUTGOING&&this.answerCall()}async answerCall(){var e;if(!this.incomingInvitation)throw new Error("无来电可接听");_.autoAnswerTimer&&(clearTimeout(_.autoAnswerTimer),_.autoAnswerTimer=null);try{await this.incomingInvitation.accept(),this.activeSession=this.incomingInvitation,this.incomingInvitation=null}catch(n){(e=this.eventCallback)==null||e.call(this,{type:Cr.WEB_RTC_ANSWER_FAILED,data:{detail:n}})}}async rejectInCall(){var e;if(this.incomingInvitation)try{await this.incomingInvitation.reject(),this.incomingInvitation=null,P.updateDirection(null),P.updateIsCalling(!1),clearTimeout(this.callTimeoutTimer)}catch(n){(e=this.eventCallback)==null||e.call(this,{type:"error",data:{message:"拒接失败",detail:n}})}}sendDTMF(e){var r;if(!this.activeSession)throw new Error("当前没有活跃的通话");const n=this.activeSession.sessionDescriptionHandler;n&&typeof n.sendDtmf=="function"?(n.sendDtmf(e),(r=this.eventCallback)==null||r.call(this,{type:Cr.WEB_RTC_SEND_DTMF,data:{tone:e}})):console.warn("DTMF发送不支持或未初始化")}async hangup(){if(this.activeSession,this.activeSession){clearTimeout(this.callTimeoutTimer);const e=this.activeSession;if(!e)return;const n=e.state;try{n===he.Established?await e.bye():n===he.Establishing&&(e instanceof h0?await e.cancel():e instanceof Xc&&await e.reject()),clearTimeout(this.callTimeoutTimer)}catch(r){console.error("挂断失败",r)}finally{this.activeSession=null}}}async rejectOutCall(){this.activeSession instanceof Xc&&(await this.activeSession.reject(),this.activeSession=null)}async destroy(){if(this.isManuallyStopped=!0,clearTimeout(this.callTimeoutTimer),this.activeSession&&await this.hangup(),this.registerer){try{await this.registerer.unregister()}catch(e){console.warn("注销失败",e)}this.registerer=null}this.userAgent&&(await this.userAgent.stop(),this.userAgent=null)}async reconnect(){if(!_.isRtcReconnecting){_.isRtcReconnecting=!0;try{await this.destroy(),this.isManuallyStopped=!1,await this.start(),this.isOffline=!1,this.reconnectAttempts=0}catch(e){console.error("重连失败",e),_.isRtcReconnecting=!1}finally{_.isRtcReconnecting=!1}}}async getNetworkStats(){var e;if(this.activeSession){const n=(e=this.activeSession.sessionDescriptionHandler)==null?void 0:e.peerConnection;if(!n)return null;const r=await n.getStats(),i={};return r.forEach(o=>{o.type==="candidate-pair"&&o.state==="succeeded"&&o.currentRoundTripTime!=null&&(i.rtt=+(1e3*o.currentRoundTripTime).toFixed(2)),o.type==="inbound-rtp"&&o.kind==="audio"&&(i.jitter=+(1e3*o.jitter).toFixed(2),i.packetsLost=o.packetsLost,i.packetsReceived=o.packetsReceived,o.bytesReceived&&o.timestamp&&(i.recvBitrate=+(o.bytesReceived/1024).toFixed(2))),o.type==="outbound-rtp"&&o.kind==="audio"&&(i.packetsSent=o.packetsSent,o.bytesSent&&o.timestamp&&(i.sendBitrate=+(o.bytesSent/1024).toFixed(2))),o.type==="codec"&&o.mimeType&&(i.codec=o.mimeType)}),{...i,rtt:(i==null?void 0:i.rtt)||40}}return{rtt:_.latency||1}}};class Bf extends Error{constructor(n,r,i){const o=`${n.status||n.status===0?n.status:""} ${n.statusText||""}`.trim();super(`Request failed with ${o?`status code ${o}`:"an unknown error"}: ${r.method} ${r.url}`);Pr(this,"response");Pr(this,"request");Pr(this,"options");this.name="HTTPError",this.response=n,this.request=r,this.options=i}}let Of=class extends Error{constructor(n){super(`Request timed out: ${n.method} ${n.url}`);Pr(this,"request");this.name="TimeoutError",this.request=n}};const Df=(()=>{let t=!1,e=!1;const n=typeof globalThis.ReadableStream=="function",r=typeof globalThis.Request=="function";if(n&&r)try{e=new globalThis.Request("https://empty.invalid",{body:new globalThis.ReadableStream,method:"POST",get duplex(){return t=!0,"half"}}).headers.has("Content-Type")}catch(i){if(i instanceof Error&&i.message==="unsupported BodyInit type")return!1;throw i}return t&&!e})(),pw=typeof globalThis.AbortController=="function",mw=typeof globalThis.AbortSignal=="function"&&typeof globalThis.AbortSignal.any=="function",Vw=typeof globalThis.ReadableStream=="function",vw=typeof globalThis.FormData=="function",M0=["get","post","put","patch","head","delete"],Cw={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*"},Nf=2147483647,qw=new TextEncoder().encode("------WebKitFormBoundaryaxpyiPgbbPti10Rw").length,R0=Symbol("stop"),Ew={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,onUploadProgress:!0,fetch:!0},yw={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,dispatcher:!0,duplex:!0,priority:!0},ww=(t,e)=>{const n=(i=>{if(!i)return 0;if(i instanceof FormData){let o=0;for(const[A,a]of i)o+=qw,o+=new TextEncoder().encode(`Content-Disposition: form-data; name="${A}"`).length,o+=typeof a=="string"?new TextEncoder().encode(a).length:a.size;return o}if(i instanceof Blob)return i.size;if(i instanceof ArrayBuffer)return i.byteLength;if(typeof i=="string")return new TextEncoder().encode(i).length;if(i instanceof URLSearchParams)return new TextEncoder().encode(i.toString()).length;if("byteLength"in i)return i.byteLength;if(typeof i=="object"&&i!==null)try{const o=JSON.stringify(i);return new TextEncoder().encode(o).length}catch{return 0}return 0})(t.body);let r=0;return new Request(t,{duplex:"half",body:new ReadableStream({async start(i){const o=t.body instanceof ReadableStream?t.body.getReader():new Response("").body.getReader();await async function A(){const{done:a,value:s}=await o.read();if(a)return e&&e({percent:1,transferredBytes:r,totalBytes:Math.max(n,r)},new Uint8Array),void i.close();r+=s.byteLength;let l=n===0?0:r/n;(n<r||l===1)&&(l=.99),e&&e({percent:Number(l.toFixed(2)),transferredBytes:r,totalBytes:n},s),i.enqueue(s),await A()}()}})})},dA=t=>t!==null&&typeof t=="object",Ea=(...t)=>{for(const e of t)if((!dA(e)||Array.isArray(e))&&e!==void 0)throw new TypeError("The `options` argument must be an object");return jd({},...t)},x0=(t={},e={})=>{const n=new globalThis.Headers(t),r=e instanceof globalThis.Headers,i=new globalThis.Headers(e);for(const[o,A]of i.entries())r&&A==="undefined"||A===void 0?n.delete(o):n.set(o,A);return n};function ya(t,e,n){return Object.hasOwn(e,n)&&e[n]===void 0?[]:jd(t[n]??[],e[n]??[])}const T0=(t={},e={})=>({beforeRequest:ya(t,e,"beforeRequest"),beforeRetry:ya(t,e,"beforeRetry"),afterResponse:ya(t,e,"afterResponse"),beforeError:ya(t,e,"beforeError")}),jd=(...t)=>{let e={},n={},r={};for(const i of t)if(Array.isArray(i))Array.isArray(e)||(e=[]),e=[...e,...i];else if(dA(i)){for(let[o,A]of Object.entries(i))dA(A)&&o in e&&(A=jd(e[o],A)),e={...e,[o]:A};dA(i.hooks)&&(r=T0(r,i.hooks),e.hooks=r),dA(i.headers)&&(n=x0(n,i.headers),e.headers=n)}return e},Sw=t=>M0.includes(t)?t.toUpperCase():t,Ff={limit:2,methods:["get","put","head","delete","options","trace"],statusCodes:[408,413,429,500,502,503,504],afterStatusCodes:[413,429,503],maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY,delay:t=>.3*2**(t-1)*1e3},Iw=(t={})=>{if(typeof t=="number")return{...Ff,limit:t};if(t.methods&&!Array.isArray(t.methods))throw new Error("retry.methods must be an array");if(t.statusCodes&&!Array.isArray(t.statusCodes))throw new Error("retry.statusCodes must be an array");return{...Ff,...t}};class us{constructor(e,n={}){Pr(this,"request");Pr(this,"abortController");Pr(this,"_retryCount",0);Pr(this,"_input");Pr(this,"_options");var r,i;if(this._input=e,this._options={...n,headers:x0(this._input.headers,n.headers),hooks:T0({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},n.hooks),method:Sw(n.method??this._input.method??"GET"),prefixUrl:String(n.prefixUrl||""),retry:Iw(n.retry),throwHttpErrors:n.throwHttpErrors!==!1,timeout:n.timeout??1e4,fetch:n.fetch??globalThis.fetch.bind(globalThis)},typeof this._input!="string"&&!(this._input instanceof URL||this._input instanceof globalThis.Request))throw new TypeError("`input` must be a string, URL, or Request");if(this._options.prefixUrl&&typeof this._input=="string"){if(this._input.startsWith("/"))throw new Error("`input` must not begin with a slash when using `prefixUrl`");this._options.prefixUrl.endsWith("/")||(this._options.prefixUrl+="/"),this._input=this._options.prefixUrl+this._input}if(pw&&mw){const o=this._options.signal??this._input.signal;this.abortController=new globalThis.AbortController,this._options.signal=o?AbortSignal.any([o,this.abortController.signal]):this.abortController.signal}if(Df&&(this._options.duplex="half"),this._options.json!==void 0&&(this._options.body=((i=(r=this._options).stringifyJson)==null?void 0:i.call(r,this._options.json))??JSON.stringify(this._options.json),this._options.headers.set("content-type",this._options.headers.get("content-type")??"application/json")),this.request=new globalThis.Request(this._input,this._options),this._options.searchParams){const o="?"+(typeof this._options.searchParams=="string"?this._options.searchParams.replace(/^\?/,""):new URLSearchParams(this._options.searchParams).toString()),A=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,o);!(vw&&this._options.body instanceof globalThis.FormData||this._options.body instanceof URLSearchParams)||this._options.headers&&this._options.headers["content-type"]||this.request.headers.delete("content-type"),this.request=new globalThis.Request(new globalThis.Request(A,{...this.request}),this._options)}if(this._options.onUploadProgress){if(typeof this._options.onUploadProgress!="function")throw new TypeError("The `onUploadProgress` option must be a function");if(!Df)throw new Error("Request streams are not supported in your environment. The `duplex` option for `Request` is not available.");this.request.body&&(this.request=ww(this.request,this._options.onUploadProgress))}}static create(e,n){const r=new us(e,n),i=async()=>{if(typeof r._options.timeout=="number"&&r._options.timeout>Nf)throw new RangeError("The `timeout` option cannot be greater than 2147483647");await Promise.resolve();let A=await r._fetch();for(const a of r._options.hooks.afterResponse){const s=await a(r.request,r._options,r._decorateResponse(A.clone()));s instanceof globalThis.Response&&(A=s)}if(r._decorateResponse(A),!A.ok&&r._options.throwHttpErrors){let a=new Bf(A,r.request,r._options);for(const s of r._options.hooks.beforeError)a=await s(a);throw a}if(r._options.onDownloadProgress){if(typeof r._options.onDownloadProgress!="function")throw new TypeError("The `onDownloadProgress` option must be a function");if(!Vw)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");return((a,s)=>{const l=Number(a.headers.get("content-length"))||0;let u=0;return a.status===204?(s&&s({percent:1,totalBytes:l,transferredBytes:u},new Uint8Array),new Response(null,{status:a.status,statusText:a.statusText,headers:a.headers})):new Response(new ReadableStream({async start(d){const g=a.body.getReader();s&&s({percent:0,transferredBytes:0,totalBytes:l},new Uint8Array),await async function p(){const{done:V,value:v}=await g.read();V?d.close():(s&&(u+=v.byteLength,s({percent:l===0?0:u/l,transferredBytes:u,totalBytes:l},v)),d.enqueue(v),await p())}()}}),{status:a.status,statusText:a.statusText,headers:a.headers})})(A.clone(),r._options.onDownloadProgress)}return A},o=(r._options.retry.methods.includes(r.request.method.toLowerCase())?r._retry(i):i()).finally(async()=>{var A;r.request.bodyUsed||await((A=r.request.body)==null?void 0:A.cancel())});for(const[A,a]of Object.entries(Cw))o[A]=async()=>{r.request.headers.set("accept",r.request.headers.get("accept")||a);const s=await o;if(A==="json"){if(s.status===204||(await s.clone().arrayBuffer()).byteLength===0)return"";if(n.parseJson)return n.parseJson(await s.text())}return s[A]()};return o}_calculateRetryDelay(e){if(this._retryCount++,this._retryCount>this._options.retry.limit||e instanceof Of)throw e;if(e instanceof Bf){if(!this._options.retry.statusCodes.includes(e.response.status))throw e;const r=e.response.headers.get("Retry-After")??e.response.headers.get("RateLimit-Reset")??e.response.headers.get("X-RateLimit-Reset")??e.response.headers.get("X-Rate-Limit-Reset");if(r&&this._options.retry.afterStatusCodes.includes(e.response.status)){let i=1e3*Number(r);Number.isNaN(i)?i=Date.parse(r)-Date.now():i>=Date.parse("2024-01-01")&&(i-=Date.now());const o=this._options.retry.maxRetryAfter??i;return i<o?i:o}if(e.response.status===413)throw e}const n=this._options.retry.delay(this._retryCount);return Math.min(this._options.retry.backoffLimit,n)}_decorateResponse(e){return this._options.parseJson&&(e.json=async()=>this._options.parseJson(await e.text())),e}async _retry(e){try{return await e()}catch(n){const r=Math.min(this._calculateRetryDelay(n),Nf);if(this._retryCount<1)throw n;await async function(i,{signal:o}){return new Promise((A,a)=>{function s(){clearTimeout(l),a(o.reason)}o&&(o.throwIfAborted(),o.addEventListener("abort",s,{once:!0}));const l=setTimeout(()=>{o==null||o.removeEventListener("abort",s),A()},i)})}(r,{signal:this._options.signal});for(const i of this._options.hooks.beforeRetry)if(await i({request:this.request,options:this._options,error:n,retryCount:this._retryCount})===R0)return;return this._retry(e)}}async _fetch(){for(const r of this._options.hooks.beforeRequest){const i=await r(this.request,this._options);if(i instanceof Request){this.request=i;break}if(i instanceof Response)return i}const e=((r,i)=>{const o={};for(const A in i)A in yw||A in Ew||A in r||(o[A]=i[A]);return o})(this.request,this._options),n=this.request;return this.request=n.clone(),this._options.timeout===!1?this._options.fetch(n,e):async function(r,i,o,A){return new Promise((a,s)=>{const l=setTimeout(()=>{o&&o.abort(),s(new Of(r))},A.timeout);A.fetch(r,i).then(a).catch(s).then(()=>{clearTimeout(l)})})}(n,e,this.abortController,this._options)}}/*! MIT License © Sindre Sorhus */const eu=t=>{const e=(n,r)=>us.create(n,Ea(t,r));for(const n of M0)e[n]=(r,i)=>us.create(r,Ea(t,i,{method:n}));return e.create=n=>eu(Ea(n)),e.extend=n=>(typeof n=="function"&&(n=n(t??{})),eu(Ea(t,n))),e.stop=R0,e};var Yl,bw=eu(),Mw=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},B0={exports:{}};/**
156
156
  * [js-md5]{@link https://github.com/emn178/js-md5}
157
157
  *
158
158
  * @namespace md5
@@ -160,7 +160,7 @@ React keys must be passed directly to JSX without using spread:
160
160
  * @author Chen, Yi-Cyuan [emn178@gmail.com]
161
161
  * @copyright Chen, Yi-Cyuan 2014-2023
162
162
  * @license MIT
163
- */Yl=B0,function(){var t="input is invalid type",e=typeof window=="object",n=e?window:{};n.JS_MD5_NO_WINDOW&&(e=!1);var r=!e&&typeof self=="object",i=!n.JS_MD5_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;i?n=Mw:r&&(n=self);var o,A=!n.JS_MD5_NO_COMMON_JS&&Yl.exports,a=!n.JS_MD5_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",s="0123456789abcdef".split(""),l=[128,32768,8388608,-2147483648],u=[0,8,16,24],d=["hex","array","digest","buffer","arrayBuffer","base64"],g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),p=[];if(a){var V=new ArrayBuffer(68);o=new Uint8Array(V),p=new Uint32Array(V)}var v=Array.isArray;!n.JS_MD5_NO_NODE_JS&&v||(v=function(q){return Object.prototype.toString.call(q)==="[object Array]"});var m=ArrayBuffer.isView;!a||!n.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW&&m||(m=function(q){return typeof q=="object"&&q.buffer&&q.buffer.constructor===ArrayBuffer});var C=function(q){var E=typeof q;if(E==="string")return[q,!0];if(E!=="object"||q===null)throw new Error(t);if(a&&q.constructor===ArrayBuffer)return[new Uint8Array(q),!1];if(!v(q)&&!m(q))throw new Error(t);return[q,!1]},w=function(q){return function(E){return new I(!0).update(E)[q]()}},S=function(q){var E,h=Sf,y=Sf.Buffer;return E=y.from&&!n.JS_MD5_NO_BUFFER_FROM?y.from:function(x){return new y(x)},function(x){if(typeof x=="string")return h.createHash("md5").update(x,"utf8").digest("hex");if(x==null)throw new Error(t);return x.constructor===ArrayBuffer&&(x=new Uint8Array(x)),v(x)||m(x)||x.constructor===y?h.createHash("md5").update(E(x)).digest("hex"):q(x)}},M=function(q){return function(E,h){return new f(E,!0).update(h)[q]()}};function I(q){if(q)p[0]=p[16]=p[1]=p[2]=p[3]=p[4]=p[5]=p[6]=p[7]=p[8]=p[9]=p[10]=p[11]=p[12]=p[13]=p[14]=p[15]=0,this.blocks=p,this.buffer8=o;else if(a){var E=new ArrayBuffer(68);this.buffer8=new Uint8Array(E),this.blocks=new Uint32Array(E)}else this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.h0=this.h1=this.h2=this.h3=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0}function f(q,E){var h,y=C(q);if(q=y[0],y[1]){var x,b=[],B=q.length,O=0;for(h=0;h<B;++h)(x=q.charCodeAt(h))<128?b[O++]=x:x<2048?(b[O++]=192|x>>>6,b[O++]=128|63&x):x<55296||x>=57344?(b[O++]=224|x>>>12,b[O++]=128|x>>>6&63,b[O++]=128|63&x):(x=65536+((1023&x)<<10|1023&q.charCodeAt(++h)),b[O++]=240|x>>>18,b[O++]=128|x>>>12&63,b[O++]=128|x>>>6&63,b[O++]=128|63&x);q=b}q.length>64&&(q=new I(!0).update(q).array());var N=[],F=[];for(h=0;h<64;++h){var j=q[h]||0;N[h]=92^j,F[h]=54^j}I.call(this,E),this.update(F),this.oKeyPad=N,this.inner=!0,this.sharedMemory=E}I.prototype.update=function(q){if(this.finalized)throw new Error("finalize already called");var E=C(q);q=E[0];for(var h,y,x=E[1],b=0,B=q.length,O=this.blocks,N=this.buffer8;b<B;){if(this.hashed&&(this.hashed=!1,O[0]=O[16],O[16]=O[1]=O[2]=O[3]=O[4]=O[5]=O[6]=O[7]=O[8]=O[9]=O[10]=O[11]=O[12]=O[13]=O[14]=O[15]=0),x)if(a)for(y=this.start;b<B&&y<64;++b)(h=q.charCodeAt(b))<128?N[y++]=h:h<2048?(N[y++]=192|h>>>6,N[y++]=128|63&h):h<55296||h>=57344?(N[y++]=224|h>>>12,N[y++]=128|h>>>6&63,N[y++]=128|63&h):(h=65536+((1023&h)<<10|1023&q.charCodeAt(++b)),N[y++]=240|h>>>18,N[y++]=128|h>>>12&63,N[y++]=128|h>>>6&63,N[y++]=128|63&h);else for(y=this.start;b<B&&y<64;++b)(h=q.charCodeAt(b))<128?O[y>>>2]|=h<<u[3&y++]:h<2048?(O[y>>>2]|=(192|h>>>6)<<u[3&y++],O[y>>>2]|=(128|63&h)<<u[3&y++]):h<55296||h>=57344?(O[y>>>2]|=(224|h>>>12)<<u[3&y++],O[y>>>2]|=(128|h>>>6&63)<<u[3&y++],O[y>>>2]|=(128|63&h)<<u[3&y++]):(h=65536+((1023&h)<<10|1023&q.charCodeAt(++b)),O[y>>>2]|=(240|h>>>18)<<u[3&y++],O[y>>>2]|=(128|h>>>12&63)<<u[3&y++],O[y>>>2]|=(128|h>>>6&63)<<u[3&y++],O[y>>>2]|=(128|63&h)<<u[3&y++]);else if(a)for(y=this.start;b<B&&y<64;++b)N[y++]=q[b];else for(y=this.start;b<B&&y<64;++b)O[y>>>2]|=q[b]<<u[3&y++];this.lastByteIndex=y,this.bytes+=y-this.start,y>=64?(this.start=y-64,this.hash(),this.hashed=!0):this.start=y}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296|0,this.bytes=this.bytes%4294967296),this},I.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var q=this.blocks,E=this.lastByteIndex;q[E>>>2]|=l[3&E],E>=56&&(this.hashed||this.hash(),q[0]=q[16],q[16]=q[1]=q[2]=q[3]=q[4]=q[5]=q[6]=q[7]=q[8]=q[9]=q[10]=q[11]=q[12]=q[13]=q[14]=q[15]=0),q[14]=this.bytes<<3,q[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},I.prototype.hash=function(){var q,E,h,y,x,b,B=this.blocks;this.first?E=((E=((q=((q=B[0]-680876937)<<7|q>>>25)-271733879|0)^(h=((h=(-271733879^(y=((y=(-1732584194^2004318071&q)+B[1]-117830708)<<12|y>>>20)+q|0)&(-271733879^q))+B[2]-1126478375)<<17|h>>>15)+y|0)&(y^q))+B[3]-1316259209)<<22|E>>>10)+h|0:(q=this.h0,E=this.h1,h=this.h2,E=((E+=((q=((q+=((y=this.h3)^E&(h^y))+B[0]-680876936)<<7|q>>>25)+E|0)^(h=((h+=(E^(y=((y+=(h^q&(E^h))+B[1]-389564586)<<12|y>>>20)+q|0)&(q^E))+B[2]+606105819)<<17|h>>>15)+y|0)&(y^q))+B[3]-1044525330)<<22|E>>>10)+h|0),E=((E+=((q=((q+=(y^E&(h^y))+B[4]-176418897)<<7|q>>>25)+E|0)^(h=((h+=(E^(y=((y+=(h^q&(E^h))+B[5]+1200080426)<<12|y>>>20)+q|0)&(q^E))+B[6]-1473231341)<<17|h>>>15)+y|0)&(y^q))+B[7]-45705983)<<22|E>>>10)+h|0,E=((E+=((q=((q+=(y^E&(h^y))+B[8]+1770035416)<<7|q>>>25)+E|0)^(h=((h+=(E^(y=((y+=(h^q&(E^h))+B[9]-1958414417)<<12|y>>>20)+q|0)&(q^E))+B[10]-42063)<<17|h>>>15)+y|0)&(y^q))+B[11]-1990404162)<<22|E>>>10)+h|0,E=((E+=((q=((q+=(y^E&(h^y))+B[12]+1804603682)<<7|q>>>25)+E|0)^(h=((h+=(E^(y=((y+=(h^q&(E^h))+B[13]-40341101)<<12|y>>>20)+q|0)&(q^E))+B[14]-1502002290)<<17|h>>>15)+y|0)&(y^q))+B[15]+1236535329)<<22|E>>>10)+h|0,E=((E+=((y=((y+=(E^h&((q=((q+=(h^y&(E^h))+B[1]-165796510)<<5|q>>>27)+E|0)^E))+B[6]-1069501632)<<9|y>>>23)+q|0)^q&((h=((h+=(q^E&(y^q))+B[11]+643717713)<<14|h>>>18)+y|0)^y))+B[0]-373897302)<<20|E>>>12)+h|0,E=((E+=((y=((y+=(E^h&((q=((q+=(h^y&(E^h))+B[5]-701558691)<<5|q>>>27)+E|0)^E))+B[10]+38016083)<<9|y>>>23)+q|0)^q&((h=((h+=(q^E&(y^q))+B[15]-660478335)<<14|h>>>18)+y|0)^y))+B[4]-405537848)<<20|E>>>12)+h|0,E=((E+=((y=((y+=(E^h&((q=((q+=(h^y&(E^h))+B[9]+568446438)<<5|q>>>27)+E|0)^E))+B[14]-1019803690)<<9|y>>>23)+q|0)^q&((h=((h+=(q^E&(y^q))+B[3]-187363961)<<14|h>>>18)+y|0)^y))+B[8]+1163531501)<<20|E>>>12)+h|0,E=((E+=((y=((y+=(E^h&((q=((q+=(h^y&(E^h))+B[13]-1444681467)<<5|q>>>27)+E|0)^E))+B[2]-51403784)<<9|y>>>23)+q|0)^q&((h=((h+=(q^E&(y^q))+B[7]+1735328473)<<14|h>>>18)+y|0)^y))+B[12]-1926607734)<<20|E>>>12)+h|0,E=((E+=((b=(y=((y+=((x=E^h)^(q=((q+=(x^y)+B[5]-378558)<<4|q>>>28)+E|0))+B[8]-2022574463)<<11|y>>>21)+q|0)^q)^(h=((h+=(b^E)+B[11]+1839030562)<<16|h>>>16)+y|0))+B[14]-35309556)<<23|E>>>9)+h|0,E=((E+=((b=(y=((y+=((x=E^h)^(q=((q+=(x^y)+B[1]-1530992060)<<4|q>>>28)+E|0))+B[4]+1272893353)<<11|y>>>21)+q|0)^q)^(h=((h+=(b^E)+B[7]-155497632)<<16|h>>>16)+y|0))+B[10]-1094730640)<<23|E>>>9)+h|0,E=((E+=((b=(y=((y+=((x=E^h)^(q=((q+=(x^y)+B[13]+681279174)<<4|q>>>28)+E|0))+B[0]-358537222)<<11|y>>>21)+q|0)^q)^(h=((h+=(b^E)+B[3]-722521979)<<16|h>>>16)+y|0))+B[6]+76029189)<<23|E>>>9)+h|0,E=((E+=((b=(y=((y+=((x=E^h)^(q=((q+=(x^y)+B[9]-640364487)<<4|q>>>28)+E|0))+B[12]-421815835)<<11|y>>>21)+q|0)^q)^(h=((h+=(b^E)+B[15]+530742520)<<16|h>>>16)+y|0))+B[2]-995338651)<<23|E>>>9)+h|0,E=((E+=((y=((y+=(E^((q=((q+=(h^(E|~y))+B[0]-198630844)<<6|q>>>26)+E|0)|~h))+B[7]+1126891415)<<10|y>>>22)+q|0)^((h=((h+=(q^(y|~E))+B[14]-1416354905)<<15|h>>>17)+y|0)|~q))+B[5]-57434055)<<21|E>>>11)+h|0,E=((E+=((y=((y+=(E^((q=((q+=(h^(E|~y))+B[12]+1700485571)<<6|q>>>26)+E|0)|~h))+B[3]-1894986606)<<10|y>>>22)+q|0)^((h=((h+=(q^(y|~E))+B[10]-1051523)<<15|h>>>17)+y|0)|~q))+B[1]-2054922799)<<21|E>>>11)+h|0,E=((E+=((y=((y+=(E^((q=((q+=(h^(E|~y))+B[8]+1873313359)<<6|q>>>26)+E|0)|~h))+B[15]-30611744)<<10|y>>>22)+q|0)^((h=((h+=(q^(y|~E))+B[6]-1560198380)<<15|h>>>17)+y|0)|~q))+B[13]+1309151649)<<21|E>>>11)+h|0,E=((E+=((y=((y+=(E^((q=((q+=(h^(E|~y))+B[4]-145523070)<<6|q>>>26)+E|0)|~h))+B[11]-1120210379)<<10|y>>>22)+q|0)^((h=((h+=(q^(y|~E))+B[2]+718787259)<<15|h>>>17)+y|0)|~q))+B[9]-343485551)<<21|E>>>11)+h|0,this.first?(this.h0=q+1732584193|0,this.h1=E-271733879|0,this.h2=h-1732584194|0,this.h3=y+271733878|0,this.first=!1):(this.h0=this.h0+q|0,this.h1=this.h1+E|0,this.h2=this.h2+h|0,this.h3=this.h3+y|0)},I.prototype.hex=function(){this.finalize();var q=this.h0,E=this.h1,h=this.h2,y=this.h3;return s[q>>>4&15]+s[15&q]+s[q>>>12&15]+s[q>>>8&15]+s[q>>>20&15]+s[q>>>16&15]+s[q>>>28&15]+s[q>>>24&15]+s[E>>>4&15]+s[15&E]+s[E>>>12&15]+s[E>>>8&15]+s[E>>>20&15]+s[E>>>16&15]+s[E>>>28&15]+s[E>>>24&15]+s[h>>>4&15]+s[15&h]+s[h>>>12&15]+s[h>>>8&15]+s[h>>>20&15]+s[h>>>16&15]+s[h>>>28&15]+s[h>>>24&15]+s[y>>>4&15]+s[15&y]+s[y>>>12&15]+s[y>>>8&15]+s[y>>>20&15]+s[y>>>16&15]+s[y>>>28&15]+s[y>>>24&15]},I.prototype.toString=I.prototype.hex,I.prototype.digest=function(){this.finalize();var q=this.h0,E=this.h1,h=this.h2,y=this.h3;return[255&q,q>>>8&255,q>>>16&255,q>>>24&255,255&E,E>>>8&255,E>>>16&255,E>>>24&255,255&h,h>>>8&255,h>>>16&255,h>>>24&255,255&y,y>>>8&255,y>>>16&255,y>>>24&255]},I.prototype.array=I.prototype.digest,I.prototype.arrayBuffer=function(){this.finalize();var q=new ArrayBuffer(16),E=new Uint32Array(q);return E[0]=this.h0,E[1]=this.h1,E[2]=this.h2,E[3]=this.h3,q},I.prototype.buffer=I.prototype.arrayBuffer,I.prototype.base64=function(){for(var q,E,h,y="",x=this.array(),b=0;b<15;)q=x[b++],E=x[b++],h=x[b++],y+=g[q>>>2]+g[63&(q<<4|E>>>4)]+g[63&(E<<2|h>>>6)]+g[63&h];return q=x[b],y+=g[q>>>2]+g[q<<4&63]+"=="},f.prototype=new I,f.prototype.finalize=function(){if(I.prototype.finalize.call(this),this.inner){this.inner=!1;var q=this.array();I.call(this,this.sharedMemory),this.update(this.oKeyPad),this.update(q),I.prototype.finalize.call(this)}};var R=function(){var q=w("hex");i&&(q=S(q)),q.create=function(){return new I},q.update=function(y){return q.create().update(y)};for(var E=0;E<d.length;++E){var h=d[E];q[h]=w(h)}return q}();R.md5=R,R.md5.hmac=function(){var q=M("hex");q.create=function(y){return new f(y)},q.update=function(y,x){return q.create(y).update(x)};for(var E=0;E<d.length;++E){var h=d[E];q[h]=M(h)}return q}(),A?Yl.exports=R:n.md5=R}();var Rw=B0.exports;const O0=(t,e)=>{const n=Date.now(),r=`${t}:${n}:${Rw.md5(`${e}${n}`)}`,i=new TextEncoder().encode(r);return btoa(String.fromCharCode(...i))},tu=t=>{if(/^\d+$/.test(t)||!t||typeof t!="string"||t.length%4!=0||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(t))return!1;try{const e=atob(t);return btoa(e)===t}catch{return!1}},wa="/v1/aicc/bmserver",br="/v1/aicc/ccs";let Eo="",Pd="",Ld="",Sa="";function D0(){const t=O0(Pd,Ld);return bw.create({prefixUrl:`${Eo}`,timeout:!1,headers:{Authorization:t},hooks:{afterResponse:[async(e,n,r)=>{if(r.url.indexOf("heartbeat")!==-1)return r;const i=await r.clone().json();if(i.code!==0)throw new Error(JSON.stringify(i)||"请求失败");return r.json=async()=>i,r}]}})}async function Pn(t,e){const n=D0(),r="api/"+t.replace(/^\/+/,"");return n.post(r,{json:e}).json()}class Io{static requestPermission(){"Notification"in window&&Notification.permission==="default"&&Notification.requestPermission()}static async requestMediaPermissions(){try{return(await navigator.mediaDevices.enumerateDevices()).some(n=>n.kind==="audioinput"&&n.label!=="")?null:await navigator.mediaDevices.getUserMedia({audio:!0})}catch(e){return console.warn("获取音频权限失败:",e),null}}static show(e,n,r,i){if("Notification"in window&&Notification.permission==="granted"){const o=new Notification(e,{body:n,tag:`xy-global-notification${new Date().getTime()}`,renotify:!0});o.onclick=()=>{window.focus(),o.close(),r==null||r()},setTimeout(()=>o.close(),1e3*(i||3))}}static async checkMediaPermissions(){try{return(await navigator.mediaDevices.enumerateDevices()).some(e=>e.kind==="audioinput"&&e.label!=="")}catch(e){return console.warn("无法检查设备权限:",e),!1}}}const Qf=t=>Pn(`${br}/state/change`,t),xw=()=>async function(t,e){const n=D0(),r=t.replace(/^\/+/,"");return n.post(r,{json:e}).json()}("/heartbeat",{}),Tw=[],Ln=["call_number"],ds=["call_number"],Bw=["hangup"],vi=["hold","hangup","mute","transfer","consult","satisfaction","dtmf"],Hl=["hold","hangup","mute","transfer","consult"],kf=["consult_transfer","conference","consult_retrieve"],Ow=["hangup"],Dw=["hangup"],Ia=["answer","reject"],Gi=["hangup","consult","transfer","hold","mute","satisfaction","dtmf"],Uf=["hangup","whisper","force_insert","force_disconnect"],Nw=["hangup"],Fw=["hangup","cancel_whisper","force_insert"],Qw=["hangup"],kw=["hangup"];class DA{constructor(){this.roleData={agentInfo:()=>{var e;if(!((e=_.agentInfo)!=null&&e.agent_no))throw new Error(JSON.stringify({code:1,msg:"请先登录"}))},requestInfo:e=>{if(!e.data)throw new Error(JSON.stringify({code:1,msg:'Parameter "data" is required'}))},changeDevice:e=>{if(!e)throw new Error(JSON.stringify({code:1,msg:'Parameter "device" is required'}));const{answer_devices:n}=_.agentInfo;if(!n.split(",").map(r=>Number(r)).includes(e))throw new Error(JSON.stringify({code:1,msg:"当前状态不支持"}))},changeState:(e,n)=>{if(!e)throw new Error(JSON.stringify({code:1,msg:'Parameter "state" is required'}));if(!n)throw new Error(JSON.stringify({code:1,msg:'Parameter "state_name" is required'}));if(e===2&&(n==="通话中"||n==="整理"))throw new Error(JSON.stringify({code:1,msg:"当前状态不支持"}));if(![1,2].includes(e))throw new Error(JSON.stringify({code:1,msg:"当前状态不支持"}))},setAgentExplicit:e=>{const{out_display_select_switch:n,out_display_data:r}=_.agentInfo;if(n!==1)throw new Error(JSON.stringify({code:1,msg:"当前坐席设置未开启允许指定外显"}));if(!e)throw new Error(JSON.stringify({code:1,msg:'Parameter "number" is required'}));if(!(r||"").split("#").includes(e))throw new Error(JSON.stringify({code:1,msg:"当前外显号码不存在"}))}},this.changeDevice=async e=>{try{if(P.get("isCalling"))throw new Error(JSON.stringify({code:1,msg:"当前正在通话中,请勿切换设备"}));this.roleData.agentInfo(),this.roleData.requestInfo(e);const{data:n,success:r}=e,{device:i}=n;i===1&&await DA.initRtcFn(),this.roleData.changeDevice(i);const{agent_no:o}=_.agentInfo;await(a=>Pn(`${br}/device/change`,a))({agent_no:o,answer_device:i}),P.updateAnswerDevice(i);const A=P.get("actionConfigs");P.updateActionConfigs(A),i===2&&_.stateObject.state===Rt.UNREGISTERED&&await this._changeState({data:{..._.stateBeforeChange,state_name:_.stateBeforeChange.state===Rt.IDLE?"空闲":"忙碌"}}),r==null||r({code:0,msg:"请求成功"})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}}formatDate(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")} ${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}:${String(e.getSeconds()).padStart(2,"0")}`}static setInitRtcFn(e){this.initRtcFn=e}async _agentLogin(e){try{const r=await(n={agent_no:e},Pn(`${br}/agent/login`,n));_.agentInfo=r.data}catch(r){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(r.message).msg),r}var n}async _changeState(e){try{_.autoStateTimer&&(clearTimeout(_.autoStateTimer),_.autoStateTimer=null),this.roleData.agentInfo(),this.roleData.requestInfo(e);const{data:n,success:r}=e,{state:i,state_name:o}=n,{agent_no:A}=_.agentInfo;await Qf({agent_no:A,state_name:o,state:i}),i===Rt.IDLE?P.updateActionConfigs(Ln):i===Rt.BUSY&&P.updateActionConfigs(ds),_.stateObject={state:i,state_name:o},r==null||r({code:0,msg:"请求成功"})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async _getInCallCrmDetail(e){var n;try{const{phone:r}=e.data,i={};tu(r)?i.trace_id=r:i.phone=r.replace(/[\s\r\n-]+/g,"");const o=await(A=>Pn(`${wa}/crm/popups`,A))({...i});(n=e.success)==null||n.call(e,o)}catch(r){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(r.message).msg),r}}async changeState(e){try{if(P.get("isCalling"))throw new Error(JSON.stringify({code:1,msg:"当前正在通话中,请勿切换设备"}));_.autoStateTimer&&(clearTimeout(_.autoStateTimer),_.autoStateTimer=null),this.roleData.agentInfo(),this.roleData.requestInfo(e);const{data:n,success:r}=e,{state:i,state_name:o}=n;this.roleData.changeState(i,o);const{agent_no:A}=_.agentInfo;await Qf({agent_no:A,state_name:o,state:i}),(_.stateObject.state===Rt.IDLE||_.stateObject.state===Rt.BUSY&&o!=="整理")&&(_.stateBeforeChange=_.stateObject),i===Rt.IDLE?P.updateActionConfigs(Ln):i===Rt.BUSY&&P.updateActionConfigs(ds),_.stateObject={state:i,state_name:o},r==null||r({code:0,msg:"请求成功"})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async getIdleAgentList(e){var r;const{agent_no:n}=_.agentInfo;try{this.roleData.agentInfo();const i=await(o=>Pn(`${br}/agent/free`,o))({agent_no:n});(r=e.success)==null||r.call(e,i)}catch(i){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(i.message).msg),i}}async getAgentState(e){var n;try{const r=await Pn(`${wa}/agent/statecfg/list`,{}),i=(r.data||[]).filter(o=>o.enable===0).filter(o=>o.state!==0&&o.state!==3).filter(o=>o.state_name!=="通话中"&&o.state_name!=="整理"&&o.state_name!=="未注册"&&o.state_name!=="离线接听").map(o=>({state:o.state,state_name:o.state_name})).reverse();(n=e.success)==null||n.call(e,{...r,data:i})}catch(r){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(r.message).msg),r}}async setAgentExplicit(e){var n;try{this.roleData.agentInfo(),this.roleData.requestInfo(e),this.roleData.setAgentExplicit(e.data.number);const{agent_id:r}=_.agentInfo;await(i=>Pn(`${wa}/agent/update`,i))({agent_id:r,out_display_number:e.data.number}),P.updateSelectOutNumber(e.data.number),(n=e.success)==null||n.call(e,{code:0,msg:"请求成功"})}catch(r){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(r.message).msg),r}}async checkAgentLogin(e){var n;try{this.roleData.requestInfo(e);const{agent_no:r}=e.data;if(!r)throw new Error(JSON.stringify({code:1,msg:'Parameter "agent_no" is required'}));const i=await(o=>Pn(`${br}/agent/islogin`,o))({agent_no:r});(n=e.success)==null||n.call(e,i)}catch(r){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(r.message).msg),r}}async getCallRecord(e){try{this.roleData.agentInfo();const{success:n}=e,r=new Date,i=new Date(r.getFullYear(),r.getMonth(),r.getDate(),0,0,0),o=new Date(r.getFullYear(),r.getMonth(),r.getDate(),23,59,59),A=[this.formatDate(i),this.formatDate(o)],{agent_no:a}=_.agentInfo,s=await(g=>Pn(`${wa}/agent/recordpage`,g))({start_time:A[0],end_time:A[1],page_no:1,page_size:10,agent_no:a}),{code:l,msg:u,data:d}=s;n==null||n({code:l,msg:u,data:d})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async logout(e){this.roleData.agentInfo();try{const{agent_no:n}=_.agentInfo,{data:r,success:i}=e;await(o=>Pn(`${br}/agent/logout`,o))({...r,agent_no:n}),i==null||i({code:0,msg:""})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async listenCall(e){try{const{agent_no:n}=_.agentInfo,{data:r,success:i}=e;if(this.roleData.agentInfo(),this.roleData.requestInfo(e),!r.monitored_agent_no)throw new Error(JSON.stringify({code:1,msg:'Parameter "monitored_agent_no" is required'}));await(o=>Pn(`${br}/call/monitor`,o))({...r,monitor_agent_no:n}),_.monitoredAgentNo=r.monitored_agent_no,i==null||i({code:0,msg:""})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async earCall(e){try{const{agentInfo:n,monitoredAgentNo:r}=_,{agent_no:i}=n;this.roleData.agentInfo();const{success:o}=e;if(!r)throw new Error(JSON.stringify({code:1,msg:"当前未有监听坐席"}));await(A=>Pn(`${br}/call/whisper`,A))({monitored_agent_no:r,monitor_agent_no:i}),o==null||o({code:0,msg:""})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async stopEarCall(e){try{const{agentInfo:n,earSpeakAgent:r}=_;if(!r)throw new Error(JSON.stringify({code:1,msg:"当前没有正在耳语的坐席"}));const{agent_no:i}=n;this.roleData.agentInfo();const{success:o}=e;await(A=>Pn(`${br}/call/stopwhisper`,A))({monitor_agent_no:i,monitored_agent_no:r}),o==null||o({code:0,msg:""})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async forceInsert(e){try{const{agentInfo:n,monitoredAgentNo:r}=_,{agent_no:i}=n;this.roleData.agentInfo();const{success:o}=e;if(!r)throw new Error(JSON.stringify({code:1,msg:"当前未有监听坐席"}));await(A=>Pn(`${br}/call/bargein`,A))({monitored_agent_no:r,monitor_agent_no:i}),o==null||o({code:0,msg:""})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async forceDisconnect(e){try{const{agentInfo:n,monitoredAgentNo:r}=_,{agent_no:i}=n;this.roleData.agentInfo();const{success:o}=e;if(!r)throw new Error(JSON.stringify({code:1,msg:"当前未有监听坐席"}));await(A=>Pn(`${br}/call/intercept`,A))({monitored_agent_no:r,monitor_agent_no:i}),o==null||o({code:0,msg:""})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}}const Uw=console.log,Gf=(...t)=>{_.logBuiltinEnabled&&Uw(...t)};let ni=null;class cn{constructor(e,n){this.url=e,this.onOpenCallback=n,this.ws=null,this.heartbeatWorker=null,this.reconnectDelay=3e3,this.manualClose=!1,this.apiClient=new DA,this.sipClient=null,this.pendingMessages=new Map,this.initWebSocket()}static getInstance({url:e,sipClient:n,onOpen:r}){if(!ni){if(!e)throw new Error("WebSocket 尚未初始化");ni=new cn(e,r),ni.sipClient=n}return ni}setSipClient(e){this.sipClient=e}stateIdleChange(){const{state:e}=_.stateObject;e!==Rt.IDLE&&this.apiClient._changeState({data:{..._.stateBeforeChange,state_name:_.stateBeforeChange.state===Rt.IDLE?"空闲":"忙碌"}})}inCallAutoAnswer(){const{soft_device_auto_answer:e,auto_answer_time:n}=_.agentInfo,r=e===1,i=P.get("direction");if(r&&i===wn.INCOMING){const o=Number(n)||0;o>0&&(_.autoAnswerTimer=setTimeout(()=>{var A;(A=this.sipClient)==null||A.answerCall(),_.autoAnswerTimer=null},1e3*o-500))}}async getCustomerInfo(e){try{await this.apiClient._getInCallCrmDetail({data:{phone:e},success:n=>{P.updateCustomerInfo(n.data||{phone:n.data.phone,is_vip:0,customer_name:"未知客户",city:"未知",province:"未知",contact_count:0,in_contact_count:0,trace_id:n.data.trace_id,contact_count_month:0,in_contact_count_month:0})}})}catch{}}putAgentState(e,n){if(!e)return;if(n===5)return void this.stateIdleChange();_.sessionId="";const{post_call_process_time:r}=_.agentInfo,i=r||0;if(_.autoStateTimer&&(clearTimeout(_.autoStateTimer),_.autoStateTimer=null),P.updateCustomerInfo(void 0),i>0){const{state:o}=_.stateObject;if(o===Rt.IDLE)return;this.apiClient._changeState({data:{state:Rt.BUSY,state_name:"整理"}}),_.autoStateTimer=setTimeout(()=>{_.autoStateTimer=null,this.stateIdleChange()},1e3*i)}else this.stateIdleChange()}stateBusyChange(){_.sessionId="",clearTimeout(_.autoStateTimer),P.updateCustomerInfo(void 0),this.apiClient._changeState({data:{state:Rt.BUSY,state_name:"忙碌"}})}initWebSocket(){var n;if(((n=this.ws)==null?void 0:n.readyState)===1||!P.get("isNextState")||this.manualClose)return;const e=O0(Pd,Ld);this.ws=new WebSocket(this.url+e),this.ws.onopen=()=>{const r=new Date().getTime();this.sendMessage({type:0,msg_id:r}),this.pendingMessages.set(r,performance.now()),this.startHeartbeat(),this.manualClose=!1,this.onOpenCallback&&this.onOpenCallback()},this.ws.onmessage=async r=>{var u;const i=JSON.parse(r.data),{type:o,data:A,code:a,msg:s,msg_id:l}=i;if(o===0&&l){const d=this.pendingMessages.get(l),g=performance.now()-d;_.latency=parseFloat(g.toFixed(2)),this.pendingMessages.delete(l)}if(o!==0&&Gf("%cWebSocket 收到消息:","color: blue; font-weight: bold;",i),o!==rt.OUT_CALL&&o!==rt.PREVIEW_OUT_CALL||(a!==0?(P.reset(),ge.emit(oe.OUT_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s),P.updateActionConfigs(Ln),setTimeout(()=>{P.updateCustomerInfo(void 0)},500),this.stateIdleChange()):a===0&&(ge.emit(oe.OUT_SUCCESS),clearTimeout(_.autoStateTimer))),o===rt.AGENT_STATE){const{state:d,state_name:g}=A;_.stateObject={state:d,state_name:g},(u=_.stateBeforeChange)!=null&&u.state||_.stateObject.state!==Rt.IDLE&&(_.stateObject.state!==Rt.BUSY||g==="整理")||(_.stateBeforeChange=_.stateObject),g==="振铃中"&&P.updateDisplayText(Ht.AGENT_RINGING),d===Rt.UNREGISTERED&&P.updateActionConfigs(Tw),d===Rt.IDLE&&_.stateObject.state===Rt.UNREGISTERED&&P.updateActionConfigs(Ln),ge.emit(oe.AGENT_STATE,{state:d,state_name:g})}else if(o===rt.OUT_CALL_INCOMING_CALL){try{await this.getCustomerInfo(A.trace_id||A.customer_phone)}catch(d){console.error(d)}A.preview_task_id?ge.emit(oe.PREVIEW_OUT_INCOMING_CALL,{customer_phone:A.customer_phone,session_id:A.session_id,preview_task_id:A.preview_task_id,trace_id:A.trace_id}):A.direction===1?ge.emit(oe.OUT_INCOMING_CALL,{customer_phone:A.customer_phone,session_id:A.session_id,trace_id:A.trace_id}):A.direction===8&&ge.emit(oe.INTERNAL_OUT_INCOMING_CALL,{customer_phone:A.customer_phone,session_id:A.session_id,trace_id:A.trace_id}),_.sessionId=A.session_id,P.updateActionConfigs(Bw,A.direction!==8)}else if(o===rt.OUT_CALL_END)if(P.updateDisplayText(""),A.device_type===1&&A.agent_no===_.agentInfo.agent_no)P.reset(),ge.emit(oe.OUT_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(Ln),this.putAgentState(!0);else if(A.device_type===2&&A.agent_no===_.agentInfo.agent_no)P.reset(),ge.emit(oe.OUR_SIDE_CONSULT_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(Ln),this.putAgentState(!0);else if(A.device_type===2&&A.agent_no!==_.agentInfo.agent_no)P.get("isCalling")&&(P.updateDisplayText(Ht.CALLING),ge.emit(oe.OTHER_SIDE_CONSULT_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(vi));else if(A.device_type===3&&A.agent_no===_.agentInfo.agent_no)P.reset(),ge.emit(oe.THREE_WAY_OUR_SIDE_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(Ln),this.putAgentState(!0);else if(A.device_type===4&&A.agent_no===_.agentInfo.agent_no)P.reset(),ge.emit(oe.TRANSFER_END,{session_id:A.session_id}),P.updateActionConfigs(Ln),this.putAgentState(!0);else if(A.device_type===4&&A.agent_no!==_.agentInfo.agent_no){ge.emit(oe.TRANSFER_FAILED,"未知原因"),ge.emit(Ge.FAIL_NOTIFICATION,"转接失败");const d=P.get("direction");d===wn.OUTGOING?P.updateActionConfigs(vi):d===wn.INCOMING&&P.updateActionConfigs(Gi)}else A.device_type===5&&A.agent_no===_.agentInfo.agent_no&&(_.monitoredAgentNo="",_.earSpeakAgent="",P.reset(),ge.emit(oe.LISTEN_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(Ln),this.putAgentState(!0,5));else if(o===rt.OUT_CALL_RINGING)A.type===1&&(ge.emit(oe.OUT_RINGING,{session_id:_.sessionId,type:A.type}),P.updateDisplayText(Ht.RINGING));else if(o===rt.OUT_CALL_ANSWER)clearTimeout(_.autoStateTimer),P.updateIsCalling(!0),P.updateOutCallIsAnswer(!0),P.updateDisplayText(Ht.CALLING),A.direction===8?(ge.emit(oe.INTERNAL_OUT_OFF_ANSWER,{session_id:_.sessionId}),P.updateActionConfigs(Hl)):(ge.emit(oe.OUT_OFF_ANSWER,{session_id:_.sessionId}),P.updateActionConfigs(vi));else if(o===rt.CONSULT_RINGING)ge.emit(oe.CONSULT_RINGING,{session_id:A.session_id}),P.updateDisplayText(Ht.AGENT_RINGING),P.updateActionConfigs([]),clearTimeout(_.autoStateTimer);else if(o===rt.CONSULT_ANSWER)ge.emit(oe.CONSULT_OFF_HOOK,{session_id:A.session_id}),P.updateConsultIsAnswer(!0),P.updateDisplayText(Ht.CONSULTING),P.updateActionConfigs(kf);else if(o===rt.CONSULT_FAIL)ge.emit(oe.CONSULT_FAILED,{custom_reason:A.custom_reason}),P.updateDisplayText(Ht.CALLING),P.updateActionConfigs(vi);else if(o===rt.CONSULT_CALL_IN)ge.emit(oe.CONSULT_INCOMING,{agent_no:A.agent_no,agent_mane:A.agent_name,session_id:A.session_id}),_.sessionId=A.session_id,P.updateIsCalling(!0),P.updateDirection(wn.CONSULT),P.updateDisplayText(Ht.CONSULT_CALL_IN),P.updateActionConfigs(Ia),_.enableBrowserAlert&&Io.show("📞 咨询来电",`坐席 [${A.agent_name}] 正在咨询...`,()=>{ge.emit(Ge.NOTIFICATION_CLICK,{agent_mane:A.agent_name,agent_no:A.agent_no})},_.browserAlertTime);else if(o===rt.CONSULT_CALL_IN_SUCCESS)ge.emit(oe.CONSULT_CALL_IN_SUCCESS,{session_id:A.session_id}),P.updateConsultIsAnswer(!0),P.updateDisplayText(Ht.CALLING),P.updateActionConfigs(Ow);else if(o===rt.CONSULT_RETURN_CALL_SUCCESS)A.status==="success"?(P.updateConsultIsAnswer(!1),ge.emit(oe.CONSULT_RETURN_CALL_SUCCESS),P.updateDisplayText(Ht.CALLING),ge.emit(oe.OTHER_SIDE_CONSULT_HANGUP),P.updateActionConfigs(vi)):ge.emit(Ge.FAIL_NOTIFICATION,"媒体失败");else if(o===rt.MUTE)a===0?(P.updateIsMuted(!0),ge.emit(oe.MUTE_SUCCESS),P.updateDisplayText(Ht.MUTING)):(ge.emit(oe.MUTE_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s));else if(o===rt.UNMUTE)a===0?(P.updateIsMuted(!1),ge.emit(oe.UNMUTE_SUCCESS),P.updateDisplayText(Ht.CALLING)):(ge.emit(oe.UNMUTE_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s));else if(o===rt.CALL_HOLD)a===0?(P.updateIsHold(!0),P.updateDisplayText(Ht.HOLDING),ge.emit(oe.HOLD_SUCCESS)):(ge.emit(oe.HOLD_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s));else if(o===rt.CALL_UNHOLD)a===0?(P.updateDisplayText(Ht.CALLING),P.updateIsHold(!1),ge.emit(oe.UNHOLD_SUCCESS)):(ge.emit(oe.UNHOLD_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s));else if(o===rt.CONSULT_TRANSFER)a===0?ge.emit(oe.CONSULT_TRANSFER_SUCCESS):(ge.emit(oe.CONSULT_TRANSFER_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s));else if(o===rt.CONSULT_TRANSFER_FAILED)ge.emit(oe.CONSULT_TRANSFER_FAILED,A.status);else if(o===rt.CONSULT_TRANSFER_OFF_HOOK)P.updateDirection(wn.INCOMING),P.updateDisplayText(Ht.CALLING),ge.emit(oe.CONSULT_TRANSFER_OFF_HOOK),P.updateActionConfigs(Gi),P.updateIncomingIsAnswer(!0),P.updateConsultIsAnswer(!1);else if(o===rt.INCOMING_CALL){clearTimeout(_.autoStateTimer),_.sessionId=A.session_id;try{await this.getCustomerInfo(A.trace_id||A.customer_phone)}catch(d){console.error(d)}P.updateIsCalling(!0),P.updateDirection(wn.INCOMING),P.updateDisplayText(Ht.INCOMING_CALL),this.inCallAutoAnswer(),A.direction===1&&ge.emit(oe.INCOMING_CALL,{customer_phone:A.customer_phone,trace_id:A.trace_id,session_id:A.session_id}),A.direction===8&&ge.emit(oe.INCOMING_CALL_IN,{customer_phone:A.customer_phone,trace_id:A.trace_id,session_id:A.session_id}),A.direction===3&&ge.emit(oe.PREDICT_INCOMING_CALL,{customer_phone:A.customer_phone,trace_id:A.trace_id,session_id:A.session_id}),A.direction===6&&ge.emit(oe.DUAL_CALL_INCOMING_CALL,{customer_phone:A.customer_phone,trace_id:A.trace_id,session_id:A.session_id}),P.updateActionConfigs(Ia),_.enableBrowserAlert&&Io.show("📞 客户来电",`客户 [${A.customer_phone}] 正在呼入...`,()=>{ge.emit(Ge.NOTIFICATION_CLICK,{customer_phone:A.customer_phone})},_.browserAlertTime)}else if(o===rt.INCOMING_CALL_OFF_HOOK)P.updateIncomingIsAnswer(!0),A.direction===8?(P.updateActionConfigs(Hl),ge.emit(oe.INCOMING_CALL_IN_OFF_HOOK,{session_id:_.sessionId})):(P.updateActionConfigs(Gi),ge.emit(oe.INCOMING_CALL_OFF_HOOK,{session_id:_.sessionId})),P.updateDisplayText(Ht.CALLING);else if(o===rt.INCOMING_CALL_END)if(P.updateDisplayText(""),A.device_type!==1&&A.device_type!==7||A.agent_no!==_.agentInfo.agent_no)if(A.device_type===2&&A.agent_no===_.agentInfo.agent_no)P.reset(),ge.emit(oe.OUR_SIDE_CONSULT_HANGUP,{session_id:A.session_id}),this.putAgentState(!0),P.updateActionConfigs(Ln);else if(A.device_type===2&&A.agent_no!==_.agentInfo.agent_no)P.updateDisplayText(Ht.CALLING),ge.emit(oe.OTHER_SIDE_CONSULT_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(vi);else if(A.device_type===3&&A.agent_no===_.agentInfo.agent_no)this.putAgentState(!0),P.reset(),ge.emit(oe.THREE_WAY_OUR_SIDE_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(Ln);else if(A.device_type===4&&A.agent_no===_.agentInfo.agent_no)this.putAgentState(!0),P.reset(),ge.emit(oe.TRANSFER_END,{session_id:A.session_id}),P.updateActionConfigs(Ln);else if(A.device_type===4&&A.agent_no!==_.agentInfo.agent_no){ge.emit(oe.TRANSFER_FAILED,"未知原因"),ge.emit(Ge.FAIL_NOTIFICATION,"转接失败");const d=P.get("direction");d===wn.OUTGOING?P.updateActionConfigs(vi):d===wn.INCOMING&&P.updateActionConfigs(Gi)}else A.device_type===5&&A.agent_no===_.agentInfo.agent_no&&(this.putAgentState(!0,5),_.monitoredAgentNo="",_.earSpeakAgent="",P.reset(),ge.emit(oe.LISTEN_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(Ln));else this.putAgentState(!0),P.reset(),ge.emit(oe.INCOMING_CALL_END,{session_id:A.session_id}),P.updateActionConfigs(Ln);else if(o===rt.SATISFACTION_EVALUATION)a===0?ge.emit(oe.SATISFACTION_EVALUATION_SUCCESS):(ge.emit(oe.SATISFACTION_EVALUATION_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s));else if(o===rt.CONSULT_THREE_WAY)a!==0?(ge.emit(oe.CONSULT_THREE_WAY_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s)):a===0&&P.updateIsMeeting(!0);else if(o===rt.CONSULT_THREE_WAY_RESULT)A.status==="success"?(P.updateDirection(wn.MEETING),P.updateDisplayText(Ht.MEETING),P.updateActionConfigs(Dw),ge.emit(oe.CONSULT_THREE_WAY_SUCCESS)):(ge.emit(oe.CONSULT_THREE_WAY_FAILED,{conf_name:A.conf_name}),P.updateIsMeeting(!1));else if(o===rt.TRANSFER_INCOMING_CALL)clearTimeout(_.autoStateTimer),A.agent_no===_.agentInfo.agent_no?(P.updateDisplayText(Ht.TRANSFERRING),ge.emit(oe.TRANSFER_PROGRESS),P.updateActionConfigs([]),P.updateTransferIsAnswer(!0)):(_.sessionId=A.session_id,ge.emit(oe.TRANSFER_INCOMING_CALL,{agent_no:A.agent_no,agent_name:A.agent_name,session_id:A.session_id}),P.updateIsCalling(!0),P.updateDirection(wn.TRANSFER),P.updateDisplayText(Ht.TRANSFER_INCOMING_CALL),P.updateActionConfigs(Ia),_.enableBrowserAlert&&Io.show("📞 转接来电",`坐席 [${A.agent_no}] 正在转接...`,()=>{ge.emit(Ge.NOTIFICATION_CLICK,{agent_no:A.agent_no})},_.browserAlertTime));else if(o===rt.TRANSFER_OFF_HOOK)ge.emit(oe.TRANSFER_OFF_HOOK,{session_id:_.sessionId}),P.updateTransferIsAnswer(!1),P.updateDisplayText(Ht.CALLING),P.updateActionConfigs(Gi,A.direction!==8);else if(o===rt.TRANSFER_FAILED){if(A.status==="failed"){ge.emit(oe.TRANSFER_FAILED,"未知原因"),ge.emit(Ge.FAIL_NOTIFICATION,"转接失败");const d=P.get("direction");d===wn.OUTGOING?P.updateActionConfigs(vi):d===wn.INCOMING&&P.updateActionConfigs(Gi)}}else o===rt.KICK_OFFLINE?ge.emit(Ge.KICK_OFF):o===rt.CONTINUOUS_NOT_ANSWER?(ge.emit(Ge.FAIL_NOTIFICATION,`已连续 ${A.miss_count} 次未接, 设置忙碌`),this.stateBusyChange()):o===rt.SIGN_OUT?ge.emit(Ge.SIGN_OUT):o===rt.SIGN_IN_SWITCH_DEVICE?ge.emit(Ge.SIGN_IN_SWITCH_DEVICE,A):o===rt.LISTEN_INCOMING_CALL?(clearTimeout(_.autoStateTimer),_.sessionId=A.session_id,P.updateIsCalling(!0),P.updateDirection(wn.INCOMING),this.inCallAutoAnswer(),P.updateDisplayText(Ht.LISTENING),P.updateActionConfigs(Ia),ge.emit(oe.LISTEN_INCOMING_CALL,{session_id:A.session_id}),_.enableBrowserAlert&&Io.show("📞 监听来电","正在来电...",()=>{ge.emit(Ge.NOTIFICATION_CLICK,{customer_phone:A.customer_phone})},_.browserAlertTime)):o===rt.LISTEN_INCOMING_CALL_OFF_HOOK?(_.monitoredAgentNo=A.monitored_agent_no,_.earSpeakAgent="",P.updateIncomingIsAnswer(!0),ge.emit(oe.LISTEN_INCOMING_CALL_OFF_HOOK,{session_id:_.sessionId,monitored_agent_no:A.monitored_agent_no}),P.updateActionConfigs(Uf),P.updateDisplayText(Ht.CALLING)):o===rt.LISTEN_CALL_FAILED?A.status==="failed"&&(ge.emit(oe.LISTEN_CALL_FAILED),_.monitoredAgentNo=""):o===rt.EAR_SPEECH?A.status==="success"?(A.monitored_agent_no===_.agentInfo.agent_no&&(P.updateActionConfigs(Nw),ge.emit(oe.EAR_SPEECH_BE_SUCCESS)),A.monitor_agent_no===_.agentInfo.agent_no&&(P.updateActionConfigs(Fw),ge.emit(oe.EAR_SPEECH_SUCCESS,{monitored_agent_no:A.monitored_agent_no,monitor_agent_no:A.monitor_agent_no}),_.earSpeakAgent=A.monitored_agent_no)):ge.emit(oe.EAR_SPEECH_FAILED):o===rt.STOP_EAR_SPEECH?A.status==="success"?(A.monitored_agent_no===_.agentInfo.agent_no&&P.updateActionConfigs(Gi),A.monitor_agent_no===_.agentInfo.agent_no&&P.updateActionConfigs(Uf),_.earSpeakAgent="",ge.emit(oe.STOP_EAR_SPEECH_SUCCESS)):ge.emit(oe.STOP_EAR_SPEECH_FAILED):o===rt.CALL_FORCE_INSERT?A.status==="success"?(A.monitored_agent_no===_.agentInfo.agent_no&&(P.updateActionConfigs(kw),ge.emit(oe.CALL_FORCE_INSERT_SUCCESS,{monitored_agent_no:A.monitored_agent_no,monitor_agent_no:A.monitor_agent_no})),A.monitor_agent_no===_.agentInfo.agent_no&&(P.updateActionConfigs(Qw),ge.emit(oe.CALL_FORCE_INSERT_SUCCESS_LISTENER,{monitored_agent_no:A.monitored_agent_no,monitor_agent_no:A.monitor_agent_no}))):ge.emit(oe.CALL_FORCE_INSERT_FAILED):o===rt.INTERNAL_CALL_START_CONSULT?A.agent_no===_.agentInfo.agent_no?(P.updateConsultIsAnswer(!0),P.updateActionConfigs(kf),P.updateDisplayText(Ht.CONSULTING)):(P.updateDisplayText(Ht.OTHER_SIDE_CONSULTING),P.updateActionConfigs([])):o===rt.INTERNAL_CALL_END_CONSULT?(P.updateActionConfigs(Hl),P.updateDisplayText(""),P.updateConsultIsAnswer(!1)):o===rt.CALL_SIP_INCOMING_CALL&&ge.emit(oe.CALL_SIP_INCOMING_CALL)},this.ws.onclose=r=>{ge.emit(Ge.FAIL_NOTIFICATION,"链接已断开,请检查网络"),this.stopHeartbeat();const i=P.get("isNextState");!this.manualClose&&i&&setTimeout(()=>this.initWebSocket(),this.reconnectDelay)},this.ws.onerror=r=>{var i;ge.emit(Ge.FAIL_NOTIFICATION,"连接失败,请检查网络"),(i=this.ws)==null||i.close()}}startHeartbeat(){const e=new Blob([`
163
+ */Yl=B0,function(){var t="input is invalid type",e=typeof window=="object",n=e?window:{};n.JS_MD5_NO_WINDOW&&(e=!1);var r=!e&&typeof self=="object",i=!n.JS_MD5_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;i?n=Mw:r&&(n=self);var o,A=!n.JS_MD5_NO_COMMON_JS&&Yl.exports,a=!n.JS_MD5_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",s="0123456789abcdef".split(""),l=[128,32768,8388608,-2147483648],u=[0,8,16,24],d=["hex","array","digest","buffer","arrayBuffer","base64"],g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),p=[];if(a){var V=new ArrayBuffer(68);o=new Uint8Array(V),p=new Uint32Array(V)}var v=Array.isArray;!n.JS_MD5_NO_NODE_JS&&v||(v=function(q){return Object.prototype.toString.call(q)==="[object Array]"});var m=ArrayBuffer.isView;!a||!n.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW&&m||(m=function(q){return typeof q=="object"&&q.buffer&&q.buffer.constructor===ArrayBuffer});var C=function(q){var E=typeof q;if(E==="string")return[q,!0];if(E!=="object"||q===null)throw new Error(t);if(a&&q.constructor===ArrayBuffer)return[new Uint8Array(q),!1];if(!v(q)&&!m(q))throw new Error(t);return[q,!1]},w=function(q){return function(E){return new I(!0).update(E)[q]()}},S=function(q){var E,h=Sf,y=Sf.Buffer;return E=y.from&&!n.JS_MD5_NO_BUFFER_FROM?y.from:function(x){return new y(x)},function(x){if(typeof x=="string")return h.createHash("md5").update(x,"utf8").digest("hex");if(x==null)throw new Error(t);return x.constructor===ArrayBuffer&&(x=new Uint8Array(x)),v(x)||m(x)||x.constructor===y?h.createHash("md5").update(E(x)).digest("hex"):q(x)}},M=function(q){return function(E,h){return new f(E,!0).update(h)[q]()}};function I(q){if(q)p[0]=p[16]=p[1]=p[2]=p[3]=p[4]=p[5]=p[6]=p[7]=p[8]=p[9]=p[10]=p[11]=p[12]=p[13]=p[14]=p[15]=0,this.blocks=p,this.buffer8=o;else if(a){var E=new ArrayBuffer(68);this.buffer8=new Uint8Array(E),this.blocks=new Uint32Array(E)}else this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.h0=this.h1=this.h2=this.h3=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0}function f(q,E){var h,y=C(q);if(q=y[0],y[1]){var x,b=[],B=q.length,O=0;for(h=0;h<B;++h)(x=q.charCodeAt(h))<128?b[O++]=x:x<2048?(b[O++]=192|x>>>6,b[O++]=128|63&x):x<55296||x>=57344?(b[O++]=224|x>>>12,b[O++]=128|x>>>6&63,b[O++]=128|63&x):(x=65536+((1023&x)<<10|1023&q.charCodeAt(++h)),b[O++]=240|x>>>18,b[O++]=128|x>>>12&63,b[O++]=128|x>>>6&63,b[O++]=128|63&x);q=b}q.length>64&&(q=new I(!0).update(q).array());var N=[],F=[];for(h=0;h<64;++h){var j=q[h]||0;N[h]=92^j,F[h]=54^j}I.call(this,E),this.update(F),this.oKeyPad=N,this.inner=!0,this.sharedMemory=E}I.prototype.update=function(q){if(this.finalized)throw new Error("finalize already called");var E=C(q);q=E[0];for(var h,y,x=E[1],b=0,B=q.length,O=this.blocks,N=this.buffer8;b<B;){if(this.hashed&&(this.hashed=!1,O[0]=O[16],O[16]=O[1]=O[2]=O[3]=O[4]=O[5]=O[6]=O[7]=O[8]=O[9]=O[10]=O[11]=O[12]=O[13]=O[14]=O[15]=0),x)if(a)for(y=this.start;b<B&&y<64;++b)(h=q.charCodeAt(b))<128?N[y++]=h:h<2048?(N[y++]=192|h>>>6,N[y++]=128|63&h):h<55296||h>=57344?(N[y++]=224|h>>>12,N[y++]=128|h>>>6&63,N[y++]=128|63&h):(h=65536+((1023&h)<<10|1023&q.charCodeAt(++b)),N[y++]=240|h>>>18,N[y++]=128|h>>>12&63,N[y++]=128|h>>>6&63,N[y++]=128|63&h);else for(y=this.start;b<B&&y<64;++b)(h=q.charCodeAt(b))<128?O[y>>>2]|=h<<u[3&y++]:h<2048?(O[y>>>2]|=(192|h>>>6)<<u[3&y++],O[y>>>2]|=(128|63&h)<<u[3&y++]):h<55296||h>=57344?(O[y>>>2]|=(224|h>>>12)<<u[3&y++],O[y>>>2]|=(128|h>>>6&63)<<u[3&y++],O[y>>>2]|=(128|63&h)<<u[3&y++]):(h=65536+((1023&h)<<10|1023&q.charCodeAt(++b)),O[y>>>2]|=(240|h>>>18)<<u[3&y++],O[y>>>2]|=(128|h>>>12&63)<<u[3&y++],O[y>>>2]|=(128|h>>>6&63)<<u[3&y++],O[y>>>2]|=(128|63&h)<<u[3&y++]);else if(a)for(y=this.start;b<B&&y<64;++b)N[y++]=q[b];else for(y=this.start;b<B&&y<64;++b)O[y>>>2]|=q[b]<<u[3&y++];this.lastByteIndex=y,this.bytes+=y-this.start,y>=64?(this.start=y-64,this.hash(),this.hashed=!0):this.start=y}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296|0,this.bytes=this.bytes%4294967296),this},I.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var q=this.blocks,E=this.lastByteIndex;q[E>>>2]|=l[3&E],E>=56&&(this.hashed||this.hash(),q[0]=q[16],q[16]=q[1]=q[2]=q[3]=q[4]=q[5]=q[6]=q[7]=q[8]=q[9]=q[10]=q[11]=q[12]=q[13]=q[14]=q[15]=0),q[14]=this.bytes<<3,q[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},I.prototype.hash=function(){var q,E,h,y,x,b,B=this.blocks;this.first?E=((E=((q=((q=B[0]-680876937)<<7|q>>>25)-271733879|0)^(h=((h=(-271733879^(y=((y=(-1732584194^2004318071&q)+B[1]-117830708)<<12|y>>>20)+q|0)&(-271733879^q))+B[2]-1126478375)<<17|h>>>15)+y|0)&(y^q))+B[3]-1316259209)<<22|E>>>10)+h|0:(q=this.h0,E=this.h1,h=this.h2,E=((E+=((q=((q+=((y=this.h3)^E&(h^y))+B[0]-680876936)<<7|q>>>25)+E|0)^(h=((h+=(E^(y=((y+=(h^q&(E^h))+B[1]-389564586)<<12|y>>>20)+q|0)&(q^E))+B[2]+606105819)<<17|h>>>15)+y|0)&(y^q))+B[3]-1044525330)<<22|E>>>10)+h|0),E=((E+=((q=((q+=(y^E&(h^y))+B[4]-176418897)<<7|q>>>25)+E|0)^(h=((h+=(E^(y=((y+=(h^q&(E^h))+B[5]+1200080426)<<12|y>>>20)+q|0)&(q^E))+B[6]-1473231341)<<17|h>>>15)+y|0)&(y^q))+B[7]-45705983)<<22|E>>>10)+h|0,E=((E+=((q=((q+=(y^E&(h^y))+B[8]+1770035416)<<7|q>>>25)+E|0)^(h=((h+=(E^(y=((y+=(h^q&(E^h))+B[9]-1958414417)<<12|y>>>20)+q|0)&(q^E))+B[10]-42063)<<17|h>>>15)+y|0)&(y^q))+B[11]-1990404162)<<22|E>>>10)+h|0,E=((E+=((q=((q+=(y^E&(h^y))+B[12]+1804603682)<<7|q>>>25)+E|0)^(h=((h+=(E^(y=((y+=(h^q&(E^h))+B[13]-40341101)<<12|y>>>20)+q|0)&(q^E))+B[14]-1502002290)<<17|h>>>15)+y|0)&(y^q))+B[15]+1236535329)<<22|E>>>10)+h|0,E=((E+=((y=((y+=(E^h&((q=((q+=(h^y&(E^h))+B[1]-165796510)<<5|q>>>27)+E|0)^E))+B[6]-1069501632)<<9|y>>>23)+q|0)^q&((h=((h+=(q^E&(y^q))+B[11]+643717713)<<14|h>>>18)+y|0)^y))+B[0]-373897302)<<20|E>>>12)+h|0,E=((E+=((y=((y+=(E^h&((q=((q+=(h^y&(E^h))+B[5]-701558691)<<5|q>>>27)+E|0)^E))+B[10]+38016083)<<9|y>>>23)+q|0)^q&((h=((h+=(q^E&(y^q))+B[15]-660478335)<<14|h>>>18)+y|0)^y))+B[4]-405537848)<<20|E>>>12)+h|0,E=((E+=((y=((y+=(E^h&((q=((q+=(h^y&(E^h))+B[9]+568446438)<<5|q>>>27)+E|0)^E))+B[14]-1019803690)<<9|y>>>23)+q|0)^q&((h=((h+=(q^E&(y^q))+B[3]-187363961)<<14|h>>>18)+y|0)^y))+B[8]+1163531501)<<20|E>>>12)+h|0,E=((E+=((y=((y+=(E^h&((q=((q+=(h^y&(E^h))+B[13]-1444681467)<<5|q>>>27)+E|0)^E))+B[2]-51403784)<<9|y>>>23)+q|0)^q&((h=((h+=(q^E&(y^q))+B[7]+1735328473)<<14|h>>>18)+y|0)^y))+B[12]-1926607734)<<20|E>>>12)+h|0,E=((E+=((b=(y=((y+=((x=E^h)^(q=((q+=(x^y)+B[5]-378558)<<4|q>>>28)+E|0))+B[8]-2022574463)<<11|y>>>21)+q|0)^q)^(h=((h+=(b^E)+B[11]+1839030562)<<16|h>>>16)+y|0))+B[14]-35309556)<<23|E>>>9)+h|0,E=((E+=((b=(y=((y+=((x=E^h)^(q=((q+=(x^y)+B[1]-1530992060)<<4|q>>>28)+E|0))+B[4]+1272893353)<<11|y>>>21)+q|0)^q)^(h=((h+=(b^E)+B[7]-155497632)<<16|h>>>16)+y|0))+B[10]-1094730640)<<23|E>>>9)+h|0,E=((E+=((b=(y=((y+=((x=E^h)^(q=((q+=(x^y)+B[13]+681279174)<<4|q>>>28)+E|0))+B[0]-358537222)<<11|y>>>21)+q|0)^q)^(h=((h+=(b^E)+B[3]-722521979)<<16|h>>>16)+y|0))+B[6]+76029189)<<23|E>>>9)+h|0,E=((E+=((b=(y=((y+=((x=E^h)^(q=((q+=(x^y)+B[9]-640364487)<<4|q>>>28)+E|0))+B[12]-421815835)<<11|y>>>21)+q|0)^q)^(h=((h+=(b^E)+B[15]+530742520)<<16|h>>>16)+y|0))+B[2]-995338651)<<23|E>>>9)+h|0,E=((E+=((y=((y+=(E^((q=((q+=(h^(E|~y))+B[0]-198630844)<<6|q>>>26)+E|0)|~h))+B[7]+1126891415)<<10|y>>>22)+q|0)^((h=((h+=(q^(y|~E))+B[14]-1416354905)<<15|h>>>17)+y|0)|~q))+B[5]-57434055)<<21|E>>>11)+h|0,E=((E+=((y=((y+=(E^((q=((q+=(h^(E|~y))+B[12]+1700485571)<<6|q>>>26)+E|0)|~h))+B[3]-1894986606)<<10|y>>>22)+q|0)^((h=((h+=(q^(y|~E))+B[10]-1051523)<<15|h>>>17)+y|0)|~q))+B[1]-2054922799)<<21|E>>>11)+h|0,E=((E+=((y=((y+=(E^((q=((q+=(h^(E|~y))+B[8]+1873313359)<<6|q>>>26)+E|0)|~h))+B[15]-30611744)<<10|y>>>22)+q|0)^((h=((h+=(q^(y|~E))+B[6]-1560198380)<<15|h>>>17)+y|0)|~q))+B[13]+1309151649)<<21|E>>>11)+h|0,E=((E+=((y=((y+=(E^((q=((q+=(h^(E|~y))+B[4]-145523070)<<6|q>>>26)+E|0)|~h))+B[11]-1120210379)<<10|y>>>22)+q|0)^((h=((h+=(q^(y|~E))+B[2]+718787259)<<15|h>>>17)+y|0)|~q))+B[9]-343485551)<<21|E>>>11)+h|0,this.first?(this.h0=q+1732584193|0,this.h1=E-271733879|0,this.h2=h-1732584194|0,this.h3=y+271733878|0,this.first=!1):(this.h0=this.h0+q|0,this.h1=this.h1+E|0,this.h2=this.h2+h|0,this.h3=this.h3+y|0)},I.prototype.hex=function(){this.finalize();var q=this.h0,E=this.h1,h=this.h2,y=this.h3;return s[q>>>4&15]+s[15&q]+s[q>>>12&15]+s[q>>>8&15]+s[q>>>20&15]+s[q>>>16&15]+s[q>>>28&15]+s[q>>>24&15]+s[E>>>4&15]+s[15&E]+s[E>>>12&15]+s[E>>>8&15]+s[E>>>20&15]+s[E>>>16&15]+s[E>>>28&15]+s[E>>>24&15]+s[h>>>4&15]+s[15&h]+s[h>>>12&15]+s[h>>>8&15]+s[h>>>20&15]+s[h>>>16&15]+s[h>>>28&15]+s[h>>>24&15]+s[y>>>4&15]+s[15&y]+s[y>>>12&15]+s[y>>>8&15]+s[y>>>20&15]+s[y>>>16&15]+s[y>>>28&15]+s[y>>>24&15]},I.prototype.toString=I.prototype.hex,I.prototype.digest=function(){this.finalize();var q=this.h0,E=this.h1,h=this.h2,y=this.h3;return[255&q,q>>>8&255,q>>>16&255,q>>>24&255,255&E,E>>>8&255,E>>>16&255,E>>>24&255,255&h,h>>>8&255,h>>>16&255,h>>>24&255,255&y,y>>>8&255,y>>>16&255,y>>>24&255]},I.prototype.array=I.prototype.digest,I.prototype.arrayBuffer=function(){this.finalize();var q=new ArrayBuffer(16),E=new Uint32Array(q);return E[0]=this.h0,E[1]=this.h1,E[2]=this.h2,E[3]=this.h3,q},I.prototype.buffer=I.prototype.arrayBuffer,I.prototype.base64=function(){for(var q,E,h,y="",x=this.array(),b=0;b<15;)q=x[b++],E=x[b++],h=x[b++],y+=g[q>>>2]+g[63&(q<<4|E>>>4)]+g[63&(E<<2|h>>>6)]+g[63&h];return q=x[b],y+=g[q>>>2]+g[q<<4&63]+"=="},f.prototype=new I,f.prototype.finalize=function(){if(I.prototype.finalize.call(this),this.inner){this.inner=!1;var q=this.array();I.call(this,this.sharedMemory),this.update(this.oKeyPad),this.update(q),I.prototype.finalize.call(this)}};var R=function(){var q=w("hex");i&&(q=S(q)),q.create=function(){return new I},q.update=function(y){return q.create().update(y)};for(var E=0;E<d.length;++E){var h=d[E];q[h]=w(h)}return q}();R.md5=R,R.md5.hmac=function(){var q=M("hex");q.create=function(y){return new f(y)},q.update=function(y,x){return q.create(y).update(x)};for(var E=0;E<d.length;++E){var h=d[E];q[h]=M(h)}return q}(),A?Yl.exports=R:n.md5=R}();var Rw=B0.exports;const O0=(t,e)=>{const n=Date.now(),r=`${t}:${n}:${Rw.md5(`${e}${n}`)}`,i=new TextEncoder().encode(r);return btoa(String.fromCharCode(...i))},tu=t=>{if(/^\d+$/.test(t)||!t||typeof t!="string"||t.length%4!=0||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(t))return!1;try{const e=atob(t);return btoa(e)===t}catch{return!1}},wa="/v1/aicc/bmserver",br="/v1/aicc/ccs";let Eo="",Pd="",Ld="",Sa="";function D0(){const t=O0(Pd,Ld);return bw.create({prefixUrl:`${Eo}`,timeout:!1,headers:{Authorization:t},hooks:{afterResponse:[async(e,n,r)=>{if(r.url.indexOf("heartbeat")!==-1)return r;const i=await r.clone().json();if(i.code!==0)throw new Error(JSON.stringify(i)||"请求失败");return r.json=async()=>i,r}]}})}async function Pn(t,e){const n=D0(),r="api/"+t.replace(/^\/+/,"");return n.post(r,{json:e}).json()}class Io{static requestPermission(){"Notification"in window&&Notification.permission==="default"&&Notification.requestPermission()}static async requestMediaPermissions(){try{return(await navigator.mediaDevices.enumerateDevices()).some(n=>n.kind==="audioinput"&&n.label!=="")?null:await navigator.mediaDevices.getUserMedia({audio:!0})}catch(e){return console.warn("获取音频权限失败:",e),null}}static show(e,n,r,i){if("Notification"in window&&Notification.permission==="granted"){const o=new Notification(e,{body:n,tag:`xy-global-notification${new Date().getTime()}`,renotify:!0});o.onclick=()=>{window.focus(),o.close(),r==null||r()},setTimeout(()=>o.close(),1e3*(i||3))}}static async checkMediaPermissions(){try{return(await navigator.mediaDevices.enumerateDevices()).some(e=>e.kind==="audioinput"&&e.label!=="")}catch(e){return console.warn("无法检查设备权限:",e),!1}}}const Qf=t=>Pn(`${br}/state/change`,t),xw=()=>async function(t,e){const n=D0(),r=t.replace(/^\/+/,"");return n.post(r,{json:e}).json()}("/heartbeat",{}),Tw=[],Ln=["call_number"],ds=["call_number"],Bw=["hangup"],vi=["hold","hangup","mute","transfer","consult","satisfaction","dtmf"],Hl=["hold","hangup","mute","transfer","consult"],kf=["consult_transfer","conference","consult_retrieve"],Ow=["hangup"],Dw=["hangup"],Ia=["answer","reject"],Gi=["hangup","consult","transfer","hold","mute","satisfaction","dtmf"],Uf=["hangup","whisper","force_insert","force_disconnect"],Nw=["hangup"],Fw=["hangup","cancel_whisper","force_insert"],Qw=["hangup"],kw=["hangup"];class DA{constructor(){this.roleData={agentInfo:()=>{var e;if(!((e=_.agentInfo)!=null&&e.agent_no))throw new Error(JSON.stringify({code:1,msg:"请先登录"}))},requestInfo:e=>{if(!e.data)throw new Error(JSON.stringify({code:1,msg:'Parameter "data" is required'}))},changeDevice:e=>{if(!e)throw new Error(JSON.stringify({code:1,msg:'Parameter "device" is required'}));const{answer_devices:n}=_.agentInfo;if(!n.split(",").map(r=>Number(r)).includes(e))throw new Error(JSON.stringify({code:1,msg:"当前状态不支持"}))},changeState:(e,n)=>{if(!e)throw new Error(JSON.stringify({code:1,msg:'Parameter "state" is required'}));if(!n)throw new Error(JSON.stringify({code:1,msg:'Parameter "state_name" is required'}));if(e===2&&(n==="通话中"||n==="整理"))throw new Error(JSON.stringify({code:1,msg:"当前状态不支持"}));if(![1,2].includes(e))throw new Error(JSON.stringify({code:1,msg:"当前状态不支持"}))},setAgentExplicit:e=>{const{out_display_select_switch:n,out_display_data:r}=_.agentInfo;if(n!==1)throw new Error(JSON.stringify({code:1,msg:"当前坐席设置未开启允许指定外显"}));if(!e)throw new Error(JSON.stringify({code:1,msg:'Parameter "number" is required'}));if(!(r||"").split("#").includes(e))throw new Error(JSON.stringify({code:1,msg:"当前外显号码不存在"}))}},this.changeDevice=async e=>{try{if(P.get("isCalling"))throw new Error(JSON.stringify({code:1,msg:"当前正在通话中,请勿切换设备"}));this.roleData.agentInfo(),this.roleData.requestInfo(e);const{data:n,success:r}=e,{device:i}=n;i===1&&await DA.initRtcFn(),this.roleData.changeDevice(i);const{agent_no:o}=_.agentInfo;await(a=>Pn(`${br}/device/change`,a))({agent_no:o,answer_device:i}),P.updateAnswerDevice(i);const A=P.get("actionConfigs");P.updateActionConfigs(A),i===2&&_.stateObject.state===Rt.UNREGISTERED&&await this._changeState({data:{..._.stateBeforeChange,state_name:_.stateBeforeChange.state===Rt.IDLE?"空闲":"忙碌"}}),r==null||r({code:0,msg:"请求成功"})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}}formatDate(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")} ${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}:${String(e.getSeconds()).padStart(2,"0")}`}static setInitRtcFn(e){this.initRtcFn=e}async _agentLogin(e){try{const r=await(n={agent_no:e},Pn(`${br}/agent/login`,n));_.agentInfo=r.data}catch(r){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(r.message).msg),r}var n}async _changeState(e){try{_.autoStateTimer&&(clearTimeout(_.autoStateTimer),_.autoStateTimer=null),this.roleData.agentInfo(),this.roleData.requestInfo(e);const{data:n,success:r}=e,{state:i,state_name:o}=n,{agent_no:A}=_.agentInfo;await Qf({agent_no:A,state_name:o,state:i}),i===Rt.IDLE?P.updateActionConfigs(Ln):i===Rt.BUSY&&P.updateActionConfigs(ds),_.stateObject={state:i,state_name:o},r==null||r({code:0,msg:"请求成功"})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async _getInCallCrmDetail(e){var n;try{const{phone:r}=e.data,i={};tu(r)?i.trace_id=r:i.phone=r.replace(/[\s\r\n-]+/g,"");const o=await(A=>Pn(`${wa}/crm/popups`,A))({...i});(n=e.success)==null||n.call(e,o)}catch(r){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(r.message).msg),r}}async changeState(e){try{if(P.get("isCalling"))throw new Error(JSON.stringify({code:1,msg:"当前正在通话中,请勿切换设备"}));_.autoStateTimer&&(clearTimeout(_.autoStateTimer),_.autoStateTimer=null),this.roleData.agentInfo(),this.roleData.requestInfo(e);const{data:n,success:r}=e,{state:i,state_name:o}=n;this.roleData.changeState(i,o);const{agent_no:A}=_.agentInfo;await Qf({agent_no:A,state_name:o,state:i}),(_.stateObject.state===Rt.IDLE||_.stateObject.state===Rt.BUSY&&o!=="整理")&&(_.stateBeforeChange=_.stateObject),i===Rt.IDLE?P.updateActionConfigs(Ln):i===Rt.BUSY&&P.updateActionConfigs(ds),_.stateObject={state:i,state_name:o},r==null||r({code:0,msg:"请求成功"})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async getIdleAgentList(e){var r;const{agent_no:n}=_.agentInfo;try{this.roleData.agentInfo();const i=await(o=>Pn(`${br}/agent/free`,o))({agent_no:n});(r=e.success)==null||r.call(e,i)}catch(i){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(i.message).msg),i}}async getAgentState(e){var n;try{const r=await Pn(`${wa}/agent/statecfg/list`,{}),i=(r.data||[]).filter(o=>o.enable===0).filter(o=>o.state!==0&&o.state!==3).filter(o=>o.state_name!=="通话中"&&o.state_name!=="整理"&&o.state_name!=="未注册"&&o.state_name!=="离线接听").map(o=>({state:o.state,state_name:o.state_name})).reverse();(n=e.success)==null||n.call(e,{...r,data:i})}catch(r){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(r.message).msg),r}}async setAgentExplicit(e){var n;try{this.roleData.agentInfo(),this.roleData.requestInfo(e),this.roleData.setAgentExplicit(e.data.number);const{agent_id:r}=_.agentInfo;await(i=>Pn(`${wa}/agent/update`,i))({agent_id:r,out_display_number:e.data.number}),P.updateSelectOutNumber(e.data.number),(n=e.success)==null||n.call(e,{code:0,msg:"请求成功"})}catch(r){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(r.message).msg),r}}async checkAgentLogin(e){var n;try{this.roleData.requestInfo(e);const{agent_no:r}=e.data;if(!r)throw new Error(JSON.stringify({code:1,msg:'Parameter "agent_no" is required'}));const i=await(o=>Pn(`${br}/agent/islogin`,o))({agent_no:r});(n=e.success)==null||n.call(e,i)}catch(r){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(r.message).msg),r}}async getCallRecord(e){try{this.roleData.agentInfo();const{success:n}=e,r=new Date,i=new Date(r.getFullYear(),r.getMonth(),r.getDate(),0,0,0),o=new Date(r.getFullYear(),r.getMonth(),r.getDate(),23,59,59),A=[this.formatDate(i),this.formatDate(o)],{agent_no:a}=_.agentInfo,s=await(g=>Pn(`${wa}/agent/recordpage`,g))({start_time:A[0],end_time:A[1],page_no:1,page_size:10,agent_no:a}),{code:l,msg:u,data:d}=s;n==null||n({code:l,msg:u,data:d})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async logout(e){this.roleData.agentInfo();try{const{agent_no:n}=_.agentInfo,{data:r,success:i}=e;await(o=>Pn(`${br}/agent/logout`,o))({...r,agent_no:n}),i==null||i({code:0,msg:""})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async listenCall(e){try{const{agent_no:n}=_.agentInfo,{data:r,success:i}=e;if(this.roleData.agentInfo(),this.roleData.requestInfo(e),!r.monitored_agent_no)throw new Error(JSON.stringify({code:1,msg:'Parameter "monitored_agent_no" is required'}));await(o=>Pn(`${br}/call/monitor`,o))({...r,monitor_agent_no:n}),_.monitoredAgentNo=r.monitored_agent_no,i==null||i({code:0,msg:""})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async earCall(e){try{const{agentInfo:n,monitoredAgentNo:r}=_,{agent_no:i}=n;this.roleData.agentInfo();const{success:o}=e;if(!r)throw new Error(JSON.stringify({code:1,msg:"当前未有监听坐席"}));await(A=>Pn(`${br}/call/whisper`,A))({monitored_agent_no:r,monitor_agent_no:i}),o==null||o({code:0,msg:""})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async stopEarCall(e){try{const{agentInfo:n,earSpeakAgent:r}=_;if(!r)throw new Error(JSON.stringify({code:1,msg:"当前没有正在耳语的坐席"}));const{agent_no:i}=n;this.roleData.agentInfo();const{success:o}=e;await(A=>Pn(`${br}/call/stopwhisper`,A))({monitor_agent_no:i,monitored_agent_no:r}),o==null||o({code:0,msg:""})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async forceInsert(e){try{const{agentInfo:n,monitoredAgentNo:r}=_,{agent_no:i}=n;this.roleData.agentInfo();const{success:o}=e;if(!r)throw new Error(JSON.stringify({code:1,msg:"当前未有监听坐席"}));await(A=>Pn(`${br}/call/bargein`,A))({monitored_agent_no:r,monitor_agent_no:i}),o==null||o({code:0,msg:""})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}async forceDisconnect(e){try{const{agentInfo:n,monitoredAgentNo:r}=_,{agent_no:i}=n;this.roleData.agentInfo();const{success:o}=e;if(!r)throw new Error(JSON.stringify({code:1,msg:"当前未有监听坐席"}));await(A=>Pn(`${br}/call/intercept`,A))({monitored_agent_no:r,monitor_agent_no:i}),o==null||o({code:0,msg:""})}catch(n){throw ge.emit(Ge.FAIL_NOTIFICATION,JSON.parse(n.message).msg),n}}}const Uw=console.log,Gf=(...t)=>{_.logBuiltinEnabled&&Uw(...t)};let ni=null;class cn{constructor(e,n){this.url=e,this.onOpenCallback=n,this.ws=null,this.heartbeatWorker=null,this.reconnectDelay=3e3,this.manualClose=!1,this.apiClient=new DA,this.sipClient=null,this.pendingMessages=new Map,this.initWebSocket()}static getInstance({url:e,sipClient:n,onOpen:r}){if(!ni){if(!e)throw new Error("WebSocket 尚未初始化");ni=new cn(e,r),ni.sipClient=n}return ni}setSipClient(e){this.sipClient=e}stateIdleChange(){const{state:e}=_.stateObject;e!==Rt.IDLE&&this.apiClient._changeState({data:{..._.stateBeforeChange,state_name:_.stateBeforeChange.state===Rt.IDLE?"空闲":"忙碌"}})}inCallAutoAnswer(){const{soft_device_auto_answer:e,auto_answer_time:n}=_.agentInfo,r=e===1,i=P.get("direction");if(r&&i===wn.INCOMING){const o=Number(n)||0;o>0&&(_.autoAnswerTimer=setTimeout(()=>{var A;(A=this.sipClient)==null||A.answerCall(),_.autoAnswerTimer=null},1e3*o-500))}}async getCustomerInfo(e){try{await this.apiClient._getInCallCrmDetail({data:{phone:e},success:n=>{P.updateCustomerInfo(n.data||{phone:n.data.phone,is_vip:0,customer_name:"未知客户",city:"未知",province:"未知",contact_count:0,in_contact_count:0,trace_id:n.data.trace_id,contact_count_month:0,in_contact_count_month:0})}})}catch{}}putAgentState(e,n){if(!e)return;if(n===5)return void this.stateIdleChange();_.sessionId="";const{post_call_process_time:r}=_.agentInfo,i=r||0;if(_.autoStateTimer&&(clearTimeout(_.autoStateTimer),_.autoStateTimer=null),P.updateCustomerInfo(void 0),i>0){const{state:o}=_.stateObject;if(o===Rt.IDLE)return;this.apiClient._changeState({data:{state:Rt.BUSY,state_name:"整理"}}),_.autoStateTimer=setTimeout(()=>{_.autoStateTimer=null,this.stateIdleChange()},1e3*i)}else this.stateIdleChange()}stateBusyChange(){_.sessionId="",clearTimeout(_.autoStateTimer),P.updateCustomerInfo(void 0),this.apiClient._changeState({data:{state:Rt.BUSY,state_name:"忙碌"}})}initWebSocket(){var n;if(((n=this.ws)==null?void 0:n.readyState)===1||!P.get("isNextState")||this.manualClose)return;const e=O0(Pd,Ld);this.ws=new WebSocket(this.url+e),this.ws.onopen=()=>{const r=new Date().getTime();this.sendMessage({type:0,msg_id:r}),this.pendingMessages.set(r,performance.now()),this.startHeartbeat(),this.manualClose=!1,this.onOpenCallback&&this.onOpenCallback()},this.ws.onmessage=async r=>{var u;const i=JSON.parse(r.data),{type:o,data:A,code:a,msg:s,msg_id:l}=i;if(o===0&&l){const d=this.pendingMessages.get(l),g=performance.now()-d;_.latency=parseFloat(g.toFixed(2)),this.pendingMessages.delete(l)}if(o!==0&&Gf("%cWebSocket 收到消息:","color: blue; font-weight: bold;",i),o!==rt.OUT_CALL&&o!==rt.PREVIEW_OUT_CALL||(a!==0?(P.reset(),ge.emit(oe.OUT_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s),P.updateActionConfigs(Ln),setTimeout(()=>{P.updateCustomerInfo(void 0)},500),this.stateIdleChange()):a===0&&(ge.emit(oe.OUT_SUCCESS),clearTimeout(_.autoStateTimer))),o===rt.AGENT_STATE){const{state:d,state_name:g}=A;_.stateObject={state:d,state_name:g},(u=_.stateBeforeChange)!=null&&u.state||_.stateObject.state!==Rt.IDLE&&(_.stateObject.state!==Rt.BUSY||g==="整理")||(_.stateBeforeChange=_.stateObject),g==="振铃中"&&P.updateDisplayText(Ht.AGENT_RINGING);const p=P.get("isCalling");d!==Rt.UNREGISTERED||p||P.updateActionConfigs(Tw),d===Rt.IDLE&&_.stateObject.state===Rt.UNREGISTERED&&P.updateActionConfigs(Ln),ge.emit(oe.AGENT_STATE,{state:d,state_name:g})}else if(o===rt.OUT_CALL_INCOMING_CALL){try{await this.getCustomerInfo(A.trace_id||A.customer_phone)}catch(d){console.error(d)}A.preview_task_id?ge.emit(oe.PREVIEW_OUT_INCOMING_CALL,{customer_phone:A.customer_phone,session_id:A.session_id,preview_task_id:A.preview_task_id,trace_id:A.trace_id}):A.direction===1?ge.emit(oe.OUT_INCOMING_CALL,{customer_phone:A.customer_phone,session_id:A.session_id,trace_id:A.trace_id}):A.direction===8&&ge.emit(oe.INTERNAL_OUT_INCOMING_CALL,{customer_phone:A.customer_phone,session_id:A.session_id,trace_id:A.trace_id}),_.sessionId=A.session_id,P.updateActionConfigs(Bw,A.direction!==8)}else if(o===rt.OUT_CALL_END)if(P.updateDisplayText(""),A.device_type===1&&A.agent_no===_.agentInfo.agent_no)P.reset(),ge.emit(oe.OUT_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(Ln),this.putAgentState(!0);else if(A.device_type===2&&A.agent_no===_.agentInfo.agent_no)P.reset(),ge.emit(oe.OUR_SIDE_CONSULT_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(Ln),this.putAgentState(!0);else if(A.device_type===2&&A.agent_no!==_.agentInfo.agent_no)P.get("isCalling")&&(P.updateDisplayText(Ht.CALLING),ge.emit(oe.OTHER_SIDE_CONSULT_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(vi));else if(A.device_type===3&&A.agent_no===_.agentInfo.agent_no)P.reset(),ge.emit(oe.THREE_WAY_OUR_SIDE_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(Ln),this.putAgentState(!0);else if(A.device_type===4&&A.agent_no===_.agentInfo.agent_no)P.reset(),ge.emit(oe.TRANSFER_END,{session_id:A.session_id}),P.updateActionConfigs(Ln),this.putAgentState(!0);else if(A.device_type===4&&A.agent_no!==_.agentInfo.agent_no){ge.emit(oe.TRANSFER_FAILED,"未知原因"),ge.emit(Ge.FAIL_NOTIFICATION,"转接失败");const d=P.get("direction");d===wn.OUTGOING?P.updateActionConfigs(vi):d===wn.INCOMING&&P.updateActionConfigs(Gi)}else A.device_type===5&&A.agent_no===_.agentInfo.agent_no&&(_.monitoredAgentNo="",_.earSpeakAgent="",P.reset(),ge.emit(oe.LISTEN_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(Ln),this.putAgentState(!0,5));else if(o===rt.OUT_CALL_RINGING)A.type===1&&(ge.emit(oe.OUT_RINGING,{session_id:_.sessionId,type:A.type}),P.updateDisplayText(Ht.RINGING));else if(o===rt.OUT_CALL_ANSWER)clearTimeout(_.autoStateTimer),P.updateIsCalling(!0),P.updateOutCallIsAnswer(!0),P.updateDisplayText(Ht.CALLING),A.direction===8?(ge.emit(oe.INTERNAL_OUT_OFF_ANSWER,{session_id:_.sessionId}),P.updateActionConfigs(Hl)):(ge.emit(oe.OUT_OFF_ANSWER,{session_id:_.sessionId}),P.updateActionConfigs(vi));else if(o===rt.CONSULT_RINGING)ge.emit(oe.CONSULT_RINGING,{session_id:A.session_id}),P.updateDisplayText(Ht.AGENT_RINGING),P.updateActionConfigs([]),clearTimeout(_.autoStateTimer);else if(o===rt.CONSULT_ANSWER)ge.emit(oe.CONSULT_OFF_HOOK,{session_id:A.session_id}),P.updateConsultIsAnswer(!0),P.updateDisplayText(Ht.CONSULTING),P.updateActionConfigs(kf);else if(o===rt.CONSULT_FAIL)ge.emit(oe.CONSULT_FAILED,{custom_reason:A.custom_reason}),P.updateDisplayText(Ht.CALLING),P.updateActionConfigs(vi);else if(o===rt.CONSULT_CALL_IN)ge.emit(oe.CONSULT_INCOMING,{agent_no:A.agent_no,agent_mane:A.agent_name,session_id:A.session_id}),_.sessionId=A.session_id,P.updateIsCalling(!0),P.updateDirection(wn.CONSULT),P.updateDisplayText(Ht.CONSULT_CALL_IN),P.updateActionConfigs(Ia),_.enableBrowserAlert&&Io.show("📞 咨询来电",`坐席 [${A.agent_name}] 正在咨询...`,()=>{ge.emit(Ge.NOTIFICATION_CLICK,{agent_mane:A.agent_name,agent_no:A.agent_no})},_.browserAlertTime);else if(o===rt.CONSULT_CALL_IN_SUCCESS)ge.emit(oe.CONSULT_CALL_IN_SUCCESS,{session_id:A.session_id}),P.updateConsultIsAnswer(!0),P.updateDisplayText(Ht.CALLING),P.updateActionConfigs(Ow);else if(o===rt.CONSULT_RETURN_CALL_SUCCESS)A.status==="success"?(P.updateConsultIsAnswer(!1),ge.emit(oe.CONSULT_RETURN_CALL_SUCCESS),P.updateDisplayText(Ht.CALLING),ge.emit(oe.OTHER_SIDE_CONSULT_HANGUP),P.updateActionConfigs(vi)):ge.emit(Ge.FAIL_NOTIFICATION,"媒体失败");else if(o===rt.MUTE)a===0?(P.updateIsMuted(!0),ge.emit(oe.MUTE_SUCCESS),P.updateDisplayText(Ht.MUTING)):(ge.emit(oe.MUTE_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s));else if(o===rt.UNMUTE)a===0?(P.updateIsMuted(!1),ge.emit(oe.UNMUTE_SUCCESS),P.updateDisplayText(Ht.CALLING)):(ge.emit(oe.UNMUTE_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s));else if(o===rt.CALL_HOLD)a===0?(P.updateIsHold(!0),P.updateDisplayText(Ht.HOLDING),ge.emit(oe.HOLD_SUCCESS)):(ge.emit(oe.HOLD_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s));else if(o===rt.CALL_UNHOLD)a===0?(P.updateDisplayText(Ht.CALLING),P.updateIsHold(!1),ge.emit(oe.UNHOLD_SUCCESS)):(ge.emit(oe.UNHOLD_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s));else if(o===rt.CONSULT_TRANSFER)a===0?ge.emit(oe.CONSULT_TRANSFER_SUCCESS):(ge.emit(oe.CONSULT_TRANSFER_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s));else if(o===rt.CONSULT_TRANSFER_FAILED)ge.emit(oe.CONSULT_TRANSFER_FAILED,A.status);else if(o===rt.CONSULT_TRANSFER_OFF_HOOK)P.updateDirection(wn.INCOMING),P.updateDisplayText(Ht.CALLING),ge.emit(oe.CONSULT_TRANSFER_OFF_HOOK),P.updateActionConfigs(Gi),P.updateIncomingIsAnswer(!0),P.updateConsultIsAnswer(!1);else if(o===rt.INCOMING_CALL){clearTimeout(_.autoStateTimer),_.sessionId=A.session_id;try{await this.getCustomerInfo(A.trace_id||A.customer_phone)}catch(d){console.error(d)}P.updateIsCalling(!0),P.updateDirection(wn.INCOMING),P.updateDisplayText(Ht.INCOMING_CALL),this.inCallAutoAnswer(),A.direction===1&&ge.emit(oe.INCOMING_CALL,{customer_phone:A.customer_phone,trace_id:A.trace_id,session_id:A.session_id}),A.direction===8&&ge.emit(oe.INCOMING_CALL_IN,{customer_phone:A.customer_phone,trace_id:A.trace_id,session_id:A.session_id}),A.direction===3&&ge.emit(oe.PREDICT_INCOMING_CALL,{customer_phone:A.customer_phone,trace_id:A.trace_id,session_id:A.session_id}),A.direction===6&&ge.emit(oe.DUAL_CALL_INCOMING_CALL,{customer_phone:A.customer_phone,trace_id:A.trace_id,session_id:A.session_id}),P.updateActionConfigs(Ia),_.enableBrowserAlert&&Io.show("📞 客户来电",`客户 [${A.customer_phone}] 正在呼入...`,()=>{ge.emit(Ge.NOTIFICATION_CLICK,{customer_phone:A.customer_phone})},_.browserAlertTime)}else if(o===rt.INCOMING_CALL_OFF_HOOK)P.updateIncomingIsAnswer(!0),A.direction===8?(P.updateActionConfigs(Hl),ge.emit(oe.INCOMING_CALL_IN_OFF_HOOK,{session_id:_.sessionId})):(P.updateActionConfigs(Gi),ge.emit(oe.INCOMING_CALL_OFF_HOOK,{session_id:_.sessionId})),P.updateDisplayText(Ht.CALLING);else if(o===rt.INCOMING_CALL_END)if(P.updateDisplayText(""),A.device_type!==1&&A.device_type!==7||A.agent_no!==_.agentInfo.agent_no)if(A.device_type===2&&A.agent_no===_.agentInfo.agent_no)P.reset(),ge.emit(oe.OUR_SIDE_CONSULT_HANGUP,{session_id:A.session_id}),this.putAgentState(!0),P.updateActionConfigs(Ln);else if(A.device_type===2&&A.agent_no!==_.agentInfo.agent_no)P.updateDisplayText(Ht.CALLING),ge.emit(oe.OTHER_SIDE_CONSULT_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(vi);else if(A.device_type===3&&A.agent_no===_.agentInfo.agent_no)this.putAgentState(!0),P.reset(),ge.emit(oe.THREE_WAY_OUR_SIDE_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(Ln);else if(A.device_type===4&&A.agent_no===_.agentInfo.agent_no)this.putAgentState(!0),P.reset(),ge.emit(oe.TRANSFER_END,{session_id:A.session_id}),P.updateActionConfigs(Ln);else if(A.device_type===4&&A.agent_no!==_.agentInfo.agent_no){ge.emit(oe.TRANSFER_FAILED,"未知原因"),ge.emit(Ge.FAIL_NOTIFICATION,"转接失败");const d=P.get("direction");d===wn.OUTGOING?P.updateActionConfigs(vi):d===wn.INCOMING&&P.updateActionConfigs(Gi)}else A.device_type===5&&A.agent_no===_.agentInfo.agent_no&&(this.putAgentState(!0,5),_.monitoredAgentNo="",_.earSpeakAgent="",P.reset(),ge.emit(oe.LISTEN_HANGUP,{session_id:A.session_id}),P.updateActionConfigs(Ln));else this.putAgentState(!0),P.reset(),ge.emit(oe.INCOMING_CALL_END,{session_id:A.session_id}),P.updateActionConfigs(Ln);else if(o===rt.SATISFACTION_EVALUATION)a===0?ge.emit(oe.SATISFACTION_EVALUATION_SUCCESS):(ge.emit(oe.SATISFACTION_EVALUATION_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s));else if(o===rt.CONSULT_THREE_WAY)a!==0?(ge.emit(oe.CONSULT_THREE_WAY_FAILED,s),ge.emit(Ge.FAIL_NOTIFICATION,s)):a===0&&P.updateIsMeeting(!0);else if(o===rt.CONSULT_THREE_WAY_RESULT)A.status==="success"?(P.updateDirection(wn.MEETING),P.updateDisplayText(Ht.MEETING),P.updateActionConfigs(Dw),ge.emit(oe.CONSULT_THREE_WAY_SUCCESS)):(ge.emit(oe.CONSULT_THREE_WAY_FAILED,{conf_name:A.conf_name}),P.updateIsMeeting(!1));else if(o===rt.TRANSFER_INCOMING_CALL)clearTimeout(_.autoStateTimer),A.agent_no===_.agentInfo.agent_no?(P.updateDisplayText(Ht.TRANSFERRING),ge.emit(oe.TRANSFER_PROGRESS),P.updateActionConfigs([]),P.updateTransferIsAnswer(!0)):(_.sessionId=A.session_id,ge.emit(oe.TRANSFER_INCOMING_CALL,{agent_no:A.agent_no,agent_name:A.agent_name,session_id:A.session_id}),P.updateIsCalling(!0),P.updateDirection(wn.TRANSFER),P.updateDisplayText(Ht.TRANSFER_INCOMING_CALL),P.updateActionConfigs(Ia),_.enableBrowserAlert&&Io.show("📞 转接来电",`坐席 [${A.agent_no}] 正在转接...`,()=>{ge.emit(Ge.NOTIFICATION_CLICK,{agent_no:A.agent_no})},_.browserAlertTime));else if(o===rt.TRANSFER_OFF_HOOK)ge.emit(oe.TRANSFER_OFF_HOOK,{session_id:_.sessionId}),P.updateTransferIsAnswer(!1),P.updateDisplayText(Ht.CALLING),P.updateActionConfigs(Gi,A.direction!==8);else if(o===rt.TRANSFER_FAILED){if(A.status==="failed"){ge.emit(oe.TRANSFER_FAILED,"未知原因"),ge.emit(Ge.FAIL_NOTIFICATION,"转接失败");const d=P.get("direction");d===wn.OUTGOING?P.updateActionConfigs(vi):d===wn.INCOMING&&P.updateActionConfigs(Gi)}}else o===rt.KICK_OFFLINE?ge.emit(Ge.KICK_OFF):o===rt.CONTINUOUS_NOT_ANSWER?(ge.emit(Ge.FAIL_NOTIFICATION,`已连续 ${A.miss_count} 次未接, 设置忙碌`),this.stateBusyChange()):o===rt.SIGN_OUT?ge.emit(Ge.SIGN_OUT):o===rt.SIGN_IN_SWITCH_DEVICE?ge.emit(Ge.SIGN_IN_SWITCH_DEVICE,A):o===rt.LISTEN_INCOMING_CALL?(clearTimeout(_.autoStateTimer),_.sessionId=A.session_id,P.updateIsCalling(!0),P.updateDirection(wn.INCOMING),this.inCallAutoAnswer(),P.updateDisplayText(Ht.LISTENING),P.updateActionConfigs(Ia),ge.emit(oe.LISTEN_INCOMING_CALL,{session_id:A.session_id}),_.enableBrowserAlert&&Io.show("📞 监听来电","正在来电...",()=>{ge.emit(Ge.NOTIFICATION_CLICK,{customer_phone:A.customer_phone})},_.browserAlertTime)):o===rt.LISTEN_INCOMING_CALL_OFF_HOOK?(_.monitoredAgentNo=A.monitored_agent_no,_.earSpeakAgent="",P.updateIncomingIsAnswer(!0),ge.emit(oe.LISTEN_INCOMING_CALL_OFF_HOOK,{session_id:_.sessionId,monitored_agent_no:A.monitored_agent_no}),P.updateActionConfigs(Uf),P.updateDisplayText(Ht.CALLING)):o===rt.LISTEN_CALL_FAILED?A.status==="failed"&&(ge.emit(oe.LISTEN_CALL_FAILED),_.monitoredAgentNo=""):o===rt.EAR_SPEECH?A.status==="success"?(A.monitored_agent_no===_.agentInfo.agent_no&&(P.updateActionConfigs(Nw),ge.emit(oe.EAR_SPEECH_BE_SUCCESS)),A.monitor_agent_no===_.agentInfo.agent_no&&(P.updateActionConfigs(Fw),ge.emit(oe.EAR_SPEECH_SUCCESS,{monitored_agent_no:A.monitored_agent_no,monitor_agent_no:A.monitor_agent_no}),_.earSpeakAgent=A.monitored_agent_no)):ge.emit(oe.EAR_SPEECH_FAILED):o===rt.STOP_EAR_SPEECH?A.status==="success"?(A.monitored_agent_no===_.agentInfo.agent_no&&P.updateActionConfigs(Gi),A.monitor_agent_no===_.agentInfo.agent_no&&P.updateActionConfigs(Uf),_.earSpeakAgent="",ge.emit(oe.STOP_EAR_SPEECH_SUCCESS)):ge.emit(oe.STOP_EAR_SPEECH_FAILED):o===rt.CALL_FORCE_INSERT?A.status==="success"?(A.monitored_agent_no===_.agentInfo.agent_no&&(P.updateActionConfigs(kw),ge.emit(oe.CALL_FORCE_INSERT_SUCCESS,{monitored_agent_no:A.monitored_agent_no,monitor_agent_no:A.monitor_agent_no})),A.monitor_agent_no===_.agentInfo.agent_no&&(P.updateActionConfigs(Qw),ge.emit(oe.CALL_FORCE_INSERT_SUCCESS_LISTENER,{monitored_agent_no:A.monitored_agent_no,monitor_agent_no:A.monitor_agent_no}))):ge.emit(oe.CALL_FORCE_INSERT_FAILED):o===rt.INTERNAL_CALL_START_CONSULT?A.agent_no===_.agentInfo.agent_no?(P.updateConsultIsAnswer(!0),P.updateActionConfigs(kf),P.updateDisplayText(Ht.CONSULTING)):(P.updateDisplayText(Ht.OTHER_SIDE_CONSULTING),P.updateActionConfigs([])):o===rt.INTERNAL_CALL_END_CONSULT?(P.updateActionConfigs(Hl),P.updateDisplayText(""),P.updateConsultIsAnswer(!1)):o===rt.CALL_SIP_INCOMING_CALL&&ge.emit(oe.CALL_SIP_INCOMING_CALL)},this.ws.onclose=r=>{ge.emit(Ge.FAIL_NOTIFICATION,"链接已断开,请检查网络"),this.stopHeartbeat();const i=P.get("isNextState");!this.manualClose&&i&&setTimeout(()=>this.initWebSocket(),this.reconnectDelay)},this.ws.onerror=r=>{var i;ge.emit(Ge.FAIL_NOTIFICATION,"连接失败,请检查网络"),(i=this.ws)==null||i.close()}}startHeartbeat(){const e=new Blob([`
164
164
  let timer;
165
165
  self.onmessage = function (e) {
166
166
  if (e.data === 'start') {
@@ -683,7 +683,7 @@ html body {
683
683
  &:hover {
684
684
  opacity: 0.9;
685
685
  }
686
- `;function CO({title:t,content:e,icon:n,onOk:r,onCancel:i}){const o=document.createElement("div");document.body.appendChild(o);const A=gO.createRoot(o),a=()=>{A.unmount(),o.remove()},s=async()=>{r&&await r(),a()},l=()=>{i==null||i(),a()};A.render(ie.jsx(fO,{children:ie.jsxs(hO,{children:[ie.jsxs(pO,{children:[n&&ie.jsx(mO,{children:n}),t]}),ie.jsx(VO,{children:e}),ie.jsxs(vO,{children:[ie.jsx(Hm,{onClick:l,children:"取消"}),ie.jsx(Hm,{primary:!0,onClick:s,children:"确定"})]})]})}))}const qO={1:ie.jsx(Vt,{name:"ruandianhua"}),2:ie.jsx(Vt,{name:"pnhone"}),3:ie.jsx(Vt,{name:"sip-phone"})},EO={call_number:"",answer:"接听",reject:"拒接",hangup:"挂机",dtmf:"DTMF",unhold:"取消保持",hold:"保持",mute:"静音",unmute:"取消静音",satisfaction:"满意度",consult:"咨询",consult_transfer:"咨询转接",consult_retrieve:"取回通话",conference:"三方会议",whisper:"耳语",cancel_whisper:"取消耳语",force_insert:"强插",force_disconnect:"强拆"},yO={空闲:1,离线:0,未注册:4},wO=T.lazy(()=>Promise.resolve().then(()=>require("./ConsultModel-DqTM4jpo.js"))),SO=T.lazy(()=>Promise.resolve().then(()=>require("./TransferModel-BxMwz-uO.js"))),pc=rn.div`
686
+ `;function CO({title:t,content:e,icon:n,onOk:r,onCancel:i}){const o=document.createElement("div");document.body.appendChild(o);const A=gO.createRoot(o),a=()=>{A.unmount(),o.remove()},s=async()=>{r&&await r(),a()},l=()=>{i==null||i(),a()};A.render(ie.jsx(fO,{children:ie.jsxs(hO,{children:[ie.jsxs(pO,{children:[n&&ie.jsx(mO,{children:n}),t]}),ie.jsx(VO,{children:e}),ie.jsxs(vO,{children:[ie.jsx(Hm,{onClick:l,children:"取消"}),ie.jsx(Hm,{primary:!0,onClick:s,children:"确定"})]})]})}))}const qO={1:ie.jsx(Vt,{name:"ruandianhua"}),2:ie.jsx(Vt,{name:"pnhone"}),3:ie.jsx(Vt,{name:"sip-phone"})},EO={call_number:"",answer:"接听",reject:"拒接",hangup:"挂机",dtmf:"DTMF",unhold:"取消保持",hold:"保持",mute:"静音",unmute:"取消静音",satisfaction:"满意度",consult:"咨询",consult_transfer:"咨询转接",consult_retrieve:"取回通话",conference:"三方会议",whisper:"耳语",cancel_whisper:"取消耳语",force_insert:"强插",force_disconnect:"强拆"},yO={空闲:1,离线:0,未注册:4},wO=T.lazy(()=>Promise.resolve().then(()=>require("./ConsultModel-D8pCfHso.js"))),SO=T.lazy(()=>Promise.resolve().then(()=>require("./TransferModel-BZ610EDj.js"))),pc=rn.div`
687
687
  width: 25px;
688
688
  height: 25px;
689
689
  background: ${({bg:t})=>t};
@@ -691,4 +691,4 @@ html body {
691
691
  display: flex;
692
692
  justify-content: center;
693
693
  align-items: center;
694
- `,IO=t=>{var Ue,D,fe;const{style:e,logBuiltinEnabled:n,browserAlertTime:r,enableBrowserAlert:i,agentNo:o,appKey:A,appSecret:a,url:s,onCallBack:l,ringingCardShow:u=!0,onLoginCancel:d,isCheckLogin:g,...p}=t,{height:V,busy:v,idle:m,unavailable:C,selectOutNumberColor:w}=e||{},S=T.useRef(),M=T.useRef(),[I,f]=T.useState(new Audio(cO)),[R,q]=T.useState(new Audio(uO)),[E,h]=T.useState(),[y,x]=T.useState(),[b,B]=T.useState(!1),[O,N]=T.useState(new Date().getTime()),[F,j]=T.useState(),[Y,H]=T.useState(),[L,G]=T.useState([]),[X,K]=T.useState([]),[J,z]=T.useState(""),[te,W]=T.useState(!1),[Ae,le]=T.useState([]),[ue,ne]=T.useState(""),[me,Z]=T.useState(""),[de,ce]=T.useState(!1),[Ee,Se]=T.useState(!1),[Ve,Te]=T.useState(),[Fe,ke]=T.useState(new Date().getTime()),[we,pe]=T.useState(!0),[be,Le]=T.useState(""),et=k=>{switch(k){case Rt.IDLE:return m||"#1D92E9";case Rt.BUSY:return v||"#F5212D";case Rt.UNREGISTERED:return C||"#faad14";case Rt.OFFLINE:return C||"#8c8c8c";default:return"#1D92E9"}};T.useEffect(()=>((async()=>(B(!0),S.current=Bn.getInstance({agentNo:o,appKey:A,appSecret:a,url:s}),nt(),S.current.on(Ge.PHONE_BAR_OPERATION,k=>{console.log(k),G(k)}),g?await S.current.agent_api.checkAgentLogin({data:{agent_no:o},success:async k=>{k.data.is_login?CO({title:"当前账号已登录!",icon:ie.jsx(Vt,{name:"wing",size:20}),content:"是否继续登录",onOk:async()=>{await S.current.init({...p,logBuiltinEnabled:n,browserAlertTime:r,enableBrowserAlert:i}),M.current=S.current.getAgentData()},onCancel:()=>{d==null||d()}}):(await S.current.init({...p,logBuiltinEnabled:n,browserAlertTime:r,enableBrowserAlert:i}),M.current=S.current.getAgentData())}}):(await S.current.init({...p,logBuiltinEnabled:n,browserAlertTime:r,enableBrowserAlert:i}),M.current=S.current.getAgentData()),N(new Date().getTime()),B(!1)))(),()=>{var k;(k=S.current)==null||k.destroy()}),[]);const nt=()=>{var k,ae;(k=S.current)==null||k.on(Ge.EVENT_ALL,({event:ee,data:Ce})=>{switch(ee){case oe.OUT_SUCCESS:case oe.CONSULT_RINGING:{je(I),Te("out");return}case oe.OUT_INCOMING_CALL:case oe.INTERNAL_OUT_INCOMING_CALL:{l==null||l(ee,{customer_phone:Ce.customer_phone,session_id:Ce.session_id});return}case oe.PREVIEW_OUT_INCOMING_CALL:{l==null||l(oe.PREVIEW_OUT_INCOMING_CALL,{customer_phone:Ce.customer_phone,session_id:Ce.session_id,preview_task_id:Ce.preview_task_id});return}case oe.OUT_OFF_ANSWER:case oe.INTERNAL_OUT_OFF_ANSWER:case oe.OUT_FAILED:case oe.CONSULT_FAILED:case oe.OUT_RINGING:case oe.CONSULT_OFF_HOOK:{ee===oe.OUT_OFF_ANSWER&&(l==null||l(ee,{session_id:Ce.session_id})),Qe(I);return}case oe.CONSULT_INCOMING:case oe.TRANSFER_INCOMING_CALL:case oe.LISTEN_INCOMING_CALL:case oe.INCOMING_CALL_IN:case oe.INCOMING_CALL:{Te("in"),(ee===oe.CONSULT_INCOMING||ee===oe.TRANSFER_INCOMING_CALL)&&(l==null||l(ee,{agent_no:Ce.agent_no,agent_name:Ce.agent_name,session_id:Ce.session_id})),ee===oe.INCOMING_CALL?l==null||l(oe.INCOMING_CALL,{customer_phone:Ce.customer_phone,session_id:Ce.session_id}):ee===oe.INCOMING_CALL_IN?l==null||l(oe.INCOMING_CALL_IN,{customer_phone:Ce.customer_phone,session_id:Ce.session_id}):ee===oe.LISTEN_INCOMING_CALL&&(l==null||l(oe.LISTEN_INCOMING_CALL,{session_id:Ce.session_id})),je(R);return}case oe.PREDICT_INCOMING_CALL:{Te("out"),ee===oe.PREDICT_INCOMING_CALL&&(l==null||l(oe.PREDICT_INCOMING_CALL,{customer_phone:Ce.customer_phone,session_id:Ce.session_id})),je(R);return}case oe.DUAL_CALL_INCOMING_CALL:{Te("out"),ee===oe.DUAL_CALL_INCOMING_CALL&&(l==null||l(oe.DUAL_CALL_INCOMING_CALL,{customer_phone:Ce.customer_phone,session_id:Ce.session_id})),je(R);return}case oe.TRANSFER_OFF_HOOK:case oe.LISTEN_INCOMING_CALL_OFF_HOOK:case oe.CONSULT_CALL_IN_SUCCESS:case oe.INCOMING_CALL_IN_OFF_HOOK:case oe.INCOMING_CALL_OFF_HOOK:{ee===oe.LISTEN_INCOMING_CALL_OFF_HOOK?l==null||l(ee,{session_id:Ce.session_id,monitored_agent_no:Ce.monitored_agent_no}):l==null||l(ee,{session_id:Ce.session_id}),Qe(R);return}case oe.OUT_HANGUP:case oe.LISTEN_HANGUP:case oe.LISTEN_CALL_FAILED:case oe.TRANSFER_END:case oe.THREE_WAY_OUR_SIDE_HANGUP:case oe.OUR_SIDE_CONSULT_HANGUP:case oe.OTHER_SIDE_CONSULT_HANGUP:case oe.INCOMING_CALL_END:{l==null||l(ee,{session_id:Ce.session_id}),Qe(R),Qe(I),Te(void 0),ce(!1),Se(!1);return}case oe.REJECT:l==null||l(ee,{session_id:Ce.session_id});return;default:return null}}),(ae=S.current)==null||ae.on(oe.AGENT_STATE,ee=>{H(ee.state_name),N(new Date().getTime()),l==null||l(oe.AGENT_STATE,ee)}).on(oe.CALL_PROGRESS,ee=>{z(ee)}).on(Ge.WEBSITE_DELAY,ee=>{h(ee)}).on(oe.CUSTOMER_INFO,ee=>{x(ee),ee&&pe(!0)}).on(Ge.AGENT_INIT_STATUS,ee=>{if(ee){const{default_device:Ce,init_state:ze,out_display_select_switch:tt,out_display_data:Dt,stateObject:{state_name:gt}}=S.current.getAgentData();W(tt===1),tt===1&&le((Dt||"").split("#")),j(Ce),H(gt),Be()}}).on(Ge.SELECT_EXTERNAL_NUMBER,ee=>{ne(ee)}).on(Ge.FAIL_NOTIFICATION,ee=>{St.error(ee)}).on(Ge.KICK_OFF,()=>{l?l==null||l(Ge.KICK_OFF):St.warning("您的座席账号已在别处登录,请重新登录。如非您本人操作,请及时修改密码。"),H("")}).on(Ge.DESTROY,()=>{l==null||l(Ge.DESTROY),St.success("已离线")}).on(Ge.NETWORK_OFFLINE,()=>{St.warning("网络已断开,请检查网络设置。")}).on(Ge.NETWORK_ONLINE,()=>{St.success("网络已恢复")}).on(Ge.SIGN_OUT,()=>{l==null||l(Ge.SIGN_OUT),St.success("已被签出")}).on(oe.LISTEN_CALL_FAILED,()=>{l==null||l(oe.LISTEN_CALL_FAILED),St.error("监听失败")}).on(oe.EAR_SPEECH_SUCCESS,({monitored_agent_no:ee})=>{l==null||l(oe.EAR_SPEECH_SUCCESS,{monitored_agent_no:ee}),St.success("正在耳语")}).on(oe.EAR_SPEECH_BE_SUCCESS,({monitor_agent_no:ee})=>{l==null||l(oe.EAR_SPEECH_BE_SUCCESS,{monitor_agent_no:ee}),St.success(`${ee}正在与你耳语`)}).on(oe.EAR_SPEECH_FAILED,()=>{l==null||l(oe.EAR_SPEECH_FAILED),St.error("耳语失败")}).on(oe.STOP_EAR_SPEECH_SUCCESS,()=>{l==null||l(oe.STOP_EAR_SPEECH_SUCCESS),St.success("停止耳语")}).on(oe.CALL_FORCE_INSERT_SUCCESS,({monitored_agent_no:ee,monitor_agent_no:Ce})=>{l==null||l(oe.CALL_FORCE_INSERT_SUCCESS,{monitored_agent_no:ee,monitor_agent_no:Ce}),St.success("强插成功")}).on(oe.CALL_FORCE_INSERT_SUCCESS_LISTENER,({monitored_agent_no:ee,monitor_agent_no:Ce})=>{l==null||l(oe.CALL_FORCE_INSERT_SUCCESS_LISTENER,{monitored_agent_no:ee,monitor_agent_no:Ce}),St.success(`${Ce}强插`)}).on(Ge.SIGN_IN_SWITCH_DEVICE,ee=>{l==null||l(Ge.SIGN_IN_SWITCH_DEVICE),St.success(`已被切换${ee.answer_device===2?"手机模式":"SIP 话机"}设备`)}).on(oe.CALL_SIP_INCOMING_CALL,()=>{St.success("SIP话机有新的呼入")})};T.useEffect(()=>{var k;(k=S.current)==null||k.setBrowserAlertTime(r||3)},[r]),T.useEffect(()=>{var k;(k=S.current)==null||k.setBrowserAlert(i||!1)},[i]);const je=k=>{k.currentTime=0,k.loop=!0,k.play()},Qe=k=>{k.pause()},We=async k=>{var ae;try{await((ae=S.current)==null?void 0:ae.agent_api.changeDevice({data:{device:k},success:()=>{j(k),St.success("切换设备成功")}}))}catch{}},ct=async(k,ae)=>{var ee;try{await((ee=S.current)==null?void 0:ee.agent_api.changeState({data:{state:k,state_name:ae},success:()=>{H(ae),St.success("切换状态成功")}}))}catch{}},_e=async k=>{var ae;try{await((ae=S.current)==null?void 0:ae.agent_api.setAgentExplicit({data:{number:k},success:()=>{St.success(`切换[${k}]外显号码成功`)}}))}catch{}},Be=async()=>{var k;try{await((k=S.current)==null?void 0:k.agent_api.getAgentState({success:ae=>{K(ae.data)}}))}catch{}},Me=async k=>{var ae;try{await((ae=S.current)==null?void 0:ae.call_api.makeCall(k))}catch(ee){const{msg:Ce}=JSON.parse(ee.message);St.warning(Ce)}},at=async()=>{var k;try{await((k=S.current)==null?void 0:k.call_api.answerCall())}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},st=async()=>{var k;try{(k=S.current)==null||k.call_api.cancelCall()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},vt=async()=>{var k;try{await((k=S.current)==null?void 0:k.call_api.hangup())}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},Tt=async()=>{var k;try{(k=S.current)==null||k.call_api.holdCall()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},Wt=()=>{var k;(k=S.current)==null||k.call_api.unholdCall()},Jt=async k=>{var ae;try{await((ae=S.current)==null?void 0:ae.call_api.consultCall(k))}catch(ee){const{msg:Ce}=JSON.parse(ee.message);St.warning(Ce)}},en=async()=>{var k;try{(k=S.current)==null||k.call_api.consultRetrieve()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},Xt=async()=>{var k;try{(k=S.current)==null||k.call_api.consultTransfer()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},Yt=()=>{var k;try{(k=S.current)==null||k.call_api.mute()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},bt=()=>{var k;try{(k=S.current)==null||k.call_api.unmute()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},pt=()=>{var k;try{(k=S.current)==null||k.call_api.satisfactionEvaluation()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},He=()=>{var k;try{(k=S.current)==null||k.call_api.startConference()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},Xe=async k=>{var ae;try{await((ae=S.current)==null?void 0:ae.call_api.transferAgent(k))}catch(ee){const{msg:Ce}=JSON.parse(ee.message);St.warning(Ce)}},Re=async k=>{var ae;try{await((ae=S.current)==null?void 0:ae.call_api.transferOutline(k))}catch(ee){const{msg:Ce}=JSON.parse(ee.message);St.warning(Ce)}},it=async()=>{var k;try{await((k=S.current)==null?void 0:k.call_api.earSpeakStart({success:()=>{}}))}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},mt=async()=>{var k;try{await((k=S.current)==null?void 0:k.call_api.earSpeakStop({success:()=>{}}))}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},Oe=async()=>{var k;try{await((k=S.current)==null?void 0:k.call_api.forceInsert({}))}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},ye=async()=>{var k;try{await((k=S.current)==null?void 0:k.call_api.forceDisconnect({}))}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},Ye=ie.jsx(AO,{onPressEnter:k=>{k&&Me(k)}},Fe),Ke=T.useMemo(()=>[{name:"call_number",icon:ie.jsx(bo,{trigger:"click",rootClassName:"call-number-popover",destroyTooltipOnHide:!0,onOpenChange:ae=>{ke(new Date().getTime())},content:Ye,children:ie.jsx(Vt,{name:"boda",color:"#48D866",size:25})})},{name:"answer",icon:ie.jsx(Vt,{name:"jieting",onClick:at,size:25})},{name:"hold",icon:ie.jsx(Vt,{name:"baochi",color:"#1D92E9",onClick:Tt,size:25})},{name:"unhold",icon:ie.jsx(Vt,{name:"quxiaobaochi",color:"#1D92E9",onClick:Wt,size:25})},{name:"mute",icon:ie.jsx(Vt,{name:"mk",onClick:Yt,color:"#1D92E9",size:25})},{name:"unmute",icon:ie.jsx(Vt,{name:"guanbimk",onClick:bt,color:"#1D92E9",size:25})},{name:"satisfaction",icon:ie.jsx(Vt,{name:"manyidu",onClick:pt,size:25})},{name:"consult",icon:ie.jsx(Vt,{name:"zixun",onClick:()=>{ce(!0)},size:25})},{name:"consult_transfer",icon:ie.jsx(Vt,{name:"zhuanjie",onClick:Xt,size:25})},{name:"transfer",icon:ie.jsx(Vt,{size:25,name:"zhuanjie",onClick:()=>{Se(!0)}})},{name:"consult_retrieve",icon:ie.jsx(Vt,{name:"fanhui",color:"#ffc53d",size:25,onClick:en})},{name:"conference",icon:ie.jsx(Vt,{name:"huiyi",onClick:He,size:25})},{name:"whisper",icon:ie.jsx(pc,{bg:"#1D92E9",children:ie.jsx(Vt,{name:"whisper",size:15,color:"#fff",onClick:it})})},{name:"cancel_whisper",icon:ie.jsx(pc,{bg:"red",children:ie.jsx(Vt,{name:"cancel_whisper",size:15,color:"#fff",onClick:mt})})},{name:"force_insert",icon:ie.jsx(pc,{bg:"#1D92E9",children:ie.jsx(Vt,{name:"force_insert",size:15,color:"#fff",onClick:Oe})})},{name:"force_disconnect",icon:ie.jsx(Vt,{name:"force_disconnect",onClick:ye,size:25})},{name:"reject",icon:ie.jsx(Vt,{name:"jujie",color:"red",onClick:st,size:25})},{name:"hangup",icon:ie.jsx(Vt,{name:"guaji",color:"red",onClick:vt,size:25})},{name:"dtmf",icon:ie.jsx(bo,{trigger:"click",onOpenChange:()=>{Le("")},title:ie.jsx(di,{style:{borderRadius:20,textAlign:"center"},placeholder:"点击进行发送按键",value:be}),content:ie.jsx("div",{style:{width:300},children:ie.jsx(RC,{onCallBack:ae=>{var Ce;const ee=be+ae;Le(ee),(Ce=S.current)==null||Ce.call_api.sendDTMF(ae)}})}),children:ie.jsx(Vt,{name:"dtmf",size:25})})}].filter(({name:ae})=>L.includes(ae)),[L,be]);return ie.jsx(ie.Fragment,{children:ie.jsxs(Xr,{prefixCls:"ysyt",theme:{components:{Select:{selectorBg:"none"}}},children:[Y?ie.jsx(ql,{spinning:b,children:ie.jsxs(KS,{height:V,children:[ie.jsx(ZS,{children:ie.jsx(so,{variant:"underlined",value:F,onChange:k=>{We(k)},options:(((Ue=S.current.getAgentData())==null?void 0:Ue.answer_devices)||[]).map(k=>({...k,label:ie.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[qO[k.value],ie.jsx("span",{style:{marginLeft:5},children:k.label})]})})),style:{width:140}})}),ie.jsxs(zS,{background:et(yO[Y]??2),children:[ie.jsxs("div",{className:"ysyt-strip",children:[ie.jsx("div",{children:J?ie.jsx("span",{className:"ysyt-strip-state-name",children:J}):ie.jsx(_1,{trigger:["click"],menu:{items:X.map(k=>({label:ie.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[k.state===1?ie.jsx(Vt,{name:"kongxian",color:"#7cb305",size:16}):ie.jsx(Vt,{name:"manglu",color:"#f5222d",size:16}),ie.jsx("span",{style:{marginLeft:10},children:k.state_name})]}),key:k.state_name,onClick:()=>{ct(k.state,k.state_name)}}))},children:ie.jsxs("div",{style:{color:"#fff",cursor:"pointer",display:"flex",alignItems:"center"},children:[Y==="空闲"?ie.jsx(Vt,{name:"kongxian",color:"#fff",size:20}):ie.jsx(ie.Fragment,{children:Y==="未注册"?ie.jsx(Vt,{name:"unregistered",size:20}):ie.jsx(Vt,{name:"manglu2",size:20})}),ie.jsx("span",{style:{margin:"0 10px"},children:Y}),ie.jsx(Vt,{name:"xia",color:"#fff"})]})})}),ie.jsx("div",{className:"ysyt-strip-time",children:ie.jsx(lO,{},O)}),u&&y&&ie.jsx("div",{className:"ysyt-strip-call-card",onClick:()=>pe(!we),children:we?ie.jsx(Vt,{name:"unopen",color:"#fff"}):ie.jsx(Vt,{name:"open",color:"#fff"})})]}),ie.jsx("div",{className:"ysyt-action",children:Ke.map(({name:k,icon:ae})=>ie.jsx(aa,{title:EO[k],children:ae},k))}),te&&ie.jsx(iI,{children:ie.jsx("div",{children:ie.jsx(bo,{trigger:"click",title:"外显号码池",onOpenChange:k=>{k||Z("")},content:ie.jsxs(oI,{children:[ie.jsx("div",{children:ie.jsx(di,{value:me,placeholder:"请输入外显号码",onChange:k=>Z(k.target.value)})}),ie.jsx("div",{className:"ysyt-number-content",children:ie.jsx(ta.Group,{value:ue,onChange:k=>{_e(k.target.value)},options:Ae.filter(k=>k.includes(me)).map(k=>({label:ie.jsx(AI,{style:{color:ue===k?"#1D92E9":""},children:k},k),value:k}))})})]}),children:ie.jsxs("div",{style:{fontSize:14,cursor:"pointer",color:w||"#333",display:"flex",alignItems:"center"},children:[ie.jsx(Vt,{name:"external",color:w||"#333"}),ie.jsx("span",{style:{margin:"0 5px"},children:"外显号码"}),ie.jsx(Vt,{name:"xia",color:w||"#333"})]})})})})]}),ie.jsx(eI,{children:E&&E.rtt&&ie.jsx("div",{children:ie.jsx(bo,{content:ie.jsxs("div",{children:[ie.jsxs("div",{children:["延迟: ",E.rtt,"ms"]}),E.jitter&&ie.jsxs("div",{children:["抖动: ",E.jitter,"ms"]}),ie.jsxs("div",{children:["丢包: ",E.packetsLost||0]}),E.packetsReceived?ie.jsxs("div",{children:["接收: ",E.packetsReceived]}):null,E.packetsSent?ie.jsxs("div",{children:["发送: ",E.packetsSent]}):null,E.sendBitrate?ie.jsxs("div",{children:["发送码率: ",E.sendBitrate,"KB/s"]}):null,E.recvBitrate?ie.jsxs("div",{children:["接收码率: ",E.recvBitrate,"KB/s"]}):null]}),placement:"bottomLeft",children:ie.jsxs("div",{style:{padding:"0 10px"},children:[E.rtt>=250?ie.jsx(Vt,{name:"wifi1"}):"",E.rtt>=121&&E.rtt<250?ie.jsx(Vt,{name:"wifi2"}):"",E.rtt<=120?ie.jsx(Vt,{name:"wifi3"}):""]})})})}),u&&ie.jsxs(rI,{height:V,show:!!y&&we,children:[ie.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:10},children:[ie.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[(y==null?void 0:y.is_vip)===1&&ie.jsx(Vt,{name:"vip"}),ie.jsx("span",{style:{marginLeft:5},children:y==null?void 0:y.customer_name})]}),ie.jsx("b",{children:y==null?void 0:y.phone})]}),ie.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[ie.jsxs("span",{children:[y==null?void 0:y.province,"-",y==null?void 0:y.city]}),Ve&&ie.jsxs("span",{children:["当月",Ve==="out"?"呼出次数:":"呼入次数:",ie.jsx("span",{style:{color:"#1D92E9"},children:Ve==="out"?y==null?void 0:y.contact_count_month:y==null?void 0:y.in_contact_count_month})]})]}),ie.jsx("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center"},children:Ve&&ie.jsxs("span",{children:["总",Ve==="out"?"呼出次数:":"呼入次数:",ie.jsx("span",{style:{color:"#1D92E9"},children:Ve==="out"?(y==null?void 0:y.contact_count)||0:(y==null?void 0:y.in_contact_count)||0})]})})]})]})}):ie.jsx(ie.Fragment,{}),ie.jsx(T.Suspense,{children:de&&((D=S.current)==null?void 0:D.agent_api)&&ie.jsx(wO,{open:de,queryFetch:S.current.agent_api.getIdleAgentList,onCallBack:k=>{ce(!1),k&&Jt(k)}})}),ie.jsx(T.Suspense,{children:Ee&&((fe=S.current)==null?void 0:fe.agent_api)&&ie.jsx(SO,{open:Ee,queryFetch:S.current.agent_api.getIdleAgentList,onCallBack:(k,ae)=>{Se(!1),k&&(ae===0?Xe(k):ae===1&&Re(k))}})})]})})},bO=t=>{var e;return(e=Bn.getInstance())==null?void 0:e.call_api.makeCall(t)},MO=()=>{var t;return(t=Bn.getInstance())==null?void 0:t.getRealTimeCustomerInfo()},RO=async t=>{var e,n;if(t!==Rt.IDLE&&t!==Rt.BUSY)throw new Error("Invalid agent state");try{await((n=(e=Bn.getInstance())==null?void 0:e.agent_api)==null?void 0:n.changeState({data:{state:t,state_name:t===Rt.IDLE?"空闲":"忙碌"}}))}catch(r){console.error(r)}},xO=async t=>{var e,n;try{await((n=(e=Bn.getInstance())==null?void 0:e.agent_api)==null?void 0:n.changeDevice({data:{device:t}}))}catch(r){console.error(r)}},TO=async(t=!1,e)=>{var n,r;try{await((r=(n=Bn.getInstance())==null?void 0:n.agent_api)==null?void 0:r.agentLogout({data:{offline_answer:t},success:()=>{e==null||e()}}))}catch(i){console.log(i)}},BO=async(t,e)=>{var n,r;(r=(n=Bn.getInstance())==null?void 0:n.call_api)==null||r.previewMakeCall(t,e)},OO=async t=>{var e,n;try{await((n=(e=Bn.getInstance())==null?void 0:e.agent_api)==null?void 0:n.listenAgentCall({data:{monitored_agent_no:t},success:()=>{St.success("监听坐席通话成功")}}))}catch(r){console.error(r)}},DO=async()=>{var t,e;try{await((e=(t=Bn.getInstance())==null?void 0:t.call_api)==null?void 0:e.earSpeakStart({}))}catch(n){console.log(n)}},NO=async()=>{var t,e;try{await((e=(t=Bn.getInstance())==null?void 0:t.call_api)==null?void 0:e.earSpeakStop({}))}catch(n){console.log(n)}},FO=async()=>{var t,e;try{await((e=(t=Bn.getInstance())==null?void 0:t.call_api)==null?void 0:e.forceInsert({}))}catch(n){console.log(n)}},QO=async()=>{var t,e;try{await((e=(t=Bn.getInstance())==null?void 0:t.call_api)==null?void 0:e.forceDisconnect({}))}catch(n){console.log(n)}};exports.Button=ro;exports.CONTAINER_MAX_OFFSET=rg;exports.CSSMotion=oo;exports.ConfigContext=Qt;exports.ConfigProvider=Xr;exports.ContextIsolator=FA;exports.DisabledContextProvider=LV;exports.Empty=ai;exports.FastColor=Pt;exports.Input=di;exports.KeyCode=At;exports.Keyframe=Ft;exports.ModelBody=$S;exports.Portal=dl;exports.Radio=ta;exports.RefIcon=Vl;exports.RefIcon$1=yg;exports.RefIcon$2=na;exports.RefIcon$3=Eg;exports.RefIcon$4=wg;exports.Space=ml;exports.Spin=ql;exports.Wave=el;exports.YsytBarPhone=IO;exports.YsytIconSvg=Vt;exports._extends=Ne;exports._objectSpread2=U;exports._slicedToArray=$;exports._toConsumableArray=Ie;exports._typeof=$e;exports.agentLogout=TO;exports.callForceInsert=FO;exports.callForceSplit=QO;exports.canUseDom=Fn;exports.classNames=se;exports.clearFix=os;exports.contains=_m;exports.convertLegacyProps=X4;exports.devUseWarning=An;exports.genFocusStyle=As;exports.genPresetColor=QV;exports.genStyleHooks=Mn;exports.genSubStyleComponent=FV;exports.getConfirmLocale=KE;exports.getCustomerInfo=MO;exports.getReactRender=ag;exports.getTransitionName=ol;exports.globalConfig=Ud;exports.initMotion=Xs;exports.initZoomMotion=JA;exports.isPresetColor=K1;exports.isPresetStatusColor=ST;exports.jsxRuntimeExports=ie;exports.listenCall=OO;exports.localeValues=eo;exports.makeCall=bO;exports.merge=Zt;exports.omit=$n;exports.pickAttrs=Oi;exports.previewMakeCall=BO;exports.replaceElement=Bv;exports.resetComponent=Hn;exports.setAgentDevice=xO;exports.setAgentInitState=RO;exports.startEarSpeak=DO;exports.stopEarSpeak=NO;exports.unit=ve;exports.useCSSVarCls=Ur;exports.useComponentConfig=Wr;exports.useComposeRef=Fi;exports.useEvent=nn;exports.useId=tl;exports.useLocale=Us;exports.useSafeState=No;exports.useToken=cr;exports.useZIndex=XA;exports.warnContext=i0;exports.warning=xi;exports.withPureRenderTheme=I1;exports.zIndexContext=WA;
694
+ `,IO=t=>{var Ue,D,fe;const{style:e,logBuiltinEnabled:n,browserAlertTime:r,enableBrowserAlert:i,agentNo:o,appKey:A,appSecret:a,url:s,onCallBack:l,ringingCardShow:u=!0,onLoginCancel:d,isCheckLogin:g,...p}=t,{height:V,busy:v,idle:m,unavailable:C,selectOutNumberColor:w}=e||{},S=T.useRef(),M=T.useRef(),[I,f]=T.useState(new Audio(cO)),[R,q]=T.useState(new Audio(uO)),[E,h]=T.useState(),[y,x]=T.useState(),[b,B]=T.useState(!1),[O,N]=T.useState(new Date().getTime()),[F,j]=T.useState(),[Y,H]=T.useState(),[L,G]=T.useState([]),[X,K]=T.useState([]),[J,z]=T.useState(""),[te,W]=T.useState(!1),[Ae,le]=T.useState([]),[ue,ne]=T.useState(""),[me,Z]=T.useState(""),[de,ce]=T.useState(!1),[Ee,Se]=T.useState(!1),[Ve,Te]=T.useState(),[Fe,ke]=T.useState(new Date().getTime()),[we,pe]=T.useState(!0),[be,Le]=T.useState(""),et=k=>{switch(k){case Rt.IDLE:return m||"#1D92E9";case Rt.BUSY:return v||"#F5212D";case Rt.UNREGISTERED:return C||"#faad14";case Rt.OFFLINE:return C||"#8c8c8c";default:return"#1D92E9"}};T.useEffect(()=>((async()=>(B(!0),S.current=Bn.getInstance({agentNo:o,appKey:A,appSecret:a,url:s}),nt(),S.current.on(Ge.PHONE_BAR_OPERATION,k=>{console.log(k),G(k)}),g?await S.current.agent_api.checkAgentLogin({data:{agent_no:o},success:async k=>{k.data.is_login?CO({title:"当前账号已登录!",icon:ie.jsx(Vt,{name:"wing",size:20}),content:"是否继续登录",onOk:async()=>{await S.current.init({...p,logBuiltinEnabled:n,browserAlertTime:r,enableBrowserAlert:i}),M.current=S.current.getAgentData()},onCancel:()=>{d==null||d()}}):(await S.current.init({...p,logBuiltinEnabled:n,browserAlertTime:r,enableBrowserAlert:i}),M.current=S.current.getAgentData())}}):(await S.current.init({...p,logBuiltinEnabled:n,browserAlertTime:r,enableBrowserAlert:i}),M.current=S.current.getAgentData()),N(new Date().getTime()),B(!1)))(),()=>{var k;(k=S.current)==null||k.destroy()}),[]);const nt=()=>{var k,ae;(k=S.current)==null||k.on(Ge.EVENT_ALL,({event:ee,data:Ce})=>{switch(ee){case oe.OUT_SUCCESS:case oe.CONSULT_RINGING:{je(I),Te("out");return}case oe.OUT_INCOMING_CALL:case oe.INTERNAL_OUT_INCOMING_CALL:{l==null||l(ee,{customer_phone:Ce.customer_phone,session_id:Ce.session_id});return}case oe.PREVIEW_OUT_INCOMING_CALL:{l==null||l(oe.PREVIEW_OUT_INCOMING_CALL,{customer_phone:Ce.customer_phone,session_id:Ce.session_id,preview_task_id:Ce.preview_task_id});return}case oe.OUT_OFF_ANSWER:case oe.INTERNAL_OUT_OFF_ANSWER:case oe.OUT_FAILED:case oe.CONSULT_FAILED:case oe.OUT_RINGING:case oe.CONSULT_OFF_HOOK:{ee===oe.OUT_OFF_ANSWER&&(l==null||l(ee,{session_id:Ce.session_id})),Qe(I);return}case oe.CONSULT_INCOMING:case oe.TRANSFER_INCOMING_CALL:case oe.LISTEN_INCOMING_CALL:case oe.INCOMING_CALL_IN:case oe.INCOMING_CALL:{Te("in"),(ee===oe.CONSULT_INCOMING||ee===oe.TRANSFER_INCOMING_CALL)&&(l==null||l(ee,{agent_no:Ce.agent_no,agent_name:Ce.agent_name,session_id:Ce.session_id})),ee===oe.INCOMING_CALL?l==null||l(oe.INCOMING_CALL,{customer_phone:Ce.customer_phone,session_id:Ce.session_id}):ee===oe.INCOMING_CALL_IN?l==null||l(oe.INCOMING_CALL_IN,{customer_phone:Ce.customer_phone,session_id:Ce.session_id}):ee===oe.LISTEN_INCOMING_CALL&&(l==null||l(oe.LISTEN_INCOMING_CALL,{session_id:Ce.session_id})),je(R);return}case oe.PREDICT_INCOMING_CALL:{Te("out"),ee===oe.PREDICT_INCOMING_CALL&&(l==null||l(oe.PREDICT_INCOMING_CALL,{customer_phone:Ce.customer_phone,session_id:Ce.session_id})),je(R);return}case oe.DUAL_CALL_INCOMING_CALL:{Te("out"),ee===oe.DUAL_CALL_INCOMING_CALL&&(l==null||l(oe.DUAL_CALL_INCOMING_CALL,{customer_phone:Ce.customer_phone,session_id:Ce.session_id})),je(R);return}case oe.TRANSFER_OFF_HOOK:case oe.LISTEN_INCOMING_CALL_OFF_HOOK:case oe.CONSULT_CALL_IN_SUCCESS:case oe.INCOMING_CALL_IN_OFF_HOOK:case oe.INCOMING_CALL_OFF_HOOK:{ee===oe.LISTEN_INCOMING_CALL_OFF_HOOK?l==null||l(ee,{session_id:Ce.session_id,monitored_agent_no:Ce.monitored_agent_no}):l==null||l(ee,{session_id:Ce.session_id}),Qe(R);return}case oe.OUT_HANGUP:case oe.LISTEN_HANGUP:case oe.LISTEN_CALL_FAILED:case oe.TRANSFER_END:case oe.THREE_WAY_OUR_SIDE_HANGUP:case oe.OUR_SIDE_CONSULT_HANGUP:case oe.OTHER_SIDE_CONSULT_HANGUP:case oe.INCOMING_CALL_END:{l==null||l(ee,{session_id:Ce.session_id}),Qe(R),Qe(I),Te(void 0),ce(!1),Se(!1);return}case oe.REJECT:l==null||l(ee,{session_id:Ce.session_id});return;default:return null}}),(ae=S.current)==null||ae.on(oe.AGENT_STATE,ee=>{H(ee.state_name),N(new Date().getTime()),l==null||l(oe.AGENT_STATE,ee),ee.state===Rt.UNREGISTERED&&St.warning("当前已掉线,自动重连中,请检查网络")}).on(oe.CALL_PROGRESS,ee=>{z(ee)}).on(Ge.WEBSITE_DELAY,ee=>{h(ee)}).on(oe.CUSTOMER_INFO,ee=>{x(ee),ee&&pe(!0)}).on(Ge.AGENT_INIT_STATUS,ee=>{if(ee){const{default_device:Ce,init_state:ze,out_display_select_switch:tt,out_display_data:Dt,stateObject:{state_name:gt}}=S.current.getAgentData();W(tt===1),tt===1&&le((Dt||"").split("#")),j(Ce),H(gt),Be()}}).on(Ge.SELECT_EXTERNAL_NUMBER,ee=>{ne(ee)}).on(Ge.FAIL_NOTIFICATION,ee=>{St.error(ee)}).on(Ge.KICK_OFF,()=>{l?l==null||l(Ge.KICK_OFF):St.warning("您的座席账号已在别处登录,请重新登录。如非您本人操作,请及时修改密码。"),H("")}).on(Ge.DESTROY,()=>{l==null||l(Ge.DESTROY),St.success("已离线")}).on(Ge.NETWORK_OFFLINE,()=>{St.warning("网络已断开,请检查网络设置。")}).on(Ge.NETWORK_ONLINE,()=>{St.success("网络已恢复")}).on(Ge.SIGN_OUT,()=>{l==null||l(Ge.SIGN_OUT),St.success("已被签出")}).on(oe.LISTEN_CALL_FAILED,()=>{l==null||l(oe.LISTEN_CALL_FAILED),St.error("监听失败")}).on(oe.EAR_SPEECH_SUCCESS,({monitored_agent_no:ee})=>{l==null||l(oe.EAR_SPEECH_SUCCESS,{monitored_agent_no:ee}),St.success("正在耳语")}).on(oe.EAR_SPEECH_BE_SUCCESS,({monitor_agent_no:ee})=>{l==null||l(oe.EAR_SPEECH_BE_SUCCESS,{monitor_agent_no:ee}),St.success(`${ee}正在与你耳语`)}).on(oe.EAR_SPEECH_FAILED,()=>{l==null||l(oe.EAR_SPEECH_FAILED),St.error("耳语失败")}).on(oe.STOP_EAR_SPEECH_SUCCESS,()=>{l==null||l(oe.STOP_EAR_SPEECH_SUCCESS),St.success("停止耳语")}).on(oe.CALL_FORCE_INSERT_SUCCESS,({monitored_agent_no:ee,monitor_agent_no:Ce})=>{l==null||l(oe.CALL_FORCE_INSERT_SUCCESS,{monitored_agent_no:ee,monitor_agent_no:Ce}),St.success("强插成功")}).on(oe.CALL_FORCE_INSERT_SUCCESS_LISTENER,({monitored_agent_no:ee,monitor_agent_no:Ce})=>{l==null||l(oe.CALL_FORCE_INSERT_SUCCESS_LISTENER,{monitored_agent_no:ee,monitor_agent_no:Ce}),St.success(`${Ce}强插`)}).on(Ge.SIGN_IN_SWITCH_DEVICE,ee=>{l==null||l(Ge.SIGN_IN_SWITCH_DEVICE),St.success(`已被切换${ee.answer_device===2?"手机模式":"SIP 话机"}设备`)}).on(oe.CALL_SIP_INCOMING_CALL,()=>{St.success("SIP话机有新的呼入")})};T.useEffect(()=>{var k;(k=S.current)==null||k.setBrowserAlertTime(r||3)},[r]),T.useEffect(()=>{var k;(k=S.current)==null||k.setBrowserAlert(i||!1)},[i]);const je=k=>{k.currentTime=0,k.loop=!0,k.play()},Qe=k=>{k.pause()},We=async k=>{var ae;try{await((ae=S.current)==null?void 0:ae.agent_api.changeDevice({data:{device:k},success:()=>{j(k),St.success("切换设备成功")}}))}catch{}},ct=async(k,ae)=>{var ee;try{await((ee=S.current)==null?void 0:ee.agent_api.changeState({data:{state:k,state_name:ae},success:()=>{H(ae),St.success("切换状态成功")}}))}catch{}},_e=async k=>{var ae;try{await((ae=S.current)==null?void 0:ae.agent_api.setAgentExplicit({data:{number:k},success:()=>{St.success(`切换[${k}]外显号码成功`)}}))}catch{}},Be=async()=>{var k;try{await((k=S.current)==null?void 0:k.agent_api.getAgentState({success:ae=>{K(ae.data)}}))}catch{}},Me=async k=>{var ae;try{await((ae=S.current)==null?void 0:ae.call_api.makeCall(k))}catch(ee){const{msg:Ce}=JSON.parse(ee.message);St.warning(Ce)}},at=async()=>{var k;try{await((k=S.current)==null?void 0:k.call_api.answerCall())}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},st=async()=>{var k;try{(k=S.current)==null||k.call_api.cancelCall()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},vt=async()=>{var k;try{await((k=S.current)==null?void 0:k.call_api.hangup())}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},Tt=async()=>{var k;try{(k=S.current)==null||k.call_api.holdCall()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},Wt=()=>{var k;(k=S.current)==null||k.call_api.unholdCall()},Jt=async k=>{var ae;try{await((ae=S.current)==null?void 0:ae.call_api.consultCall(k))}catch(ee){const{msg:Ce}=JSON.parse(ee.message);St.warning(Ce)}},en=async()=>{var k;try{(k=S.current)==null||k.call_api.consultRetrieve()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},Xt=async()=>{var k;try{(k=S.current)==null||k.call_api.consultTransfer()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},Yt=()=>{var k;try{(k=S.current)==null||k.call_api.mute()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},bt=()=>{var k;try{(k=S.current)==null||k.call_api.unmute()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},pt=()=>{var k;try{(k=S.current)==null||k.call_api.satisfactionEvaluation()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},He=()=>{var k;try{(k=S.current)==null||k.call_api.startConference()}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},Xe=async k=>{var ae;try{await((ae=S.current)==null?void 0:ae.call_api.transferAgent(k))}catch(ee){const{msg:Ce}=JSON.parse(ee.message);St.warning(Ce)}},Re=async k=>{var ae;try{await((ae=S.current)==null?void 0:ae.call_api.transferOutline(k))}catch(ee){const{msg:Ce}=JSON.parse(ee.message);St.warning(Ce)}},it=async()=>{var k;try{await((k=S.current)==null?void 0:k.call_api.earSpeakStart({success:()=>{}}))}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},mt=async()=>{var k;try{await((k=S.current)==null?void 0:k.call_api.earSpeakStop({success:()=>{}}))}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},Oe=async()=>{var k;try{await((k=S.current)==null?void 0:k.call_api.forceInsert({}))}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},ye=async()=>{var k;try{await((k=S.current)==null?void 0:k.call_api.forceDisconnect({}))}catch(ae){const{msg:ee}=JSON.parse(ae.message);St.warning(ee)}},Ye=ie.jsx(AO,{onPressEnter:k=>{k&&Me(k)}},Fe),Ke=T.useMemo(()=>[{name:"call_number",icon:ie.jsx(bo,{trigger:"click",rootClassName:"call-number-popover",destroyTooltipOnHide:!0,onOpenChange:ae=>{ke(new Date().getTime())},content:Ye,children:ie.jsx(Vt,{name:"boda",color:"#48D866",size:25})})},{name:"answer",icon:ie.jsx(Vt,{name:"jieting",onClick:at,size:25})},{name:"hold",icon:ie.jsx(Vt,{name:"baochi",color:"#1D92E9",onClick:Tt,size:25})},{name:"unhold",icon:ie.jsx(Vt,{name:"quxiaobaochi",color:"#1D92E9",onClick:Wt,size:25})},{name:"mute",icon:ie.jsx(Vt,{name:"mk",onClick:Yt,color:"#1D92E9",size:25})},{name:"unmute",icon:ie.jsx(Vt,{name:"guanbimk",onClick:bt,color:"#1D92E9",size:25})},{name:"satisfaction",icon:ie.jsx(Vt,{name:"manyidu",onClick:pt,size:25})},{name:"consult",icon:ie.jsx(Vt,{name:"zixun",onClick:()=>{ce(!0)},size:25})},{name:"consult_transfer",icon:ie.jsx(Vt,{name:"zhuanjie",onClick:Xt,size:25})},{name:"transfer",icon:ie.jsx(Vt,{size:25,name:"zhuanjie",onClick:()=>{Se(!0)}})},{name:"consult_retrieve",icon:ie.jsx(Vt,{name:"fanhui",color:"#ffc53d",size:25,onClick:en})},{name:"conference",icon:ie.jsx(Vt,{name:"huiyi",onClick:He,size:25})},{name:"whisper",icon:ie.jsx(pc,{bg:"#1D92E9",children:ie.jsx(Vt,{name:"whisper",size:15,color:"#fff",onClick:it})})},{name:"cancel_whisper",icon:ie.jsx(pc,{bg:"red",children:ie.jsx(Vt,{name:"cancel_whisper",size:15,color:"#fff",onClick:mt})})},{name:"force_insert",icon:ie.jsx(pc,{bg:"#1D92E9",children:ie.jsx(Vt,{name:"force_insert",size:15,color:"#fff",onClick:Oe})})},{name:"force_disconnect",icon:ie.jsx(Vt,{name:"force_disconnect",onClick:ye,size:25})},{name:"reject",icon:ie.jsx(Vt,{name:"jujie",color:"red",onClick:st,size:25})},{name:"hangup",icon:ie.jsx(Vt,{name:"guaji",color:"red",onClick:vt,size:25})},{name:"dtmf",icon:ie.jsx(bo,{trigger:"click",onOpenChange:()=>{Le("")},title:ie.jsx(di,{style:{borderRadius:20,textAlign:"center"},placeholder:"点击进行发送按键",value:be}),content:ie.jsx("div",{style:{width:300},children:ie.jsx(RC,{onCallBack:ae=>{var Ce;const ee=be+ae;Le(ee),(Ce=S.current)==null||Ce.call_api.sendDTMF(ae)}})}),children:ie.jsx(Vt,{name:"dtmf",size:25})})}].filter(({name:ae})=>L.includes(ae)),[L,be]);return ie.jsx(ie.Fragment,{children:ie.jsxs(Xr,{prefixCls:"ysyt",theme:{components:{Select:{selectorBg:"none"}}},children:[Y?ie.jsx(ql,{spinning:b,children:ie.jsxs(KS,{height:V,children:[ie.jsx(ZS,{children:ie.jsx(so,{variant:"underlined",value:F,onChange:k=>{We(k)},options:(((Ue=S.current.getAgentData())==null?void 0:Ue.answer_devices)||[]).map(k=>({...k,label:ie.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[qO[k.value],ie.jsx("span",{style:{marginLeft:5},children:k.label})]})})),style:{width:140}})}),ie.jsxs(zS,{background:et(yO[Y]??2),children:[ie.jsxs("div",{className:"ysyt-strip",children:[ie.jsx("div",{children:J?ie.jsx("span",{className:"ysyt-strip-state-name",children:J}):ie.jsx(_1,{trigger:["click"],menu:{items:X.map(k=>({label:ie.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[k.state===1?ie.jsx(Vt,{name:"kongxian",color:"#7cb305",size:16}):ie.jsx(Vt,{name:"manglu",color:"#f5222d",size:16}),ie.jsx("span",{style:{marginLeft:10},children:k.state_name})]}),key:k.state_name,onClick:()=>{ct(k.state,k.state_name)}}))},children:ie.jsxs("div",{style:{color:"#fff",cursor:"pointer",display:"flex",alignItems:"center"},children:[Y==="空闲"?ie.jsx(Vt,{name:"kongxian",color:"#fff",size:20}):ie.jsx(ie.Fragment,{children:Y==="未注册"?ie.jsx(Vt,{name:"unregistered",size:20}):ie.jsx(Vt,{name:"manglu2",size:20})}),ie.jsx("span",{style:{margin:"0 10px"},children:Y}),ie.jsx(Vt,{name:"xia",color:"#fff"})]})})}),ie.jsx("div",{className:"ysyt-strip-time",children:ie.jsx(lO,{},O)}),u&&y&&ie.jsx("div",{className:"ysyt-strip-call-card",onClick:()=>pe(!we),children:we?ie.jsx(Vt,{name:"unopen",color:"#fff"}):ie.jsx(Vt,{name:"open",color:"#fff"})})]}),ie.jsx("div",{className:"ysyt-action",children:Ke.map(({name:k,icon:ae})=>ie.jsx(aa,{title:EO[k],children:ae},k))}),te&&ie.jsx(iI,{children:ie.jsx("div",{children:ie.jsx(bo,{trigger:"click",title:"外显号码池",onOpenChange:k=>{k||Z("")},content:ie.jsxs(oI,{children:[ie.jsx("div",{children:ie.jsx(di,{value:me,placeholder:"请输入外显号码",onChange:k=>Z(k.target.value)})}),ie.jsx("div",{className:"ysyt-number-content",children:ie.jsx(ta.Group,{value:ue,onChange:k=>{_e(k.target.value)},options:Ae.filter(k=>k.includes(me)).map(k=>({label:ie.jsx(AI,{style:{color:ue===k?"#1D92E9":""},children:k},k),value:k}))})})]}),children:ie.jsxs("div",{style:{fontSize:14,cursor:"pointer",color:w||"#333",display:"flex",alignItems:"center"},children:[ie.jsx(Vt,{name:"external",color:w||"#333"}),ie.jsx("span",{style:{margin:"0 5px"},children:"外显号码"}),ie.jsx(Vt,{name:"xia",color:w||"#333"})]})})})})]}),ie.jsx(eI,{children:E&&E.rtt&&ie.jsx("div",{children:ie.jsx(bo,{content:ie.jsxs("div",{children:[ie.jsxs("div",{children:["延迟: ",E.rtt,"ms"]}),E.jitter&&ie.jsxs("div",{children:["抖动: ",E.jitter,"ms"]}),ie.jsxs("div",{children:["丢包: ",E.packetsLost||0]}),E.packetsReceived?ie.jsxs("div",{children:["接收: ",E.packetsReceived]}):null,E.packetsSent?ie.jsxs("div",{children:["发送: ",E.packetsSent]}):null,E.sendBitrate?ie.jsxs("div",{children:["发送码率: ",E.sendBitrate,"KB/s"]}):null,E.recvBitrate?ie.jsxs("div",{children:["接收码率: ",E.recvBitrate,"KB/s"]}):null]}),placement:"bottomLeft",children:ie.jsxs("div",{style:{padding:"0 10px"},children:[E.rtt>=250?ie.jsx(Vt,{name:"wifi1"}):"",E.rtt>=121&&E.rtt<250?ie.jsx(Vt,{name:"wifi2"}):"",E.rtt<=120?ie.jsx(Vt,{name:"wifi3"}):""]})})})}),u&&ie.jsxs(rI,{height:V,show:!!y&&we,children:[ie.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:10},children:[ie.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[(y==null?void 0:y.is_vip)===1&&ie.jsx(Vt,{name:"vip"}),ie.jsx("span",{style:{marginLeft:5},children:y==null?void 0:y.customer_name})]}),ie.jsx("b",{children:y==null?void 0:y.phone})]}),ie.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[ie.jsxs("span",{children:[y==null?void 0:y.province,"-",y==null?void 0:y.city]}),Ve&&ie.jsxs("span",{children:["当月",Ve==="out"?"呼出次数:":"呼入次数:",ie.jsx("span",{style:{color:"#1D92E9"},children:Ve==="out"?y==null?void 0:y.contact_count_month:y==null?void 0:y.in_contact_count_month})]})]}),ie.jsx("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center"},children:Ve&&ie.jsxs("span",{children:["总",Ve==="out"?"呼出次数:":"呼入次数:",ie.jsx("span",{style:{color:"#1D92E9"},children:Ve==="out"?(y==null?void 0:y.contact_count)||0:(y==null?void 0:y.in_contact_count)||0})]})})]})]})}):ie.jsx(ie.Fragment,{}),ie.jsx(T.Suspense,{children:de&&((D=S.current)==null?void 0:D.agent_api)&&ie.jsx(wO,{open:de,queryFetch:S.current.agent_api.getIdleAgentList,onCallBack:k=>{ce(!1),k&&Jt(k)}})}),ie.jsx(T.Suspense,{children:Ee&&((fe=S.current)==null?void 0:fe.agent_api)&&ie.jsx(SO,{open:Ee,queryFetch:S.current.agent_api.getIdleAgentList,onCallBack:(k,ae)=>{Se(!1),k&&(ae===0?Xe(k):ae===1&&Re(k))}})})]})})},bO=t=>{var e;return(e=Bn.getInstance())==null?void 0:e.call_api.makeCall(t)},MO=()=>{var t;return(t=Bn.getInstance())==null?void 0:t.getRealTimeCustomerInfo()},RO=async t=>{var e,n;if(t!==Rt.IDLE&&t!==Rt.BUSY)throw new Error("Invalid agent state");try{await((n=(e=Bn.getInstance())==null?void 0:e.agent_api)==null?void 0:n.changeState({data:{state:t,state_name:t===Rt.IDLE?"空闲":"忙碌"}}))}catch(r){console.error(r)}},xO=async t=>{var e,n;try{await((n=(e=Bn.getInstance())==null?void 0:e.agent_api)==null?void 0:n.changeDevice({data:{device:t}}))}catch(r){console.error(r)}},TO=async(t=!1,e)=>{var n,r;try{await((r=(n=Bn.getInstance())==null?void 0:n.agent_api)==null?void 0:r.agentLogout({data:{offline_answer:t},success:()=>{e==null||e()}}))}catch(i){console.log(i)}},BO=async(t,e)=>{var n,r;(r=(n=Bn.getInstance())==null?void 0:n.call_api)==null||r.previewMakeCall(t,e)},OO=async t=>{var e,n;try{await((n=(e=Bn.getInstance())==null?void 0:e.agent_api)==null?void 0:n.listenAgentCall({data:{monitored_agent_no:t},success:()=>{St.success("监听坐席通话成功")}}))}catch(r){console.error(r)}},DO=async()=>{var t,e;try{await((e=(t=Bn.getInstance())==null?void 0:t.call_api)==null?void 0:e.earSpeakStart({}))}catch(n){console.log(n)}},NO=async()=>{var t,e;try{await((e=(t=Bn.getInstance())==null?void 0:t.call_api)==null?void 0:e.earSpeakStop({}))}catch(n){console.log(n)}},FO=async()=>{var t,e;try{await((e=(t=Bn.getInstance())==null?void 0:t.call_api)==null?void 0:e.forceInsert({}))}catch(n){console.log(n)}},QO=async()=>{var t,e;try{await((e=(t=Bn.getInstance())==null?void 0:t.call_api)==null?void 0:e.forceDisconnect({}))}catch(n){console.log(n)}};exports.Button=ro;exports.CONTAINER_MAX_OFFSET=rg;exports.CSSMotion=oo;exports.ConfigContext=Qt;exports.ConfigProvider=Xr;exports.ContextIsolator=FA;exports.DisabledContextProvider=LV;exports.Empty=ai;exports.FastColor=Pt;exports.Input=di;exports.KeyCode=At;exports.Keyframe=Ft;exports.ModelBody=$S;exports.Portal=dl;exports.Radio=ta;exports.RefIcon=Vl;exports.RefIcon$1=yg;exports.RefIcon$2=na;exports.RefIcon$3=Eg;exports.RefIcon$4=wg;exports.Space=ml;exports.Spin=ql;exports.Wave=el;exports.YsytBarPhone=IO;exports.YsytIconSvg=Vt;exports._extends=Ne;exports._objectSpread2=U;exports._slicedToArray=$;exports._toConsumableArray=Ie;exports._typeof=$e;exports.agentLogout=TO;exports.callForceInsert=FO;exports.callForceSplit=QO;exports.canUseDom=Fn;exports.classNames=se;exports.clearFix=os;exports.contains=_m;exports.convertLegacyProps=X4;exports.devUseWarning=An;exports.genFocusStyle=As;exports.genPresetColor=QV;exports.genStyleHooks=Mn;exports.genSubStyleComponent=FV;exports.getConfirmLocale=KE;exports.getCustomerInfo=MO;exports.getReactRender=ag;exports.getTransitionName=ol;exports.globalConfig=Ud;exports.initMotion=Xs;exports.initZoomMotion=JA;exports.isPresetColor=K1;exports.isPresetStatusColor=ST;exports.jsxRuntimeExports=ie;exports.listenCall=OO;exports.localeValues=eo;exports.makeCall=bO;exports.merge=Zt;exports.omit=$n;exports.pickAttrs=Oi;exports.previewMakeCall=BO;exports.replaceElement=Bv;exports.resetComponent=Hn;exports.setAgentDevice=xO;exports.setAgentInitState=RO;exports.startEarSpeak=DO;exports.stopEarSpeak=NO;exports.unit=ve;exports.useCSSVarCls=Ur;exports.useComponentConfig=Wr;exports.useComposeRef=Fi;exports.useEvent=nn;exports.useId=tl;exports.useLocale=Us;exports.useSafeState=No;exports.useToken=cr;exports.useZIndex=XA;exports.warnContext=i0;exports.warning=xi;exports.withPureRenderTheme=I1;exports.zIndexContext=WA;
@@ -1,6 +1,6 @@
1
1
  import * as r from "react";
2
2
  import $, { useContext as re, useRef as Z, useMemo as Lt, useEffect as De } from "react";
3
- import { i as Dt, K as Ne, g as se, F as kt, m as fe, u as N, r as nt, b as Pe, p as je, C as q, c as O, d as Ie, e as At, o as ge, f as Ce, h as _t, k as Vt, l as Wt, W as qt, n as Gt, B as Te, q as ot, s as Xt, _ as R, t as ke, v as Y, w as Me, x as at, y as Ae, z as Ut, A as _e, D as Ve, P as Kt, G as Qt, H as K, J as Zt, L as Yt, N as Re, O as Jt, Q as lt, T as en, U as tn, V as rt, X as nn, Z as on, $ as an, a0 as ue, a1 as ln, a2 as st, a3 as rn, a4 as sn, a5 as cn, a6 as dn, a7 as un, a8 as mn, a9 as fn, aa as gn, ab as Cn, ac as it, ad as pn, ae as vn } from "./index-BlA2fdYC.mjs";
3
+ import { i as Dt, K as Ne, g as se, F as kt, m as fe, u as N, r as nt, b as Pe, p as je, C as q, c as O, d as Ie, e as At, o as ge, f as Ce, h as _t, k as Vt, l as Wt, W as qt, n as Gt, B as Te, q as ot, s as Xt, _ as R, t as ke, v as Y, w as Me, x as at, y as Ae, z as Ut, A as _e, D as Ve, P as Kt, G as Qt, H as K, J as Zt, L as Yt, N as Re, O as Jt, Q as lt, T as en, U as tn, V as rt, X as nn, Z as on, $ as an, a0 as ue, a1 as ln, a2 as st, a3 as rn, a4 as sn, a5 as cn, a6 as dn, a7 as un, a8 as mn, a9 as fn, aa as gn, ab as Cn, ac as it, ad as pn, ae as vn } from "./index-C-tn5rNr.mjs";
4
4
  const bn = new Ne("antFadeIn", {
5
5
  "0%": {
6
6
  opacity: 0
@@ -1,4 +1,4 @@
1
- "use strict";const b=require("react"),a=require("./index-CelVA0on.js");function st(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const s=st(b),it=new a.Keyframe("antFadeIn",{"0%":{opacity:0},"100%":{opacity:1}}),ct=new a.Keyframe("antFadeOut",{"0%":{opacity:1},"100%":{opacity:0}}),dt=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const{antCls:o}=e,n=`${o}-fade`,r=t?"&":"";return[a.initMotion(n,it,ct,e.motionDurationMid,t),{[`
1
+ "use strict";const b=require("react"),a=require("./index-Cpa30Nx-.js");function st(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const s=st(b),it=new a.Keyframe("antFadeIn",{"0%":{opacity:0},"100%":{opacity:1}}),ct=new a.Keyframe("antFadeOut",{"0%":{opacity:1},"100%":{opacity:0}}),dt=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const{antCls:o}=e,n=`${o}-fade`,r=t?"&":"";return[a.initMotion(n,it,ct,e.motionDurationMid,t),{[`
2
2
  ${r}${n}-enter,
3
3
  ${r}${n}-appear
4
4
  `]:{opacity:0,animationTimingFunction:"linear"},[`${r}${n}-leave`]:{animationTimingFunction:"linear"}}]},ut=e=>{const{paddingXXS:t,lineWidth:o,tagPaddingHorizontal:n,componentCls:r,calc:l}=e,i=l(n).sub(o).equal(),u=l(t).sub(o).equal();return{[r]:Object.assign(Object.assign({},a.resetComponent(e)),{display:"inline-block",height:"auto",marginInlineEnd:e.marginXS,paddingInline:i,fontSize:e.tagFontSize,lineHeight:e.tagLineHeight,whiteSpace:"nowrap",background:e.defaultBg,border:`${a.unit(e.lineWidth)} ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusSM,opacity:1,transition:`all ${e.motionDurationMid}`,textAlign:"start",position:"relative",[`&${r}-rtl`]:{direction:"rtl"},"&, a, a:hover":{color:e.defaultColor},[`${r}-close-icon`]:{marginInlineStart:u,fontSize:e.tagIconSize,color:e.colorTextDescription,cursor:"pointer",transition:`all ${e.motionDurationMid}`,"&:hover":{color:e.colorTextHeading}},[`&${r}-has-color`]:{borderColor:"transparent",[`&, a, a:hover, ${e.iconCls}-close, ${e.iconCls}-close:hover`]:{color:e.colorTextLightSolid}},"&-checkable":{backgroundColor:"transparent",borderColor:"transparent",cursor:"pointer",[`&:not(${r}-checkable-checked):hover`]:{color:e.colorPrimary,backgroundColor:e.colorFillSecondary},"&:active, &-checked":{color:e.colorTextLightSolid},"&-checked":{backgroundColor:e.colorPrimary,"&:hover":{backgroundColor:e.colorPrimaryHover}},"&:active":{backgroundColor:e.colorPrimaryActive}},"&-hidden":{display:"none"},[`> ${e.iconCls} + span, > span + ${e.iconCls}`]:{marginInlineStart:i}}),[`${r}-borderless`]:{borderColor:"transparent",background:e.tagBorderlessBg}}},Ce=e=>{const{lineWidth:t,fontSizeIcon:o,calc:n}=e,r=e.fontSizeSM;return a.merge(e,{tagFontSize:r,tagLineHeight:a.unit(n(e.lineHeightSM).mul(r).equal()),tagIconSize:n(o).sub(n(t).mul(2)).equal(),tagPaddingHorizontal:8,tagBorderlessBg:e.defaultBg})},pe=e=>({defaultBg:new a.FastColor(e.colorFillQuaternary).onBackground(e.colorBgContainer).toHexString(),defaultColor:e.colorText}),Re=a.genStyleHooks("Tag",e=>{const t=Ce(e);return ut(t)},pe);function oe(e){if(e)return{closable:e.closable,closeIcon:e.closeIcon}}function $e(e){const{closable:t,closeIcon:o}=e||{};return b.useMemo(()=>{if(!t&&(t===!1||o===!1||o===null))return!1;if(t===void 0&&o===void 0)return null;let n={closeIcon:typeof o!="boolean"&&o!==null?o:void 0};return t&&typeof t=="object"&&(n=Object.assign(Object.assign({},n),t)),n},[t,o])}function xe(){const e={};for(var t=arguments.length,o=new Array(t),n=0;n<t;n++)o[n]=arguments[n];return o.forEach(r=>{r&&Object.keys(r).forEach(l=>{r[l]!==void 0&&(e[l]=r[l])})}),e}const mt={};function Be(e,t){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:mt;const n=$e(e),r=$e(t),l=typeof n!="boolean"?!!(n!=null&&n.disabled):!1,i=b.useMemo(()=>Object.assign({closeIcon:b.createElement(a.RefIcon,null)},o),[o]),u=b.useMemo(()=>n===!1?!1:n?xe(i,r,n):r===!1?!1:r?xe(i,r):i.closable?i:!1,[n,r,i]);return b.useMemo(()=>{if(u===!1)return[!1,null,l];const{closeIconRender:c}=i,{closeIcon:g}=u;let d=g;if(d!=null){c&&(d=c(g));const m=a.pickAttrs(u,!0);Object.keys(m).length&&(d=b.isValidElement(d)?b.cloneElement(d,m):b.createElement("span",Object.assign({},m),d))}return[!0,d,l]},[u,i])}var ft=function(e,t){var o={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(o[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(o[n[r]]=e[n[r]]);return o};const gt=s.forwardRef((e,t)=>{const{prefixCls:o,style:n,className:r,checked:l,onChange:i,onClick:u}=e,c=ft(e,["prefixCls","style","className","checked","onChange","onClick"]),{getPrefixCls:g,tag:d}=s.useContext(a.ConfigContext),m=y=>{i==null||i(!l),u==null||u(y)},f=g("tag",o),[v,x,C]=Re(f),p=a.classNames(f,`${f}-checkable`,{[`${f}-checkable-checked`]:l},d==null?void 0:d.className,r,x,C);return v(s.createElement("span",Object.assign({},c,{ref:t,style:Object.assign(Object.assign({},n),d==null?void 0:d.style),className:p,onClick:m})))}),Ct=e=>a.genPresetColor(e,(t,o)=>{let{textColor:n,lightBorderColor:r,lightColor:l,darkColor:i}=o;return{[`${e.componentCls}${e.componentCls}-${t}`]:{color:n,background:l,borderColor:r,"&-inverse":{color:e.colorTextLightSolid,background:i,borderColor:i},[`&${e.componentCls}-borderless`]:{borderColor:"transparent"}}}}),pt=a.genSubStyleComponent(["Tag","preset"],e=>{const t=Ce(e);return Ct(t)},pe);function bt(e){return typeof e!="string"?e:e.charAt(0).toUpperCase()+e.slice(1)}const ne=(e,t,o)=>{const n=bt(o);return{[`${e.componentCls}${e.componentCls}-${t}`]:{color:e[`color${o}`],background:e[`color${n}Bg`],borderColor:e[`color${n}Border`],[`&${e.componentCls}-borderless`]:{borderColor:"transparent"}}}},vt=a.genSubStyleComponent(["Tag","status"],e=>{const t=Ce(e);return[ne(t,"success","Success"),ne(t,"processing","Info"),ne(t,"error","Error"),ne(t,"warning","Warning")]},pe);var ht=function(e,t){var o={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(o[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(o[n[r]]=e[n[r]]);return o};const yt=s.forwardRef((e,t)=>{const{prefixCls:o,className:n,rootClassName:r,style:l,children:i,icon:u,color:c,onClose:g,bordered:d=!0,visible:m}=e,f=ht(e,["prefixCls","className","rootClassName","style","children","icon","color","onClose","bordered","visible"]),{getPrefixCls:v,direction:x,tag:C}=s.useContext(a.ConfigContext),[p,y]=s.useState(!0),h=a.omit(f,["closeIcon","closable"]);process.env.NODE_ENV!=="production"&&a.devUseWarning("Tag").deprecated(!("visible"in e),"visible","visible && <Tag />"),s.useEffect(()=>{m!==void 0&&y(m)},[m]);const S=a.isPresetColor(c),N=a.isPresetStatusColor(c),E=S||N,O=Object.assign(Object.assign({backgroundColor:c&&!E?c:void 0},C==null?void 0:C.style),l),$=v("tag",o),[P,j,H]=Re($),B=a.classNames($,C==null?void 0:C.className,{[`${$}-${c}`]:E,[`${$}-has-color`]:c&&!E,[`${$}-hidden`]:!p,[`${$}-rtl`]:x==="rtl",[`${$}-borderless`]:!d},n,r,j,H),_=I=>{I.stopPropagation(),g==null||g(I),!I.defaultPrevented&&y(!1)},[,V]=Be(oe(e),oe(C),{closable:!1,closeIconRender:I=>{const X=s.createElement("span",{className:`${$}-close-icon`,onClick:_},I);return a.replaceElement(I,X,M=>({onClick:q=>{var R;(R=M==null?void 0:M.onClick)===null||R===void 0||R.call(M,q),_(q)},className:a.classNames(M==null?void 0:M.className,`${$}-close-icon`)}))}}),A=typeof f.onClick=="function"||i&&i.type==="a",z=u||null,W=z?s.createElement(s.Fragment,null,z,i&&s.createElement("span",null,i)):i,L=s.createElement("span",Object.assign({},h,{ref:t,className:B,style:O}),W,V,S&&s.createElement(pt,{key:"preset",prefixCls:$}),N&&s.createElement(vt,{key:"status",prefixCls:$}));return P(A?s.createElement(a.Wave,{component:"Tag"},L):L)}),be=yt;process.env.NODE_ENV!=="production"&&(be.displayName="Tag");be.CheckableTag=gt;function ie(e){return!!(e!=null&&e.then)}const _e=e=>{const{type:t,children:o,prefixCls:n,buttonProps:r,close:l,autoFocus:i,emitEvent:u,isSilent:c,quitOnNullishReturnValue:g,actionFn:d}=e,m=s.useRef(!1),f=s.useRef(null),[v,x]=a.useSafeState(!1),C=function(){l==null||l.apply(void 0,arguments)};s.useEffect(()=>{let h=null;return i&&(h=setTimeout(()=>{var S;(S=f.current)===null||S===void 0||S.focus({preventScroll:!0})})),()=>{h&&clearTimeout(h)}},[]);const p=h=>{ie(h)&&(x(!0),h.then(function(){x(!1,!0),C.apply(void 0,arguments),m.current=!1},S=>{if(x(!1,!0),m.current=!1,!(c!=null&&c()))return Promise.reject(S)}))},y=h=>{if(m.current)return;if(m.current=!0,!d){C();return}let S;if(u){if(S=d(h),g&&!ie(S)){m.current=!1,C(h);return}}else if(d.length)S=d(l),m.current=!1;else if(S=d(),!ie(S)){C();return}p(S)};return s.createElement(a.Button,Object.assign({},a.convertLegacyProps(t),{onClick:y,loading:v,prefixCls:n},r,{ref:f}),o)},ee=b.createContext({}),{Provider:He}=ee,Se=()=>{const{autoFocusButton:e,cancelButtonProps:t,cancelTextLocale:o,isSilent:n,mergedOkCancel:r,rootPrefixCls:l,close:i,onCancel:u,onConfirm:c}=b.useContext(ee);return r?b.createElement(_e,{isSilent:n,actionFn:u,close:function(){i==null||i.apply(void 0,arguments),c==null||c(!1)},autoFocus:e==="cancel",buttonProps:t,prefixCls:`${l}-btn`},o):null},Oe=()=>{const{autoFocusButton:e,close:t,isSilent:o,okButtonProps:n,rootPrefixCls:r,okTextLocale:l,okType:i,onConfirm:u,onOk:c}=b.useContext(ee);return b.createElement(_e,{isSilent:o,type:i||"primary",actionFn:c,close:function(){t==null||t.apply(void 0,arguments),u==null||u(!0)},autoFocus:e==="ok",buttonProps:n,prefixCls:`${r}-btn`},l)};var ze=s.createContext({});function Ne(e,t,o){var n=t;return!n&&o&&(n="".concat(e,"-").concat(o)),n}function Ee(e,t){var o=e["page".concat(t?"Y":"X","Offset")],n="scroll".concat(t?"Top":"Left");if(typeof o!="number"){var r=e.document;o=r.documentElement[n],typeof o!="number"&&(o=r.body[n])}return o}function $t(e){var t=e.getBoundingClientRect(),o={left:t.left,top:t.top},n=e.ownerDocument,r=n.defaultView||n.parentWindow;return o.left+=Ee(r),o.top+=Ee(r,!0),o}const xt=s.memo(function(e){var t=e.children;return t},function(e,t){var o=t.shouldUpdate;return!o});var St={width:0,height:0,overflow:"hidden",outline:"none"},Ot={outline:"none"},ve=b.forwardRef(function(e,t){var o=e.prefixCls,n=e.className,r=e.style,l=e.title,i=e.ariaId,u=e.footer,c=e.closable,g=e.closeIcon,d=e.onClose,m=e.children,f=e.bodyStyle,v=e.bodyProps,x=e.modalRender,C=e.onMouseDown,p=e.onMouseUp,y=e.holderRef,h=e.visible,S=e.forceRender,N=e.width,E=e.height,O=e.classNames,$=e.styles,P=b.useContext(ze),j=P.panel,H=a.useComposeRef(y,j),B=b.useRef(),_=b.useRef();b.useImperativeHandle(t,function(){return{focus:function(){var R;(R=B.current)===null||R===void 0||R.focus({preventScroll:!0})},changeActive:function(R){var Y=document,G=Y.activeElement;R&&G===_.current?B.current.focus({preventScroll:!0}):!R&&G===B.current&&_.current.focus({preventScroll:!0})}}});var V={};N!==void 0&&(V.width=N),E!==void 0&&(V.height=E);var A=u?b.createElement("div",{className:a.classNames("".concat(o,"-footer"),O==null?void 0:O.footer),style:a._objectSpread2({},$==null?void 0:$.footer)},u):null,z=l?b.createElement("div",{className:a.classNames("".concat(o,"-header"),O==null?void 0:O.header),style:a._objectSpread2({},$==null?void 0:$.header)},b.createElement("div",{className:"".concat(o,"-title"),id:i},l)):null,W=b.useMemo(function(){return a._typeof(c)==="object"&&c!==null?c:c?{closeIcon:g??b.createElement("span",{className:"".concat(o,"-close-x")})}:{}},[c,g,o]),L=a.pickAttrs(W,!0),I=a._typeof(c)==="object"&&c.disabled,X=c?b.createElement("button",a._extends({type:"button",onClick:d,"aria-label":"Close"},L,{className:"".concat(o,"-close"),disabled:I}),W.closeIcon):null,M=b.createElement("div",{className:a.classNames("".concat(o,"-content"),O==null?void 0:O.content),style:$==null?void 0:$.content},X,z,b.createElement("div",a._extends({className:a.classNames("".concat(o,"-body"),O==null?void 0:O.body),style:a._objectSpread2(a._objectSpread2({},f),$==null?void 0:$.body)},v),m),A);return b.createElement("div",{key:"dialog-element",role:"dialog","aria-labelledby":l?i:null,"aria-modal":"true",ref:H,style:a._objectSpread2(a._objectSpread2({},r),V),className:a.classNames(o,n),onMouseDown:C,onMouseUp:p},b.createElement("div",{ref:B,tabIndex:0,style:Ot},b.createElement(xt,{shouldUpdate:h||S},x?x(M):M)),b.createElement("div",{tabIndex:0,ref:_,style:St}))});process.env.NODE_ENV!=="production"&&(ve.displayName="Panel");var Ae=s.forwardRef(function(e,t){var o=e.prefixCls,n=e.title,r=e.style,l=e.className,i=e.visible,u=e.forceRender,c=e.destroyOnClose,g=e.motionName,d=e.ariaId,m=e.onVisibleChanged,f=e.mousePosition,v=b.useRef(),x=s.useState(),C=a._slicedToArray(x,2),p=C[0],y=C[1],h={};p&&(h.transformOrigin=p);function S(){var N=$t(v.current);y(f&&(f.x||f.y)?"".concat(f.x-N.left,"px ").concat(f.y-N.top,"px"):"")}return s.createElement(a.CSSMotion,{visible:i,onVisibleChanged:m,onAppearPrepare:S,onEnterPrepare:S,forceRender:u,motionName:g,removeOnLeave:c,ref:v},function(N,E){var O=N.className,$=N.style;return s.createElement(ve,a._extends({},e,{ref:t,title:n,ariaId:d,prefixCls:o,holderRef:E,style:a._objectSpread2(a._objectSpread2(a._objectSpread2({},$),r),h),className:a.classNames(l,O)}))})});Ae.displayName="Content";var Nt=function(t){var o=t.prefixCls,n=t.style,r=t.visible,l=t.maskProps,i=t.motionName,u=t.className;return s.createElement(a.CSSMotion,{key:"mask",visible:r,motionName:i,leavedClassName:"".concat(o,"-mask-hidden")},function(c,g){var d=c.className,m=c.style;return s.createElement("div",a._extends({ref:g,style:a._objectSpread2(a._objectSpread2({},m),n),className:a.classNames("".concat(o,"-mask"),d,u)},l))})},Et=function(t){var o=t.prefixCls,n=o===void 0?"rc-dialog":o,r=t.zIndex,l=t.visible,i=l===void 0?!1:l,u=t.keyboard,c=u===void 0?!0:u,g=t.focusTriggerAfterClose,d=g===void 0?!0:g,m=t.wrapStyle,f=t.wrapClassName,v=t.wrapProps,x=t.onClose,C=t.afterOpenChange,p=t.afterClose,y=t.transitionName,h=t.animation,S=t.closable,N=S===void 0?!0:S,E=t.mask,O=E===void 0?!0:E,$=t.maskTransitionName,P=t.maskAnimation,j=t.maskClosable,H=j===void 0?!0:j,B=t.maskStyle,_=t.maskProps,V=t.rootClassName,A=t.classNames,z=t.styles;process.env.NODE_ENV!=="production"&&(["wrapStyle","bodyStyle","maskStyle"].forEach(function(w){a.warning(!(w in t),"".concat(w," is deprecated, please use styles instead."))}),"wrapClassName"in t&&a.warning(!1,"wrapClassName is deprecated, please use classNames instead."));var W=b.useRef(),L=b.useRef(),I=b.useRef(),X=s.useState(i),M=a._slicedToArray(X,2),q=M[0],R=M[1],Y=a.useId();function G(){a.contains(L.current,document.activeElement)||(W.current=document.activeElement)}function le(){if(!a.contains(L.current,document.activeElement)){var w;(w=I.current)===null||w===void 0||w.focus()}}function k(w){if(w)le();else{if(R(!1),O&&W.current&&d){try{W.current.focus({preventScroll:!0})}catch{}W.current=null}q&&(p==null||p())}C==null||C(w)}function T(w){x==null||x(w)}var D=b.useRef(!1),J=b.useRef(),ot=function(){clearTimeout(J.current),D.current=!0},at=function(){J.current=setTimeout(function(){D.current=!1})},ye=null;H&&(ye=function(se){D.current?D.current=!1:L.current===se.target&&T(se)});function rt(w){if(c&&w.keyCode===a.KeyCode.ESC){w.stopPropagation(),T(w);return}i&&w.keyCode===a.KeyCode.TAB&&I.current.changeActive(!w.shiftKey)}b.useEffect(function(){i&&(R(!0),G())},[i]),b.useEffect(function(){return function(){clearTimeout(J.current)}},[]);var lt=a._objectSpread2(a._objectSpread2(a._objectSpread2({zIndex:r},m),z==null?void 0:z.wrapper),{},{display:q?null:"none"});return s.createElement("div",a._extends({className:a.classNames("".concat(n,"-root"),V)},a.pickAttrs(t,{data:!0})),s.createElement(Nt,{prefixCls:n,visible:O&&i,motionName:Ne(n,$,P),style:a._objectSpread2(a._objectSpread2({zIndex:r},B),z==null?void 0:z.mask),maskProps:_,className:A==null?void 0:A.mask}),s.createElement("div",a._extends({tabIndex:-1,onKeyDown:rt,className:a.classNames("".concat(n,"-wrap"),f,A==null?void 0:A.wrapper),ref:L,onClick:ye,style:lt},v),s.createElement(Ae,a._extends({},t,{onMouseDown:ot,onMouseUp:at,ref:I,closable:N,ariaId:Y,prefixCls:n,visible:i&&q,onClose:T,onVisibleChanged:k,motionName:Ne(n,y,h)}))))},Le=function(t){var o=t.visible,n=t.getContainer,r=t.forceRender,l=t.destroyOnClose,i=l===void 0?!1:l,u=t.afterClose,c=t.panelRef,g=s.useState(o),d=a._slicedToArray(g,2),m=d[0],f=d[1],v=s.useMemo(function(){return{panel:c}},[c]);return s.useEffect(function(){o&&f(!0)},[o]),!r&&i&&!m?null:s.createElement(ze.Provider,{value:v},s.createElement(a.Portal,{open:o||r||m,autoDestroy:!1,getContainer:n,autoLock:o||m},s.createElement(Et,a._extends({},t,{destroyOnClose:i,afterClose:function(){u==null||u(),f(!1)}}))))};Le.displayName="Dialog";const wt=()=>a.canUseDom()&&window.document.documentElement,ae=e=>{const{prefixCls:t,className:o,style:n,size:r,shape:l}=e,i=a.classNames({[`${t}-lg`]:r==="large",[`${t}-sm`]:r==="small"}),u=a.classNames({[`${t}-circle`]:l==="circle",[`${t}-square`]:l==="square",[`${t}-round`]:l==="round"}),c=s.useMemo(()=>typeof r=="number"?{width:r,height:r,lineHeight:`${r}px`}:{},[r]);return s.createElement("span",{className:a.classNames(t,i,u,o),style:Object.assign(Object.assign({},c),n)})},jt=new a.Keyframe("ant-skeleton-loading",{"0%":{backgroundPosition:"100% 50%"},"100%":{backgroundPosition:"0 50%"}}),re=e=>({height:e,lineHeight:a.unit(e)}),Q=e=>Object.assign({width:e},re(e)),Pt=e=>({background:e.skeletonLoadingBackground,backgroundSize:"400% 100%",animationName:jt,animationDuration:e.skeletonLoadingMotionDuration,animationTimingFunction:"ease",animationIterationCount:"infinite"}),ce=(e,t)=>Object.assign({width:t(e).mul(5).equal(),minWidth:t(e).mul(5).equal()},re(e)),It=e=>{const{skeletonAvatarCls:t,gradientFromColor:o,controlHeight:n,controlHeightLG:r,controlHeightSM:l}=e;return{[t]:Object.assign({display:"inline-block",verticalAlign:"top",background:o},Q(n)),[`${t}${t}-circle`]:{borderRadius:"50%"},[`${t}${t}-lg`]:Object.assign({},Q(r)),[`${t}${t}-sm`]:Object.assign({},Q(l))}},Tt=e=>{const{controlHeight:t,borderRadiusSM:o,skeletonInputCls:n,controlHeightLG:r,controlHeightSM:l,gradientFromColor:i,calc:u}=e;return{[n]:Object.assign({display:"inline-block",verticalAlign:"top",background:i,borderRadius:o},ce(t,u)),[`${n}-lg`]:Object.assign({},ce(r,u)),[`${n}-sm`]:Object.assign({},ce(l,u))}},we=e=>Object.assign({width:e},re(e)),Mt=e=>{const{skeletonImageCls:t,imageSizeBase:o,gradientFromColor:n,borderRadiusSM:r,calc:l}=e;return{[t]:Object.assign(Object.assign({display:"inline-flex",alignItems:"center",justifyContent:"center",verticalAlign:"middle",background:n,borderRadius:r},we(l(o).mul(2).equal())),{[`${t}-path`]:{fill:"#bfbfbf"},[`${t}-svg`]:Object.assign(Object.assign({},we(o)),{maxWidth:l(o).mul(4).equal(),maxHeight:l(o).mul(4).equal()}),[`${t}-svg${t}-svg-circle`]:{borderRadius:"50%"}}),[`${t}${t}-circle`]:{borderRadius:"50%"}}},de=(e,t,o)=>{const{skeletonButtonCls:n}=e;return{[`${o}${n}-circle`]:{width:t,minWidth:t,borderRadius:"50%"},[`${o}${n}-round`]:{borderRadius:t}}},ue=(e,t)=>Object.assign({width:t(e).mul(2).equal(),minWidth:t(e).mul(2).equal()},re(e)),Rt=e=>{const{borderRadiusSM:t,skeletonButtonCls:o,controlHeight:n,controlHeightLG:r,controlHeightSM:l,gradientFromColor:i,calc:u}=e;return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({[o]:Object.assign({display:"inline-block",verticalAlign:"top",background:i,borderRadius:t,width:u(n).mul(2).equal(),minWidth:u(n).mul(2).equal()},ue(n,u))},de(e,n,o)),{[`${o}-lg`]:Object.assign({},ue(r,u))}),de(e,r,`${o}-lg`)),{[`${o}-sm`]:Object.assign({},ue(l,u))}),de(e,l,`${o}-sm`))},Bt=e=>{const{componentCls:t,skeletonAvatarCls:o,skeletonTitleCls:n,skeletonParagraphCls:r,skeletonButtonCls:l,skeletonInputCls:i,skeletonImageCls:u,controlHeight:c,controlHeightLG:g,controlHeightSM:d,gradientFromColor:m,padding:f,marginSM:v,borderRadius:x,titleHeight:C,blockRadius:p,paragraphLiHeight:y,controlHeightXS:h,paragraphMarginTop:S}=e;return{[t]:{display:"table",width:"100%",[`${t}-header`]:{display:"table-cell",paddingInlineEnd:f,verticalAlign:"top",[o]:Object.assign({display:"inline-block",verticalAlign:"top",background:m},Q(c)),[`${o}-circle`]:{borderRadius:"50%"},[`${o}-lg`]:Object.assign({},Q(g)),[`${o}-sm`]:Object.assign({},Q(d))},[`${t}-content`]:{display:"table-cell",width:"100%",verticalAlign:"top",[n]:{width:"100%",height:C,background:m,borderRadius:p,[`+ ${r}`]:{marginBlockStart:d}},[r]:{padding:0,"> li":{width:"100%",height:y,listStyle:"none",background:m,borderRadius:p,"+ li":{marginBlockStart:h}}},[`${r}> li:last-child:not(:first-child):not(:nth-child(2))`]:{width:"61%"}},[`&-round ${t}-content`]:{[`${n}, ${r} > li`]:{borderRadius:x}}},[`${t}-with-avatar ${t}-content`]:{[n]:{marginBlockStart:v,[`+ ${r}`]:{marginBlockStart:S}}},[`${t}${t}-element`]:Object.assign(Object.assign(Object.assign(Object.assign({display:"inline-block",width:"auto"},Rt(e)),It(e)),Tt(e)),Mt(e)),[`${t}${t}-block`]:{width:"100%",[l]:{width:"100%"},[i]:{width:"100%"}},[`${t}${t}-active`]:{[`
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index-CelVA0on.js");exports.YsytAgentLogout=e.agentLogout;exports.YsytCallForceInsert=e.callForceInsert;exports.YsytCallForceSplit=e.callForceSplit;exports.YsytGetCustomerInfo=e.getCustomerInfo;exports.YsytListenCall=e.listenCall;exports.YsytMakeCall=e.makeCall;exports.YsytPreviewMakeCall=e.previewMakeCall;exports.YsytSetAgentDevice=e.setAgentDevice;exports.YsytSetAgentInitState=e.setAgentInitState;exports.YsytStartEarSpeak=e.startEarSpeak;exports.YsytStopEarSpeak=e.stopEarSpeak;exports.default=e.YsytBarPhone;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index-Cpa30Nx-.js");exports.YsytAgentLogout=e.agentLogout;exports.YsytCallForceInsert=e.callForceInsert;exports.YsytCallForceSplit=e.callForceSplit;exports.YsytGetCustomerInfo=e.getCustomerInfo;exports.YsytListenCall=e.listenCall;exports.YsytMakeCall=e.makeCall;exports.YsytPreviewMakeCall=e.previewMakeCall;exports.YsytSetAgentDevice=e.setAgentDevice;exports.YsytSetAgentInitState=e.setAgentInitState;exports.YsytStartEarSpeak=e.startEarSpeak;exports.YsytStopEarSpeak=e.stopEarSpeak;exports.default=e.YsytBarPhone;
@@ -1,4 +1,4 @@
1
- import { ak as s, ap as e, aq as l, ah as y, am as Y, ag as o, al as r, aj as n, ai as S, an as i, ao as p, af as C } from "./index-BlA2fdYC.mjs";
1
+ import { ak as s, ap as e, aq as l, ah as y, am as Y, ag as o, al as r, aj as n, ai as S, an as i, ao as p, af as C } from "./index-C-tn5rNr.mjs";
2
2
  export {
3
3
  s as YsytAgentLogout,
4
4
  e as YsytCallForceInsert,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ysyt-react-agent-lib",
3
- "version": "1.2.11",
3
+ "version": "1.2.13",
4
4
  "description": "",
5
5
  "main": "dist/ysyt-react-agent-lib.cjs.js",
6
6
  "module": "dist/ysyt-react-agent-lib.es.js",
@@ -29,7 +29,7 @@
29
29
  "dependencies": {
30
30
  "antd": "5.24.0",
31
31
  "styled-components": "^6.1.13",
32
- "ysyt-agent-sdk": "2.0.20"
32
+ "ysyt-agent-sdk": "2.0.23"
33
33
  },
34
34
  "peerDependencies": {
35
35
  "react": "^18.2.0",