@tmsoft/webphone 3.0.17 → 3.0.19
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/lib/types.d.ts +11 -0
- package/dist/webphone.component.js +22 -22
- package/dist/webphone.es.js +267 -257
- package/dist/webphone.umd.js +20 -20
- package/package.json +1 -1
package/dist/webphone.es.js
CHANGED
|
@@ -7020,7 +7020,7 @@ var concatArrays = (e, t) => {
|
|
|
7020
7020
|
"max",
|
|
7021
7021
|
"fit",
|
|
7022
7022
|
...O()
|
|
7023
|
-
],
|
|
7023
|
+
], Up = () => [
|
|
7024
7024
|
isFraction,
|
|
7025
7025
|
"screen",
|
|
7026
7026
|
"full",
|
|
@@ -7031,7 +7031,7 @@ var concatArrays = (e, t) => {
|
|
|
7031
7031
|
"max",
|
|
7032
7032
|
"fit",
|
|
7033
7033
|
...O()
|
|
7034
|
-
],
|
|
7034
|
+
], R = () => [
|
|
7035
7035
|
isFraction,
|
|
7036
7036
|
"screen",
|
|
7037
7037
|
"full",
|
|
@@ -7043,22 +7043,22 @@ var concatArrays = (e, t) => {
|
|
|
7043
7043
|
"max",
|
|
7044
7044
|
"fit",
|
|
7045
7045
|
...O()
|
|
7046
|
-
],
|
|
7046
|
+
], z = () => [
|
|
7047
7047
|
e,
|
|
7048
7048
|
isArbitraryVariable,
|
|
7049
7049
|
isArbitraryValue
|
|
7050
|
-
],
|
|
7050
|
+
], Wp = () => [
|
|
7051
7051
|
...w(),
|
|
7052
7052
|
isArbitraryVariablePosition,
|
|
7053
7053
|
isArbitraryPosition,
|
|
7054
7054
|
{ position: [isArbitraryVariable, isArbitraryValue] }
|
|
7055
|
-
],
|
|
7055
|
+
], B = () => ["no-repeat", { repeat: [
|
|
7056
7056
|
"",
|
|
7057
7057
|
"x",
|
|
7058
7058
|
"y",
|
|
7059
7059
|
"space",
|
|
7060
7060
|
"round"
|
|
7061
|
-
] }],
|
|
7061
|
+
] }], V = () => [
|
|
7062
7062
|
"auto",
|
|
7063
7063
|
"cover",
|
|
7064
7064
|
"contain",
|
|
@@ -7081,12 +7081,12 @@ var concatArrays = (e, t) => {
|
|
|
7081
7081
|
isNumber,
|
|
7082
7082
|
isArbitraryVariableLength,
|
|
7083
7083
|
isArbitraryLength
|
|
7084
|
-
],
|
|
7084
|
+
], Gp = () => [
|
|
7085
7085
|
"solid",
|
|
7086
7086
|
"dashed",
|
|
7087
7087
|
"dotted",
|
|
7088
7088
|
"double"
|
|
7089
|
-
],
|
|
7089
|
+
], Kp = () => [
|
|
7090
7090
|
"normal",
|
|
7091
7091
|
"multiply",
|
|
7092
7092
|
"screen",
|
|
@@ -7108,7 +7108,7 @@ var concatArrays = (e, t) => {
|
|
|
7108
7108
|
isPercent,
|
|
7109
7109
|
isArbitraryVariablePosition,
|
|
7110
7110
|
isArbitraryPosition
|
|
7111
|
-
],
|
|
7111
|
+
], qp = () => [
|
|
7112
7112
|
"",
|
|
7113
7113
|
"none",
|
|
7114
7114
|
_,
|
|
@@ -7417,12 +7417,12 @@ var concatArrays = (e, t) => {
|
|
|
7417
7417
|
"space-y": [{ "space-y": O() }],
|
|
7418
7418
|
"space-y-reverse": ["space-y-reverse"],
|
|
7419
7419
|
size: [{ size: L() }],
|
|
7420
|
-
"inline-size": [{ inline: ["auto", ...
|
|
7421
|
-
"min-inline-size": [{ "min-inline": ["auto", ...
|
|
7422
|
-
"max-inline-size": [{ "max-inline": ["none", ...
|
|
7423
|
-
"block-size": [{ block: ["auto", ...
|
|
7424
|
-
"min-block-size": [{ "min-block": ["auto", ...
|
|
7425
|
-
"max-block-size": [{ "max-block": ["none", ...
|
|
7420
|
+
"inline-size": [{ inline: ["auto", ...Up()] }],
|
|
7421
|
+
"min-inline-size": [{ "min-inline": ["auto", ...Up()] }],
|
|
7422
|
+
"max-inline-size": [{ "max-inline": ["none", ...Up()] }],
|
|
7423
|
+
"block-size": [{ block: ["auto", ...R()] }],
|
|
7424
|
+
"min-block-size": [{ "min-block": ["auto", ...R()] }],
|
|
7425
|
+
"max-block-size": [{ "max-block": ["none", ...R()] }],
|
|
7426
7426
|
w: [{ w: [
|
|
7427
7427
|
l,
|
|
7428
7428
|
"screen",
|
|
@@ -7529,15 +7529,15 @@ var concatArrays = (e, t) => {
|
|
|
7529
7529
|
"start",
|
|
7530
7530
|
"end"
|
|
7531
7531
|
] }],
|
|
7532
|
-
"placeholder-color": [{ placeholder:
|
|
7533
|
-
"text-color": [{ text:
|
|
7532
|
+
"placeholder-color": [{ placeholder: z() }],
|
|
7533
|
+
"text-color": [{ text: z() }],
|
|
7534
7534
|
"text-decoration": [
|
|
7535
7535
|
"underline",
|
|
7536
7536
|
"overline",
|
|
7537
7537
|
"line-through",
|
|
7538
7538
|
"no-underline"
|
|
7539
7539
|
],
|
|
7540
|
-
"text-decoration-style": [{ decoration: [...
|
|
7540
|
+
"text-decoration-style": [{ decoration: [...Gp(), "wavy"] }],
|
|
7541
7541
|
"text-decoration-thickness": [{ decoration: [
|
|
7542
7542
|
isNumber,
|
|
7543
7543
|
"from-font",
|
|
@@ -7545,7 +7545,7 @@ var concatArrays = (e, t) => {
|
|
|
7545
7545
|
isArbitraryVariable,
|
|
7546
7546
|
isArbitraryLength
|
|
7547
7547
|
] }],
|
|
7548
|
-
"text-decoration-color": [{ decoration:
|
|
7548
|
+
"text-decoration-color": [{ decoration: z() }],
|
|
7549
7549
|
"underline-offset": [{ "underline-offset": [
|
|
7550
7550
|
isNumber,
|
|
7551
7551
|
"auto",
|
|
@@ -7627,9 +7627,9 @@ var concatArrays = (e, t) => {
|
|
|
7627
7627
|
"padding",
|
|
7628
7628
|
"content"
|
|
7629
7629
|
] }],
|
|
7630
|
-
"bg-position": [{ bg:
|
|
7631
|
-
"bg-repeat": [{ bg:
|
|
7632
|
-
"bg-size": [{ bg:
|
|
7630
|
+
"bg-position": [{ bg: Wp() }],
|
|
7631
|
+
"bg-repeat": [{ bg: B() }],
|
|
7632
|
+
"bg-size": [{ bg: V() }],
|
|
7633
7633
|
"bg-image": [{ bg: [
|
|
7634
7634
|
"none",
|
|
7635
7635
|
{
|
|
@@ -7662,13 +7662,13 @@ var concatArrays = (e, t) => {
|
|
|
7662
7662
|
isArbitraryVariableImage,
|
|
7663
7663
|
isArbitraryImage
|
|
7664
7664
|
] }],
|
|
7665
|
-
"bg-color": [{ bg:
|
|
7665
|
+
"bg-color": [{ bg: z() }],
|
|
7666
7666
|
"gradient-from-pos": [{ from: H() }],
|
|
7667
7667
|
"gradient-via-pos": [{ via: H() }],
|
|
7668
7668
|
"gradient-to-pos": [{ to: H() }],
|
|
7669
|
-
"gradient-from": [{ from:
|
|
7670
|
-
"gradient-via": [{ via:
|
|
7671
|
-
"gradient-to": [{ to:
|
|
7669
|
+
"gradient-from": [{ from: z() }],
|
|
7670
|
+
"gradient-via": [{ via: z() }],
|
|
7671
|
+
"gradient-to": [{ to: z() }],
|
|
7672
7672
|
rounded: [{ rounded: U() }],
|
|
7673
7673
|
"rounded-s": [{ "rounded-s": U() }],
|
|
7674
7674
|
"rounded-e": [{ "rounded-e": U() }],
|
|
@@ -7700,29 +7700,29 @@ var concatArrays = (e, t) => {
|
|
|
7700
7700
|
"divide-y": [{ "divide-y": W() }],
|
|
7701
7701
|
"divide-y-reverse": ["divide-y-reverse"],
|
|
7702
7702
|
"border-style": [{ border: [
|
|
7703
|
-
...
|
|
7703
|
+
...Gp(),
|
|
7704
7704
|
"hidden",
|
|
7705
7705
|
"none"
|
|
7706
7706
|
] }],
|
|
7707
7707
|
"divide-style": [{ divide: [
|
|
7708
|
-
...
|
|
7708
|
+
...Gp(),
|
|
7709
7709
|
"hidden",
|
|
7710
7710
|
"none"
|
|
7711
7711
|
] }],
|
|
7712
|
-
"border-color": [{ border:
|
|
7713
|
-
"border-color-x": [{ "border-x":
|
|
7714
|
-
"border-color-y": [{ "border-y":
|
|
7715
|
-
"border-color-s": [{ "border-s":
|
|
7716
|
-
"border-color-e": [{ "border-e":
|
|
7717
|
-
"border-color-bs": [{ "border-bs":
|
|
7718
|
-
"border-color-be": [{ "border-be":
|
|
7719
|
-
"border-color-t": [{ "border-t":
|
|
7720
|
-
"border-color-r": [{ "border-r":
|
|
7721
|
-
"border-color-b": [{ "border-b":
|
|
7722
|
-
"border-color-l": [{ "border-l":
|
|
7723
|
-
"divide-color": [{ divide:
|
|
7712
|
+
"border-color": [{ border: z() }],
|
|
7713
|
+
"border-color-x": [{ "border-x": z() }],
|
|
7714
|
+
"border-color-y": [{ "border-y": z() }],
|
|
7715
|
+
"border-color-s": [{ "border-s": z() }],
|
|
7716
|
+
"border-color-e": [{ "border-e": z() }],
|
|
7717
|
+
"border-color-bs": [{ "border-bs": z() }],
|
|
7718
|
+
"border-color-be": [{ "border-be": z() }],
|
|
7719
|
+
"border-color-t": [{ "border-t": z() }],
|
|
7720
|
+
"border-color-r": [{ "border-r": z() }],
|
|
7721
|
+
"border-color-b": [{ "border-b": z() }],
|
|
7722
|
+
"border-color-l": [{ "border-l": z() }],
|
|
7723
|
+
"divide-color": [{ divide: z() }],
|
|
7724
7724
|
"outline-style": [{ outline: [
|
|
7725
|
-
...
|
|
7725
|
+
...Gp(),
|
|
7726
7726
|
"none",
|
|
7727
7727
|
"hidden"
|
|
7728
7728
|
] }],
|
|
@@ -7737,7 +7737,7 @@ var concatArrays = (e, t) => {
|
|
|
7737
7737
|
isArbitraryVariableLength,
|
|
7738
7738
|
isArbitraryLength
|
|
7739
7739
|
] }],
|
|
7740
|
-
"outline-color": [{ outline:
|
|
7740
|
+
"outline-color": [{ outline: z() }],
|
|
7741
7741
|
shadow: [{ shadow: [
|
|
7742
7742
|
"",
|
|
7743
7743
|
"none",
|
|
@@ -7745,39 +7745,39 @@ var concatArrays = (e, t) => {
|
|
|
7745
7745
|
isArbitraryVariableShadow,
|
|
7746
7746
|
isArbitraryShadow
|
|
7747
7747
|
] }],
|
|
7748
|
-
"shadow-color": [{ shadow:
|
|
7748
|
+
"shadow-color": [{ shadow: z() }],
|
|
7749
7749
|
"inset-shadow": [{ "inset-shadow": [
|
|
7750
7750
|
"none",
|
|
7751
7751
|
p,
|
|
7752
7752
|
isArbitraryVariableShadow,
|
|
7753
7753
|
isArbitraryShadow
|
|
7754
7754
|
] }],
|
|
7755
|
-
"inset-shadow-color": [{ "inset-shadow":
|
|
7755
|
+
"inset-shadow-color": [{ "inset-shadow": z() }],
|
|
7756
7756
|
"ring-w": [{ ring: W() }],
|
|
7757
7757
|
"ring-w-inset": ["ring-inset"],
|
|
7758
|
-
"ring-color": [{ ring:
|
|
7758
|
+
"ring-color": [{ ring: z() }],
|
|
7759
7759
|
"ring-offset-w": [{ "ring-offset": [isNumber, isArbitraryLength] }],
|
|
7760
|
-
"ring-offset-color": [{ "ring-offset":
|
|
7760
|
+
"ring-offset-color": [{ "ring-offset": z() }],
|
|
7761
7761
|
"inset-ring-w": [{ "inset-ring": W() }],
|
|
7762
|
-
"inset-ring-color": [{ "inset-ring":
|
|
7762
|
+
"inset-ring-color": [{ "inset-ring": z() }],
|
|
7763
7763
|
"text-shadow": [{ "text-shadow": [
|
|
7764
7764
|
"none",
|
|
7765
7765
|
m,
|
|
7766
7766
|
isArbitraryVariableShadow,
|
|
7767
7767
|
isArbitraryShadow
|
|
7768
7768
|
] }],
|
|
7769
|
-
"text-shadow-color": [{ "text-shadow":
|
|
7769
|
+
"text-shadow-color": [{ "text-shadow": z() }],
|
|
7770
7770
|
opacity: [{ opacity: [
|
|
7771
7771
|
isNumber,
|
|
7772
7772
|
isArbitraryVariable,
|
|
7773
7773
|
isArbitraryValue
|
|
7774
7774
|
] }],
|
|
7775
7775
|
"mix-blend": [{ "mix-blend": [
|
|
7776
|
-
...
|
|
7776
|
+
...Kp(),
|
|
7777
7777
|
"plus-darker",
|
|
7778
7778
|
"plus-lighter"
|
|
7779
7779
|
] }],
|
|
7780
|
-
"bg-blend": [{ "bg-blend":
|
|
7780
|
+
"bg-blend": [{ "bg-blend": Kp() }],
|
|
7781
7781
|
"mask-clip": [{ "mask-clip": [
|
|
7782
7782
|
"border",
|
|
7783
7783
|
"padding",
|
|
@@ -7795,37 +7795,37 @@ var concatArrays = (e, t) => {
|
|
|
7795
7795
|
"mask-image-linear-pos": [{ "mask-linear": [isNumber] }],
|
|
7796
7796
|
"mask-image-linear-from-pos": [{ "mask-linear-from": G() }],
|
|
7797
7797
|
"mask-image-linear-to-pos": [{ "mask-linear-to": G() }],
|
|
7798
|
-
"mask-image-linear-from-color": [{ "mask-linear-from":
|
|
7799
|
-
"mask-image-linear-to-color": [{ "mask-linear-to":
|
|
7798
|
+
"mask-image-linear-from-color": [{ "mask-linear-from": z() }],
|
|
7799
|
+
"mask-image-linear-to-color": [{ "mask-linear-to": z() }],
|
|
7800
7800
|
"mask-image-t-from-pos": [{ "mask-t-from": G() }],
|
|
7801
7801
|
"mask-image-t-to-pos": [{ "mask-t-to": G() }],
|
|
7802
|
-
"mask-image-t-from-color": [{ "mask-t-from":
|
|
7803
|
-
"mask-image-t-to-color": [{ "mask-t-to":
|
|
7802
|
+
"mask-image-t-from-color": [{ "mask-t-from": z() }],
|
|
7803
|
+
"mask-image-t-to-color": [{ "mask-t-to": z() }],
|
|
7804
7804
|
"mask-image-r-from-pos": [{ "mask-r-from": G() }],
|
|
7805
7805
|
"mask-image-r-to-pos": [{ "mask-r-to": G() }],
|
|
7806
|
-
"mask-image-r-from-color": [{ "mask-r-from":
|
|
7807
|
-
"mask-image-r-to-color": [{ "mask-r-to":
|
|
7806
|
+
"mask-image-r-from-color": [{ "mask-r-from": z() }],
|
|
7807
|
+
"mask-image-r-to-color": [{ "mask-r-to": z() }],
|
|
7808
7808
|
"mask-image-b-from-pos": [{ "mask-b-from": G() }],
|
|
7809
7809
|
"mask-image-b-to-pos": [{ "mask-b-to": G() }],
|
|
7810
|
-
"mask-image-b-from-color": [{ "mask-b-from":
|
|
7811
|
-
"mask-image-b-to-color": [{ "mask-b-to":
|
|
7810
|
+
"mask-image-b-from-color": [{ "mask-b-from": z() }],
|
|
7811
|
+
"mask-image-b-to-color": [{ "mask-b-to": z() }],
|
|
7812
7812
|
"mask-image-l-from-pos": [{ "mask-l-from": G() }],
|
|
7813
7813
|
"mask-image-l-to-pos": [{ "mask-l-to": G() }],
|
|
7814
|
-
"mask-image-l-from-color": [{ "mask-l-from":
|
|
7815
|
-
"mask-image-l-to-color": [{ "mask-l-to":
|
|
7814
|
+
"mask-image-l-from-color": [{ "mask-l-from": z() }],
|
|
7815
|
+
"mask-image-l-to-color": [{ "mask-l-to": z() }],
|
|
7816
7816
|
"mask-image-x-from-pos": [{ "mask-x-from": G() }],
|
|
7817
7817
|
"mask-image-x-to-pos": [{ "mask-x-to": G() }],
|
|
7818
|
-
"mask-image-x-from-color": [{ "mask-x-from":
|
|
7819
|
-
"mask-image-x-to-color": [{ "mask-x-to":
|
|
7818
|
+
"mask-image-x-from-color": [{ "mask-x-from": z() }],
|
|
7819
|
+
"mask-image-x-to-color": [{ "mask-x-to": z() }],
|
|
7820
7820
|
"mask-image-y-from-pos": [{ "mask-y-from": G() }],
|
|
7821
7821
|
"mask-image-y-to-pos": [{ "mask-y-to": G() }],
|
|
7822
|
-
"mask-image-y-from-color": [{ "mask-y-from":
|
|
7823
|
-
"mask-image-y-to-color": [{ "mask-y-to":
|
|
7822
|
+
"mask-image-y-from-color": [{ "mask-y-from": z() }],
|
|
7823
|
+
"mask-image-y-to-color": [{ "mask-y-to": z() }],
|
|
7824
7824
|
"mask-image-radial": [{ "mask-radial": [isArbitraryVariable, isArbitraryValue] }],
|
|
7825
7825
|
"mask-image-radial-from-pos": [{ "mask-radial-from": G() }],
|
|
7826
7826
|
"mask-image-radial-to-pos": [{ "mask-radial-to": G() }],
|
|
7827
|
-
"mask-image-radial-from-color": [{ "mask-radial-from":
|
|
7828
|
-
"mask-image-radial-to-color": [{ "mask-radial-to":
|
|
7827
|
+
"mask-image-radial-from-color": [{ "mask-radial-from": z() }],
|
|
7828
|
+
"mask-image-radial-to-color": [{ "mask-radial-to": z() }],
|
|
7829
7829
|
"mask-image-radial-shape": [{ "mask-radial": ["circle", "ellipse"] }],
|
|
7830
7830
|
"mask-image-radial-size": [{ "mask-radial": [{
|
|
7831
7831
|
closest: ["side", "corner"],
|
|
@@ -7835,8 +7835,8 @@ var concatArrays = (e, t) => {
|
|
|
7835
7835
|
"mask-image-conic-pos": [{ "mask-conic": [isNumber] }],
|
|
7836
7836
|
"mask-image-conic-from-pos": [{ "mask-conic-from": G() }],
|
|
7837
7837
|
"mask-image-conic-to-pos": [{ "mask-conic-to": G() }],
|
|
7838
|
-
"mask-image-conic-from-color": [{ "mask-conic-from":
|
|
7839
|
-
"mask-image-conic-to-color": [{ "mask-conic-to":
|
|
7838
|
+
"mask-image-conic-from-color": [{ "mask-conic-from": z() }],
|
|
7839
|
+
"mask-image-conic-to-color": [{ "mask-conic-to": z() }],
|
|
7840
7840
|
"mask-mode": [{ mask: [
|
|
7841
7841
|
"alpha",
|
|
7842
7842
|
"luminance",
|
|
@@ -7850,9 +7850,9 @@ var concatArrays = (e, t) => {
|
|
|
7850
7850
|
"stroke",
|
|
7851
7851
|
"view"
|
|
7852
7852
|
] }],
|
|
7853
|
-
"mask-position": [{ mask:
|
|
7854
|
-
"mask-repeat": [{ mask:
|
|
7855
|
-
"mask-size": [{ mask:
|
|
7853
|
+
"mask-position": [{ mask: Wp() }],
|
|
7854
|
+
"mask-repeat": [{ mask: B() }],
|
|
7855
|
+
"mask-size": [{ mask: V() }],
|
|
7856
7856
|
"mask-type": [{ "mask-type": ["alpha", "luminance"] }],
|
|
7857
7857
|
"mask-image": [{ mask: [
|
|
7858
7858
|
"none",
|
|
@@ -7865,7 +7865,7 @@ var concatArrays = (e, t) => {
|
|
|
7865
7865
|
isArbitraryVariable,
|
|
7866
7866
|
isArbitraryValue
|
|
7867
7867
|
] }],
|
|
7868
|
-
blur: [{ blur:
|
|
7868
|
+
blur: [{ blur: qp() }],
|
|
7869
7869
|
brightness: [{ brightness: [
|
|
7870
7870
|
isNumber,
|
|
7871
7871
|
isArbitraryVariable,
|
|
@@ -7883,7 +7883,7 @@ var concatArrays = (e, t) => {
|
|
|
7883
7883
|
isArbitraryVariableShadow,
|
|
7884
7884
|
isArbitraryShadow
|
|
7885
7885
|
] }],
|
|
7886
|
-
"drop-shadow-color": [{ "drop-shadow":
|
|
7886
|
+
"drop-shadow-color": [{ "drop-shadow": z() }],
|
|
7887
7887
|
grayscale: [{ grayscale: [
|
|
7888
7888
|
"",
|
|
7889
7889
|
isNumber,
|
|
@@ -7918,7 +7918,7 @@ var concatArrays = (e, t) => {
|
|
|
7918
7918
|
isArbitraryVariable,
|
|
7919
7919
|
isArbitraryValue
|
|
7920
7920
|
] }],
|
|
7921
|
-
"backdrop-blur": [{ "backdrop-blur":
|
|
7921
|
+
"backdrop-blur": [{ "backdrop-blur": qp() }],
|
|
7922
7922
|
"backdrop-brightness": [{ "backdrop-brightness": [
|
|
7923
7923
|
isNumber,
|
|
7924
7924
|
isArbitraryVariable,
|
|
@@ -8038,9 +8038,9 @@ var concatArrays = (e, t) => {
|
|
|
8038
8038
|
"translate-y": [{ "translate-y": Y() }],
|
|
8039
8039
|
"translate-z": [{ "translate-z": Y() }],
|
|
8040
8040
|
"translate-none": ["translate-none"],
|
|
8041
|
-
accent: [{ accent:
|
|
8041
|
+
accent: [{ accent: z() }],
|
|
8042
8042
|
appearance: [{ appearance: ["none", "auto"] }],
|
|
8043
|
-
"caret-color": [{ caret:
|
|
8043
|
+
"caret-color": [{ caret: z() }],
|
|
8044
8044
|
"color-scheme": [{ scheme: [
|
|
8045
8045
|
"normal",
|
|
8046
8046
|
"dark",
|
|
@@ -8164,14 +8164,14 @@ var concatArrays = (e, t) => {
|
|
|
8164
8164
|
isArbitraryVariable,
|
|
8165
8165
|
isArbitraryValue
|
|
8166
8166
|
] }],
|
|
8167
|
-
fill: [{ fill: ["none", ...
|
|
8167
|
+
fill: [{ fill: ["none", ...z()] }],
|
|
8168
8168
|
"stroke-w": [{ stroke: [
|
|
8169
8169
|
isNumber,
|
|
8170
8170
|
isArbitraryVariableLength,
|
|
8171
8171
|
isArbitraryLength,
|
|
8172
8172
|
isArbitraryNumber
|
|
8173
8173
|
] }],
|
|
8174
|
-
stroke: [{ stroke: ["none", ...
|
|
8174
|
+
stroke: [{ stroke: ["none", ...z()] }],
|
|
8175
8175
|
"forced-color-adjust": [{ "forced-color-adjust": ["auto", "none"] }]
|
|
8176
8176
|
},
|
|
8177
8177
|
conflictingClassGroups: {
|
|
@@ -8374,26 +8374,36 @@ const cn = (...e) => twMerge(clsx(e)), extractCallerNumber = (e, t) => {
|
|
|
8374
8374
|
var cleanPhoneNumber = (e) => e.replace(/[^\d+*#]/g, ""), isValidPhoneOrExtension = (e) => /^\+?[\d*#]{2,}$/.test(e), extractNumberFromDisplayName = (e) => {
|
|
8375
8375
|
let t = e.match(/^([+]?[\d*#]{2,})\s*[-:]/);
|
|
8376
8376
|
return t && t[1] || (t = e.match(/\(([+]?[\d*#]{2,})\)/), t && t[1]) || (t = e.match(/(?:ext\.?|extension)\s*([+]?[\d*#]{2,})/i), t && t[1]) ? t[1] : (t = e.match(/([+]?\d{1,3}[-.\s]?\(?\d{1,4}\)?[-.\s]?\d{1,4}[-.\s]?\d{1,9})/), t && t[1] ? cleanPhoneNumber(t[1]) : null);
|
|
8377
|
-
};
|
|
8377
|
+
}, QUEUE_NAME_HEADER = "X-Nebula-Queue", QUEUE_ID_HEADER = "X-Nebula-Queue-Id";
|
|
8378
8378
|
const createSipService = (e, t = {}) => {
|
|
8379
8379
|
let n = shallowRef(null), i = shallowRef(null), a = shallowRef(/* @__PURE__ */ new Map()), o = new Audio();
|
|
8380
8380
|
o.autoplay = !0;
|
|
8381
|
-
let l = shallowRef(void 0), u = shallowRef(null), d = shallowRef(null), f = /* @__PURE__ */ new Map(), p = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Set(), g = null, _ = null, v = null, y = null, b = null, x = computed(() => n.value?.configuration.uri?.user || ""), { startRingtone: S, stopRingtone: w, startRingback: T, stopRingback: E, setNotificationVolume: D } = useAudioSounds(), O = (e) => e instanceof Inviter || e instanceof Invitation ? e.request?.callId || e.dialog?.callId || e.id || crypto.randomUUID() : e.dialog?.callId || e.id || crypto.randomUUID(), k = (e
|
|
8382
|
-
|
|
8381
|
+
let l = shallowRef(void 0), u = shallowRef(null), d = shallowRef(null), f = /* @__PURE__ */ new Map(), p = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Set(), g = null, _ = null, v = null, y = null, b = null, x = computed(() => n.value?.configuration.uri?.user || ""), { startRingtone: S, stopRingtone: w, startRingback: T, stopRingback: E, setNotificationVolume: D } = useAudioSounds(), O = (e) => e instanceof Inviter || e instanceof Invitation ? e.request?.callId || e.dialog?.callId || e.id || crypto.randomUUID() : e.dialog?.callId || e.id || crypto.randomUUID(), k = (e) => {
|
|
8382
|
+
if (!(e instanceof Invitation)) return;
|
|
8383
|
+
let t = e.request;
|
|
8384
|
+
if (!t) return;
|
|
8385
|
+
let n = t.getHeader(QUEUE_NAME_HEADER)?.trim(), i = t.getHeader(QUEUE_ID_HEADER)?.trim();
|
|
8386
|
+
if (!(!n && !i)) return {
|
|
8387
|
+
...i ? { id: i } : {},
|
|
8388
|
+
...n ? { name: n } : {}
|
|
8389
|
+
};
|
|
8390
|
+
}, A = (e, n, i, a) => {
|
|
8391
|
+
let o = k(e), s = {
|
|
8383
8392
|
channelId: n,
|
|
8384
8393
|
sipCallId: O(e),
|
|
8385
8394
|
direction: i,
|
|
8386
|
-
remoteNumber: a
|
|
8395
|
+
remoteNumber: a,
|
|
8396
|
+
...o ? { queue: o } : {}
|
|
8387
8397
|
};
|
|
8388
|
-
return f.set(n,
|
|
8389
|
-
},
|
|
8398
|
+
return f.set(n, s), t.onCallContext?.(s), s;
|
|
8399
|
+
}, j = (e, n) => {
|
|
8390
8400
|
let i = f.get(e);
|
|
8391
8401
|
i && t.onCallState?.({
|
|
8392
8402
|
...i,
|
|
8393
8403
|
state: n,
|
|
8394
8404
|
timestamp: Date.now()
|
|
8395
8405
|
});
|
|
8396
|
-
},
|
|
8406
|
+
}, M = (e, n) => {
|
|
8397
8407
|
if (e.state !== SessionState.Established) return;
|
|
8398
8408
|
let i = f.get(n), a = e.sessionDescriptionHandler, o = a?.localMediaStream ?? d.value, s = a?.remoteMediaStream ?? u.value, l = o?.getAudioTracks() ?? [], m = s?.getAudioTracks() ?? [];
|
|
8399
8409
|
if (!i || !o || !s || l.length === 0 || m.length === 0) return;
|
|
@@ -8407,17 +8417,17 @@ const createSipService = (e, t = {}) => {
|
|
|
8407
8417
|
localStream: o,
|
|
8408
8418
|
remoteStream: s
|
|
8409
8419
|
}));
|
|
8410
|
-
},
|
|
8420
|
+
}, N = (e) => {
|
|
8411
8421
|
f.delete(e), p.delete(e), m.delete(e);
|
|
8412
|
-
},
|
|
8422
|
+
}, P = () => {
|
|
8413
8423
|
e.channels.value.some((e) => e.status === "incoming") ? S() : w(), e.activeChannel.value?.status === "calling" ? T() : E();
|
|
8414
|
-
},
|
|
8424
|
+
}, F = (e) => {
|
|
8415
8425
|
o.volume = e / 100;
|
|
8416
|
-
},
|
|
8426
|
+
}, I = async (e) => {
|
|
8417
8427
|
typeof o.setSinkId == "function" && await o.setSinkId(e);
|
|
8418
|
-
},
|
|
8428
|
+
}, L = (e) => {
|
|
8419
8429
|
l.value = e;
|
|
8420
|
-
},
|
|
8430
|
+
}, Up = (e, t) => {
|
|
8421
8431
|
let n = !1, i = e.sessionDescriptionHandler;
|
|
8422
8432
|
return i?.peerConnection && i.peerConnection.getSenders().forEach((e) => {
|
|
8423
8433
|
e.track && e.track.kind === "audio" && (e.track.enabled = t, n = !0);
|
|
@@ -8428,31 +8438,31 @@ const createSipService = (e, t = {}) => {
|
|
|
8428
8438
|
n.enabled = e, t = !0;
|
|
8429
8439
|
}), t;
|
|
8430
8440
|
}, z = (e, t) => {
|
|
8431
|
-
let n = !(t?.isHeld || t?.isMuted), i =
|
|
8441
|
+
let n = !(t?.isHeld || t?.isMuted), i = Up(e, n), a = R(n);
|
|
8432
8442
|
!i && !a && console.warn("[SipJs] No audio tracks found to apply channel audio state");
|
|
8433
|
-
},
|
|
8443
|
+
}, Wp = (t) => {
|
|
8434
8444
|
for (let [n, i] of a.value.entries()) if (i === t) return e.channels.value.find((e) => e.id === n) || null;
|
|
8435
8445
|
return e.activeChannel.value || null;
|
|
8436
|
-
},
|
|
8446
|
+
}, B = async (e) => {
|
|
8437
8447
|
let t = e.sessionDescriptionHandler?.peerConnection;
|
|
8438
8448
|
if (!t) return;
|
|
8439
|
-
let n =
|
|
8449
|
+
let n = Wp(e), i = !(n?.isHeld || n?.isMuted), a = t.getSenders().find((e) => e.track?.kind === "audio");
|
|
8440
8450
|
if (a?.track) {
|
|
8441
|
-
a.track.enabled = i, n &&
|
|
8451
|
+
a.track.enabled = i, n && M(e, n.id);
|
|
8442
8452
|
return;
|
|
8443
8453
|
}
|
|
8444
8454
|
try {
|
|
8445
|
-
let [a] = (await navigator.mediaDevices.getUserMedia(
|
|
8455
|
+
let [a] = (await navigator.mediaDevices.getUserMedia(V(!1))).getAudioTracks();
|
|
8446
8456
|
if (!a) return;
|
|
8447
8457
|
a.enabled = i;
|
|
8448
8458
|
let o = new MediaStream([a]);
|
|
8449
8459
|
d.value = o;
|
|
8450
8460
|
let s = t.getSenders().find((e) => e.track === null);
|
|
8451
|
-
s ? await s.replaceTrack(a) : t.addTrack(a, o), z(e, n), n &&
|
|
8461
|
+
s ? await s.replaceTrack(a) : t.addTrack(a, o), z(e, n), n && M(e, n.id);
|
|
8452
8462
|
} catch (e) {
|
|
8453
8463
|
console.warn("[SipJs] Failed to recover outbound audio track:", e);
|
|
8454
8464
|
}
|
|
8455
|
-
},
|
|
8465
|
+
}, V = (e = !1) => {
|
|
8456
8466
|
let t = {
|
|
8457
8467
|
echoCancellation: { ideal: !0 },
|
|
8458
8468
|
noiseSuppression: { ideal: !1 },
|
|
@@ -8463,7 +8473,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8463
8473
|
audio: t,
|
|
8464
8474
|
video: e
|
|
8465
8475
|
};
|
|
8466
|
-
},
|
|
8476
|
+
}, H = async (t) => {
|
|
8467
8477
|
if (!n.value) {
|
|
8468
8478
|
try {
|
|
8469
8479
|
(await navigator.mediaDevices.getUserMedia({ audio: !0 })).getTracks().forEach((e) => e.stop());
|
|
@@ -8485,16 +8495,16 @@ const createSipService = (e, t = {}) => {
|
|
|
8485
8495
|
delegate: {
|
|
8486
8496
|
onConnect: () => e.setConnected(!0),
|
|
8487
8497
|
onDisconnect: () => e.setConnected(!1),
|
|
8488
|
-
onInvite: (e) =>
|
|
8498
|
+
onInvite: (e) => G(e)
|
|
8489
8499
|
}
|
|
8490
|
-
}), await n.value.start(), i.value = new Registerer(n.value), await i.value.register(),
|
|
8500
|
+
}), await n.value.start(), i.value = new Registerer(n.value), await i.value.register(), U();
|
|
8491
8501
|
} catch {}
|
|
8492
8502
|
}
|
|
8493
|
-
},
|
|
8503
|
+
}, U = () => {
|
|
8494
8504
|
v = new AbortController();
|
|
8495
8505
|
let { signal: t } = v, n = Date.now(), i = (e = 1e3) => {
|
|
8496
8506
|
y && clearTimeout(y), y = setTimeout(async () => {
|
|
8497
|
-
y = null, await
|
|
8507
|
+
y = null, await Gp();
|
|
8498
8508
|
}, e);
|
|
8499
8509
|
}, a = () => {
|
|
8500
8510
|
if (document.visibilityState === "visible") {
|
|
@@ -8517,7 +8527,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8517
8527
|
}, { signal: t }), document.addEventListener("resume", () => {
|
|
8518
8528
|
console.log("[SipJs] Page resumed"), n = Date.now(), l(), i(1e3);
|
|
8519
8529
|
}, { signal: t }), l();
|
|
8520
|
-
},
|
|
8530
|
+
}, Gp = async () => {
|
|
8521
8531
|
if (n.value) {
|
|
8522
8532
|
if (!navigator.onLine) {
|
|
8523
8533
|
console.log("[SipJs] Skipping reconnect, device is offline");
|
|
@@ -8535,7 +8545,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8535
8545
|
console.error("[SipJs] Reconnection failed:", e);
|
|
8536
8546
|
}
|
|
8537
8547
|
}
|
|
8538
|
-
},
|
|
8548
|
+
}, Kp = async () => {
|
|
8539
8549
|
v?.abort(), v = null, y &&= (clearTimeout(y), null), b &&= (clearInterval(b), null);
|
|
8540
8550
|
let e = i.value, t = n.value;
|
|
8541
8551
|
if (i.value = null, n.value = null, e) try {
|
|
@@ -8548,7 +8558,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8548
8558
|
} catch (e) {
|
|
8549
8559
|
console.warn("[SipJs] UserAgent stop failed:", e);
|
|
8550
8560
|
}
|
|
8551
|
-
},
|
|
8561
|
+
}, G = (t) => {
|
|
8552
8562
|
console.log("[SipJs] 📞 Llamada entrante recibida"), console.log("[SipJs] Remote Identity URI:", t.remoteIdentity.uri.toString()), console.log("[SipJs] Remote Identity URI user:", t.remoteIdentity.uri.user), console.log("[SipJs] Remote Identity displayName:", t.remoteIdentity.displayName);
|
|
8553
8563
|
let n = e.channels.value.find((e) => e.status === "idle");
|
|
8554
8564
|
if (!n) {
|
|
@@ -8563,7 +8573,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8563
8573
|
remoteNumber: s,
|
|
8564
8574
|
remoteDisplayName: t.remoteIdentity.displayName || void 0,
|
|
8565
8575
|
hasVideo: o
|
|
8566
|
-
}),
|
|
8576
|
+
}), A(t, i, "incoming", s), j(i, "ringing"), P(), e.setActiveChannelId(i), t.stateChange.addListener((n) => {
|
|
8567
8577
|
switch (n) {
|
|
8568
8578
|
case SessionState.Terminated: {
|
|
8569
8579
|
let n = e.channels.value.find((e) => e.id === i), o = extractCallerNumber(t.remoteIdentity.uri.user, t.remoteIdentity.displayName);
|
|
@@ -8583,25 +8593,25 @@ const createSipService = (e, t = {}) => {
|
|
|
8583
8593
|
startTime: Date.now(),
|
|
8584
8594
|
duration: 0
|
|
8585
8595
|
});
|
|
8586
|
-
|
|
8596
|
+
j(i, m.has(i) ? "ended" : "failed"), N(i), e.updateChannelState(i, {
|
|
8587
8597
|
status: "idle",
|
|
8588
8598
|
remoteNumber: "",
|
|
8589
8599
|
isMuted: !1,
|
|
8590
8600
|
isHeld: !1,
|
|
8591
8601
|
hasVideo: !1,
|
|
8592
8602
|
hasEarlyMedia: !1
|
|
8593
|
-
}), a.value.delete(i), e.activeChannelId.value === i &&
|
|
8603
|
+
}), a.value.delete(i), e.activeChannelId.value === i && tm(), P();
|
|
8594
8604
|
break;
|
|
8595
8605
|
}
|
|
8596
8606
|
case SessionState.Established:
|
|
8597
8607
|
m.add(i), e.updateChannelState(i, {
|
|
8598
8608
|
status: "connected",
|
|
8599
8609
|
startTime: Date.now()
|
|
8600
|
-
}),
|
|
8610
|
+
}), j(i, "connected"), e.activeChannelId.value === i && (Q(t), B(t).then(() => M(t, i))), P();
|
|
8601
8611
|
break;
|
|
8602
8612
|
}
|
|
8603
8613
|
});
|
|
8604
|
-
},
|
|
8614
|
+
}, qp = async (t, i = !1) => {
|
|
8605
8615
|
if (!n.value) return;
|
|
8606
8616
|
let o = e.activeChannelId.value;
|
|
8607
8617
|
if (a.value.has(o)) return;
|
|
@@ -8612,17 +8622,17 @@ const createSipService = (e, t = {}) => {
|
|
|
8612
8622
|
}
|
|
8613
8623
|
if (!s) return;
|
|
8614
8624
|
let l = new Inviter(n.value, s);
|
|
8615
|
-
a.value.set(o, l),
|
|
8625
|
+
a.value.set(o, l), A(l, o, "outgoing", t), j(o, "dialing"), e.updateChannelState(o, {
|
|
8616
8626
|
status: "calling",
|
|
8617
8627
|
remoteNumber: t,
|
|
8618
8628
|
hasVideo: i
|
|
8619
|
-
}), e.setLastDialedNumber(t),
|
|
8629
|
+
}), e.setLastDialedNumber(t), P(), l.stateChange.addListener((n) => {
|
|
8620
8630
|
switch (n) {
|
|
8621
8631
|
case SessionState.Established:
|
|
8622
8632
|
m.add(o), e.channels.value.find((e) => e.id === o)?.status !== "connected" && (e.updateChannelState(o, {
|
|
8623
8633
|
status: "connected",
|
|
8624
8634
|
startTime: Date.now()
|
|
8625
|
-
}),
|
|
8635
|
+
}), j(o, "connected"), Q(l), B(l).then(() => M(l, o)), P());
|
|
8626
8636
|
break;
|
|
8627
8637
|
case SessionState.Terminated: {
|
|
8628
8638
|
let n = e.channels.value.find((e) => e.id === o);
|
|
@@ -8642,7 +8652,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8642
8652
|
startTime: Date.now(),
|
|
8643
8653
|
duration: 0
|
|
8644
8654
|
});
|
|
8645
|
-
|
|
8655
|
+
j(o, m.has(o) ? "ended" : "failed"), N(o), e.updateChannelState(o, {
|
|
8646
8656
|
status: "idle",
|
|
8647
8657
|
remoteNumber: "",
|
|
8648
8658
|
isMuted: !1,
|
|
@@ -8650,41 +8660,41 @@ const createSipService = (e, t = {}) => {
|
|
|
8650
8660
|
startTime: void 0,
|
|
8651
8661
|
keypadValue: "",
|
|
8652
8662
|
hasVideo: !1
|
|
8653
|
-
}), a.value.delete(o), e.activeChannelId.value === o &&
|
|
8663
|
+
}), a.value.delete(o), e.activeChannelId.value === o && tm(), P();
|
|
8654
8664
|
break;
|
|
8655
8665
|
}
|
|
8656
8666
|
}
|
|
8657
8667
|
});
|
|
8658
8668
|
let u = {
|
|
8659
|
-
sessionDescriptionHandlerOptions: { constraints:
|
|
8669
|
+
sessionDescriptionHandlerOptions: { constraints: V(i) },
|
|
8660
8670
|
requestDelegate: {
|
|
8661
8671
|
onProgress: (t) => {
|
|
8662
|
-
(t.message.statusCode === 180 || t.message.statusCode === 183) && (t.message.body && (e.updateChannelState(o, { hasEarlyMedia: !0 }),
|
|
8672
|
+
(t.message.statusCode === 180 || t.message.statusCode === 183) && (t.message.body && (e.updateChannelState(o, { hasEarlyMedia: !0 }), Q(l)), P());
|
|
8663
8673
|
},
|
|
8664
8674
|
onAccept: (t) => {
|
|
8665
8675
|
e.channels.value.find((e) => e.id === o)?.status !== "connected" && (m.add(o), e.updateChannelState(o, {
|
|
8666
8676
|
status: "connected",
|
|
8667
8677
|
startTime: Date.now()
|
|
8668
|
-
}),
|
|
8678
|
+
}), j(o, "connected"), Q(l), B(l).then(() => M(l, o)), P());
|
|
8669
8679
|
}
|
|
8670
8680
|
}
|
|
8671
8681
|
};
|
|
8672
8682
|
await l.invite(u);
|
|
8673
|
-
},
|
|
8683
|
+
}, K = async (t = !1) => {
|
|
8674
8684
|
let n = e.activeChannelId.value, i = a.value.get(n);
|
|
8675
8685
|
if (i instanceof Invitation && i.state === SessionState.Initial) {
|
|
8676
8686
|
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 {
|
|
8677
|
-
await
|
|
8687
|
+
await Y(n, !0), e.updateChannelState(t, { isHeld: !0 });
|
|
8678
8688
|
} catch (e) {
|
|
8679
8689
|
console.error(`[SipJs] Failed to hold channel ${t}:`, e);
|
|
8680
8690
|
}
|
|
8681
|
-
let o = { sessionDescriptionHandlerOptions: { constraints:
|
|
8691
|
+
let o = { sessionDescriptionHandlerOptions: { constraints: V(t) } };
|
|
8682
8692
|
e.updateChannelState(n, {
|
|
8683
8693
|
status: "connected",
|
|
8684
8694
|
startTime: Date.now()
|
|
8685
8695
|
});
|
|
8686
8696
|
try {
|
|
8687
|
-
await i.accept(o), await
|
|
8697
|
+
await i.accept(o), await B(i), P();
|
|
8688
8698
|
} catch (t) {
|
|
8689
8699
|
let i = a.value.get(n);
|
|
8690
8700
|
throw i instanceof Invitation && i.state === SessionState.Initial && e.updateChannelState(n, {
|
|
@@ -8693,7 +8703,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8693
8703
|
}), t;
|
|
8694
8704
|
}
|
|
8695
8705
|
}
|
|
8696
|
-
},
|
|
8706
|
+
}, q = async () => {
|
|
8697
8707
|
let t = a.value.get(e.activeChannelId.value);
|
|
8698
8708
|
if (t) switch (t.state) {
|
|
8699
8709
|
case SessionState.Initial:
|
|
@@ -8704,35 +8714,35 @@ const createSipService = (e, t = {}) => {
|
|
|
8704
8714
|
await t.bye();
|
|
8705
8715
|
break;
|
|
8706
8716
|
}
|
|
8707
|
-
},
|
|
8717
|
+
}, J = () => {
|
|
8708
8718
|
let t = a.value.get(e.activeChannelId.value);
|
|
8709
8719
|
if (!t) return;
|
|
8710
8720
|
let n = !e.isMuted.value;
|
|
8711
8721
|
e.setMuted(n), z(t, e.channels.value.find((t) => t.id === e.activeChannelId.value));
|
|
8712
|
-
},
|
|
8722
|
+
}, Y = async (e, t) => {
|
|
8713
8723
|
let n = { sessionDescriptionHandlerOptions: { hold: t } };
|
|
8714
8724
|
await e.invite(n);
|
|
8715
|
-
},
|
|
8725
|
+
}, Jp = async () => {
|
|
8716
8726
|
let t = a.value.get(e.activeChannelId.value);
|
|
8717
8727
|
if (t?.state !== SessionState.Established) return;
|
|
8718
8728
|
let n = !e.isHeld.value;
|
|
8719
8729
|
try {
|
|
8720
|
-
await
|
|
8730
|
+
await Y(t, n), e.setHeld(n), z(t, e.channels.value.find((t) => t.id === e.activeChannelId.value));
|
|
8721
8731
|
} catch {}
|
|
8722
|
-
},
|
|
8732
|
+
}, Z = async (t) => {
|
|
8723
8733
|
let n = e.activeChannelId.value;
|
|
8724
8734
|
if (n === t) return;
|
|
8725
8735
|
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);
|
|
8726
8736
|
if (i && i.state === SessionState.Established && !s?.isHeld) try {
|
|
8727
|
-
await
|
|
8737
|
+
await Y(i, !0), e.updateChannelState(n, { isHeld: !0 }), z(i, e.channels.value.find((e) => e.id === n));
|
|
8728
8738
|
} catch {}
|
|
8729
|
-
if (e.setActiveChannelId(t),
|
|
8739
|
+
if (e.setActiveChannelId(t), P(), o && o.state === SessionState.Established) {
|
|
8730
8740
|
if (l?.isHeld) try {
|
|
8731
|
-
await
|
|
8741
|
+
await Y(o, !1), e.updateChannelState(t, { isHeld: !1 });
|
|
8732
8742
|
} catch {}
|
|
8733
|
-
z(o, e.channels.value.find((e) => e.id === t)),
|
|
8734
|
-
} else
|
|
8735
|
-
},
|
|
8743
|
+
z(o, e.channels.value.find((e) => e.id === t)), Q(o);
|
|
8744
|
+
} else tm();
|
|
8745
|
+
}, Yp = (t) => {
|
|
8736
8746
|
let n = a.value.get(e.activeChannelId.value);
|
|
8737
8747
|
if (n?.state !== SessionState.Established) return;
|
|
8738
8748
|
let i = { requestOptions: { body: {
|
|
@@ -8741,10 +8751,10 @@ const createSipService = (e, t = {}) => {
|
|
|
8741
8751
|
contentDisposition: "signal"
|
|
8742
8752
|
} } };
|
|
8743
8753
|
n.info(i);
|
|
8744
|
-
},
|
|
8754
|
+
}, Xp = (t, n) => {
|
|
8745
8755
|
let i = e.channels.value.find((e) => e.id === t);
|
|
8746
|
-
!i || i.status !== "connected" || (
|
|
8747
|
-
},
|
|
8756
|
+
!i || i.status !== "connected" || (Q(n), z(n, i), B(n), o.play().catch(() => {}));
|
|
8757
|
+
}, Zp = async (t) => {
|
|
8748
8758
|
console.log("[SipJs] 🔄 transferCall iniciado"), console.log("[SipJs] Target:", t);
|
|
8749
8759
|
let i = e.activeChannelId.value, o = a.value.get(i);
|
|
8750
8760
|
if (!o) throw console.error("[SipJs] ❌ No hay sesión activa en el canal", i), Error("No active session to transfer");
|
|
@@ -8764,7 +8774,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8764
8774
|
},
|
|
8765
8775
|
onReject: (e) => {
|
|
8766
8776
|
let t = e.message.statusCode;
|
|
8767
|
-
console.error("[SipJs] ❌ Transfer REFER rechazado:", t), console.error("[SipJs] Response completo:", e.message),
|
|
8777
|
+
console.error("[SipJs] ❌ Transfer REFER rechazado:", t), console.error("[SipJs] Response completo:", e.message), Xp(i, o);
|
|
8768
8778
|
}
|
|
8769
8779
|
},
|
|
8770
8780
|
onNotify: (e) => {
|
|
@@ -8787,7 +8797,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8787
8797
|
487: "Transferencia cancelada",
|
|
8788
8798
|
503: "Servicio no disponible - el destino puede estar fuera de línea"
|
|
8789
8799
|
}[t] || `Error en transferencia (código ${t})`;
|
|
8790
|
-
console.warn("[SipJs] 💬", e),
|
|
8800
|
+
console.warn("[SipJs] 💬", e), Xp(i, o);
|
|
8791
8801
|
} else t >= 100 && t < 200 && console.log("[SipJs] 📞 Transferencia en progreso:", t, n);
|
|
8792
8802
|
} else console.warn("[SipJs] ⚠️ No se pudo extraer el código de estado del NOTIFY body");
|
|
8793
8803
|
} else console.warn("[SipJs] ⚠️ NOTIFY sin body");
|
|
@@ -8796,28 +8806,28 @@ const createSipService = (e, t = {}) => {
|
|
|
8796
8806
|
} catch (e) {
|
|
8797
8807
|
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;
|
|
8798
8808
|
}
|
|
8799
|
-
},
|
|
8809
|
+
}, Qp = async (t) => {
|
|
8800
8810
|
console.log("[SipJs] 🔄 startAttendedTransfer iniciado"), console.log("[SipJs] Target:", t);
|
|
8801
8811
|
let n = e.activeChannelId.value, i = a.value.get(n);
|
|
8802
8812
|
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");
|
|
8803
8813
|
let o = e.channels.value.find((e) => e.status === "idle");
|
|
8804
8814
|
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");
|
|
8805
8815
|
try {
|
|
8806
|
-
console.log("[SipJs] 🔇 Poniendo llamada original en hold..."), await
|
|
8816
|
+
console.log("[SipJs] 🔇 Poniendo llamada original en hold..."), await Y(i, !0), e.updateChannelState(n, { isHeld: !0 }), console.log("[SipJs] ✅ Llamada original en hold");
|
|
8807
8817
|
} catch (e) {
|
|
8808
8818
|
throw console.error("[SipJs] ❌ Failed to hold original call:", e), Error("Failed to put call on hold");
|
|
8809
8819
|
}
|
|
8810
8820
|
console.log("[SipJs] 🔄 Cambiando al canal de consulta:", o.id), e.setActiveChannelId(o.id);
|
|
8811
8821
|
try {
|
|
8812
|
-
console.log("[SipJs] 📞 Iniciando llamada de consulta a:", t), await
|
|
8822
|
+
console.log("[SipJs] 📞 Iniciando llamada de consulta a:", t), await qp(t, !1), console.log("[SipJs] ✅ Llamada de consulta iniciada"), e.setTransferInProgress({
|
|
8813
8823
|
originalChannelId: n,
|
|
8814
8824
|
consultationChannelId: o.id,
|
|
8815
8825
|
targetNumber: t
|
|
8816
8826
|
}), console.log("[SipJs] 📋 Transferencia en progreso registrada");
|
|
8817
8827
|
} catch (t) {
|
|
8818
|
-
throw console.error("[SipJs] ❌ Failed to start consultation call:", t), console.log("[SipJs] 🔄 Volviendo al canal original y quitando hold..."), e.setActiveChannelId(n), await
|
|
8828
|
+
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");
|
|
8819
8829
|
}
|
|
8820
|
-
},
|
|
8830
|
+
}, $p = async () => {
|
|
8821
8831
|
console.log("[SipJs] 🔄 completeAttendedTransfer iniciado");
|
|
8822
8832
|
let t = e.transferInProgress.value;
|
|
8823
8833
|
if (!t) throw console.error("[SipJs] ❌ No hay transferencia en progreso"), Error("No transfer in progress");
|
|
@@ -8860,7 +8870,7 @@ const createSipService = (e, t = {}) => {
|
|
|
8860
8870
|
} catch (e) {
|
|
8861
8871
|
throw console.error("[SipJs] Attended transfer failed:", e), e;
|
|
8862
8872
|
}
|
|
8863
|
-
},
|
|
8873
|
+
}, em = async () => {
|
|
8864
8874
|
let t = e.transferInProgress.value;
|
|
8865
8875
|
if (!t) throw Error("No transfer in progress");
|
|
8866
8876
|
console.log("[SipJs] Canceling attended transfer...");
|
|
@@ -8871,12 +8881,12 @@ const createSipService = (e, t = {}) => {
|
|
|
8871
8881
|
console.warn("[SipJs] Error ending consultation:", e);
|
|
8872
8882
|
}
|
|
8873
8883
|
if (n) try {
|
|
8874
|
-
e.setActiveChannelId(t.originalChannelId), await
|
|
8884
|
+
e.setActiveChannelId(t.originalChannelId), await Y(n, !1), e.updateChannelState(t.originalChannelId, { isHeld: !1 }), console.log("[SipJs] Returned to original call");
|
|
8875
8885
|
} catch (e) {
|
|
8876
8886
|
console.warn("[SipJs] Error resuming original call:", e);
|
|
8877
8887
|
}
|
|
8878
8888
|
e.setTransferInProgress(null);
|
|
8879
|
-
},
|
|
8889
|
+
}, Q = (e) => {
|
|
8880
8890
|
let t = e.sessionDescriptionHandler;
|
|
8881
8891
|
if (!t) {
|
|
8882
8892
|
console.error("[SipJs] setupRemoteMedia: no sessionDescriptionHandler");
|
|
@@ -8889,8 +8899,8 @@ const createSipService = (e, t = {}) => {
|
|
|
8889
8899
|
}
|
|
8890
8900
|
if (u.value === n) return;
|
|
8891
8901
|
o.pause(), o.srcObject = null, g?.abort(), g = new AbortController(), u.value = n, d.value = t.localMediaStream ?? null;
|
|
8892
|
-
let i =
|
|
8893
|
-
z(e, i), i &&
|
|
8902
|
+
let i = Wp(e);
|
|
8903
|
+
z(e, i), i && M(e, i.id);
|
|
8894
8904
|
let a = (e) => {
|
|
8895
8905
|
_?.abort(), _ = new AbortController();
|
|
8896
8906
|
let { signal: t } = _, n = () => {
|
|
@@ -8903,32 +8913,32 @@ const createSipService = (e, t = {}) => {
|
|
|
8903
8913
|
}, { signal: t }), n();
|
|
8904
8914
|
};
|
|
8905
8915
|
n.addEventListener("addtrack", (t) => {
|
|
8906
|
-
t.track.kind === "audio" && (o.srcObject = null, o.srcObject = n, a(t.track), i &&
|
|
8916
|
+
t.track.kind === "audio" && (o.srcObject = null, o.srcObject = n, a(t.track), i && M(e, i.id));
|
|
8907
8917
|
}, { signal: g.signal });
|
|
8908
8918
|
let [s] = n.getTracks();
|
|
8909
|
-
s && (o.srcObject = n, a(s), i &&
|
|
8910
|
-
},
|
|
8919
|
+
s && (o.srcObject = n, a(s), i && M(e, i.id));
|
|
8920
|
+
}, tm = () => {
|
|
8911
8921
|
_?.abort(), _ = null, g?.abort(), g = null, o.pause(), o.srcObject = null, u.value = null, d.value = null;
|
|
8912
8922
|
};
|
|
8913
8923
|
return {
|
|
8914
|
-
initUserAgent:
|
|
8915
|
-
stop:
|
|
8916
|
-
makeCall:
|
|
8917
|
-
answerCall:
|
|
8918
|
-
hangupCall:
|
|
8919
|
-
toggleMute:
|
|
8920
|
-
toggleHold:
|
|
8921
|
-
sendDTMF:
|
|
8922
|
-
transferCall:
|
|
8923
|
-
startAttendedTransfer:
|
|
8924
|
-
completeAttendedTransfer:
|
|
8925
|
-
cancelAttendedTransfer:
|
|
8926
|
-
switchChannel:
|
|
8924
|
+
initUserAgent: H,
|
|
8925
|
+
stop: Kp,
|
|
8926
|
+
makeCall: qp,
|
|
8927
|
+
answerCall: K,
|
|
8928
|
+
hangupCall: q,
|
|
8929
|
+
toggleMute: J,
|
|
8930
|
+
toggleHold: Jp,
|
|
8931
|
+
sendDTMF: Yp,
|
|
8932
|
+
transferCall: Zp,
|
|
8933
|
+
startAttendedTransfer: Qp,
|
|
8934
|
+
completeAttendedTransfer: $p,
|
|
8935
|
+
cancelAttendedTransfer: em,
|
|
8936
|
+
switchChannel: Z,
|
|
8927
8937
|
extension: x,
|
|
8928
|
-
setVolume:
|
|
8938
|
+
setVolume: F,
|
|
8929
8939
|
setNotificationVolume: D,
|
|
8930
|
-
setOutputDevice:
|
|
8931
|
-
setInputDevice:
|
|
8940
|
+
setOutputDevice: I,
|
|
8941
|
+
setInputDevice: L,
|
|
8932
8942
|
remoteStream: u,
|
|
8933
8943
|
localStream: d
|
|
8934
8944
|
};
|
|
@@ -16308,7 +16318,7 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
16308
16318
|
if (!t) return "Unknown";
|
|
16309
16319
|
let i = I(t), a = o.contacts?.find((e) => I(e.number) === i);
|
|
16310
16320
|
return a ? a.name : n || t;
|
|
16311
|
-
}),
|
|
16321
|
+
}), R = computed(() => {
|
|
16312
16322
|
let e = p.value;
|
|
16313
16323
|
return e?.remoteNumber || e?.keypadValue || "";
|
|
16314
16324
|
});
|
|
@@ -16397,7 +16407,7 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
16397
16407
|
})) : (openBlock(), createBlock(unref(CircleUser), {
|
|
16398
16408
|
key: 4,
|
|
16399
16409
|
class: "wp:w-3 wp:h-3"
|
|
16400
|
-
}))], 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 && x.value && (T.value.length > 0 || S.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(L.value), 1), L.value ===
|
|
16410
|
+
}))], 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 && x.value && (T.value.length > 0 || S.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(L.value), 1), L.value === R.value ? createCommentVNode("", !0) : (openBlock(), createElementBlock("div", _hoisted_15$1, toDisplayString(R.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(L.value), 1), L.value === R.value ? createCommentVNode("", !0) : (openBlock(), createElementBlock("div", _hoisted_20, toDisplayString(R.value), 1))]), createVNode(unref(TooltipProvider_default), null, {
|
|
16401
16411
|
default: withCtx(() => [createVNode(unref(Tooltip_default), null, {
|
|
16402
16412
|
default: withCtx(() => [createVNode(unref(TooltipTrigger_default), { "as-child": "" }), createVNode(unref(TooltipContent_default), { class: "wp:flex wp:items-center wp:gap-2" }, {
|
|
16403
16413
|
default: withCtx(() => [createElementVNode("span", null, toDisplayString(unref(t).isKeypadVisible ? "Ocultar" : "Mostrar") + " teclado", 1), createVNode(unref(Kbd_default), null, {
|
|
@@ -17309,14 +17319,14 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17309
17319
|
onMounted(() => {
|
|
17310
17320
|
o.value = "documentPictureInPicture" in window, document.addEventListener("visibilitychange", y), window.addEventListener("blur", b);
|
|
17311
17321
|
}), onUnmounted(() => {
|
|
17312
|
-
document.removeEventListener("visibilitychange", y), window.removeEventListener("blur", b), g &&= (clearTimeout(g), null), S(),
|
|
17322
|
+
document.removeEventListener("visibilitychange", y), window.removeEventListener("blur", b), g &&= (clearTimeout(g), null), S(), R();
|
|
17313
17323
|
});
|
|
17314
17324
|
let _ = () => {
|
|
17315
17325
|
let e = i.callStatus !== "idle", t = document.hidden || !document.hasFocus();
|
|
17316
17326
|
return i.autoOpenOnBlur !== !1 && e && o.value && t && !l.value && !u.value;
|
|
17317
17327
|
}, v = () => {
|
|
17318
17328
|
_() && (g && clearTimeout(g), g = setTimeout(() => {
|
|
17319
|
-
_() &&
|
|
17329
|
+
_() && Up();
|
|
17320
17330
|
}, 120));
|
|
17321
17331
|
}, y = () => {
|
|
17322
17332
|
v();
|
|
@@ -17333,9 +17343,9 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17333
17343
|
return `${t.toString().padStart(2, "0")}:${n.toString().padStart(2, "0")}`;
|
|
17334
17344
|
};
|
|
17335
17345
|
watch(() => i.callStatus, (e, t) => {
|
|
17336
|
-
e === "connected" && t !== "connected" ? x() : e === "idle" && t !== "idle" && (S(), l.value &&
|
|
17346
|
+
e === "connected" && t !== "connected" ? x() : e === "idle" && t !== "idle" && (S(), l.value && R());
|
|
17337
17347
|
}, { immediate: !0 }), watch(() => i.isConnected, (e) => {
|
|
17338
|
-
!e && l.value && (S(),
|
|
17348
|
+
!e && l.value && (S(), R());
|
|
17339
17349
|
}), watch(() => [
|
|
17340
17350
|
i.callStatus,
|
|
17341
17351
|
i.isMuted,
|
|
@@ -17409,7 +17419,7 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17409
17419
|
n.className = "pip-btn pip-btn-answer", n.title = "Contestar", n.innerHTML = E.phone, n.onclick = () => a("answer", !1), t.appendChild(n);
|
|
17410
17420
|
let o = e.createElement("button");
|
|
17411
17421
|
o.className = "pip-btn pip-btn-hangup", o.title = "Rechazar", o.innerHTML = E.phoneOff, o.onclick = () => {
|
|
17412
|
-
a("hangup"),
|
|
17422
|
+
a("hangup"), R();
|
|
17413
17423
|
}, t.appendChild(o);
|
|
17414
17424
|
} else if (i.callStatus === "connected") {
|
|
17415
17425
|
let n = e.createElement("button");
|
|
@@ -17420,12 +17430,12 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17420
17430
|
s.className = "pip-btn pip-btn-transfer", s.title = "Transferir", s.innerHTML = E.transfer, s.onclick = () => a("transfer"), t.appendChild(s);
|
|
17421
17431
|
let l = e.createElement("button");
|
|
17422
17432
|
l.className = "pip-btn pip-btn-hangup", l.title = "Colgar", l.innerHTML = E.phoneOff, l.onclick = () => {
|
|
17423
|
-
a("hangup"),
|
|
17433
|
+
a("hangup"), R();
|
|
17424
17434
|
}, t.appendChild(l);
|
|
17425
17435
|
} else if (i.callStatus === "calling") {
|
|
17426
17436
|
let n = e.createElement("button");
|
|
17427
17437
|
n.className = "pip-btn pip-btn-hangup", n.title = "Cancelar", n.innerHTML = E.phoneOff, n.onclick = () => {
|
|
17428
|
-
a("hangup"),
|
|
17438
|
+
a("hangup"), R();
|
|
17429
17439
|
}, t.appendChild(n);
|
|
17430
17440
|
}
|
|
17431
17441
|
}
|
|
@@ -17441,7 +17451,7 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17441
17451
|
}, 1e3));
|
|
17442
17452
|
}, L = () => {
|
|
17443
17453
|
m &&= (clearInterval(m), null);
|
|
17444
|
-
},
|
|
17454
|
+
}, Up = async () => {
|
|
17445
17455
|
if (!(!o.value || l.value || u.value)) {
|
|
17446
17456
|
u.value = !0;
|
|
17447
17457
|
try {
|
|
@@ -17461,14 +17471,14 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17461
17471
|
u.value = !1;
|
|
17462
17472
|
}
|
|
17463
17473
|
}
|
|
17464
|
-
},
|
|
17474
|
+
}, R = () => {
|
|
17465
17475
|
L(), d.value && (d.value.close(), d.value = null, l.value = !1, a("update:active", !1));
|
|
17466
17476
|
};
|
|
17467
17477
|
return t({
|
|
17468
|
-
open:
|
|
17469
|
-
close:
|
|
17478
|
+
open: Up,
|
|
17479
|
+
close: R,
|
|
17470
17480
|
toggle: () => {
|
|
17471
|
-
l.value ?
|
|
17481
|
+
l.value ? R() : Up();
|
|
17472
17482
|
},
|
|
17473
17483
|
isActive: l,
|
|
17474
17484
|
isSupported: o,
|
|
@@ -17554,7 +17564,7 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17554
17564
|
provide("webphone", x), provide("sip", S), t({ stop: S.stop }), watchEffect(() => {
|
|
17555
17565
|
o.mode === "webcall" && (o.to || console.error("WebPhone: \"to\" prop is required when mode is \"webcall\""), o.logo || console.error("WebPhone: \"logo\" prop is required when mode is \"webcall\""));
|
|
17556
17566
|
});
|
|
17557
|
-
let O = ref(!1), k = ref(!1), j = ref(!1), N = ref(null), F = ref(null), L = ref(null),
|
|
17567
|
+
let O = ref(!1), k = ref(!1), j = ref(!1), N = ref(null), F = ref(null), L = ref(null), V = navigator.platform.toUpperCase().indexOf("MAC") >= 0 ? "⌘" : "Ctrl+", H = computed(() => o.mode === "webcall"), U = ref(0), W = (e) => !!e && e.getVideoTracks().length > 0;
|
|
17558
17568
|
watch(() => x.callStatus, (e) => {
|
|
17559
17569
|
if (e === "idle" && !x.isKeypadVisible) {
|
|
17560
17570
|
x.toggleKeypad();
|
|
@@ -17562,68 +17572,68 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17562
17572
|
}
|
|
17563
17573
|
e !== "idle" && x.isKeypadVisible && x.toggleKeypad();
|
|
17564
17574
|
});
|
|
17565
|
-
let
|
|
17575
|
+
let Kp = computed(() => x.channels.find((e) => e.id === x.activeChannelId) ?? null), G = (e) => {
|
|
17566
17576
|
if (!e) return "";
|
|
17567
17577
|
let t = e.trim(), n = t.startsWith("+"), i = t.replace(/[^\d]/g, "");
|
|
17568
17578
|
return n ? `+${i}` : i;
|
|
17569
|
-
},
|
|
17570
|
-
let e =
|
|
17579
|
+
}, qp = computed(() => {
|
|
17580
|
+
let e = Kp.value?.remoteNumber || x.remoteNumber, t = G(e);
|
|
17571
17581
|
return o.contacts.find((e) => G(e.number) === t)?.name || e || "Llamada";
|
|
17572
|
-
}), K = computed(() => (U.value, !!
|
|
17573
|
-
|
|
17574
|
-
},
|
|
17582
|
+
}), K = computed(() => (U.value, !!Kp.value?.hasVideo || W(E.value) || W(D.value))), { isOnline: q } = useNetwork(), J = computed(() => !q.value), Y = ref(null), Z = ref(!1), Qp = computed(() => o.enablePictureInPicture), Q = () => {
|
|
17583
|
+
Qp.value && Y.value?.toggle();
|
|
17584
|
+
}, tm = async (e, t) => {
|
|
17575
17585
|
try {
|
|
17576
17586
|
t === "blind" ? await S.transferCall(e) : await S.startAttendedTransfer(e);
|
|
17577
17587
|
} catch (e) {
|
|
17578
17588
|
console.error("[WebPhone] Transfer error:", e), alert(e instanceof Error ? e.message : "Transfer failed. Please try again.");
|
|
17579
17589
|
}
|
|
17580
|
-
},
|
|
17590
|
+
}, nm = async () => {
|
|
17581
17591
|
try {
|
|
17582
17592
|
await S.completeAttendedTransfer();
|
|
17583
17593
|
} catch (e) {
|
|
17584
17594
|
console.error("[WebPhone] Complete transfer error:", e), alert(e instanceof Error ? e.message : "Failed to complete transfer.");
|
|
17585
17595
|
}
|
|
17586
|
-
},
|
|
17596
|
+
}, rm = async () => {
|
|
17587
17597
|
try {
|
|
17588
17598
|
await S.cancelAttendedTransfer();
|
|
17589
17599
|
} catch (e) {
|
|
17590
17600
|
console.error("[WebPhone] Cancel transfer error:", e), alert(e instanceof Error ? e.message : "Failed to cancel transfer.");
|
|
17591
17601
|
}
|
|
17592
|
-
}, rm = (e) => {
|
|
17593
|
-
x.keypadValue = e, S.makeCall(e);
|
|
17594
17602
|
}, im = (e) => {
|
|
17603
|
+
x.keypadValue = e, S.makeCall(e);
|
|
17604
|
+
}, am = (e) => {
|
|
17595
17605
|
if (o.onAnswer) {
|
|
17596
17606
|
o.onAnswer(e);
|
|
17597
17607
|
return;
|
|
17598
17608
|
}
|
|
17599
17609
|
S.answerCall(e);
|
|
17600
|
-
},
|
|
17610
|
+
}, om = () => {
|
|
17601
17611
|
if (o.onHangup) {
|
|
17602
17612
|
o.onHangup();
|
|
17603
17613
|
return;
|
|
17604
17614
|
}
|
|
17605
17615
|
S.hangupCall();
|
|
17606
|
-
},
|
|
17616
|
+
}, sm = () => {
|
|
17607
17617
|
if (o.onReject) {
|
|
17608
17618
|
o.onReject();
|
|
17609
17619
|
return;
|
|
17610
17620
|
}
|
|
17611
17621
|
S.hangupCall();
|
|
17612
|
-
}, sm = () => {
|
|
17613
|
-
j.value = !0, Y.value?.close(), window.focus();
|
|
17614
17622
|
}, cm = () => {
|
|
17615
|
-
|
|
17623
|
+
j.value = !0, Y.value?.close(), window.focus();
|
|
17624
|
+
}, lm = () => {
|
|
17625
|
+
if (!Qp.value) return !1;
|
|
17616
17626
|
let e = x.callStatus !== "idle", t = document.hidden || !document.hasFocus();
|
|
17617
17627
|
return e && t && !Z.value;
|
|
17618
|
-
},
|
|
17628
|
+
}, $ = () => {
|
|
17619
17629
|
window.setTimeout(() => {
|
|
17620
|
-
|
|
17630
|
+
lm() && Y.value?.open();
|
|
17621
17631
|
}, 150);
|
|
17622
17632
|
};
|
|
17623
17633
|
watchEffect(() => {
|
|
17624
17634
|
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);
|
|
17625
17635
|
});
|
|
17626
|
-
let
|
|
17636
|
+
let um = (e) => {
|
|
17627
17637
|
if (!e || typeof e.addEventListener != "function" || typeof e.removeEventListener != "function") return () => {};
|
|
17628
17638
|
let t = () => {
|
|
17629
17639
|
U.value += 1;
|
|
@@ -17633,11 +17643,11 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17633
17643
|
};
|
|
17634
17644
|
};
|
|
17635
17645
|
watch(E, (e, t, n) => {
|
|
17636
|
-
U.value += 1, n(
|
|
17646
|
+
U.value += 1, n(um(e));
|
|
17637
17647
|
}, { immediate: !0 }), watch(D, (e, t, n) => {
|
|
17638
|
-
U.value += 1, n(
|
|
17648
|
+
U.value += 1, n(um(e));
|
|
17639
17649
|
}, { immediate: !0 });
|
|
17640
|
-
let
|
|
17650
|
+
let dm = [
|
|
17641
17651
|
"button",
|
|
17642
17652
|
"a",
|
|
17643
17653
|
"input",
|
|
@@ -17648,15 +17658,15 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17648
17658
|
"[role=\"button\"]",
|
|
17649
17659
|
"[role=\"radio\"]",
|
|
17650
17660
|
"[data-no-drag]"
|
|
17651
|
-
].join(", "),
|
|
17661
|
+
].join(", "), fm = () => {
|
|
17652
17662
|
let e = window.innerWidth < 640, t = window.innerWidth < 1024, n = 360;
|
|
17653
17663
|
return e ? n = window.innerWidth * .9 : t && (n = 340), {
|
|
17654
17664
|
x: Math.max(0, (window.innerWidth - n) / 2),
|
|
17655
17665
|
y: e ? 30 : 80
|
|
17656
17666
|
};
|
|
17657
|
-
}, { x:
|
|
17667
|
+
}, { x: pm, y: mm, style: hm } = useDraggable(N, {
|
|
17658
17668
|
initialValue: computed(() => {
|
|
17659
|
-
let e =
|
|
17669
|
+
let e = fm();
|
|
17660
17670
|
return {
|
|
17661
17671
|
x: o.position.x ?? e.x,
|
|
17662
17672
|
y: o.position.y ?? e.y
|
|
@@ -17665,14 +17675,14 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17665
17675
|
preventDefault: !0,
|
|
17666
17676
|
onStart: (e, t) => {
|
|
17667
17677
|
let n = t.target;
|
|
17668
|
-
if (n instanceof HTMLElement && n.closest(
|
|
17678
|
+
if (n instanceof HTMLElement && n.closest(dm)) return !1;
|
|
17669
17679
|
}
|
|
17670
17680
|
});
|
|
17671
17681
|
watch(() => o.position, (e) => {
|
|
17672
|
-
let t =
|
|
17673
|
-
|
|
17682
|
+
let t = fm();
|
|
17683
|
+
pm.value = e.x ?? t.x, mm.value = e.y ?? t.y;
|
|
17674
17684
|
}, { deep: !0 });
|
|
17675
|
-
let
|
|
17685
|
+
let gm = [
|
|
17676
17686
|
{
|
|
17677
17687
|
label: "Canal 1",
|
|
17678
17688
|
value: 0
|
|
@@ -17685,27 +17695,27 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17685
17695
|
label: "Canal 3",
|
|
17686
17696
|
value: 2
|
|
17687
17697
|
}
|
|
17688
|
-
],
|
|
17698
|
+
], _m = ref(!1), vm = computed({
|
|
17689
17699
|
get: () => x.activeChannelId.toString(),
|
|
17690
17700
|
set: async (e) => {
|
|
17691
|
-
if (!J.value && e && !
|
|
17692
|
-
|
|
17701
|
+
if (!J.value && e && !_m.value) {
|
|
17702
|
+
_m.value = !0;
|
|
17693
17703
|
try {
|
|
17694
17704
|
await T(parseInt(e));
|
|
17695
17705
|
} finally {
|
|
17696
|
-
|
|
17706
|
+
_m.value = !1;
|
|
17697
17707
|
}
|
|
17698
17708
|
}
|
|
17699
17709
|
}
|
|
17700
|
-
}),
|
|
17710
|
+
}), ym = (e) => {
|
|
17701
17711
|
let t = x.channels.find((t) => t.id === e);
|
|
17702
17712
|
return t ? t.status === "connected" || t.status === "calling" || t.status === "incoming" : !1;
|
|
17703
|
-
},
|
|
17713
|
+
}, bm = (e) => {
|
|
17704
17714
|
let t = x.channels.find((t) => t.id === e);
|
|
17705
17715
|
return t ? t.isHeld || t.status === "held" : !1;
|
|
17706
|
-
},
|
|
17707
|
-
J.value || (
|
|
17708
|
-
},
|
|
17716
|
+
}, xm = (e) => {
|
|
17717
|
+
J.value || (vm.value = e.toString());
|
|
17718
|
+
}, Sm = (e) => {
|
|
17709
17719
|
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) && [
|
|
17710
17720
|
"1",
|
|
17711
17721
|
"2",
|
|
@@ -17713,43 +17723,43 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17713
17723
|
].includes(e.key))) {
|
|
17714
17724
|
e.preventDefault();
|
|
17715
17725
|
let t = parseInt(e.key) - 1;
|
|
17716
|
-
|
|
17717
|
-
|
|
17726
|
+
_m.value || (_m.value = !0, T(t).finally(() => {
|
|
17727
|
+
_m.value = !1;
|
|
17718
17728
|
}));
|
|
17719
17729
|
}
|
|
17720
17730
|
};
|
|
17721
17731
|
watch(() => x.callStatus, () => {
|
|
17722
|
-
|
|
17732
|
+
lm() && $();
|
|
17723
17733
|
}), watch(() => x.isConnected, (e) => {
|
|
17724
17734
|
v.value && a.set(v.value, e);
|
|
17725
|
-
}, { immediate: !0 }), watch(
|
|
17735
|
+
}, { immediate: !0 }), watch(Qp, (e) => {
|
|
17726
17736
|
!e && Z.value && Y.value?.close();
|
|
17727
17737
|
});
|
|
17728
|
-
let
|
|
17729
|
-
|
|
17738
|
+
let Cm = ref(!1), wm = async () => {
|
|
17739
|
+
Cm.value || J.value || !o.host || !o.extension || !o.password || (await w({
|
|
17730
17740
|
uri: `sip:${o.extension}@${o.host}`,
|
|
17731
17741
|
transportOptions: { server: _.value },
|
|
17732
17742
|
authorizationUsername: o.extension,
|
|
17733
17743
|
authorizationPassword: o.password
|
|
17734
|
-
}), S.extension.value && (
|
|
17744
|
+
}), S.extension.value && (Cm.value = !0, o.mode === "webcall" && o.to && S.makeCall(o.to)));
|
|
17735
17745
|
};
|
|
17736
17746
|
return provide("webphoneRegistration", {
|
|
17737
17747
|
isConnected: computed(() => x.isConnected),
|
|
17738
|
-
register: () =>
|
|
17748
|
+
register: () => wm(),
|
|
17739
17749
|
unregister: async () => {
|
|
17740
|
-
await S.stop(),
|
|
17750
|
+
await S.stop(), Cm.value = !1;
|
|
17741
17751
|
}
|
|
17742
17752
|
}), onMounted(async () => {
|
|
17743
|
-
window.addEventListener("keydown",
|
|
17753
|
+
window.addEventListener("keydown", Sm), document.addEventListener("visibilitychange", $), window.addEventListener("blur", $), window.addEventListener("pagehide", $), !(o.mode === "webcall" && (!o.to || !o.logo)) && await wm();
|
|
17744
17754
|
}), watch(() => q.value, async (e) => {
|
|
17745
|
-
e && await
|
|
17755
|
+
e && await wm();
|
|
17746
17756
|
}), onUnmounted(() => {
|
|
17747
|
-
S.stop(), window.removeEventListener("keydown",
|
|
17757
|
+
S.stop(), window.removeEventListener("keydown", Sm), document.removeEventListener("visibilitychange", $), window.removeEventListener("blur", $), window.removeEventListener("pagehide", $);
|
|
17748
17758
|
}), (e, t) => (openBlock(), createElementBlock(Fragment, null, [
|
|
17749
17759
|
createElementVNode("div", {
|
|
17750
17760
|
ref_key: "phoneRef",
|
|
17751
17761
|
ref: N,
|
|
17752
|
-
style: normalizeStyle(unref(
|
|
17762
|
+
style: normalizeStyle(unref(hm)),
|
|
17753
17763
|
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" : ""]),
|
|
17754
17764
|
"data-mode": o.mode,
|
|
17755
17765
|
"data-call-status": x.callStatus,
|
|
@@ -17771,22 +17781,22 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17771
17781
|
}, null, 512)])])) : createCommentVNode("", !0),
|
|
17772
17782
|
createElementVNode("div", _hoisted_4, [
|
|
17773
17783
|
H.value ? createCommentVNode("", !0) : (openBlock(), createElementBlock("div", _hoisted_5, [createElementVNode("div", _hoisted_6, [
|
|
17774
|
-
createElementVNode("div", _hoisted_7, [(openBlock(), createElementBlock(Fragment, null, renderList(
|
|
17784
|
+
createElementVNode("div", _hoisted_7, [(openBlock(), createElementBlock(Fragment, null, renderList(gm, (e) => createElementVNode("button", {
|
|
17775
17785
|
key: e.value,
|
|
17776
17786
|
type: "button",
|
|
17777
17787
|
role: "radio",
|
|
17778
|
-
"aria-checked":
|
|
17788
|
+
"aria-checked": vm.value === e.value.toString(),
|
|
17779
17789
|
disabled: J.value,
|
|
17780
|
-
title: `${e.label} (${unref(
|
|
17781
|
-
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",
|
|
17790
|
+
title: `${e.label} (${unref(V)}${e.value + 1})`,
|
|
17791
|
+
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", bm(e.value) ? "wp:bg-status-hold/12 hover:wp:bg-status-hold/18" : ym(e.value) ? "wp:bg-[var(--color-red)]/12 hover:wp:bg-[var(--color-red)]/18" : vm.value === e.value.toString() ? "wp:bg-[var(--p-primary-color)]/12" : "wp:hover:bg-neutral-100 wp:dark:hover:bg-neutral-800/80"]),
|
|
17782
17792
|
"data-channel-id": e.value,
|
|
17783
|
-
"data-state":
|
|
17784
|
-
"data-call-state":
|
|
17785
|
-
onClick: (t) =>
|
|
17793
|
+
"data-state": vm.value === e.value.toString() ? "active" : "idle",
|
|
17794
|
+
"data-call-state": bm(e.value) ? "held" : ym(e.value) ? "busy" : "available",
|
|
17795
|
+
onClick: (t) => xm(e.value)
|
|
17786
17796
|
}, [createVNode(unref(icon_phone_default), {
|
|
17787
|
-
class: normalizeClass(["webphone__channel-icon wp:size-3 wp:shrink-0",
|
|
17797
|
+
class: normalizeClass(["webphone__channel-icon wp:size-3 wp:shrink-0", bm(e.value) ? "wp:text-status-hold" : ym(e.value) ? "wp:text-[var(--color-red)]" : vm.value === e.value.toString() ? "wp:text-[var(--p-primary-color)]" : "wp:text-neutral-400"]),
|
|
17788
17798
|
"stroke-width": 1.8
|
|
17789
|
-
}, null, 8, ["class"]), createElementVNode("span", { class: normalizeClass(["webphone__channel-label wp:text-[11px] wp:leading-none manrope wp:font-bold",
|
|
17799
|
+
}, null, 8, ["class"]), createElementVNode("span", { class: normalizeClass(["webphone__channel-label wp:text-[11px] wp:leading-none manrope wp:font-bold", bm(e.value) ? "wp:text-status-hold" : ym(e.value) ? "wp:text-[var(--color-red)]" : vm.value === e.value.toString() ? "wp:text-[var(--p-primary-color)]" : "wp:text-neutral-500 wp:dark:text-neutral-400"]) }, toDisplayString(e.label), 3)], 10, _hoisted_8)), 64))]),
|
|
17790
17800
|
createVNode(unref(TooltipProvider_default), null, {
|
|
17791
17801
|
default: withCtx(() => [createVNode(unref(Tooltip_default), null, {
|
|
17792
17802
|
default: withCtx(() => [createVNode(unref(TooltipTrigger_default), { "as-child": "" }, {
|
|
@@ -17795,7 +17805,7 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17795
17805
|
size: "icon",
|
|
17796
17806
|
class: normalizeClass(["wp:h-8 wp:w-8 wp:rounded-full", Z.value ? "wp:text-primary" : ""]),
|
|
17797
17807
|
title: "Picture-in-Picture",
|
|
17798
|
-
onClick:
|
|
17808
|
+
onClick: Q
|
|
17799
17809
|
}, {
|
|
17800
17810
|
default: withCtx(() => [createVNode(unref(PictureInPicture2), { class: "wp:w-4 wp:h-4 wp:text-[var(--color-settings)]" })]),
|
|
17801
17811
|
_: 1
|
|
@@ -17824,7 +17834,7 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17824
17834
|
_: 1
|
|
17825
17835
|
}), createVNode(unref(TooltipContent_default), { class: "wp:flex wp:items-center wp:gap-2" }, {
|
|
17826
17836
|
default: withCtx(() => [t[9] ||= createElementVNode("span", null, "Configuración", -1), createVNode(unref(Kbd_default), null, {
|
|
17827
|
-
default: withCtx(() => [createTextVNode(toDisplayString(unref(
|
|
17837
|
+
default: withCtx(() => [createTextVNode(toDisplayString(unref(V)) + ",", 1)]),
|
|
17828
17838
|
_: 1
|
|
17829
17839
|
})]),
|
|
17830
17840
|
_: 1
|
|
@@ -17863,8 +17873,8 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17863
17873
|
"on-hangup": o.onHangup,
|
|
17864
17874
|
"on-reject": o.onReject,
|
|
17865
17875
|
onTransfer: t[1] ||= (e) => j.value = !0,
|
|
17866
|
-
onCompleteTransfer:
|
|
17867
|
-
onCancelTransfer:
|
|
17876
|
+
onCompleteTransfer: nm,
|
|
17877
|
+
onCancelTransfer: rm
|
|
17868
17878
|
}, null, 8, [
|
|
17869
17879
|
"style",
|
|
17870
17880
|
"destination",
|
|
@@ -17889,23 +17899,23 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17889
17899
|
visible: k.value,
|
|
17890
17900
|
"onUpdate:visible": t[3] ||= (e) => k.value = e,
|
|
17891
17901
|
contacts: o.contacts,
|
|
17892
|
-
onCall:
|
|
17902
|
+
onCall: im
|
|
17893
17903
|
}, null, 8, ["visible", "contacts"]),
|
|
17894
17904
|
createVNode(TransferDialog_default, {
|
|
17895
17905
|
visible: j.value,
|
|
17896
17906
|
"onUpdate:visible": t[4] ||= (e) => j.value = e,
|
|
17897
17907
|
contacts: o.contacts,
|
|
17898
|
-
onTransfer:
|
|
17908
|
+
onTransfer: tm
|
|
17899
17909
|
}, null, 8, ["visible", "contacts"]),
|
|
17900
17910
|
createVNode(DocumentPip_default, {
|
|
17901
17911
|
ref_key: "documentPipRef",
|
|
17902
17912
|
ref: Y,
|
|
17903
17913
|
active: Z.value,
|
|
17904
17914
|
"onUpdate:active": t[5] ||= (e) => Z.value = e,
|
|
17905
|
-
"auto-open-on-blur":
|
|
17915
|
+
"auto-open-on-blur": Qp.value,
|
|
17906
17916
|
"is-connected": x.isConnected,
|
|
17907
17917
|
"remote-number": x.remoteNumber,
|
|
17908
|
-
"caller-name":
|
|
17918
|
+
"caller-name": qp.value,
|
|
17909
17919
|
"has-video": K.value ?? !1,
|
|
17910
17920
|
"remote-stream": unref(E),
|
|
17911
17921
|
"local-stream": unref(D),
|
|
@@ -17914,11 +17924,11 @@ var icon_phone_default = { render }, Tooltip_default = /* @__PURE__ */ defineCom
|
|
|
17914
17924
|
"call-status": x.callStatus,
|
|
17915
17925
|
"is-muted": x.isMuted,
|
|
17916
17926
|
"is-held": x.isHeld,
|
|
17917
|
-
onTransfer:
|
|
17918
|
-
onTransferRequest:
|
|
17919
|
-
onHangup:
|
|
17920
|
-
onReject:
|
|
17921
|
-
onAnswer:
|
|
17927
|
+
onTransfer: cm,
|
|
17928
|
+
onTransferRequest: tm,
|
|
17929
|
+
onHangup: om,
|
|
17930
|
+
onReject: sm,
|
|
17931
|
+
onAnswer: am,
|
|
17922
17932
|
onToggleMute: t[6] ||= (e) => unref(S).toggleMute(),
|
|
17923
17933
|
onToggleHold: t[7] ||= (e) => unref(S).toggleHold()
|
|
17924
17934
|
}, null, 8, [
|