@tmsoft/webphone 3.0.25 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/webphone.component.js +25 -25
- package/dist/webphone.es.js +103 -103
- package/dist/webphone.umd.js +10 -10
- package/package.json +1 -1
package/dist/webphone.es.js
CHANGED
|
@@ -7124,11 +7124,11 @@ var concatArrays = (e, t) => {
|
|
|
7124
7124
|
isNumber,
|
|
7125
7125
|
isArbitraryVariable,
|
|
7126
7126
|
isArbitraryValue
|
|
7127
|
-
],
|
|
7127
|
+
], Jp = () => [
|
|
7128
7128
|
isNumber,
|
|
7129
7129
|
isArbitraryVariable,
|
|
7130
7130
|
isArbitraryValue
|
|
7131
|
-
],
|
|
7131
|
+
], J = () => [
|
|
7132
7132
|
isFraction,
|
|
7133
7133
|
"full",
|
|
7134
7134
|
...O()
|
|
@@ -8020,9 +8020,9 @@ var concatArrays = (e, t) => {
|
|
|
8020
8020
|
"scale-y": [{ "scale-y": q() }],
|
|
8021
8021
|
"scale-z": [{ "scale-z": q() }],
|
|
8022
8022
|
"scale-3d": ["scale-3d"],
|
|
8023
|
-
skew: [{ skew:
|
|
8024
|
-
"skew-x": [{ "skew-x":
|
|
8025
|
-
"skew-y": [{ "skew-y":
|
|
8023
|
+
skew: [{ skew: Jp() }],
|
|
8024
|
+
"skew-x": [{ "skew-x": Jp() }],
|
|
8025
|
+
"skew-y": [{ "skew-y": Jp() }],
|
|
8026
8026
|
transform: [{ transform: [
|
|
8027
8027
|
isArbitraryVariable,
|
|
8028
8028
|
isArbitraryValue,
|
|
@@ -8033,10 +8033,10 @@ var concatArrays = (e, t) => {
|
|
|
8033
8033
|
] }],
|
|
8034
8034
|
"transform-origin": [{ origin: T() }],
|
|
8035
8035
|
"transform-style": [{ transform: ["3d", "flat"] }],
|
|
8036
|
-
translate: [{ translate:
|
|
8037
|
-
"translate-x": [{ "translate-x":
|
|
8038
|
-
"translate-y": [{ "translate-y":
|
|
8039
|
-
"translate-z": [{ "translate-z":
|
|
8036
|
+
translate: [{ translate: J() }],
|
|
8037
|
+
"translate-x": [{ "translate-x": J() }],
|
|
8038
|
+
"translate-y": [{ "translate-y": J() }],
|
|
8039
|
+
"translate-z": [{ "translate-z": J() }],
|
|
8040
8040
|
"translate-none": ["translate-none"],
|
|
8041
8041
|
accent: [{ accent: B() }],
|
|
8042
8042
|
appearance: [{ appearance: ["none", "auto"] }],
|
|
@@ -8613,14 +8613,14 @@ const createSipService = (e, t = {}) => {
|
|
|
8613
8613
|
isHeld: !1,
|
|
8614
8614
|
hasVideo: !1,
|
|
8615
8615
|
hasEarlyMedia: !1
|
|
8616
|
-
}), a.value.delete(i), e.activeChannelId.value === i &&
|
|
8616
|
+
}), a.value.delete(i), e.activeChannelId.value === i && rm(), F();
|
|
8617
8617
|
break;
|
|
8618
8618
|
}
|
|
8619
8619
|
case SessionState.Established:
|
|
8620
8620
|
m.add(i), e.updateChannelState(i, {
|
|
8621
8621
|
status: "connected",
|
|
8622
8622
|
startTime: Date.now()
|
|
8623
|
-
}), M(i, "connected"), e.activeChannelId.value === i && (
|
|
8623
|
+
}), M(i, "connected"), e.activeChannelId.value === i && (Q(t), H(t).then(() => N(t, i))), F();
|
|
8624
8624
|
break;
|
|
8625
8625
|
}
|
|
8626
8626
|
});
|
|
@@ -8645,7 +8645,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8645
8645
|
m.add(o), e.channels.value.find((e) => e.id === o)?.status !== "connected" && (e.updateChannelState(o, {
|
|
8646
8646
|
status: "connected",
|
|
8647
8647
|
startTime: Date.now()
|
|
8648
|
-
}), M(o, "connected"),
|
|
8648
|
+
}), M(o, "connected"), Q(l), H(l).then(() => N(l, o)), F());
|
|
8649
8649
|
break;
|
|
8650
8650
|
case SessionState.Terminated: {
|
|
8651
8651
|
let n = e.channels.value.find((e) => e.id === o);
|
|
@@ -8673,7 +8673,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8673
8673
|
startTime: void 0,
|
|
8674
8674
|
keypadValue: "",
|
|
8675
8675
|
hasVideo: !1
|
|
8676
|
-
}), a.value.delete(o), e.activeChannelId.value === o &&
|
|
8676
|
+
}), a.value.delete(o), e.activeChannelId.value === o && rm(), F();
|
|
8677
8677
|
break;
|
|
8678
8678
|
}
|
|
8679
8679
|
}
|
|
@@ -8682,22 +8682,22 @@ const createSipService = (e, t = {}) => {
|
|
|
8682
8682
|
sessionDescriptionHandlerOptions: { constraints: U(i) },
|
|
8683
8683
|
requestDelegate: {
|
|
8684
8684
|
onProgress: (t) => {
|
|
8685
|
-
(t.message.statusCode === 180 || t.message.statusCode === 183) && (t.message.body && (e.updateChannelState(o, { hasEarlyMedia: !0 }),
|
|
8685
|
+
(t.message.statusCode === 180 || t.message.statusCode === 183) && (t.message.body && (e.updateChannelState(o, { hasEarlyMedia: !0 }), Q(l)), F());
|
|
8686
8686
|
},
|
|
8687
8687
|
onAccept: (t) => {
|
|
8688
8688
|
e.channels.value.find((e) => e.id === o)?.status !== "connected" && (m.add(o), e.updateChannelState(o, {
|
|
8689
8689
|
status: "connected",
|
|
8690
8690
|
startTime: Date.now()
|
|
8691
|
-
}), M(o, "connected"),
|
|
8691
|
+
}), M(o, "connected"), Q(l), H(l).then(() => N(l, o)), F());
|
|
8692
8692
|
}
|
|
8693
8693
|
}
|
|
8694
8694
|
};
|
|
8695
8695
|
await l.invite(u);
|
|
8696
|
-
},
|
|
8696
|
+
}, Jp = async (t = !1) => {
|
|
8697
8697
|
let n = e.activeChannelId.value, i = a.value.get(n);
|
|
8698
8698
|
if (i instanceof Invitation && i.state === SessionState.Initial) {
|
|
8699
8699
|
for (let [t, n] of a.value.entries()) if (t !== e.activeChannelId.value && n.state === SessionState.Established && !e.channels.value.find((e) => e.id === t)?.isHeld) try {
|
|
8700
|
-
await
|
|
8700
|
+
await Y(n, !0), e.updateChannelState(t, { isHeld: !0 });
|
|
8701
8701
|
} catch (e) {
|
|
8702
8702
|
console.error(`[SipJs] Failed to hold channel ${t}:`, e);
|
|
8703
8703
|
}
|
|
@@ -8716,7 +8716,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8716
8716
|
}), t;
|
|
8717
8717
|
}
|
|
8718
8718
|
}
|
|
8719
|
-
},
|
|
8719
|
+
}, J = async () => {
|
|
8720
8720
|
let t = a.value.get(e.activeChannelId.value);
|
|
8721
8721
|
if (t) switch (t.state) {
|
|
8722
8722
|
case SessionState.Initial:
|
|
@@ -8727,35 +8727,35 @@ const createSipService = (e, t = {}) => {
|
|
|
8727
8727
|
await t.bye();
|
|
8728
8728
|
break;
|
|
8729
8729
|
}
|
|
8730
|
-
},
|
|
8730
|
+
}, Yp = () => {
|
|
8731
8731
|
let t = a.value.get(e.activeChannelId.value);
|
|
8732
8732
|
if (!t) return;
|
|
8733
8733
|
let n = !e.isMuted.value;
|
|
8734
8734
|
e.setMuted(n), V(t, e.channels.value.find((t) => t.id === e.activeChannelId.value));
|
|
8735
|
-
},
|
|
8735
|
+
}, Y = async (e, t) => {
|
|
8736
8736
|
let n = { sessionDescriptionHandlerOptions: { hold: t } };
|
|
8737
8737
|
await e.invite(n);
|
|
8738
|
-
},
|
|
8738
|
+
}, Xp = async () => {
|
|
8739
8739
|
let t = a.value.get(e.activeChannelId.value);
|
|
8740
8740
|
if (t?.state !== SessionState.Established) return;
|
|
8741
8741
|
let n = !e.isHeld.value;
|
|
8742
8742
|
try {
|
|
8743
|
-
await
|
|
8743
|
+
await Y(t, n), e.setHeld(n), V(t, e.channels.value.find((t) => t.id === e.activeChannelId.value));
|
|
8744
8744
|
} catch {}
|
|
8745
|
-
},
|
|
8745
|
+
}, Zp = async (t) => {
|
|
8746
8746
|
let n = e.activeChannelId.value;
|
|
8747
8747
|
if (n === t) return;
|
|
8748
8748
|
let i = a.value.get(n), o = a.value.get(t), s = e.channels.value.find((e) => e.id === n), l = e.channels.value.find((e) => e.id === t);
|
|
8749
8749
|
if (i && i.state === SessionState.Established && !s?.isHeld) try {
|
|
8750
|
-
await
|
|
8750
|
+
await Y(i, !0), e.updateChannelState(n, { isHeld: !0 }), V(i, e.channels.value.find((e) => e.id === n));
|
|
8751
8751
|
} catch {}
|
|
8752
8752
|
if (e.setActiveChannelId(t), F(), o && o.state === SessionState.Established) {
|
|
8753
8753
|
if (l?.isHeld) try {
|
|
8754
|
-
await
|
|
8754
|
+
await Y(o, !1), e.updateChannelState(t, { isHeld: !1 });
|
|
8755
8755
|
} catch {}
|
|
8756
|
-
V(o, e.channels.value.find((e) => e.id === t)),
|
|
8757
|
-
} else
|
|
8758
|
-
},
|
|
8756
|
+
V(o, e.channels.value.find((e) => e.id === t)), Q(o);
|
|
8757
|
+
} else rm();
|
|
8758
|
+
}, Qp = (t) => {
|
|
8759
8759
|
if (!/^[0-9*#]$/.test(t)) return;
|
|
8760
8760
|
let n = a.value.get(e.activeChannelId.value);
|
|
8761
8761
|
if (n?.state !== SessionState.Established) return;
|
|
@@ -8770,10 +8770,10 @@ const createSipService = (e, t = {}) => {
|
|
|
8770
8770
|
contentDisposition: "signal"
|
|
8771
8771
|
} } };
|
|
8772
8772
|
n.info(o);
|
|
8773
|
-
},
|
|
8773
|
+
}, Z = (t, n) => {
|
|
8774
8774
|
let i = e.channels.value.find((e) => e.id === t);
|
|
8775
|
-
!i || i.status !== "connected" || (
|
|
8776
|
-
},
|
|
8775
|
+
!i || i.status !== "connected" || (Q(n), V(n, i), H(n), o.play().catch(() => {}));
|
|
8776
|
+
}, $p = async (t) => {
|
|
8777
8777
|
console.log("[SipJs] 🔄 transferCall iniciado"), console.log("[SipJs] Target:", t);
|
|
8778
8778
|
let i = e.activeChannelId.value, o = a.value.get(i);
|
|
8779
8779
|
if (!o) throw console.error("[SipJs] ❌ No hay sesión activa en el canal", i), Error("No active session to transfer");
|
|
@@ -8793,7 +8793,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8793
8793
|
},
|
|
8794
8794
|
onReject: (e) => {
|
|
8795
8795
|
let t = e.message.statusCode;
|
|
8796
|
-
console.error("[SipJs] ❌ Transfer REFER rechazado:", t), console.error("[SipJs] Response completo:", e.message),
|
|
8796
|
+
console.error("[SipJs] ❌ Transfer REFER rechazado:", t), console.error("[SipJs] Response completo:", e.message), Z(i, o);
|
|
8797
8797
|
}
|
|
8798
8798
|
},
|
|
8799
8799
|
onNotify: (e) => {
|
|
@@ -8816,7 +8816,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8816
8816
|
487: "Transferencia cancelada",
|
|
8817
8817
|
503: "Servicio no disponible - el destino puede estar fuera de línea"
|
|
8818
8818
|
}[t] || `Error en transferencia (código ${t})`;
|
|
8819
|
-
console.warn("[SipJs] 💬", e),
|
|
8819
|
+
console.warn("[SipJs] 💬", e), Z(i, o);
|
|
8820
8820
|
} else t >= 100 && t < 200 && console.log("[SipJs] 📞 Transferencia en progreso:", t, n);
|
|
8821
8821
|
} else console.warn("[SipJs] ⚠️ No se pudo extraer el código de estado del NOTIFY body");
|
|
8822
8822
|
} else console.warn("[SipJs] ⚠️ NOTIFY sin body");
|
|
@@ -8825,14 +8825,14 @@ const createSipService = (e, t = {}) => {
|
|
|
8825
8825
|
} catch (e) {
|
|
8826
8826
|
throw console.error("[SipJs] ❌ Error en transferCall:", e), console.error("[SipJs] Error type:", e?.constructor?.name), console.error("[SipJs] Error message:", e instanceof Error ? e.message : String(e)), console.error("[SipJs] Error stack:", e instanceof Error ? e.stack : "N/A"), e;
|
|
8827
8827
|
}
|
|
8828
|
-
},
|
|
8828
|
+
}, em = async (t) => {
|
|
8829
8829
|
console.log("[SipJs] 🔄 startAttendedTransfer iniciado"), console.log("[SipJs] Target:", t);
|
|
8830
8830
|
let n = e.activeChannelId.value, i = a.value.get(n);
|
|
8831
8831
|
if (console.log("[SipJs] Canal original:", n), console.log("[SipJs] Sesión original:", i?.state), !i || i.state !== SessionState.Established) throw console.error("[SipJs] ❌ No hay llamada establecida para transferir"), Error("No established call to transfer");
|
|
8832
8832
|
let o = e.channels.value.find((e) => e.status === "idle");
|
|
8833
8833
|
if (console.log("[SipJs] Canal de consulta encontrado:", o?.id), !o) throw console.error("[SipJs] ❌ No hay canales disponibles para llamada de consulta"), Error("No available channel for consultation call");
|
|
8834
8834
|
try {
|
|
8835
|
-
console.log("[SipJs] 🔇 Poniendo llamada original en hold..."), await
|
|
8835
|
+
console.log("[SipJs] 🔇 Poniendo llamada original en hold..."), await Y(i, !0), e.updateChannelState(n, { isHeld: !0 }), console.log("[SipJs] ✅ Llamada original en hold");
|
|
8836
8836
|
} catch (e) {
|
|
8837
8837
|
throw console.error("[SipJs] ❌ Failed to hold original call:", e), Error("Failed to put call on hold");
|
|
8838
8838
|
}
|
|
@@ -8844,9 +8844,9 @@ const createSipService = (e, t = {}) => {
|
|
|
8844
8844
|
targetNumber: t
|
|
8845
8845
|
}), console.log("[SipJs] 📋 Transferencia en progreso registrada");
|
|
8846
8846
|
} catch (t) {
|
|
8847
|
-
throw console.error("[SipJs] ❌ Failed to start consultation call:", t), console.log("[SipJs] 🔄 Volviendo al canal original y quitando hold..."), e.setActiveChannelId(n), await
|
|
8847
|
+
throw console.error("[SipJs] ❌ Failed to start consultation call:", t), console.log("[SipJs] 🔄 Volviendo al canal original y quitando hold..."), e.setActiveChannelId(n), await Y(i, !1).catch(() => {}), e.updateChannelState(n, { isHeld: !1 }), Error("Failed to initiate consultation call");
|
|
8848
8848
|
}
|
|
8849
|
-
},
|
|
8849
|
+
}, tm = async () => {
|
|
8850
8850
|
console.log("[SipJs] 🔄 completeAttendedTransfer iniciado");
|
|
8851
8851
|
let t = e.transferInProgress.value;
|
|
8852
8852
|
if (!t) throw console.error("[SipJs] ❌ No hay transferencia en progreso"), Error("No transfer in progress");
|
|
@@ -8889,7 +8889,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8889
8889
|
} catch (e) {
|
|
8890
8890
|
throw console.error("[SipJs] Attended transfer failed:", e), e;
|
|
8891
8891
|
}
|
|
8892
|
-
},
|
|
8892
|
+
}, nm = async () => {
|
|
8893
8893
|
let t = e.transferInProgress.value;
|
|
8894
8894
|
if (!t) throw Error("No transfer in progress");
|
|
8895
8895
|
console.log("[SipJs] Canceling attended transfer...");
|
|
@@ -8900,12 +8900,12 @@ const createSipService = (e, t = {}) => {
|
|
|
8900
8900
|
console.warn("[SipJs] Error ending consultation:", e);
|
|
8901
8901
|
}
|
|
8902
8902
|
if (n) try {
|
|
8903
|
-
e.setActiveChannelId(t.originalChannelId), await
|
|
8903
|
+
e.setActiveChannelId(t.originalChannelId), await Y(n, !1), e.updateChannelState(t.originalChannelId, { isHeld: !1 }), console.log("[SipJs] Returned to original call");
|
|
8904
8904
|
} catch (e) {
|
|
8905
8905
|
console.warn("[SipJs] Error resuming original call:", e);
|
|
8906
8906
|
}
|
|
8907
8907
|
e.setTransferInProgress(null);
|
|
8908
|
-
},
|
|
8908
|
+
}, Q = (e) => {
|
|
8909
8909
|
let t = e.sessionDescriptionHandler;
|
|
8910
8910
|
if (!t) {
|
|
8911
8911
|
console.error("[SipJs] setupRemoteMedia: no sessionDescriptionHandler");
|
|
@@ -8936,23 +8936,23 @@ const createSipService = (e, t = {}) => {
|
|
|
8936
8936
|
}, { signal: _.signal });
|
|
8937
8937
|
let [s] = n.getTracks();
|
|
8938
8938
|
s && (o.srcObject = n, a(s), i && N(e, i.id));
|
|
8939
|
-
},
|
|
8939
|
+
}, rm = () => {
|
|
8940
8940
|
v?.abort(), v = null, _?.abort(), _ = null, o.pause(), o.srcObject = null, u.value = null, d.value = null;
|
|
8941
8941
|
};
|
|
8942
8942
|
return {
|
|
8943
8943
|
initUserAgent: Wp,
|
|
8944
8944
|
stop: Kp,
|
|
8945
8945
|
makeCall: q,
|
|
8946
|
-
answerCall:
|
|
8947
|
-
hangupCall:
|
|
8948
|
-
toggleMute:
|
|
8949
|
-
toggleHold:
|
|
8950
|
-
sendDTMF:
|
|
8951
|
-
transferCall:
|
|
8952
|
-
startAttendedTransfer:
|
|
8953
|
-
completeAttendedTransfer:
|
|
8954
|
-
cancelAttendedTransfer:
|
|
8955
|
-
switchChannel:
|
|
8946
|
+
answerCall: Jp,
|
|
8947
|
+
hangupCall: J,
|
|
8948
|
+
toggleMute: Yp,
|
|
8949
|
+
toggleHold: Xp,
|
|
8950
|
+
sendDTMF: Qp,
|
|
8951
|
+
transferCall: $p,
|
|
8952
|
+
startAttendedTransfer: em,
|
|
8953
|
+
completeAttendedTransfer: tm,
|
|
8954
|
+
cancelAttendedTransfer: nm,
|
|
8955
|
+
switchChannel: Zp,
|
|
8956
8956
|
extension: S,
|
|
8957
8957
|
setVolume: I,
|
|
8958
8958
|
setNotificationVolume: O,
|
|
@@ -16371,12 +16371,12 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
16371
16371
|
if (!e) return "";
|
|
16372
16372
|
let t = e.trim(), n = t.startsWith("+"), i = t.replace(/[^\d]/g, "");
|
|
16373
16373
|
return n ? `+${i}` : i;
|
|
16374
|
-
}, H = computed(() => {
|
|
16374
|
+
}, H = (e) => /\d/.test(e) && /^[+\d\s().*#-]+$/.test(e.trim()), U = computed(() => {
|
|
16375
16375
|
let e = p.value, t = e?.remoteNumber || e?.keypadValue, n = e?.remoteDisplayName;
|
|
16376
16376
|
if (!t) return "Unknown";
|
|
16377
16377
|
let i = B(t), a = o.contacts?.find((e) => B(e.number) === i);
|
|
16378
|
-
return a ? a.name : n && n !== t ? n : o.maskNumber ? maskPhoneNumber(t) : t;
|
|
16379
|
-
}),
|
|
16378
|
+
return a ? a.name : n && n !== t ? o.maskNumber && H(n) ? B(n) === i ? maskPhoneNumber(t) : maskPhoneNumber(n) : n : o.maskNumber ? maskPhoneNumber(t) : t;
|
|
16379
|
+
}), W = computed(() => {
|
|
16380
16380
|
let e = p.value, t = e?.remoteNumber || e?.keypadValue || "";
|
|
16381
16381
|
return o.maskNumber ? maskPhoneNumber(t) : t;
|
|
16382
16382
|
});
|
|
@@ -16473,7 +16473,7 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
16473
16473
|
})) : (openBlock(), createBlock(unref(CircleUser), {
|
|
16474
16474
|
key: 4,
|
|
16475
16475
|
class: "wp:w-3 wp:h-3"
|
|
16476
|
-
}))], 2), createElementVNode("div", _hoisted_9$4, [createElementVNode("span", _hoisted_10$3, toDisplayString(e.name), 1), createElementVNode("span", _hoisted_11$3, toDisplayString(e.number), 1)])], 40, _hoisted_8$4))), 128))], 512), [[vShow, v.value && E.value && (O.value.length > 0 || D.value)]])], 512)])) : (p.value?.status || "idle") === "connected" ? (openBlock(), createElementBlock("div", _hoisted_12$3, [createElementVNode("div", _hoisted_13$1, [createElementVNode("div", _hoisted_14$1, " En llamada con " + toDisplayString(
|
|
16476
|
+
}))], 2), createElementVNode("div", _hoisted_9$4, [createElementVNode("span", _hoisted_10$3, toDisplayString(e.name), 1), createElementVNode("span", _hoisted_11$3, toDisplayString(e.number), 1)])], 40, _hoisted_8$4))), 128))], 512), [[vShow, v.value && E.value && (O.value.length > 0 || D.value)]])], 512)])) : (p.value?.status || "idle") === "connected" ? (openBlock(), createElementBlock("div", _hoisted_12$3, [createElementVNode("div", _hoisted_13$1, [createElementVNode("div", _hoisted_14$1, " En llamada con " + toDisplayString(U.value), 1), U.value === W.value ? createCommentVNode("", !0) : (openBlock(), createElementBlock("div", _hoisted_15$1, toDisplayString(W.value), 1))])])) : (p.value?.status || "idle") === "idle" ? createCommentVNode("", !0) : (openBlock(), createElementBlock("div", _hoisted_16$1, [createElementVNode("div", _hoisted_17$1, [createElementVNode("div", _hoisted_18, [createElementVNode("div", _hoisted_19, toDisplayString(U.value), 1), U.value === W.value ? createCommentVNode("", !0) : (openBlock(), createElementBlock("div", _hoisted_20, toDisplayString(W.value), 1))]), createVNode(unref(TooltipProvider_default), null, {
|
|
16477
16477
|
default: withCtx(() => [createVNode(unref(Tooltip_default), null, {
|
|
16478
16478
|
default: withCtx(() => [createVNode(unref(TooltipTrigger_default), { "as-child": "" }), createVNode(unref(TooltipContent_default), { class: "wp:flex wp:items-center wp:gap-2" }, {
|
|
16479
16479
|
default: withCtx(() => [createElementVNode("span", null, toDisplayString(unref(t).isKeypadVisible ? "Ocultar" : "Mostrar") + " teclado", 1), createVNode(unref(Kbd_default), null, {
|
|
@@ -17656,59 +17656,59 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17656
17656
|
}), qp = computed(() => {
|
|
17657
17657
|
let e = Gp.value?.remoteNumber || x.remoteNumber;
|
|
17658
17658
|
return o.maskNumber ? maskPhoneNumber(e) : e;
|
|
17659
|
-
}), q = computed(() => (W.value, !!Gp.value?.hasVideo || G(E.value) || G(D.value))), { isOnline:
|
|
17660
|
-
|
|
17661
|
-
},
|
|
17659
|
+
}), q = computed(() => (W.value, !!Gp.value?.hasVideo || G(E.value) || G(D.value))), { isOnline: Jp } = useNetwork(), J = computed(() => !Jp.value), Y = ref(null), Z = ref(!1), tm = computed(() => o.enablePictureInPicture), nm = () => {
|
|
17660
|
+
tm.value && Y.value?.toggle();
|
|
17661
|
+
}, Q = async (e, t) => {
|
|
17662
17662
|
try {
|
|
17663
17663
|
t === "blind" ? await S.transferCall(e) : await S.startAttendedTransfer(e);
|
|
17664
17664
|
} catch (e) {
|
|
17665
17665
|
console.error("[WebPhone] Transfer error:", e), alert(e instanceof Error ? e.message : "Transfer failed. Please try again.");
|
|
17666
17666
|
}
|
|
17667
|
-
},
|
|
17667
|
+
}, rm = async () => {
|
|
17668
17668
|
try {
|
|
17669
17669
|
await S.completeAttendedTransfer();
|
|
17670
17670
|
} catch (e) {
|
|
17671
17671
|
console.error("[WebPhone] Complete transfer error:", e), alert(e instanceof Error ? e.message : "Failed to complete transfer.");
|
|
17672
17672
|
}
|
|
17673
|
-
},
|
|
17673
|
+
}, im = async () => {
|
|
17674
17674
|
try {
|
|
17675
17675
|
await S.cancelAttendedTransfer();
|
|
17676
17676
|
} catch (e) {
|
|
17677
17677
|
console.error("[WebPhone] Cancel transfer error:", e), alert(e instanceof Error ? e.message : "Failed to cancel transfer.");
|
|
17678
17678
|
}
|
|
17679
|
-
}, im = (e) => {
|
|
17680
|
-
x.keypadValue = e, S.makeCall(e);
|
|
17681
17679
|
}, am = (e) => {
|
|
17680
|
+
x.keypadValue = e, S.makeCall(e);
|
|
17681
|
+
}, om = (e) => {
|
|
17682
17682
|
if (o.onAnswer) {
|
|
17683
17683
|
o.onAnswer(e);
|
|
17684
17684
|
return;
|
|
17685
17685
|
}
|
|
17686
17686
|
S.answerCall(e);
|
|
17687
|
-
},
|
|
17687
|
+
}, sm = () => {
|
|
17688
17688
|
if (o.onHangup) {
|
|
17689
17689
|
o.onHangup();
|
|
17690
17690
|
return;
|
|
17691
17691
|
}
|
|
17692
17692
|
S.hangupCall();
|
|
17693
|
-
},
|
|
17693
|
+
}, cm = () => {
|
|
17694
17694
|
if (o.onReject) {
|
|
17695
17695
|
o.onReject();
|
|
17696
17696
|
return;
|
|
17697
17697
|
}
|
|
17698
17698
|
S.hangupCall();
|
|
17699
|
-
}, cm = () => {
|
|
17700
|
-
j.value = !0, Z.value?.close(), window.focus();
|
|
17701
17699
|
}, lm = () => {
|
|
17702
|
-
|
|
17703
|
-
let e = x.callStatus !== "idle", t = document.hidden || !document.hasFocus();
|
|
17704
|
-
return e && t && !Q.value;
|
|
17700
|
+
j.value = !0, Y.value?.close(), window.focus();
|
|
17705
17701
|
}, um = () => {
|
|
17702
|
+
if (!tm.value) return !1;
|
|
17703
|
+
let e = x.callStatus !== "idle", t = document.hidden || !document.hasFocus();
|
|
17704
|
+
return e && t && !Z.value;
|
|
17705
|
+
}, $ = () => {
|
|
17706
17706
|
window.setTimeout(() => {
|
|
17707
|
-
|
|
17707
|
+
um() && Y.value?.open();
|
|
17708
17708
|
}, 150);
|
|
17709
17709
|
};
|
|
17710
17710
|
watchEffect(() => {
|
|
17711
|
-
F.value && (
|
|
17711
|
+
F.value && (Z.value || !E.value ? F.value.srcObject = null : F.value.srcObject = E.value), L.value && (Z.value || !D.value ? L.value.srcObject = null : L.value.srcObject = D.value);
|
|
17712
17712
|
});
|
|
17713
17713
|
let dm = (e) => {
|
|
17714
17714
|
if (!e || typeof e.addEventListener != "function" || typeof e.removeEventListener != "function") return () => {};
|
|
@@ -17775,7 +17775,7 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17775
17775
|
], vm = ref(!1), ym = computed({
|
|
17776
17776
|
get: () => x.activeChannelId.toString(),
|
|
17777
17777
|
set: async (e) => {
|
|
17778
|
-
if (!
|
|
17778
|
+
if (!J.value && e && !vm.value) {
|
|
17779
17779
|
vm.value = !0;
|
|
17780
17780
|
try {
|
|
17781
17781
|
await T(parseInt(e));
|
|
@@ -17791,9 +17791,9 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17791
17791
|
let t = x.channels.find((t) => t.id === e);
|
|
17792
17792
|
return t ? t.isHeld || t.status === "held" : !1;
|
|
17793
17793
|
}, Sm = (e) => {
|
|
17794
|
-
|
|
17794
|
+
J.value || (ym.value = e.toString());
|
|
17795
17795
|
}, Cm = (e) => {
|
|
17796
|
-
if (!
|
|
17796
|
+
if (!J.value && ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "h" && (e.preventDefault(), k.value = !0), (e.metaKey || e.ctrlKey) && e.key === "," && (e.preventDefault(), O.value = !0), (e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k" && (e.preventDefault(), x.toggleKeypad()), (e.metaKey || e.ctrlKey) && [
|
|
17797
17797
|
"1",
|
|
17798
17798
|
"2",
|
|
17799
17799
|
"3"
|
|
@@ -17806,14 +17806,14 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17806
17806
|
}
|
|
17807
17807
|
};
|
|
17808
17808
|
watch(() => x.callStatus, () => {
|
|
17809
|
-
|
|
17809
|
+
um() && $();
|
|
17810
17810
|
}), watch(() => x.isConnected, (e) => {
|
|
17811
17811
|
v.value && a.set(v.value, e);
|
|
17812
|
-
}, { immediate: !0 }), watch(
|
|
17813
|
-
!e &&
|
|
17812
|
+
}, { immediate: !0 }), watch(tm, (e) => {
|
|
17813
|
+
!e && Z.value && Y.value?.close();
|
|
17814
17814
|
});
|
|
17815
17815
|
let wm = ref(!1), Tm = async () => {
|
|
17816
|
-
wm.value ||
|
|
17816
|
+
wm.value || J.value || !o.host || !o.extension || !o.password || (await w({
|
|
17817
17817
|
uri: `sip:${o.extension}@${o.host}`,
|
|
17818
17818
|
transportOptions: { server: _.value },
|
|
17819
17819
|
authorizationUsername: o.extension,
|
|
@@ -17828,22 +17828,22 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17828
17828
|
await S.stop(), wm.value = !1;
|
|
17829
17829
|
}
|
|
17830
17830
|
}), onMounted(async () => {
|
|
17831
|
-
window.addEventListener("keydown", Cm), document.addEventListener("visibilitychange",
|
|
17832
|
-
}), watch(() =>
|
|
17831
|
+
window.addEventListener("keydown", Cm), document.addEventListener("visibilitychange", $), window.addEventListener("blur", $), window.addEventListener("pagehide", $), !(o.mode === "webcall" && (!o.to || !o.logo)) && await Tm();
|
|
17832
|
+
}), watch(() => Jp.value, async (e) => {
|
|
17833
17833
|
e && await Tm();
|
|
17834
17834
|
}), onUnmounted(() => {
|
|
17835
|
-
S.stop(), window.removeEventListener("keydown", Cm), document.removeEventListener("visibilitychange",
|
|
17835
|
+
S.stop(), window.removeEventListener("keydown", Cm), document.removeEventListener("visibilitychange", $), window.removeEventListener("blur", $), window.removeEventListener("pagehide", $);
|
|
17836
17836
|
}), (e, t) => (openBlock(), createElementBlock(Fragment, null, [
|
|
17837
17837
|
createElementVNode("div", {
|
|
17838
17838
|
ref_key: "phoneRef",
|
|
17839
17839
|
ref: N,
|
|
17840
17840
|
style: normalizeStyle(unref(gm)),
|
|
17841
|
-
class: normalizeClass(["webphone webphone-container wp:bg-white wp:dark:bg-neutral-800 wp:rounded-lg wp:shadow-sm wp:inset-shadow-2xs wp:w-[min(92vw,330px)] wp:fixed wp:z-50 wp:select-none wp:[&_button]:cursor-pointer wp:**:[[role=button]]:cursor-pointer",
|
|
17841
|
+
class: normalizeClass(["webphone webphone-container wp:bg-white wp:dark:bg-neutral-800 wp:rounded-lg wp:shadow-sm wp:inset-shadow-2xs wp:w-[min(92vw,330px)] wp:fixed wp:z-50 wp:select-none wp:[&_button]:cursor-pointer wp:**:[[role=button]]:cursor-pointer", J.value ? "wp:opacity-70" : ""]),
|
|
17842
17842
|
"data-mode": o.mode,
|
|
17843
17843
|
"data-call-status": x.callStatus,
|
|
17844
|
-
"data-network-status":
|
|
17844
|
+
"data-network-status": J.value ? "offline" : "online"
|
|
17845
17845
|
}, [
|
|
17846
|
-
q.value && !
|
|
17846
|
+
q.value && !Z.value ? (openBlock(), createElementBlock("div", _hoisted_2, [createElementVNode("video", {
|
|
17847
17847
|
ref_key: "remoteVideoRef",
|
|
17848
17848
|
ref: F,
|
|
17849
17849
|
autoplay: "",
|
|
@@ -17864,7 +17864,7 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17864
17864
|
type: "button",
|
|
17865
17865
|
role: "radio",
|
|
17866
17866
|
"aria-checked": ym.value === e.value.toString(),
|
|
17867
|
-
disabled:
|
|
17867
|
+
disabled: J.value,
|
|
17868
17868
|
title: `${e.label} (${unref(H)}${e.value + 1})`,
|
|
17869
17869
|
class: normalizeClass(["webphone__channel-button wp:flex wp:items-center wp:gap-1 wp:px-2 wp:py-2 wp:rounded-lg wp:transition-colors wp:duration-200 wp:outline-none wp:focus-visible:ring-2 wp:focus-visible:ring-[var(--p-primary-color)] wp:focus-visible:ring-offset-2 wp:focus-visible:ring-offset-white wp:dark:focus-visible:ring-offset-neutral-900", xm(e.value) ? "wp:bg-status-hold/12 hover:wp:bg-status-hold/18" : bm(e.value) ? "wp:bg-[var(--color-red)]/12 hover:wp:bg-[var(--color-red)]/18" : ym.value === e.value.toString() ? "wp:bg-[var(--p-primary-color)]/12" : "wp:hover:bg-neutral-100 wp:dark:hover:bg-neutral-800/80"]),
|
|
17870
17870
|
"data-channel-id": e.value,
|
|
@@ -17881,9 +17881,9 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17881
17881
|
default: withCtx(() => [createVNode(unref(Button_default), {
|
|
17882
17882
|
variant: "ghost",
|
|
17883
17883
|
size: "icon",
|
|
17884
|
-
class: normalizeClass(["wp:h-8 wp:w-8 wp:rounded-full",
|
|
17884
|
+
class: normalizeClass(["wp:h-8 wp:w-8 wp:rounded-full", Z.value ? "wp:text-primary" : ""]),
|
|
17885
17885
|
title: "Picture-in-Picture",
|
|
17886
|
-
onClick:
|
|
17886
|
+
onClick: nm
|
|
17887
17887
|
}, {
|
|
17888
17888
|
default: withCtx(() => [createVNode(unref(PictureInPicture2), { class: "wp:w-4 wp:h-4 wp:text-[var(--color-settings)]" })]),
|
|
17889
17889
|
_: 1
|
|
@@ -17927,7 +17927,7 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17927
17927
|
"channel-id": e.id,
|
|
17928
17928
|
"allow-input": !U.value,
|
|
17929
17929
|
"is-web-call": U.value,
|
|
17930
|
-
"is-online": unref(
|
|
17930
|
+
"is-online": unref(Jp),
|
|
17931
17931
|
contacts: o.contacts,
|
|
17932
17932
|
user: o.extension,
|
|
17933
17933
|
"mask-number": o.maskNumber
|
|
@@ -17946,15 +17946,15 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17946
17946
|
}, [createVNode(KeyPad_default)], 10, _hoisted_10),
|
|
17947
17947
|
createVNode(CallActions_default, {
|
|
17948
17948
|
class: "webphone__actions",
|
|
17949
|
-
style: normalizeStyle(
|
|
17949
|
+
style: normalizeStyle(J.value ? "pointer-events: none;" : void 0),
|
|
17950
17950
|
destination: U.value ? o.to : void 0,
|
|
17951
17951
|
"is-video": o.mode === "video",
|
|
17952
17952
|
"on-answer": o.onAnswer,
|
|
17953
17953
|
"on-hangup": o.onHangup,
|
|
17954
17954
|
"on-reject": o.onReject,
|
|
17955
17955
|
onTransfer: t[1] ||= (e) => j.value = !0,
|
|
17956
|
-
onCompleteTransfer:
|
|
17957
|
-
onCancelTransfer:
|
|
17956
|
+
onCompleteTransfer: rm,
|
|
17957
|
+
onCancelTransfer: im
|
|
17958
17958
|
}, null, 8, [
|
|
17959
17959
|
"style",
|
|
17960
17960
|
"destination",
|
|
@@ -17964,7 +17964,7 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17964
17964
|
"on-reject"
|
|
17965
17965
|
])
|
|
17966
17966
|
]),
|
|
17967
|
-
|
|
17967
|
+
J.value ? (openBlock(), createElementBlock("div", _hoisted_11, [...t[10] ||= [createElementVNode("span", { class: "wp:text-sm wp:font-semibold wp:text-status-disconnected" }, "Sin internet", -1)]])) : createCommentVNode("", !0),
|
|
17968
17968
|
U.value ? (openBlock(), createElementBlock("div", _hoisted_12, [...t[11] ||= [createElementVNode("div", { class: "webphone__footer-label wp:text-[10px] wp:text-primary" }, "Powered By", -1), createElementVNode("div", { class: "webphone__footer-content wp:flex wp:items-center wp:gap-2" }, [createElementVNode("a", {
|
|
17969
17969
|
href: "https://www.nebula123.com",
|
|
17970
17970
|
target: "_blank",
|
|
@@ -17979,20 +17979,20 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17979
17979
|
visible: k.value,
|
|
17980
17980
|
"onUpdate:visible": t[3] ||= (e) => k.value = e,
|
|
17981
17981
|
contacts: o.contacts,
|
|
17982
|
-
onCall:
|
|
17982
|
+
onCall: am
|
|
17983
17983
|
}, null, 8, ["visible", "contacts"]),
|
|
17984
17984
|
createVNode(TransferDialog_default, {
|
|
17985
17985
|
visible: j.value,
|
|
17986
17986
|
"onUpdate:visible": t[4] ||= (e) => j.value = e,
|
|
17987
17987
|
contacts: o.contacts,
|
|
17988
|
-
onTransfer:
|
|
17988
|
+
onTransfer: Q
|
|
17989
17989
|
}, null, 8, ["visible", "contacts"]),
|
|
17990
17990
|
createVNode(DocumentPip_default, {
|
|
17991
17991
|
ref_key: "documentPipRef",
|
|
17992
|
-
ref:
|
|
17993
|
-
active:
|
|
17994
|
-
"onUpdate:active": t[5] ||= (e) =>
|
|
17995
|
-
"auto-open-on-blur":
|
|
17992
|
+
ref: Y,
|
|
17993
|
+
active: Z.value,
|
|
17994
|
+
"onUpdate:active": t[5] ||= (e) => Z.value = e,
|
|
17995
|
+
"auto-open-on-blur": tm.value,
|
|
17996
17996
|
"is-connected": x.isConnected,
|
|
17997
17997
|
"remote-number": qp.value,
|
|
17998
17998
|
"caller-name": Kp.value,
|
|
@@ -18004,11 +18004,11 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
18004
18004
|
"call-status": x.callStatus,
|
|
18005
18005
|
"is-muted": x.isMuted,
|
|
18006
18006
|
"is-held": x.isHeld,
|
|
18007
|
-
onTransfer:
|
|
18008
|
-
onTransferRequest:
|
|
18009
|
-
onHangup:
|
|
18010
|
-
onReject:
|
|
18011
|
-
onAnswer:
|
|
18007
|
+
onTransfer: lm,
|
|
18008
|
+
onTransferRequest: Q,
|
|
18009
|
+
onHangup: sm,
|
|
18010
|
+
onReject: cm,
|
|
18011
|
+
onAnswer: om,
|
|
18012
18012
|
onToggleMute: t[6] ||= (e) => unref(S).toggleMute(),
|
|
18013
18013
|
onToggleHold: t[7] ||= (e) => unref(S).toggleHold()
|
|
18014
18014
|
}, null, 8, [
|