vue-easy-sip 1.0.2 → 1.0.3

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.
@@ -27,8 +27,8 @@ interface Props {
27
27
  fileNamePrefix?: string;
28
28
  /** 媒体约束,可选,用于配置音频和视频选项 */
29
29
  mediaConstraints?: MediaStreamConstraints;
30
- /** 是否无动画static */
31
- static?: boolean;
30
+ /** 是否无动画isStatic */
31
+ isStatic?: boolean;
32
32
  /** 是否无关闭头部 */
33
33
  noHeader?: boolean;
34
34
  }
@@ -49,7 +49,7 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
49
49
  autoSaveRecording: boolean;
50
50
  fileNamePrefix: string;
51
51
  mediaConstraints: any;
52
- static: boolean;
52
+ isStatic: boolean;
53
53
  noHeader: boolean;
54
54
  }>>, {
55
55
  showIntercomDialog: () => Promise<void>;
@@ -80,7 +80,7 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
80
80
  autoSaveRecording: boolean;
81
81
  fileNamePrefix: string;
82
82
  mediaConstraints: any;
83
- static: boolean;
83
+ isStatic: boolean;
84
84
  noHeader: boolean;
85
85
  }>>> & Readonly<{
86
86
  onRecordingStart?: () => any;
@@ -98,7 +98,7 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
98
98
  disableRecording: boolean;
99
99
  autoSaveRecording: boolean;
100
100
  fileNamePrefix: string;
101
- static: boolean;
101
+ isStatic: boolean;
102
102
  noHeader: boolean;
103
103
  callTarget: string;
104
104
  wsServer: string;
@@ -16,7 +16,7 @@ interface Props {
16
16
  /** 录音名前缀 */
17
17
  fileNamePrefix?: string;
18
18
  /** 是否无动画static */
19
- static?: boolean;
19
+ isStatic?: boolean;
20
20
  /** 是否无关闭头部 */
21
21
  noHeader?: boolean;
22
22
  }
@@ -32,7 +32,7 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
32
32
  disableRecording: boolean;
33
33
  autoSaveRecording: boolean;
34
34
  fileNamePrefix: string;
35
- static: boolean;
35
+ isStatic: boolean;
36
36
  noHeader: boolean;
37
37
  }>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
38
38
  close: () => void;
@@ -51,7 +51,7 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
51
51
  disableRecording: boolean;
52
52
  autoSaveRecording: boolean;
53
53
  fileNamePrefix: string;
54
- static: boolean;
54
+ isStatic: boolean;
55
55
  noHeader: boolean;
56
56
  }>>> & Readonly<{
57
57
  onClose?: () => any;
@@ -70,7 +70,7 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
70
70
  disableRecording: boolean;
71
71
  autoSaveRecording: boolean;
72
72
  fileNamePrefix: string;
73
- static: boolean;
73
+ isStatic: boolean;
74
74
  noHeader: boolean;
75
75
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
76
76
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
@@ -1 +1 @@
1
- @font-face{font-family:ves-font;src:url(data:font/woff2;base64,d09GMgABAAAAAAM8AAsAAAAABxwAAALwAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACDBgqBXIFYATYCJAMMCwgABCAFhGcHThtMBhEVlNVkfymgx07jURFKXW3uWKBxrEKLdusB9u/Zazls9oIrrGdTyFpkcH5+EA/U2utbuE1SAlJl1VQRoEdVRSTcj3Cdjq8FIoWyc5O39n688wlNcOt5PcK4KJMEvv2fro/GIVSE6ZS1wJ1m6q7kN/z50rC8O+MuAMAhpwfFi0fYPMUacDOVGeHifsZdpIHbYjC4QXY7faQJvi8oLDD3IlLjeZ//+8m/CK99ACjKBUY1Jj6w7wP6QOu0KMKd+YB8Cuq1vgYgIy4R0M4Uc8V5PwtWcAeGE4dEmW0OZPXhAO/eSuiILNN8s6CgKzMIF1TEc3HG+ejz4ac2AFGVgL3Pkl2tO9z3dRO10iuBSUDPi6iQMAGZsKnbswZOMhMk7Zo0wsqLLIizxutHsmGUPf/xIqEAu7YDGEOzka88nsDXXSGCBAqaMBcrKdcjUoTMl6TN7ZEatqDd7i1TK3MhNRYftPp+7ZbL/++xq33PV65c2Xe/dk37ZF/h6pWe65VrtOeqtlU3tratrFqoNHxn42SV/llxrDc3OvqrvJ3+ugLf8c6vZJtmxb0yf8Zt0GlfFbavGfZHBZqstvPKgTXnXu+BHkDd9GkgPYn7p39j+k3sNnfO/2hPAHxqXf8oUjfDjeZb8AT+q74BJGYjSspNsjdBQDJKueFG7bRDzQ5082a80R2uJWjWPUPUpD+SZsOozI1Dpb1pKJrNQTvjta5vr7sjsJAlYJSzBEEXDUSd3EbSxV0qc09R6eUrii7+o51Vwe7W3qgIpr3goDjD+AWeUiTXppHVM9qnH6QueUdZmcahKety/hcjyhRz1pdtVQlIUoAfeR56nyBLeuCk5aKau6qipreUUwpmLzgozjB+gacUKSBr8fvOaJ9+EJC6Z2Rlah2asgaoXy1CHXeyz/qyrSoBCckF+NHD0PsEuXnYAyctlxGp3FUOiVCtXN8IH7cL2hn7tWmDIIYE+FfiCbNw1MJzxF1eUsRiGaItnrkg9t4Y) format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAASoAAsAAAAABxwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAARAAAAGA9oEpdY21hcAAAAYgAAABWAAABhm2T0+RnbHlmAAAB4AAAAMYAAADcEq2sC2hlYWQAAAKoAAAALgAAADYrr/gzaGhlYQAAAtgAAAAcAAAAJAfeA4RobXR4AAAC9AAAAAwAAAAMDAAAAGxvY2EAAAMAAAAACAAAAAgALgBubWF4cAAAAwgAAAAfAAAAIAETADJuYW1lAAADKAAAAUAAAAJnEKM8sHBvc3QAAARoAAAAPQAAAE7bG9ZceJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGFhYJzAwMrAwNTJdIaBgaEfQjO+ZjBi5ACKMrAyM2AFAWmuKQwHnnc/72Vu+N/AwMB8hwFIMjCiKGICAINNDXp4nO2QwQ2AMAwDL2npAzEIDwbixUKoc3aM4qawBZYuVpy8DCxAEofIYBfG0KnUIk+skef4KXLD291q7/C5ZLqVcNco/Npi7u/mo63JaLbVCf4AZAMRrgAAeJw9TTuKAkEUrNfNvIbpYXR2ULMRbBzBZQ1W2AGDNfQE/cBANPAgXsJLjJcw9AIaewjT/Tw32CqqiqqkwMDP1d7sKywcPDooMQDKeRHsvBdIs/xXL1xF2hgpxniKsRVRN/FbaNoafMG0qsNfhYKeZm/mDWOgmcyo+Wg+6b0/UHKHcprUOi6pHjkdnLI+bj2l3Uzuj7tk3ZT8lnNeCTsq1ud1QY5lxflll1bZSyabjWhU6S6hZDE0nvch7NnbapHo9y97AyhcAAB4nGNgZGBgAGIPP12reH6brwzcLAwg8MQjShpB/7/KwsCsDeRyMDCBRAHgjwgAAAB4nGNgZGBgbvjfwBDDwgACQJKRARUwAwBHCQJsBAAAAAQAAAAEAAAAAAAAAAAuAG54nGNgZGBgYGZQY2BjAAEmIOYCQgaG/2A+AwAM2wFGAHichZE9bsJAEIWfwZAElChKpDRpVikoEsn8lEipUKCnoAez5ke211ovSNQ5TY6QE+QI6Whzikh52EMDRbza2W/evpkdyQDusIeH8rvnLtnDJbOSK7jAo3CV+pOwT34WrqGJnnCd+qtwAy94E26yY8YOnn/FrIV3YQ+3+BCu4AafwlXqX8I++Vu4hgf8CNep/wo3MPGuhZtoeeHA6qnTczXbqVVo0sik7niO9WITT+2pPNE2X5lUdYPOURrpVNtjm3y76DkXqciaRA15q+PYqMyatQ5dsHQu67fbkehBaBIMYKExhWOcQ2GGHeMKIQxSREV0Z/mY7gU2iFlp/3VP6LbIqR9yhS4CdM5cI7rSwnk6TY4tX+tRdXQrbsuahDSUWs1JYrLiDzzcramE1AMsi6oMfbS5ohN/UMyQ/AHYk29XeJxjYGKAAC4G7ICZkYmRmZGFgb8sPzM5taAoM69ENyczL1WoICM/L1U3IzEvXbe0QDctMyeHgQEACi0NIAAAAA==) format("woff"),url(data:font/ttf;base64,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) format("truetype")}.ves-font{font-family:ves-font!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-voiceprint-line:before{content:""}.icon-phone-hang-up-fill:before{content:""}.intercom-dialog[data-v-82693097]{position:fixed;bottom:20px;right:20px;background-color:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;z-index:1000;overflow:hidden}.intercom-dialog.static[data-v-82693097]{position:static;box-shadow:none!important}.slide-fade-enter-active[data-v-82693097]{transition:all .3s ease-out}.slide-fade-leave-active[data-v-82693097]{transition:all .3s ease-in}.slide-fade-enter-from[data-v-82693097],.slide-fade-leave-to[data-v-82693097]{transform:translate(20px);opacity:0}.dialog-header[data-v-82693097]{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background-color:#f5f5f5;border-bottom:1px solid #eee;cursor:move}.dialog-header h3[data-v-82693097]{margin:0 6px 0 0;font-size:16px;color:#333;white-space:nowrap}.close-button[data-v-82693097]{background:none;border:none;font-size:24px;cursor:pointer;color:#666;padding:0;line-height:1}.dialog-content[data-v-82693097]{padding:6px 10px;display:flex;flex-direction:column;align-items:center;gap:20px}.call-status[data-v-82693097]{text-align:center;width:100%}.status-icon[data-v-82693097]{width:50px;height:50px;line-height:50px;border-radius:50%;margin:0 auto 10px;background-position:center;background-repeat:no-repeat;background-size:30px}.status-icon i[data-v-82693097]{font-size:32px;color:#fff}.calling-icon[data-v-82693097]{background-color:#f8d7da;animation:pulse-82693097 1.5s infinite}.incoming-icon[data-v-82693097]{background-color:#cce5ff;animation:pulse-82693097 1.5s infinite}.failed-icon[data-v-82693097]{background-color:#f8d7da}.active-icon[data-v-82693097]{background-color:#373737}.status-text[data-v-82693097]{font-size:16px;font-weight:700}.caller-info[data-v-82693097]{font-size:14px;color:#666;margin-top:5px}.status-calling .status-text[data-v-82693097]{color:#721c24}.status-incoming .status-text[data-v-82693097]{color:#004085}.status-failed .status-text[data-v-82693097]{color:#721c24}.status-active .status-text[data-v-82693097]{color:#155724}.call-controls[data-v-82693097]{width:100%;display:flex;justify-content:center;gap:10px}.recording-controls[data-v-82693097]{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.recording-status[data-v-82693097]{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:10px;font-size:14px;color:#dc3545}.recording-indicator[data-v-82693097]{width:10px;height:10px;border-radius:50%;background-color:#dc3545;animation:blink-82693097 1s infinite}.answer-button[data-v-82693097]{padding:6px 10px;background-color:#28a745;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px}.answer-button[data-v-82693097]:hover{background-color:#218838}.reject-button[data-v-82693097],.hangup-button[data-v-82693097],.record-button[data-v-82693097],.pause-button[data-v-82693097],.resume-button[data-v-82693097],.stop-button[data-v-82693097]{padding:6px 10px;background-color:#dc3545;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px}.reject-button[data-v-82693097]:hover,.hangup-button[data-v-82693097]:hover{background-color:#c82333}.answer-button i[data-v-82693097],.reject-button i[data-v-82693097],.hangup-button i[data-v-82693097]{margin-right:8px}.record-button[data-v-82693097]{background-color:#17a2b8}.record-button[data-v-82693097]:hover{background-color:#138496}.pause-button[data-v-82693097],.resume-button[data-v-82693097]{background-color:#ffc107;color:#212529}.pause-button[data-v-82693097]:hover,.resume-button[data-v-82693097]:hover{background-color:#e0a800}.stop-button[data-v-82693097]{background-color:#6c757d}.stop-button[data-v-82693097]:hover{background-color:#5a6268}@keyframes pulse-82693097{0%{transform:scale(.95);box-shadow:0 0 #dc3545b3}70%{transform:scale(1);box-shadow:0 0 0 10px #dc354500}to{transform:scale(.95);box-shadow:0 0 #dc354500}}@keyframes blink-82693097{0%{opacity:1}50%{opacity:.4}to{opacity:1}}.intercom-button-container[data-v-c24f70a0]{position:relative}.intercom-button[data-v-c24f70a0]{padding:4px 16px;background-color:#4caf50;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px}.intercom-button[data-v-c24f70a0]:hover{background-color:#45a049}
1
+ @font-face{font-family:ves-font;src:url(data:font/woff2;base64,d09GMgABAAAAAAM8AAsAAAAABxwAAALwAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACDBgqBXIFYATYCJAMMCwgABCAFhGcHThtMBhEVlNVkfymgx07jURFKXW3uWKBxrEKLdusB9u/Zazls9oIrrGdTyFpkcH5+EA/U2utbuE1SAlJl1VQRoEdVRSTcj3Cdjq8FIoWyc5O39n688wlNcOt5PcK4KJMEvv2fro/GIVSE6ZS1wJ1m6q7kN/z50rC8O+MuAMAhpwfFi0fYPMUacDOVGeHifsZdpIHbYjC4QXY7faQJvi8oLDD3IlLjeZ//+8m/CK99ACjKBUY1Jj6w7wP6QOu0KMKd+YB8Cuq1vgYgIy4R0M4Uc8V5PwtWcAeGE4dEmW0OZPXhAO/eSuiILNN8s6CgKzMIF1TEc3HG+ejz4ac2AFGVgL3Pkl2tO9z3dRO10iuBSUDPi6iQMAGZsKnbswZOMhMk7Zo0wsqLLIizxutHsmGUPf/xIqEAu7YDGEOzka88nsDXXSGCBAqaMBcrKdcjUoTMl6TN7ZEatqDd7i1TK3MhNRYftPp+7ZbL/++xq33PV65c2Xe/dk37ZF/h6pWe65VrtOeqtlU3tratrFqoNHxn42SV/llxrDc3OvqrvJ3+ugLf8c6vZJtmxb0yf8Zt0GlfFbavGfZHBZqstvPKgTXnXu+BHkDd9GkgPYn7p39j+k3sNnfO/2hPAHxqXf8oUjfDjeZb8AT+q74BJGYjSspNsjdBQDJKueFG7bRDzQ5082a80R2uJWjWPUPUpD+SZsOozI1Dpb1pKJrNQTvjta5vr7sjsJAlYJSzBEEXDUSd3EbSxV0qc09R6eUrii7+o51Vwe7W3qgIpr3goDjD+AWeUiTXppHVM9qnH6QueUdZmcahKety/hcjyhRz1pdtVQlIUoAfeR56nyBLeuCk5aKau6qipreUUwpmLzgozjB+gacUKSBr8fvOaJ9+EJC6Z2Rlah2asgaoXy1CHXeyz/qyrSoBCckF+NHD0PsEuXnYAyctlxGp3FUOiVCtXN8IH7cL2hn7tWmDIIYE+FfiCbNw1MJzxF1eUsRiGaItnrkg9t4Y) format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAASoAAsAAAAABxwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAARAAAAGA9oEpdY21hcAAAAYgAAABWAAABhm2T0+RnbHlmAAAB4AAAAMYAAADcEq2sC2hlYWQAAAKoAAAALgAAADYrr/gzaGhlYQAAAtgAAAAcAAAAJAfeA4RobXR4AAAC9AAAAAwAAAAMDAAAAGxvY2EAAAMAAAAACAAAAAgALgBubWF4cAAAAwgAAAAfAAAAIAETADJuYW1lAAADKAAAAUAAAAJnEKM8sHBvc3QAAARoAAAAPQAAAE7bG9ZceJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGFhYJzAwMrAwNTJdIaBgaEfQjO+ZjBi5ACKMrAyM2AFAWmuKQwHnnc/72Vu+N/AwMB8hwFIMjCiKGICAINNDXp4nO2QwQ2AMAwDL2npAzEIDwbixUKoc3aM4qawBZYuVpy8DCxAEofIYBfG0KnUIk+skef4KXLD291q7/C5ZLqVcNco/Npi7u/mo63JaLbVCf4AZAMRrgAAeJw9TTuKAkEUrNfNvIbpYXR2ULMRbBzBZQ1W2AGDNfQE/cBANPAgXsJLjJcw9AIaewjT/Tw32CqqiqqkwMDP1d7sKywcPDooMQDKeRHsvBdIs/xXL1xF2hgpxniKsRVRN/FbaNoafMG0qsNfhYKeZm/mDWOgmcyo+Wg+6b0/UHKHcprUOi6pHjkdnLI+bj2l3Uzuj7tk3ZT8lnNeCTsq1ud1QY5lxflll1bZSyabjWhU6S6hZDE0nvch7NnbapHo9y97AyhcAAB4nGNgZGBgAGIPP12reH6brwzcLAwg8MQjShpB/7/KwsCsDeRyMDCBRAHgjwgAAAB4nGNgZGBgbvjfwBDDwgACQJKRARUwAwBHCQJsBAAAAAQAAAAEAAAAAAAAAAAuAG54nGNgZGBgYGZQY2BjAAEmIOYCQgaG/2A+AwAM2wFGAHichZE9bsJAEIWfwZAElChKpDRpVikoEsn8lEipUKCnoAez5ke211ovSNQ5TY6QE+QI6Whzikh52EMDRbza2W/evpkdyQDusIeH8rvnLtnDJbOSK7jAo3CV+pOwT34WrqGJnnCd+qtwAy94E26yY8YOnn/FrIV3YQ+3+BCu4AafwlXqX8I++Vu4hgf8CNep/wo3MPGuhZtoeeHA6qnTczXbqVVo0sik7niO9WITT+2pPNE2X5lUdYPOURrpVNtjm3y76DkXqciaRA15q+PYqMyatQ5dsHQu67fbkehBaBIMYKExhWOcQ2GGHeMKIQxSREV0Z/mY7gU2iFlp/3VP6LbIqR9yhS4CdM5cI7rSwnk6TY4tX+tRdXQrbsuahDSUWs1JYrLiDzzcramE1AMsi6oMfbS5ohN/UMyQ/AHYk29XeJxjYGKAAC4G7ICZkYmRmZGFgb8sPzM5taAoM69ENyczL1WoICM/L1U3IzEvXbe0QDctMyeHgQEACi0NIAAAAA==) format("woff"),url(data:font/ttf;base64,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) format("truetype")}.ves-font{font-family:ves-font!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-voiceprint-line:before{content:""}.icon-phone-hang-up-fill:before{content:""}.intercom-dialog[data-v-faeacb27]{position:fixed;bottom:20px;right:20px;background-color:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;z-index:1000;overflow:hidden}.intercom-dialog.static[data-v-faeacb27]{position:static;box-shadow:none!important}.slide-fade-enter-active[data-v-faeacb27]{transition:all .3s ease-out}.slide-fade-leave-active[data-v-faeacb27]{transition:all .3s ease-in}.slide-fade-enter-from[data-v-faeacb27],.slide-fade-leave-to[data-v-faeacb27]{transform:translate(20px);opacity:0}.dialog-header[data-v-faeacb27]{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background-color:#f5f5f5;border-bottom:1px solid #eee;cursor:move}.dialog-header h3[data-v-faeacb27]{margin:0 6px 0 0;font-size:16px;color:#333;white-space:nowrap}.close-button[data-v-faeacb27]{background:none;border:none;font-size:24px;cursor:pointer;color:#666;padding:0;line-height:1}.dialog-content[data-v-faeacb27]{padding:6px 10px;display:flex;flex-direction:column;align-items:center;gap:20px}.call-status[data-v-faeacb27]{text-align:center;width:100%}.status-icon[data-v-faeacb27]{width:50px;height:50px;line-height:50px;border-radius:50%;margin:0 auto 10px;background-position:center;background-repeat:no-repeat;background-size:30px}.status-icon i[data-v-faeacb27]{font-size:32px;color:#fff}.calling-icon[data-v-faeacb27]{background-color:#f8d7da;animation:pulse-faeacb27 1.5s infinite}.incoming-icon[data-v-faeacb27]{background-color:#cce5ff;animation:pulse-faeacb27 1.5s infinite}.failed-icon[data-v-faeacb27]{background-color:#f8d7da}.active-icon[data-v-faeacb27]{background-color:#373737}.status-text[data-v-faeacb27]{font-size:16px;font-weight:700}.caller-info[data-v-faeacb27]{font-size:14px;color:#666;margin-top:5px}.status-calling .status-text[data-v-faeacb27]{color:#721c24}.status-incoming .status-text[data-v-faeacb27]{color:#004085}.status-failed .status-text[data-v-faeacb27]{color:#721c24}.status-active .status-text[data-v-faeacb27]{color:#155724}.call-controls[data-v-faeacb27]{width:100%;display:flex;justify-content:center;gap:10px}.recording-controls[data-v-faeacb27]{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.recording-status[data-v-faeacb27]{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:10px;font-size:14px;color:#dc3545}.recording-indicator[data-v-faeacb27]{width:10px;height:10px;border-radius:50%;background-color:#dc3545;animation:blink-faeacb27 1s infinite}.answer-button[data-v-faeacb27]{padding:6px 10px;background-color:#28a745;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px}.answer-button[data-v-faeacb27]:hover{background-color:#218838}.reject-button[data-v-faeacb27],.hangup-button[data-v-faeacb27],.record-button[data-v-faeacb27],.pause-button[data-v-faeacb27],.resume-button[data-v-faeacb27],.stop-button[data-v-faeacb27]{padding:6px 10px;background-color:#dc3545;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px}.reject-button[data-v-faeacb27]:hover,.hangup-button[data-v-faeacb27]:hover{background-color:#c82333}.answer-button i[data-v-faeacb27],.reject-button i[data-v-faeacb27],.hangup-button i[data-v-faeacb27]{margin-right:8px}.record-button[data-v-faeacb27]{background-color:#17a2b8}.record-button[data-v-faeacb27]:hover{background-color:#138496}.pause-button[data-v-faeacb27],.resume-button[data-v-faeacb27]{background-color:#ffc107;color:#212529}.pause-button[data-v-faeacb27]:hover,.resume-button[data-v-faeacb27]:hover{background-color:#e0a800}.stop-button[data-v-faeacb27]{background-color:#6c757d}.stop-button[data-v-faeacb27]:hover{background-color:#5a6268}@keyframes pulse-faeacb27{0%{transform:scale(.95);box-shadow:0 0 #dc3545b3}70%{transform:scale(1);box-shadow:0 0 0 10px #dc354500}to{transform:scale(.95);box-shadow:0 0 #dc354500}}@keyframes blink-faeacb27{0%{opacity:1}50%{opacity:.4}to{opacity:1}}.intercom-button-container[data-v-40d9c139]{position:relative}.intercom-button[data-v-40d9c139]{padding:4px 16px;background-color:#4caf50;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px}.intercom-button[data-v-40d9c139]:hover{background-color:#45a049}
@@ -10360,7 +10360,7 @@ const Pi = { class: "dialog-content" }, xi = { class: "call-status" }, Ui = {
10360
10360
  disableRecording: { type: Boolean, default: !1 },
10361
10361
  autoSaveRecording: { type: Boolean, default: !1 },
10362
10362
  fileNamePrefix: { default: "sip-recording" },
10363
- static: { type: Boolean, default: !1 },
10363
+ isStatic: { type: Boolean, default: !1 },
10364
10364
  noHeader: { type: Boolean, default: !1 }
10365
10365
  },
10366
10366
  emits: ["close", "answer", "hangup", "recordingStart", "recordingPause", "recordingResume", "recordingStop"],
@@ -10430,12 +10430,12 @@ const Pi = { class: "dialog-content" }, xi = { class: "call-status" }, Ui = {
10430
10430
  return nl(() => {
10431
10431
  T(), V(), document.removeEventListener("mousemove", h), document.removeEventListener("mouseup", v);
10432
10432
  }), (A, S) => (Re(), Ql(Zl, {
10433
- name: A.static ? "" : "slide-fade"
10433
+ name: A.isStatic ? "" : "slide-fade"
10434
10434
  }, {
10435
10435
  default: ei(() => [
10436
10436
  A.visible ? (Re(), Ie("div", {
10437
10437
  key: 0,
10438
- class: ti(["intercom-dialog", { static: A.static }]),
10438
+ class: ti(["intercom-dialog", { static: A.isStatic }]),
10439
10439
  ref_key: "dialogRef",
10440
10440
  ref: w
10441
10441
  }, [
@@ -10548,7 +10548,7 @@ const Pi = { class: "dialog-content" }, xi = { class: "call-status" }, Ui = {
10548
10548
  for (const [i, z] of j)
10549
10549
  $[i] = z;
10550
10550
  return $;
10551
- }, dl = /* @__PURE__ */ cl(zi, [["__scopeId", "data-v-82693097"]]), Ki = { class: "intercom-button-container" }, $i = /* @__PURE__ */ sl({
10551
+ }, dl = /* @__PURE__ */ cl(zi, [["__scopeId", "data-v-faeacb27"]]), Ki = { class: "intercom-button-container" }, $i = /* @__PURE__ */ sl({
10552
10552
  __name: "IntercomButton",
10553
10553
  props: {
10554
10554
  callTarget: { default: "1110" },
@@ -10564,7 +10564,7 @@ const Pi = { class: "dialog-content" }, xi = { class: "call-status" }, Ui = {
10564
10564
  autoSaveRecording: { type: Boolean, default: !0 },
10565
10565
  fileNamePrefix: { default: "sip-recording" },
10566
10566
  mediaConstraints: { default: void 0 },
10567
- static: { type: Boolean, default: !1 },
10567
+ isStatic: { type: Boolean, default: !1 },
10568
10568
  noHeader: { type: Boolean, default: !1 }
10569
10569
  },
10570
10570
  emits: ["registered", "registerFailed", "connectionFailed", "callFailed", "callStarted", "callEnded", "incomingCall", "recordingStart", "recordingPause", "recordingResume", "recordingStop"],
@@ -10695,7 +10695,7 @@ const Pi = { class: "dialog-content" }, xi = { class: "call-status" }, Ui = {
10695
10695
  disableRecording: U.disableRecording,
10696
10696
  autoSaveRecording: U.autoSaveRecording,
10697
10697
  fileNamePrefix: U.fileNamePrefix,
10698
- static: U.static,
10698
+ isStatic: U.isStatic,
10699
10699
  noHeader: U.noHeader,
10700
10700
  onClose: y,
10701
10701
  onAnswer: p,
@@ -10704,10 +10704,10 @@ const Pi = { class: "dialog-content" }, xi = { class: "call-status" }, Ui = {
10704
10704
  onRecordingPause: I,
10705
10705
  onRecordingResume: W,
10706
10706
  onRecordingStop: K
10707
- }, null, 8, ["visible", "isInCall", "callStatus", "remoteStream", "localStream", "disableRecording", "autoSaveRecording", "fileNamePrefix", "static", "noHeader"])
10707
+ }, null, 8, ["visible", "isInCall", "callStatus", "remoteStream", "localStream", "disableRecording", "autoSaveRecording", "fileNamePrefix", "isStatic", "noHeader"])
10708
10708
  ]));
10709
10709
  }
10710
- }), Yi = /* @__PURE__ */ cl($i, [["__scopeId", "data-v-c24f70a0"]]), Ji = {
10710
+ }), Yi = /* @__PURE__ */ cl($i, [["__scopeId", "data-v-40d9c139"]]), Ji = {
10711
10711
  wsServer: "wss://suixing.cspid.cn:7443",
10712
10712
  sipUri: "sip:1009@suixing.cspid.cn:5080",
10713
10713
  password: "1234",
@@ -72,4 +72,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
72
72
  `),I+="CSeq: ".concat(a.cseq," ").concat(a.method,`\r
73
73
  `),I+=`\r
74
74
  `,_.send(I)}return Jt}var st={},dr;function bl(){if(dr)return st;dr=1;function j(f,a){var d;if(typeof Symbol>"u"||f[Symbol.iterator]==null){if(Array.isArray(f)||(d=B(f))||a){d&&(f=d);var _=0,W=function(){};return{s:W,n:function(){return _>=f.length?{done:!0}:{done:!1,value:f[_++]}},e:function(N){throw N},f:W}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
75
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var H=!0,k=!1,g;return{s:function(){d=f[Symbol.iterator]()},n:function(){var N=d.next();return H=N.done,N},e:function(N){k=!0,g=N},f:function(){try{!H&&d.return!=null&&d.return()}finally{if(k)throw g}}}}function B(f,a){if(f){if(typeof f=="string")return $(f,a);var d=Object.prototype.toString.call(f).slice(8,-1);if(d==="Object"&&f.constructor&&(d=f.constructor.name),d==="Map"||d==="Set")return Array.from(f);if(d==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(d))return $(f,a)}}function $(f,a){(a==null||a>f.length)&&(a=f.length);for(var d=0,_=new Array(a);d<a;d++)_[d]=f[d];return _}var i=Re(),z=Ce(),x=Ne(),t=Me(),R=or(),C=Ue();st.settings={authorization_user:null,password:null,realm:null,ha1:null,authorization_jwt:null,display_name:null,uri:null,contact_uri:null,instance_id:null,use_preloaded_route:!1,session_timers:!0,session_timers_refresh_method:z.UPDATE,session_timers_force_refresher:!1,no_answer_timeout:60,register:!0,register_expires:600,registrar_server:null,sockets:null,connection_recovery_max_interval:z.CONNECTION_RECOVERY_MAX_INTERVAL,connection_recovery_min_interval:z.CONNECTION_RECOVERY_MIN_INTERVAL,extra_headers:null,via_host:"".concat(i.createRandomToken(12),".invalid")};var s={mandatory:{sockets:function(a){var d=[];if(R.isSocket(a))d.push({socket:a});else if(Array.isArray(a)&&a.length){var _=j(a),W;try{for(_.s();!(W=_.n()).done;){var H=W.value;Object.prototype.hasOwnProperty.call(H,"socket")&&R.isSocket(H.socket)?d.push(H):R.isSocket(H)&&d.push({socket:H})}}catch(k){_.e(k)}finally{_.f()}}else return;return d},uri:function(a){/^sip:/i.test(a)||(a="".concat(z.SIP,":").concat(a));var d=t.parse(a);if(d)return d.user?d:void 0}},optional:{authorization_user:function(a){if(x.parse('"'.concat(a,'"'),"quoted_string")!==-1)return a},authorization_jwt:function(a){if(typeof a=="string")return a},user_agent:function(a){if(typeof a=="string")return a},connection_recovery_max_interval:function(a){if(i.isDecimal(a)){var d=Number(a);if(d>0)return d}},connection_recovery_min_interval:function(a){if(i.isDecimal(a)){var d=Number(a);if(d>0)return d}},contact_uri:function(a){if(typeof a=="string"){var d=x.parse(a,"SIP_URI");if(d!==-1)return d}},display_name:function(a){return a},instance_id:function(a){if(/^uuid:/i.test(a)&&(a=a.substr(5)),x.parse(a,"uuid")!==-1)return a},no_answer_timeout:function(a){if(i.isDecimal(a)){var d=Number(a);if(d>0)return d}},session_timers:function(a){if(typeof a=="boolean")return a},session_timers_refresh_method:function(a){if(typeof a=="string"&&(a=a.toUpperCase(),a===z.INVITE||a===z.UPDATE))return a},session_timers_force_refresher:function(a){if(typeof a=="boolean")return a},password:function(a){return String(a)},realm:function(a){return String(a)},ha1:function(a){return String(a)},register:function(a){if(typeof a=="boolean")return a},register_expires:function(a){if(i.isDecimal(a)){var d=Number(a);if(d>0)return d}},registrar_server:function(a){/^sip:/i.test(a)||(a="".concat(z.SIP,":").concat(a));var d=t.parse(a);if(d)return d.user?void 0:d},use_preloaded_route:function(a){if(typeof a=="boolean")return a},extra_headers:function(a){var d=[];if(Array.isArray(a)&&a.length){var _=j(a),W;try{for(_.s();!(W=_.n()).done;){var H=W.value;typeof H=="string"&&d.push(H)}}catch(k){_.e(k)}finally{_.f()}}else return;return d}}};return st.load=function(f,a){for(var d in s.mandatory)if(a.hasOwnProperty(d)){var _=a[d],W=s.mandatory[d](_);if(W!==void 0)f[d]=W;else throw new C.ConfigurationError(d,_)}else throw new C.ConfigurationError(d);for(var H in s.optional)if(a.hasOwnProperty(H)){var k=a[H];if(i.isEmpty(k))continue;var g=s.optional[H](k);if(g!==void 0)f[H]=g;else throw new C.ConfigurationError(H,k)}},st}var Xt,hr;function Al(){if(hr)return Xt;hr=1;function j(S){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?j=function(V){return typeof V}:j=function(V){return V&&typeof Symbol=="function"&&V.constructor===Symbol&&V!==Symbol.prototype?"symbol":typeof V},j(S)}function B(S,F){if(!(S instanceof F))throw new TypeError("Cannot call a class as a function")}function $(S,F){for(var V=0;V<F.length;V++){var P=F[V];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(S,P.key,P)}}function i(S,F,V){return F&&$(S.prototype,F),V&&$(S,V),S}function z(S,F){if(typeof F!="function"&&F!==null)throw new TypeError("Super expression must either be null or a function");S.prototype=Object.create(F&&F.prototype,{constructor:{value:S,writable:!0,configurable:!0}}),F&&x(S,F)}function x(S,F){return x=Object.setPrototypeOf||function(P,u){return P.__proto__=u,P},x(S,F)}function t(S){var F=s();return function(){var P=f(S),u;if(F){var m=f(this).constructor;u=Reflect.construct(P,arguments,m)}else u=P.apply(this,arguments);return R(this,u)}}function R(S,F){return F&&(j(F)==="object"||typeof F=="function")?F:C(S)}function C(S){if(S===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return S}function s(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function f(S){return f=Object.setPrototypeOf?Object.getPrototypeOf:function(V){return V.__proto__||Object.getPrototypeOf(V)},f(S)}var a=He().EventEmitter,d=Ae(),_=Ce(),W=fl(),H=gl(),k=yl(),g=Tl(),O=Ve(),N=Sl(),y=Re(),v=Ue(),T=Me(),w=Cl(),E=De(),I=El(),G=bl(),K=new d("UA"),D={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2};Xt=function(S){z(V,S);var F=t(V);i(V,null,[{key:"C",get:function(){return D}}]);function V(P){var u;if(B(this,V),K.debug("new() [configuration:%o]",P),u=F.call(this),u._cache={credentials:{}},u._configuration=Object.assign({},G.settings),u._dynConfiguration={},u._dialogs={},u._applicants={},u._sessions={},u._transport=null,u._contact=null,u._status=D.STATUS_INIT,u._error=null,u._transactions={nist:{},nict:{},ist:{},ict:{}},u._data={},u._closeTimer=null,P===void 0)throw new TypeError("Not enough arguments");try{u._loadConfig(P)}catch(m){throw u._status=D.STATUS_NOT_READY,u._error=D.CONFIGURATION_ERROR,m}return u._registrator=new W(C(u)),u}return i(V,[{key:"start",value:function(){K.debug("start()"),this._status===D.STATUS_INIT?this._transport.connect():this._status===D.STATUS_USER_CLOSED?(K.debug("restarting UA"),this._closeTimer!==null&&(clearTimeout(this._closeTimer),this._closeTimer=null,this._transport.disconnect()),this._status=D.STATUS_INIT,this._transport.connect()):this._status===D.STATUS_READY?K.debug("UA is in READY status, not restarted"):K.debug("ERROR: connection is down, Auto-Recovery system is trying to reconnect"),this._dynConfiguration.register=this._configuration.register}},{key:"register",value:function(){K.debug("register()"),this._dynConfiguration.register=!0,this._registrator.register()}},{key:"unregister",value:function(u){K.debug("unregister()"),this._dynConfiguration.register=!1,this._registrator.unregister(u)}},{key:"registrator",value:function(){return this._registrator}},{key:"isRegistered",value:function(){return this._registrator.registered}},{key:"isConnected",value:function(){return this._transport.isConnected()}},{key:"call",value:function(u,m){K.debug("call()");var M=new H(this);return M.connect(u,m),M}},{key:"sendMessage",value:function(u,m,M){K.debug("sendMessage()");var q=new k(this);return q.send(u,m,M),q}},{key:"sendOptions",value:function(u,m,M){K.debug("sendOptions()");var q=new g(this);return q.send(u,m,M),q}},{key:"terminateSessions",value:function(u){K.debug("terminateSessions()");for(var m in this._sessions)this._sessions[m].isEnded()||this._sessions[m].terminate(u)}},{key:"stop",value:function(){var u=this;if(K.debug("stop()"),this._dynConfiguration={},this._status===D.STATUS_USER_CLOSED){K.debug("UA already closed");return}this._registrator.close();var m=Object.keys(this._sessions).length;for(var M in this._sessions)if(Object.prototype.hasOwnProperty.call(this._sessions,M)){K.debug("closing session ".concat(M));try{this._sessions[M].terminate()}catch{}}for(var q in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,q))try{this._applicants[q].close()}catch{}this._status=D.STATUS_USER_CLOSED;var J=Object.keys(this._transactions.nict).length+Object.keys(this._transactions.nist).length+Object.keys(this._transactions.ict).length+Object.keys(this._transactions.ist).length;J===0&&m===0?this._transport.disconnect():this._closeTimer=setTimeout(function(){u._closeTimer=null,u._transport.disconnect()},2e3)}},{key:"normalizeTarget",value:function(u){return y.normalizeTarget(u,this._configuration.hostport_params)}},{key:"get",value:function(u){switch(u){case"authorization_user":return this._configuration.authorization_user;case"realm":return this._configuration.realm;case"ha1":return this._configuration.ha1;case"authorization_jwt":return this._configuration.authorization_jwt;default:K.warn('get() | cannot get "%s" parameter in runtime',u);return}}},{key:"set",value:function(u,m){switch(u){case"authorization_user":{this._configuration.authorization_user=String(m);break}case"password":{this._configuration.password=String(m);break}case"realm":{this._configuration.realm=String(m);break}case"ha1":{this._configuration.ha1=String(m),this._configuration.password=null;break}case"authorization_jwt":{this._configuration.authorization_jwt=String(m);break}case"display_name":{this._configuration.display_name=m;break}case"extra_headers":{this._configuration.extra_headers=m;break}default:return K.warn('set() | cannot set "%s" parameter in runtime',u),!1}return!0}},{key:"newTransaction",value:function(u){this._transactions[u.type][u.id]=u,this.emit("newTransaction",{transaction:u})}},{key:"destroyTransaction",value:function(u){delete this._transactions[u.type][u.id],this.emit("transactionDestroyed",{transaction:u})}},{key:"newDialog",value:function(u){this._dialogs[u.id]=u}},{key:"destroyDialog",value:function(u){delete this._dialogs[u.id]}},{key:"newMessage",value:function(u,m){this._applicants[u]=u,this.emit("newMessage",m)}},{key:"newOptions",value:function(u,m){this._applicants[u]=u,this.emit("newOptions",m)}},{key:"destroyMessage",value:function(u){delete this._applicants[u]}},{key:"newRTCSession",value:function(u,m){this._sessions[u.id]=u,this.emit("newRTCSession",m)}},{key:"destroyRTCSession",value:function(u){delete this._sessions[u.id]}},{key:"registered",value:function(u){this.emit("registered",u)}},{key:"unregistered",value:function(u){this.emit("unregistered",u)}},{key:"registrationFailed",value:function(u){this.emit("registrationFailed",u)}},{key:"receiveRequest",value:function(u){var m=u.method;if(u.ruri.user!==this._configuration.uri.user&&u.ruri.user!==this._contact.uri.user){K.debug("Request-URI does not point to us"),u.method!==_.ACK&&u.reply_sl(404);return}if(u.ruri.scheme===_.SIPS){u.reply_sl(416);return}if(!O.checkTransaction(this,u)){if(m===_.INVITE?new O.InviteServerTransaction(this,this._transport,u):m!==_.ACK&&m!==_.CANCEL&&new O.NonInviteServerTransaction(this,this._transport,u),m===_.OPTIONS){if(this.listeners("newOptions").length===0){u.reply(200);return}var M=new g(this);M.init_incoming(u)}else if(m===_.MESSAGE){if(this.listeners("newMessage").length===0){u.reply(405);return}var q=new k(this);q.init_incoming(u)}else if(m===_.INVITE&&!u.to_tag&&this.listeners("newRTCSession").length===0){u.reply(405);return}var J,Y;if(u.to_tag)J=this._findDialog(u.call_id,u.from_tag,u.to_tag),J?J.receiveRequest(u):m===_.NOTIFY?(Y=this._findSession(u),Y?Y.receiveRequest(u):(K.debug("received NOTIFY request for a non existent subscription"),u.reply(481,"Subscription does not exist"))):m!==_.ACK&&u.reply(481);else switch(m){case _.INVITE:if(window.RTCPeerConnection)if(u.hasHeader("replaces")){var te=u.replaces;J=this._findDialog(te.call_id,te.from_tag,te.to_tag),J?(Y=J.owner,Y.isEnded()?u.reply(603):Y.receiveRequest(u)):u.reply(481)}else Y=new H(this),Y.init_incoming(u);else K.warn("INVITE received but WebRTC is not supported"),u.reply(488);break;case _.BYE:u.reply(481);break;case _.CANCEL:Y=this._findSession(u),Y?Y.receiveRequest(u):K.debug("received CANCEL request for a non existent session");break;case _.ACK:break;case _.NOTIFY:this.emit("sipEvent",{event:u.event,request:u}),u.reply(200);break;default:u.reply(405);break}}}},{key:"_findSession",value:function(u){var m=u.call_id,M=u.from_tag,q=u.to_tag,J=m+M,Y=this._sessions[J],te=m+q,ee=this._sessions[te];return Y||ee||null}},{key:"_findDialog",value:function(u,m,M){var q=u+m+M,J=this._dialogs[q];return J||(q=u+M+m,J=this._dialogs[q],J||null)}},{key:"_loadConfig",value:function(u){try{G.load(this._configuration,u)}catch(te){throw te}this._configuration.display_name===0&&(this._configuration.display_name="0"),this._configuration.instance_id||(this._configuration.instance_id=y.newUUID()),this._configuration.jssip_id=y.createRandomToken(5);var m=this._configuration.uri.clone();m.user=null,this._configuration.hostport_params=m.toString().replace(/^sip:/i,"");try{this._transport=new N(this._configuration.sockets,{max_interval:this._configuration.connection_recovery_max_interval,min_interval:this._configuration.connection_recovery_min_interval}),this._transport.onconnecting=U.bind(this),this._transport.onconnect=h.bind(this),this._transport.ondisconnect=p.bind(this),this._transport.ondata=A.bind(this)}catch(te){throw K.warn(te),new v.ConfigurationError("sockets",this._configuration.sockets)}if(delete this._configuration.sockets,this._configuration.authorization_user||(this._configuration.authorization_user=this._configuration.uri.user),!this._configuration.registrar_server){var M=this._configuration.uri.clone();M.user=null,M.clearParams(),M.clearHeaders(),this._configuration.registrar_server=M}this._configuration.no_answer_timeout*=1e3,this._configuration.contact_uri?this._configuration.via_host=this._configuration.contact_uri.host:this._configuration.contact_uri=new T("sip",y.createRandomToken(8),this._configuration.via_host,null,{transport:"ws"}),this._contact={pub_gruu:null,temp_gruu:null,uri:this._configuration.contact_uri,toString:function(){var ee=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},se=ee.anonymous||null,le=ee.outbound||null,re="<";return se?re+=this.temp_gruu||"sip:anonymous@anonymous.invalid;transport=ws":re+=this.pub_gruu||this.uri.toString(),le&&(se?!this.temp_gruu:!this.pub_gruu)&&(re+=";ob"),re+=">",re}};var q=["authorization_user","password","realm","ha1","authorization_jwt","display_name","register","extra_headers"];for(var J in this._configuration)Object.prototype.hasOwnProperty.call(this._configuration,J)&&(q.indexOf(J)!==-1?Object.defineProperty(this._configuration,J,{writable:!0,configurable:!1}):Object.defineProperty(this._configuration,J,{writable:!1,configurable:!1}));K.debug("configuration parameters after validation:");for(var Y in this._configuration)if(Object.prototype.hasOwnProperty.call(G.settings,Y))switch(Y){case"uri":case"registrar_server":K.debug("- ".concat(Y,": ").concat(this._configuration[Y]));break;case"password":case"ha1":case"authorization_jwt":K.debug("- ".concat(Y,": NOT SHOWN"));break;default:K.debug("- ".concat(Y,": ").concat(JSON.stringify(this._configuration[Y])))}}},{key:"C",get:function(){return D}},{key:"status",get:function(){return this._status}},{key:"contact",get:function(){return this._contact}},{key:"configuration",get:function(){return this._configuration}},{key:"transport",get:function(){return this._transport}}]),V}(a);function U(S){this.emit("connecting",S)}function h(S){this._status!==D.STATUS_USER_CLOSED&&(this._status=D.STATUS_READY,this._error=null,this.emit("connected",S),this._dynConfiguration.register&&this._registrator.register())}function p(S){for(var F=["nict","ict","nist","ist"],V=0,P=F;V<P.length;V++){var u=P[V];for(var m in this._transactions[u])Object.prototype.hasOwnProperty.call(this._transactions[u],m)&&this._transactions[u][m].onTransportError()}this.emit("disconnected",S),this._registrator.onTransportClosed(),this._status!==D.STATUS_USER_CLOSED&&(this._status=D.STATUS_NOT_READY,this._error=D.NETWORK_ERROR)}function A(S){var F=S.transport,V=S.message;if(V=w.parseMessage(V,this),!!V&&!(this._status===D.STATUS_USER_CLOSED&&V instanceof E.IncomingRequest)&&I(V,this,F)){if(V instanceof E.IncomingRequest)V.transport=F,this.receiveRequest(V);else if(V instanceof E.IncomingResponse){var P;switch(V.method){case _.INVITE:P=this._transactions.ict[V.via_branch],P&&P.receiveResponse(V);break;case _.ACK:break;default:P=this._transactions.nict[V.via_branch],P&&P.receiveResponse(V);break}}}}return Xt}var Qt,_r;function Rl(){if(_r)return Qt;_r=1;function j(t,R){if(!(t instanceof R))throw new TypeError("Cannot call a class as a function")}function B(t,R){for(var C=0;C<R.length;C++){var s=R[C];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(t,s.key,s)}}function $(t,R,C){return R&&B(t.prototype,R),t}var i=Ae(),z=Ne(),x=new i("WebSocketInterface");return Qt=function(){function t(R){j(this,t),x.debug('new() [url:"%s"]',R),this._url=R,this._sip_uri=null,this._via_transport=null,this._ws=null;var C=z.parse(R,"absoluteURI");if(C===-1)throw x.warn("invalid WebSocket URI: ".concat(R)),new TypeError("Invalid argument: ".concat(R));if(C.scheme!=="wss"&&C.scheme!=="ws")throw x.warn("invalid WebSocket URI scheme: ".concat(C.scheme)),new TypeError("Invalid argument: ".concat(R));this._sip_uri="sip:".concat(C.host).concat(C.port?":".concat(C.port):"",";transport=ws"),this._via_transport=C.scheme.toUpperCase()}return $(t,[{key:"connect",value:function(){if(x.debug("connect()"),this.isConnected()){x.debug("WebSocket ".concat(this._url," is already connected"));return}else if(this.isConnecting()){x.debug("WebSocket ".concat(this._url," is connecting"));return}this._ws&&this.disconnect(),x.debug("connecting to WebSocket ".concat(this._url));try{this._ws=new WebSocket(this._url,"sip"),this._ws.binaryType="arraybuffer",this._ws.onopen=this._onOpen.bind(this),this._ws.onclose=this._onClose.bind(this),this._ws.onmessage=this._onMessage.bind(this),this._ws.onerror=this._onError.bind(this)}catch(C){this._onError(C)}}},{key:"disconnect",value:function(){x.debug("disconnect()"),this._ws&&(this._ws.onopen=function(){},this._ws.onclose=function(){},this._ws.onmessage=function(){},this._ws.onerror=function(){},this._ws.close(),this._ws=null)}},{key:"send",value:function(C){return x.debug("send()"),this.isConnected()?(this._ws.send(C),!0):(x.warn("unable to send message, WebSocket is not open"),!1)}},{key:"isConnected",value:function(){return this._ws&&this._ws.readyState===this._ws.OPEN}},{key:"isConnecting",value:function(){return this._ws&&this._ws.readyState===this._ws.CONNECTING}},{key:"_onOpen",value:function(){x.debug("WebSocket ".concat(this._url," connected")),this.onconnect()}},{key:"_onClose",value:function(C){var s=C.wasClean,f=C.code,a=C.reason;x.debug("WebSocket ".concat(this._url," closed")),s===!1&&x.debug("WebSocket abrupt disconnection"),this.ondisconnect(!s,f,a)}},{key:"_onMessage",value:function(C){var s=C.data;x.debug("received WebSocket message"),this.ondata(s)}},{key:"_onError",value:function(C){x.warn("WebSocket ".concat(this._url," error: "),C)}},{key:"via_transport",get:function(){return this._via_transport},set:function(C){this._via_transport=C.toUpperCase()}},{key:"sip_uri",get:function(){return this._sip_uri}},{key:"url",get:function(){return this._url}}]),t}(),Qt}var Zt,pr;function wl(){if(pr)return Zt;pr=1;var j=In,B=Ce(),$=Ue(),i=Re(),z=Al(),x=Me(),t=Ct(),R=Ne(),C=Rl(),s=wt()("JsSIP");return s("version %s",j.version),Zt={C:B,Exceptions:$,Utils:i,UA:z,URI:x,NameAddrHeader:t,WebSocketInterface:C,Grammar:R,debug:wt(),get name(){return j.title},get version(){return j.version}},Zt}var Il=wl();const en=ll(Il),Ol={wsServer:"",sipUri:"",password:"",displayName:"",userAgent:"",autoRegister:!1,autoAnswer:!1,mediaConstraints:{audio:!0,video:!1}};function Nl(j={}){return vr(j)}function vr(j={},B){const $=X.ref("disconnected"),i=X.ref(!1),z=X.ref(!1),x=X.ref(""),t=X.ref(null),R=X.ref(null),C=X.ref(null);let s=null,f=null;const a={...Ol,...rn(),...j},d=async()=>{try{$.value="connecting",en.debug.enable("JsSIP:*");const T=new en.WebSocketInterface(a.wsServer);return s=new en.UA({uri:a.sipUri,password:a.password,display_name:a.displayName,sockets:[T],register:a.autoRegister,session_timers:!0}),_(),s.start(),$.value="connected",!0}catch(T){return C.value=T instanceof Error?T:new Error("Unknown error"),$.value="error",console.error("SIP initialization failed:",T),!1}},_=()=>{s&&(s.on("registered",()=>{i.value=!0,$.value="registered",B("registered")}),s.on("unregistered",()=>{i.value=!1,$.value="connected"}),s.on("newRTCSession",T=>{f=T.session,z.value=!0,f.direction==="incoming"?(x.value="incoming",a.autoAnswer&&O()):x.value="outgoing",W(f)}),s.on("disconnected",()=>{$.value="disconnected",i.value=!1}),s.on("connected",()=>{$.value="connected",B("connected")}))},W=T=>{T.on("accepted",()=>{if(x.value="active",T.connection){const E=T.connection.getSenders();for(const I of E)if(I.track&&I.track.kind==="audio"){const G=new MediaStream([I.track]);R.value=G;break}}}),T.on("ended",()=>{y()}),T.on("failed",()=>{x.value="failed",setTimeout(y,2e3)}),T.on("addstream",E=>{E.stream&&(t.value=E.stream)}),T.connection&&(T.connection.ontrack=E=>{t.value||(t.value=new MediaStream),E.streams[0].getTracks().forEach(I=>{var G;(G=t.value)==null||G.addTrack(I)})});const w=()=>{if(T.connection){const E=T.connection.getSenders();for(const I of E)if(I.track&&I.track.kind==="audio"){const G=new MediaStream([I.track]);R.value=G;break}}};T.connection&&T.connection.addEventListener("connectionstatechange",()=>{var E;((E=T.connection)==null?void 0:E.connectionState)==="connected"&&w()}),w()},H=async()=>{try{if(!s)throw new Error("UserAgent not initialized");return $.value="registering",s.register(),!0}catch(T){return C.value=T instanceof Error?T:new Error("Registration failed"),$.value="error",console.error("Registration failed:",T),!1}},k=async()=>{try{if(!s)throw new Error("UserAgent not initialized");return s.unregister(),!0}catch(T){return C.value=T instanceof Error?T:new Error("Unregistration failed"),console.error("Unregistration failed:",T),!1}},g=async T=>{try{if(!s)throw new Error("UserAgent not initialized");const w=T.startsWith("sip:")?T:`sip:${T}`,E={mediaConstraints:a.mediaConstraints,pcConfig:{iceServers:[{urls:["stun:stun.l.google.com:19302"]}]},sessionTimersExpires:500};return s.call(w,E),!0}catch(w){return C.value=w instanceof Error?w:new Error("Call failed"),console.error("Call failed:",w),!1}},O=async()=>{try{if(!f)throw new Error("No active session");const T={mediaConstraints:a.mediaConstraints};return f.answer(T),!0}catch(T){return C.value=T instanceof Error?T:new Error("Answer failed"),console.error("Answer failed:",T),!1}},N=async()=>{try{if(!f)throw new Error("No active session");return f.terminate(),y(),!0}catch(T){return C.value=T instanceof Error?T:new Error("Hangup failed"),console.error("Hangup failed:",T),!1}},y=()=>{f&&(f=null),z.value=!1,x.value="",t.value=null,R.value=null},v=async()=>{z.value&&await N(),i.value&&await k(),s&&(s.stop(),s=null),$.value="disconnected"};return X.onUnmounted(()=>{v()}),{status:$,isRegistered:i,isInCall:z,callStatus:x,remoteStream:t,localStream:R,error:C,init:d,register:H,unregister:k,call:g,answer:O,hangup:N,destroy:v}}const kl={mimeType:"audio/webm",audioBitsPerSecond:128e3,autoSave:!1,fileNamePrefix:"recording"};function mr(j={}){const B={...kl,...j},$=X.ref("inactive"),i=X.ref(null),z=X.ref([]),x=X.ref(null),t=X.ref(null),R=X.ref(null),C=X.ref(0),s=X.ref(null),f=X.ref(null),a=async T=>{try{if($.value==="recording")return!0;z.value=[],x.value=null,t.value=null,R.value=null;const w={mimeType:B.mimeType,audioBitsPerSecond:B.audioBitsPerSecond};return B.mimeType&&!MediaRecorder.isTypeSupported(B.mimeType)&&(console.warn(`浏览器不支持${B.mimeType}格式,将使用默认格式`),delete w.mimeType),i.value=new MediaRecorder(T,w),i.value.ondataavailable=E=>{E.data.size>0&&z.value.push(E.data)},i.value.onstop=()=>{var I;const E=((I=i.value)==null?void 0:I.mimeType)||"audio/webm";x.value=new Blob(z.value,{type:E}),t.value=URL.createObjectURL(x.value),B.autoSave&&x.value&&H(),N(),$.value="inactive",i.value=null,z.value=[]},i.value.start(1e3),$.value="recording",k(),!0}catch(w){return R.value=w instanceof Error?w:new Error("录音失败"),console.error("录音失败:",w),!1}},d=()=>{try{return i.value&&$.value==="recording"?(i.value.pause(),$.value="paused",g(),!0):!1}catch(T){return R.value=T instanceof Error?T:new Error("暂停录音失败"),console.error("暂停录音失败:",T),!1}},_=()=>{try{return i.value&&$.value==="paused"?(i.value.resume(),$.value="recording",O(),!0):!1}catch(T){return R.value=T instanceof Error?T:new Error("恢复录音失败"),console.error("恢复录音失败:",T),!1}},W=()=>{try{return i.value&&($.value==="recording"||$.value==="paused")?(i.value.stop(),!0):!1}catch(T){return R.value=T instanceof Error?T:new Error("停止录音失败"),console.error("停止录音失败:",T),!1}},H=T=>{if(!x.value)return;const w=new Date().toISOString().replace(/[:.]/g,"-"),E=T||`${B.fileNamePrefix}-${w}.webm`,I=document.createElement("a");I.href=t.value,I.download=E,I.click()},k=()=>{f.value=Date.now(),C.value=0,s.value=window.setInterval(()=>{f.value&&(C.value=Math.floor((Date.now()-f.value)/1e3))},1e3)},g=()=>{s.value&&(clearInterval(s.value),s.value=null)},O=()=>{f.value&&(f.value=Date.now()-C.value*1e3,s.value=window.setInterval(()=>{C.value=Math.floor((Date.now()-f.value)/1e3)},1e3))},N=()=>{s.value&&(clearInterval(s.value),s.value=null),f.value=null},y=X.computed(()=>{const T=Math.floor(C.value/60),w=C.value%60;return`${T.toString().padStart(2,"0")}:${w.toString().padStart(2,"0")}`});return{status:$,audioBlob:x,audioUrl:t,duration:C,error:R,start:a,pause:d,resume:_,stop:W,saveToFile:H,formattedDuration:y,destroy:()=>{W(),N(),t.value&&(URL.revokeObjectURL(t.value),t.value=null),z.value=[],x.value=null,i.value=null}}}const Dl={class:"dialog-content"},Pl={class:"call-status"},xl={key:0,class:"status-incoming"},Ul={class:"caller-info"},Ml={key:1,class:"status-calling"},Hl={key:2,class:"status-failed"},Ll={key:3,class:"status-active"},Fl={class:"status-icon active-icon"},ql={class:"status-text"},Bl={key:0,class:"recording-status"},jl={class:"call-controls"},Vl={key:0,class:"recording-controls"},Gl=[".srcObject"],Wl=X.defineComponent({__name:"IntercomDialog",props:{visible:{type:Boolean,default:!1},isInCall:{type:Boolean,default:!1},callStatus:{default:""},remoteStream:{default:null},localStream:{default:null},disableRecording:{type:Boolean,default:!1},autoSaveRecording:{type:Boolean,default:!1},fileNamePrefix:{default:"sip-recording"},static:{type:Boolean,default:!1},noHeader:{type:Boolean,default:!1}},emits:["close","answer","hangup","recordingStart","recordingPause","recordingResume","recordingStop"],setup(j,{emit:B}){const $=j,i=B,z=X.ref(null),x=X.ref(0),t=X.ref(null),R=X.ref("未知来电"),{status:C,start:s,pause:f,resume:a,stop:d,formattedDuration:_,destroy:W}=mr({autoSave:$.autoSaveRecording,fileNamePrefix:$.fileNamePrefix}),H=X.computed(()=>{const A=Math.floor(x.value/60),S=x.value%60;return`${A.toString().padStart(2,"0")}:${S.toString().padStart(2,"0")}`}),k=()=>{i("close")},g=()=>{i("answer")},O=()=>{C.value!=="inactive"&&y(),i("hangup")},N=()=>{$.localStream&&(s($.localStream),i("recordingStart"))},y=()=>{d(),i("recordingStop"),C.value="inactive"},v=()=>{z.value=Date.now(),x.value=0,t.value=window.setInterval(()=>{z.value&&(x.value=Math.floor((Date.now()-z.value)/1e3))},1e3)},T=()=>{t.value&&(clearInterval(t.value),t.value=null),z.value=null,x.value=0};X.watch(()=>$.visible,A=>{A&&w.value&&(w.value.style.right="20px",w.value.style.bottom="20px")}),X.watch(()=>$.callStatus,A=>{A==="active"?v():A===""&&T()});const w=X.ref(null);let E=!1,I=0,G=0,K=0,D=0;const U=A=>{if(!w.value||A.target.closest(".close-button"))return;E=!0;const S=window.getComputedStyle(w.value);K=parseInt(S.right)||0,D=parseInt(S.bottom)||0,I=A.clientX,G=A.clientY,document.addEventListener("mousemove",h),document.addEventListener("mouseup",p)},h=A=>{if(!E||!w.value)return;const S=I-A.clientX,F=G-A.clientY,V=window.innerWidth,P=window.innerHeight,u=w.value.offsetWidth,m=w.value.offsetHeight,M=20,q=Math.min(Math.max(K+S,-u+M),V-M),J=Math.min(Math.max(D+F,-m+M),P-M);w.value.style.right=`${q}px`,w.value.style.bottom=`${J}px`},p=()=>{E=!1,document.removeEventListener("mousemove",h),document.removeEventListener("mouseup",p)};return X.onUnmounted(()=>{T(),W(),document.removeEventListener("mousemove",h),document.removeEventListener("mouseup",p)}),(A,S)=>(X.openBlock(),X.createBlock(X.Transition,{name:A.static?"":"slide-fade"},{default:X.withCtx(()=>[A.visible?(X.openBlock(),X.createElementBlock("div",{key:0,class:X.normalizeClass(["intercom-dialog",{static:A.static}]),ref_key:"dialogRef",ref:w},[A.noHeader?X.createCommentVNode("",!0):(X.openBlock(),X.createElementBlock("div",{key:0,class:"dialog-header",onMousedown:U},[S[3]||(S[3]=X.createElementVNode("h3",null,"语音对讲",-1)),!A.isInCall||A.callStatus==="failed"||A.callStatus==="outgoing"?(X.openBlock(),X.createElementBlock("button",{key:0,class:"close-button",onClick:k}," × ")):X.createCommentVNode("",!0)],32)),X.createElementVNode("div",Dl,[X.createElementVNode("div",Pl,[A.callStatus==="incoming"?(X.openBlock(),X.createElementBlock("div",xl,[S[4]||(S[4]=X.createElementVNode("div",{class:"status-icon incoming-icon"},null,-1)),S[5]||(S[5]=X.createElementVNode("div",{class:"status-text"},"来电呼叫",-1)),X.createElementVNode("div",Ul,X.toDisplayString(R.value),1)])):X.createCommentVNode("",!0),A.callStatus==="outgoing"?(X.openBlock(),X.createElementBlock("div",Ml,S[6]||(S[6]=[X.createElementVNode("div",{class:"status-icon calling-icon"},null,-1),X.createElementVNode("div",{class:"status-text"},"正在呼叫...",-1)]))):X.createCommentVNode("",!0),A.callStatus==="failed"?(X.openBlock(),X.createElementBlock("div",Hl,S[7]||(S[7]=[X.createElementVNode("div",{class:"status-icon failed-icon"},null,-1),X.createElementVNode("div",{class:"status-text"},"呼叫失败",-1)]))):X.createCommentVNode("",!0),A.callStatus==="active"?(X.openBlock(),X.createElementBlock("div",Ll,[X.createElementVNode("div",Fl,[X.renderSlot(A.$slots,"default",{},()=>[S[8]||(S[8]=X.createElementVNode("i",{class:"ves-font icon-voiceprint-line"},null,-1))],!0)]),X.createElementVNode("div",ql,X.toDisplayString(H.value),1),X.unref(C)!=="inactive"&&!A.disableRecording?(X.openBlock(),X.createElementBlock("div",Bl,[S[9]||(S[9]=X.createElementVNode("span",{class:"recording-indicator"},null,-1)),X.createElementVNode("span",null,X.toDisplayString(X.unref(C)==="recording"?"录音中":"录音已暂停"),1),X.createElementVNode("span",null,X.toDisplayString(X.unref(_)),1)])):X.createCommentVNode("",!0)])):X.createCommentVNode("",!0)]),X.createElementVNode("div",jl,[A.callStatus==="incoming"?(X.openBlock(),X.createElementBlock(X.Fragment,{key:0},[X.createElementVNode("button",{class:"answer-button",onClick:g},S[10]||(S[10]=[X.createElementVNode("i",{class:"ves-font icon-phone-hang-up-fill"},null,-1),X.createTextVNode("接听 ")])),X.createElementVNode("button",{class:"reject-button",onClick:O},S[11]||(S[11]=[X.createElementVNode("i",{class:"ves-font icon-phone-hang-up-fill"},null,-1),X.createTextVNode("拒绝 ")]))],64)):X.createCommentVNode("",!0),A.callStatus==="active"?(X.openBlock(),X.createElementBlock(X.Fragment,{key:1},[A.disableRecording?X.createCommentVNode("",!0):(X.openBlock(),X.createElementBlock("div",Vl,[X.unref(C)==="inactive"?(X.openBlock(),X.createElementBlock("button",{key:0,class:"record-button",onClick:N}," 开始录音 ")):X.createCommentVNode("",!0),X.unref(C)==="recording"?(X.openBlock(),X.createElementBlock("button",{key:1,class:"pause-button",onClick:S[0]||(S[0]=(...F)=>X.unref(f)&&X.unref(f)(...F))}," 暂停录音 ")):X.createCommentVNode("",!0),X.unref(C)==="paused"?(X.openBlock(),X.createElementBlock("button",{key:2,class:"resume-button",onClick:S[1]||(S[1]=(...F)=>X.unref(a)&&X.unref(a)(...F))}," 继续录音 ")):X.createCommentVNode("",!0),X.unref(C)!=="inactive"?(X.openBlock(),X.createElementBlock("button",{key:3,class:"stop-button",onClick:S[2]||(S[2]=(...F)=>X.unref(d)&&X.unref(d)(...F))}," 停止录音 ")):X.createCommentVNode("",!0)])),X.createElementVNode("button",{class:"hangup-button",onClick:O},S[12]||(S[12]=[X.createElementVNode("i",{class:"ves-font icon-phone-hang-up-fill"},null,-1),X.createTextVNode("挂断 ")]))],64)):X.createCommentVNode("",!0)])]),A.remoteStream?(X.openBlock(),X.createElementBlock("audio",{key:1,".srcObject":A.remoteStream,autoplay:""},null,40,Gl)):X.createCommentVNode("",!0)],2)):X.createCommentVNode("",!0)]),_:3},8,["name"]))}}),gr=(j,B)=>{const $=j.__vccOpts||j;for(const[i,z]of B)$[i]=z;return $},tn=gr(Wl,[["__scopeId","data-v-82693097"]]),zl={class:"intercom-button-container"},yr=gr(X.defineComponent({__name:"IntercomButton",props:{callTarget:{default:"1110"},wsServer:{default:void 0},sipUri:{default:void 0},password:{default:void 0},displayName:{default:void 0},userAgent:{default:void 0},autoRegister:{type:Boolean,default:void 0},sipConfig:{default:()=>({})},autoAnswer:{type:Boolean,default:!1},disableRecording:{type:Boolean,default:!0},autoSaveRecording:{type:Boolean,default:!0},fileNamePrefix:{default:"sip-recording"},mediaConstraints:{default:void 0},static:{type:Boolean,default:!1},noHeader:{type:Boolean,default:!1}},emits:["registered","registerFailed","connectionFailed","callFailed","callStarted","callEnded","incomingCall","recordingStart","recordingPause","recordingResume","recordingStop"],setup(j,{expose:B,emit:$}){const i=j,z=$,x=X.ref(!1),{status:t,isRegistered:R,isInCall:C,callStatus:s,remoteStream:f,localStream:a,error:d,init:_,register:W,call:H,answer:k,hangup:g,destroy:O}=vr({...rn(),...i.wsServer?{wsServer:i.wsServer}:{},...i.sipUri?{sipUri:i.sipUri}:{},...i.password?{password:i.password}:{},...i.displayName?{displayName:i.displayName}:{},...i.userAgent?{userAgent:i.userAgent}:{},...i.autoRegister!==void 0?{autoRegister:i.autoRegister}:{},...i.mediaConstraints?{mediaConstraints:i.mediaConstraints}:{},...i.sipConfig,autoAnswer:i.autoAnswer},z),N=async()=>{if(t.value==="disconnected")try{await _(),console.error("init-showIntercomDialog",i.callTarget)}catch(U){console.error("11-error",i.callTarget),z("connectionFailed",U instanceof Error?U:new Error(String(U)));return}if(!R.value&&t.value==="connected")try{await W()}catch(U){z("registerFailed",U instanceof Error?U:new Error(String(U)));return}if(R.value){if(!C.value){x.value=!0;try{await H(i.callTarget)}catch(U){z("callFailed",U instanceof Error?U:new Error(String(U)))}}}else{z("connectionFailed",new Error("SIP客户端未连接"));return}},y=async()=>{C.value&&await T(),x.value=!1},v=async()=>{try{await k(),z("callStarted")}catch(U){z("callFailed",U instanceof Error?U:new Error(String(U)))}},T=async()=>{try{await g(),z("callEnded")}catch(U){console.error("挂断失败:",U)}s.value==="failed"&&setTimeout(()=>{x.value=!1},1e3)},w=U=>{x.value=!0,z("incomingCall",U)},E=()=>{z("recordingStart")},I=()=>{z("recordingPause")},G=()=>{z("recordingResume")},K=()=>{z("recordingStop")};return(async()=>{try{await _(),t.value==="connected"&&await W()}catch(U){t.value==="disconnected"?z("connectionFailed",U instanceof Error?U:new Error(String(U))):z("registerFailed",U instanceof Error?U:new Error(String(U)))}})(),X.watch(()=>s.value,U=>{U==="active"?z("callStarted"):U==="failed"?(setTimeout(()=>{x.value=!1},1e3),z("callFailed",d.value||new Error("呼叫失败"))):U===""?(y(),z("callEnded")):U==="incoming"&&w("未知来电")}),X.onBeforeUnmount(()=>{O(),window.removeEventListener("beforeunload",O)}),window.addEventListener("beforeunload",O),B({showIntercomDialog:N,closeDialog:y}),(U,h)=>(X.openBlock(),X.createElementBlock("div",zl,[X.createElementVNode("button",{class:"intercom-button",onClick:N},[X.renderSlot(U.$slots,"default",{},()=>[h[0]||(h[0]=X.createTextVNode("对讲"))],!0)]),X.createVNode(tn,{visible:x.value,isInCall:X.unref(C),callStatus:X.unref(s),remoteStream:X.unref(f),localStream:X.unref(a),disableRecording:U.disableRecording,autoSaveRecording:U.autoSaveRecording,fileNamePrefix:U.fileNamePrefix,static:U.static,noHeader:U.noHeader,onClose:y,onAnswer:v,onHangup:T,onRecordingStart:E,onRecordingPause:I,onRecordingResume:G,onRecordingStop:K},null,8,["visible","isInCall","callStatus","remoteStream","localStream","disableRecording","autoSaveRecording","fileNamePrefix","static","noHeader"])]))}}),[["__scopeId","data-v-c24f70a0"]]);let nn={...{wsServer:"wss://suixing.cspid.cn:7443",sipUri:"sip:1009@suixing.cspid.cn:5080",password:"1234",displayName:"Vue SIP Client",userAgent:"Vue Easy SIP",autoRegister:!1,autoAnswer:!1,mediaConstraints:{audio:!0,video:!1}}};const Tr=j=>{nn={...nn,...j}},rn=()=>({...nn}),Kl={install:(j,B)=>{B&&Tr(B),j.component("IntercomButton",yr),j.component("IntercomDialog",tn)}};we.IntercomButton=yr,we.IntercomDialog=tn,we.createSipClient=Nl,we.default=Kl,we.getSipConfig=rn,we.setSipConfig=Tr,we.useRecorder=mr,Object.defineProperties(we,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
75
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var H=!0,k=!1,g;return{s:function(){d=f[Symbol.iterator]()},n:function(){var N=d.next();return H=N.done,N},e:function(N){k=!0,g=N},f:function(){try{!H&&d.return!=null&&d.return()}finally{if(k)throw g}}}}function B(f,a){if(f){if(typeof f=="string")return $(f,a);var d=Object.prototype.toString.call(f).slice(8,-1);if(d==="Object"&&f.constructor&&(d=f.constructor.name),d==="Map"||d==="Set")return Array.from(f);if(d==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(d))return $(f,a)}}function $(f,a){(a==null||a>f.length)&&(a=f.length);for(var d=0,_=new Array(a);d<a;d++)_[d]=f[d];return _}var i=Re(),z=Ce(),x=Ne(),t=Me(),R=or(),C=Ue();st.settings={authorization_user:null,password:null,realm:null,ha1:null,authorization_jwt:null,display_name:null,uri:null,contact_uri:null,instance_id:null,use_preloaded_route:!1,session_timers:!0,session_timers_refresh_method:z.UPDATE,session_timers_force_refresher:!1,no_answer_timeout:60,register:!0,register_expires:600,registrar_server:null,sockets:null,connection_recovery_max_interval:z.CONNECTION_RECOVERY_MAX_INTERVAL,connection_recovery_min_interval:z.CONNECTION_RECOVERY_MIN_INTERVAL,extra_headers:null,via_host:"".concat(i.createRandomToken(12),".invalid")};var s={mandatory:{sockets:function(a){var d=[];if(R.isSocket(a))d.push({socket:a});else if(Array.isArray(a)&&a.length){var _=j(a),W;try{for(_.s();!(W=_.n()).done;){var H=W.value;Object.prototype.hasOwnProperty.call(H,"socket")&&R.isSocket(H.socket)?d.push(H):R.isSocket(H)&&d.push({socket:H})}}catch(k){_.e(k)}finally{_.f()}}else return;return d},uri:function(a){/^sip:/i.test(a)||(a="".concat(z.SIP,":").concat(a));var d=t.parse(a);if(d)return d.user?d:void 0}},optional:{authorization_user:function(a){if(x.parse('"'.concat(a,'"'),"quoted_string")!==-1)return a},authorization_jwt:function(a){if(typeof a=="string")return a},user_agent:function(a){if(typeof a=="string")return a},connection_recovery_max_interval:function(a){if(i.isDecimal(a)){var d=Number(a);if(d>0)return d}},connection_recovery_min_interval:function(a){if(i.isDecimal(a)){var d=Number(a);if(d>0)return d}},contact_uri:function(a){if(typeof a=="string"){var d=x.parse(a,"SIP_URI");if(d!==-1)return d}},display_name:function(a){return a},instance_id:function(a){if(/^uuid:/i.test(a)&&(a=a.substr(5)),x.parse(a,"uuid")!==-1)return a},no_answer_timeout:function(a){if(i.isDecimal(a)){var d=Number(a);if(d>0)return d}},session_timers:function(a){if(typeof a=="boolean")return a},session_timers_refresh_method:function(a){if(typeof a=="string"&&(a=a.toUpperCase(),a===z.INVITE||a===z.UPDATE))return a},session_timers_force_refresher:function(a){if(typeof a=="boolean")return a},password:function(a){return String(a)},realm:function(a){return String(a)},ha1:function(a){return String(a)},register:function(a){if(typeof a=="boolean")return a},register_expires:function(a){if(i.isDecimal(a)){var d=Number(a);if(d>0)return d}},registrar_server:function(a){/^sip:/i.test(a)||(a="".concat(z.SIP,":").concat(a));var d=t.parse(a);if(d)return d.user?void 0:d},use_preloaded_route:function(a){if(typeof a=="boolean")return a},extra_headers:function(a){var d=[];if(Array.isArray(a)&&a.length){var _=j(a),W;try{for(_.s();!(W=_.n()).done;){var H=W.value;typeof H=="string"&&d.push(H)}}catch(k){_.e(k)}finally{_.f()}}else return;return d}}};return st.load=function(f,a){for(var d in s.mandatory)if(a.hasOwnProperty(d)){var _=a[d],W=s.mandatory[d](_);if(W!==void 0)f[d]=W;else throw new C.ConfigurationError(d,_)}else throw new C.ConfigurationError(d);for(var H in s.optional)if(a.hasOwnProperty(H)){var k=a[H];if(i.isEmpty(k))continue;var g=s.optional[H](k);if(g!==void 0)f[H]=g;else throw new C.ConfigurationError(H,k)}},st}var Xt,hr;function Al(){if(hr)return Xt;hr=1;function j(S){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?j=function(V){return typeof V}:j=function(V){return V&&typeof Symbol=="function"&&V.constructor===Symbol&&V!==Symbol.prototype?"symbol":typeof V},j(S)}function B(S,F){if(!(S instanceof F))throw new TypeError("Cannot call a class as a function")}function $(S,F){for(var V=0;V<F.length;V++){var P=F[V];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(S,P.key,P)}}function i(S,F,V){return F&&$(S.prototype,F),V&&$(S,V),S}function z(S,F){if(typeof F!="function"&&F!==null)throw new TypeError("Super expression must either be null or a function");S.prototype=Object.create(F&&F.prototype,{constructor:{value:S,writable:!0,configurable:!0}}),F&&x(S,F)}function x(S,F){return x=Object.setPrototypeOf||function(P,u){return P.__proto__=u,P},x(S,F)}function t(S){var F=s();return function(){var P=f(S),u;if(F){var m=f(this).constructor;u=Reflect.construct(P,arguments,m)}else u=P.apply(this,arguments);return R(this,u)}}function R(S,F){return F&&(j(F)==="object"||typeof F=="function")?F:C(S)}function C(S){if(S===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return S}function s(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function f(S){return f=Object.setPrototypeOf?Object.getPrototypeOf:function(V){return V.__proto__||Object.getPrototypeOf(V)},f(S)}var a=He().EventEmitter,d=Ae(),_=Ce(),W=fl(),H=gl(),k=yl(),g=Tl(),O=Ve(),N=Sl(),y=Re(),v=Ue(),T=Me(),w=Cl(),E=De(),I=El(),G=bl(),K=new d("UA"),D={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2};Xt=function(S){z(V,S);var F=t(V);i(V,null,[{key:"C",get:function(){return D}}]);function V(P){var u;if(B(this,V),K.debug("new() [configuration:%o]",P),u=F.call(this),u._cache={credentials:{}},u._configuration=Object.assign({},G.settings),u._dynConfiguration={},u._dialogs={},u._applicants={},u._sessions={},u._transport=null,u._contact=null,u._status=D.STATUS_INIT,u._error=null,u._transactions={nist:{},nict:{},ist:{},ict:{}},u._data={},u._closeTimer=null,P===void 0)throw new TypeError("Not enough arguments");try{u._loadConfig(P)}catch(m){throw u._status=D.STATUS_NOT_READY,u._error=D.CONFIGURATION_ERROR,m}return u._registrator=new W(C(u)),u}return i(V,[{key:"start",value:function(){K.debug("start()"),this._status===D.STATUS_INIT?this._transport.connect():this._status===D.STATUS_USER_CLOSED?(K.debug("restarting UA"),this._closeTimer!==null&&(clearTimeout(this._closeTimer),this._closeTimer=null,this._transport.disconnect()),this._status=D.STATUS_INIT,this._transport.connect()):this._status===D.STATUS_READY?K.debug("UA is in READY status, not restarted"):K.debug("ERROR: connection is down, Auto-Recovery system is trying to reconnect"),this._dynConfiguration.register=this._configuration.register}},{key:"register",value:function(){K.debug("register()"),this._dynConfiguration.register=!0,this._registrator.register()}},{key:"unregister",value:function(u){K.debug("unregister()"),this._dynConfiguration.register=!1,this._registrator.unregister(u)}},{key:"registrator",value:function(){return this._registrator}},{key:"isRegistered",value:function(){return this._registrator.registered}},{key:"isConnected",value:function(){return this._transport.isConnected()}},{key:"call",value:function(u,m){K.debug("call()");var M=new H(this);return M.connect(u,m),M}},{key:"sendMessage",value:function(u,m,M){K.debug("sendMessage()");var q=new k(this);return q.send(u,m,M),q}},{key:"sendOptions",value:function(u,m,M){K.debug("sendOptions()");var q=new g(this);return q.send(u,m,M),q}},{key:"terminateSessions",value:function(u){K.debug("terminateSessions()");for(var m in this._sessions)this._sessions[m].isEnded()||this._sessions[m].terminate(u)}},{key:"stop",value:function(){var u=this;if(K.debug("stop()"),this._dynConfiguration={},this._status===D.STATUS_USER_CLOSED){K.debug("UA already closed");return}this._registrator.close();var m=Object.keys(this._sessions).length;for(var M in this._sessions)if(Object.prototype.hasOwnProperty.call(this._sessions,M)){K.debug("closing session ".concat(M));try{this._sessions[M].terminate()}catch{}}for(var q in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,q))try{this._applicants[q].close()}catch{}this._status=D.STATUS_USER_CLOSED;var J=Object.keys(this._transactions.nict).length+Object.keys(this._transactions.nist).length+Object.keys(this._transactions.ict).length+Object.keys(this._transactions.ist).length;J===0&&m===0?this._transport.disconnect():this._closeTimer=setTimeout(function(){u._closeTimer=null,u._transport.disconnect()},2e3)}},{key:"normalizeTarget",value:function(u){return y.normalizeTarget(u,this._configuration.hostport_params)}},{key:"get",value:function(u){switch(u){case"authorization_user":return this._configuration.authorization_user;case"realm":return this._configuration.realm;case"ha1":return this._configuration.ha1;case"authorization_jwt":return this._configuration.authorization_jwt;default:K.warn('get() | cannot get "%s" parameter in runtime',u);return}}},{key:"set",value:function(u,m){switch(u){case"authorization_user":{this._configuration.authorization_user=String(m);break}case"password":{this._configuration.password=String(m);break}case"realm":{this._configuration.realm=String(m);break}case"ha1":{this._configuration.ha1=String(m),this._configuration.password=null;break}case"authorization_jwt":{this._configuration.authorization_jwt=String(m);break}case"display_name":{this._configuration.display_name=m;break}case"extra_headers":{this._configuration.extra_headers=m;break}default:return K.warn('set() | cannot set "%s" parameter in runtime',u),!1}return!0}},{key:"newTransaction",value:function(u){this._transactions[u.type][u.id]=u,this.emit("newTransaction",{transaction:u})}},{key:"destroyTransaction",value:function(u){delete this._transactions[u.type][u.id],this.emit("transactionDestroyed",{transaction:u})}},{key:"newDialog",value:function(u){this._dialogs[u.id]=u}},{key:"destroyDialog",value:function(u){delete this._dialogs[u.id]}},{key:"newMessage",value:function(u,m){this._applicants[u]=u,this.emit("newMessage",m)}},{key:"newOptions",value:function(u,m){this._applicants[u]=u,this.emit("newOptions",m)}},{key:"destroyMessage",value:function(u){delete this._applicants[u]}},{key:"newRTCSession",value:function(u,m){this._sessions[u.id]=u,this.emit("newRTCSession",m)}},{key:"destroyRTCSession",value:function(u){delete this._sessions[u.id]}},{key:"registered",value:function(u){this.emit("registered",u)}},{key:"unregistered",value:function(u){this.emit("unregistered",u)}},{key:"registrationFailed",value:function(u){this.emit("registrationFailed",u)}},{key:"receiveRequest",value:function(u){var m=u.method;if(u.ruri.user!==this._configuration.uri.user&&u.ruri.user!==this._contact.uri.user){K.debug("Request-URI does not point to us"),u.method!==_.ACK&&u.reply_sl(404);return}if(u.ruri.scheme===_.SIPS){u.reply_sl(416);return}if(!O.checkTransaction(this,u)){if(m===_.INVITE?new O.InviteServerTransaction(this,this._transport,u):m!==_.ACK&&m!==_.CANCEL&&new O.NonInviteServerTransaction(this,this._transport,u),m===_.OPTIONS){if(this.listeners("newOptions").length===0){u.reply(200);return}var M=new g(this);M.init_incoming(u)}else if(m===_.MESSAGE){if(this.listeners("newMessage").length===0){u.reply(405);return}var q=new k(this);q.init_incoming(u)}else if(m===_.INVITE&&!u.to_tag&&this.listeners("newRTCSession").length===0){u.reply(405);return}var J,Y;if(u.to_tag)J=this._findDialog(u.call_id,u.from_tag,u.to_tag),J?J.receiveRequest(u):m===_.NOTIFY?(Y=this._findSession(u),Y?Y.receiveRequest(u):(K.debug("received NOTIFY request for a non existent subscription"),u.reply(481,"Subscription does not exist"))):m!==_.ACK&&u.reply(481);else switch(m){case _.INVITE:if(window.RTCPeerConnection)if(u.hasHeader("replaces")){var te=u.replaces;J=this._findDialog(te.call_id,te.from_tag,te.to_tag),J?(Y=J.owner,Y.isEnded()?u.reply(603):Y.receiveRequest(u)):u.reply(481)}else Y=new H(this),Y.init_incoming(u);else K.warn("INVITE received but WebRTC is not supported"),u.reply(488);break;case _.BYE:u.reply(481);break;case _.CANCEL:Y=this._findSession(u),Y?Y.receiveRequest(u):K.debug("received CANCEL request for a non existent session");break;case _.ACK:break;case _.NOTIFY:this.emit("sipEvent",{event:u.event,request:u}),u.reply(200);break;default:u.reply(405);break}}}},{key:"_findSession",value:function(u){var m=u.call_id,M=u.from_tag,q=u.to_tag,J=m+M,Y=this._sessions[J],te=m+q,ee=this._sessions[te];return Y||ee||null}},{key:"_findDialog",value:function(u,m,M){var q=u+m+M,J=this._dialogs[q];return J||(q=u+M+m,J=this._dialogs[q],J||null)}},{key:"_loadConfig",value:function(u){try{G.load(this._configuration,u)}catch(te){throw te}this._configuration.display_name===0&&(this._configuration.display_name="0"),this._configuration.instance_id||(this._configuration.instance_id=y.newUUID()),this._configuration.jssip_id=y.createRandomToken(5);var m=this._configuration.uri.clone();m.user=null,this._configuration.hostport_params=m.toString().replace(/^sip:/i,"");try{this._transport=new N(this._configuration.sockets,{max_interval:this._configuration.connection_recovery_max_interval,min_interval:this._configuration.connection_recovery_min_interval}),this._transport.onconnecting=U.bind(this),this._transport.onconnect=h.bind(this),this._transport.ondisconnect=p.bind(this),this._transport.ondata=A.bind(this)}catch(te){throw K.warn(te),new v.ConfigurationError("sockets",this._configuration.sockets)}if(delete this._configuration.sockets,this._configuration.authorization_user||(this._configuration.authorization_user=this._configuration.uri.user),!this._configuration.registrar_server){var M=this._configuration.uri.clone();M.user=null,M.clearParams(),M.clearHeaders(),this._configuration.registrar_server=M}this._configuration.no_answer_timeout*=1e3,this._configuration.contact_uri?this._configuration.via_host=this._configuration.contact_uri.host:this._configuration.contact_uri=new T("sip",y.createRandomToken(8),this._configuration.via_host,null,{transport:"ws"}),this._contact={pub_gruu:null,temp_gruu:null,uri:this._configuration.contact_uri,toString:function(){var ee=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},se=ee.anonymous||null,le=ee.outbound||null,re="<";return se?re+=this.temp_gruu||"sip:anonymous@anonymous.invalid;transport=ws":re+=this.pub_gruu||this.uri.toString(),le&&(se?!this.temp_gruu:!this.pub_gruu)&&(re+=";ob"),re+=">",re}};var q=["authorization_user","password","realm","ha1","authorization_jwt","display_name","register","extra_headers"];for(var J in this._configuration)Object.prototype.hasOwnProperty.call(this._configuration,J)&&(q.indexOf(J)!==-1?Object.defineProperty(this._configuration,J,{writable:!0,configurable:!1}):Object.defineProperty(this._configuration,J,{writable:!1,configurable:!1}));K.debug("configuration parameters after validation:");for(var Y in this._configuration)if(Object.prototype.hasOwnProperty.call(G.settings,Y))switch(Y){case"uri":case"registrar_server":K.debug("- ".concat(Y,": ").concat(this._configuration[Y]));break;case"password":case"ha1":case"authorization_jwt":K.debug("- ".concat(Y,": NOT SHOWN"));break;default:K.debug("- ".concat(Y,": ").concat(JSON.stringify(this._configuration[Y])))}}},{key:"C",get:function(){return D}},{key:"status",get:function(){return this._status}},{key:"contact",get:function(){return this._contact}},{key:"configuration",get:function(){return this._configuration}},{key:"transport",get:function(){return this._transport}}]),V}(a);function U(S){this.emit("connecting",S)}function h(S){this._status!==D.STATUS_USER_CLOSED&&(this._status=D.STATUS_READY,this._error=null,this.emit("connected",S),this._dynConfiguration.register&&this._registrator.register())}function p(S){for(var F=["nict","ict","nist","ist"],V=0,P=F;V<P.length;V++){var u=P[V];for(var m in this._transactions[u])Object.prototype.hasOwnProperty.call(this._transactions[u],m)&&this._transactions[u][m].onTransportError()}this.emit("disconnected",S),this._registrator.onTransportClosed(),this._status!==D.STATUS_USER_CLOSED&&(this._status=D.STATUS_NOT_READY,this._error=D.NETWORK_ERROR)}function A(S){var F=S.transport,V=S.message;if(V=w.parseMessage(V,this),!!V&&!(this._status===D.STATUS_USER_CLOSED&&V instanceof E.IncomingRequest)&&I(V,this,F)){if(V instanceof E.IncomingRequest)V.transport=F,this.receiveRequest(V);else if(V instanceof E.IncomingResponse){var P;switch(V.method){case _.INVITE:P=this._transactions.ict[V.via_branch],P&&P.receiveResponse(V);break;case _.ACK:break;default:P=this._transactions.nict[V.via_branch],P&&P.receiveResponse(V);break}}}}return Xt}var Qt,_r;function Rl(){if(_r)return Qt;_r=1;function j(t,R){if(!(t instanceof R))throw new TypeError("Cannot call a class as a function")}function B(t,R){for(var C=0;C<R.length;C++){var s=R[C];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(t,s.key,s)}}function $(t,R,C){return R&&B(t.prototype,R),t}var i=Ae(),z=Ne(),x=new i("WebSocketInterface");return Qt=function(){function t(R){j(this,t),x.debug('new() [url:"%s"]',R),this._url=R,this._sip_uri=null,this._via_transport=null,this._ws=null;var C=z.parse(R,"absoluteURI");if(C===-1)throw x.warn("invalid WebSocket URI: ".concat(R)),new TypeError("Invalid argument: ".concat(R));if(C.scheme!=="wss"&&C.scheme!=="ws")throw x.warn("invalid WebSocket URI scheme: ".concat(C.scheme)),new TypeError("Invalid argument: ".concat(R));this._sip_uri="sip:".concat(C.host).concat(C.port?":".concat(C.port):"",";transport=ws"),this._via_transport=C.scheme.toUpperCase()}return $(t,[{key:"connect",value:function(){if(x.debug("connect()"),this.isConnected()){x.debug("WebSocket ".concat(this._url," is already connected"));return}else if(this.isConnecting()){x.debug("WebSocket ".concat(this._url," is connecting"));return}this._ws&&this.disconnect(),x.debug("connecting to WebSocket ".concat(this._url));try{this._ws=new WebSocket(this._url,"sip"),this._ws.binaryType="arraybuffer",this._ws.onopen=this._onOpen.bind(this),this._ws.onclose=this._onClose.bind(this),this._ws.onmessage=this._onMessage.bind(this),this._ws.onerror=this._onError.bind(this)}catch(C){this._onError(C)}}},{key:"disconnect",value:function(){x.debug("disconnect()"),this._ws&&(this._ws.onopen=function(){},this._ws.onclose=function(){},this._ws.onmessage=function(){},this._ws.onerror=function(){},this._ws.close(),this._ws=null)}},{key:"send",value:function(C){return x.debug("send()"),this.isConnected()?(this._ws.send(C),!0):(x.warn("unable to send message, WebSocket is not open"),!1)}},{key:"isConnected",value:function(){return this._ws&&this._ws.readyState===this._ws.OPEN}},{key:"isConnecting",value:function(){return this._ws&&this._ws.readyState===this._ws.CONNECTING}},{key:"_onOpen",value:function(){x.debug("WebSocket ".concat(this._url," connected")),this.onconnect()}},{key:"_onClose",value:function(C){var s=C.wasClean,f=C.code,a=C.reason;x.debug("WebSocket ".concat(this._url," closed")),s===!1&&x.debug("WebSocket abrupt disconnection"),this.ondisconnect(!s,f,a)}},{key:"_onMessage",value:function(C){var s=C.data;x.debug("received WebSocket message"),this.ondata(s)}},{key:"_onError",value:function(C){x.warn("WebSocket ".concat(this._url," error: "),C)}},{key:"via_transport",get:function(){return this._via_transport},set:function(C){this._via_transport=C.toUpperCase()}},{key:"sip_uri",get:function(){return this._sip_uri}},{key:"url",get:function(){return this._url}}]),t}(),Qt}var Zt,pr;function wl(){if(pr)return Zt;pr=1;var j=In,B=Ce(),$=Ue(),i=Re(),z=Al(),x=Me(),t=Ct(),R=Ne(),C=Rl(),s=wt()("JsSIP");return s("version %s",j.version),Zt={C:B,Exceptions:$,Utils:i,UA:z,URI:x,NameAddrHeader:t,WebSocketInterface:C,Grammar:R,debug:wt(),get name(){return j.title},get version(){return j.version}},Zt}var Il=wl();const en=ll(Il),Ol={wsServer:"",sipUri:"",password:"",displayName:"",userAgent:"",autoRegister:!1,autoAnswer:!1,mediaConstraints:{audio:!0,video:!1}};function Nl(j={}){return vr(j)}function vr(j={},B){const $=X.ref("disconnected"),i=X.ref(!1),z=X.ref(!1),x=X.ref(""),t=X.ref(null),R=X.ref(null),C=X.ref(null);let s=null,f=null;const a={...Ol,...rn(),...j},d=async()=>{try{$.value="connecting",en.debug.enable("JsSIP:*");const T=new en.WebSocketInterface(a.wsServer);return s=new en.UA({uri:a.sipUri,password:a.password,display_name:a.displayName,sockets:[T],register:a.autoRegister,session_timers:!0}),_(),s.start(),$.value="connected",!0}catch(T){return C.value=T instanceof Error?T:new Error("Unknown error"),$.value="error",console.error("SIP initialization failed:",T),!1}},_=()=>{s&&(s.on("registered",()=>{i.value=!0,$.value="registered",B("registered")}),s.on("unregistered",()=>{i.value=!1,$.value="connected"}),s.on("newRTCSession",T=>{f=T.session,z.value=!0,f.direction==="incoming"?(x.value="incoming",a.autoAnswer&&O()):x.value="outgoing",W(f)}),s.on("disconnected",()=>{$.value="disconnected",i.value=!1}),s.on("connected",()=>{$.value="connected",B("connected")}))},W=T=>{T.on("accepted",()=>{if(x.value="active",T.connection){const E=T.connection.getSenders();for(const I of E)if(I.track&&I.track.kind==="audio"){const G=new MediaStream([I.track]);R.value=G;break}}}),T.on("ended",()=>{y()}),T.on("failed",()=>{x.value="failed",setTimeout(y,2e3)}),T.on("addstream",E=>{E.stream&&(t.value=E.stream)}),T.connection&&(T.connection.ontrack=E=>{t.value||(t.value=new MediaStream),E.streams[0].getTracks().forEach(I=>{var G;(G=t.value)==null||G.addTrack(I)})});const w=()=>{if(T.connection){const E=T.connection.getSenders();for(const I of E)if(I.track&&I.track.kind==="audio"){const G=new MediaStream([I.track]);R.value=G;break}}};T.connection&&T.connection.addEventListener("connectionstatechange",()=>{var E;((E=T.connection)==null?void 0:E.connectionState)==="connected"&&w()}),w()},H=async()=>{try{if(!s)throw new Error("UserAgent not initialized");return $.value="registering",s.register(),!0}catch(T){return C.value=T instanceof Error?T:new Error("Registration failed"),$.value="error",console.error("Registration failed:",T),!1}},k=async()=>{try{if(!s)throw new Error("UserAgent not initialized");return s.unregister(),!0}catch(T){return C.value=T instanceof Error?T:new Error("Unregistration failed"),console.error("Unregistration failed:",T),!1}},g=async T=>{try{if(!s)throw new Error("UserAgent not initialized");const w=T.startsWith("sip:")?T:`sip:${T}`,E={mediaConstraints:a.mediaConstraints,pcConfig:{iceServers:[{urls:["stun:stun.l.google.com:19302"]}]},sessionTimersExpires:500};return s.call(w,E),!0}catch(w){return C.value=w instanceof Error?w:new Error("Call failed"),console.error("Call failed:",w),!1}},O=async()=>{try{if(!f)throw new Error("No active session");const T={mediaConstraints:a.mediaConstraints};return f.answer(T),!0}catch(T){return C.value=T instanceof Error?T:new Error("Answer failed"),console.error("Answer failed:",T),!1}},N=async()=>{try{if(!f)throw new Error("No active session");return f.terminate(),y(),!0}catch(T){return C.value=T instanceof Error?T:new Error("Hangup failed"),console.error("Hangup failed:",T),!1}},y=()=>{f&&(f=null),z.value=!1,x.value="",t.value=null,R.value=null},v=async()=>{z.value&&await N(),i.value&&await k(),s&&(s.stop(),s=null),$.value="disconnected"};return X.onUnmounted(()=>{v()}),{status:$,isRegistered:i,isInCall:z,callStatus:x,remoteStream:t,localStream:R,error:C,init:d,register:H,unregister:k,call:g,answer:O,hangup:N,destroy:v}}const kl={mimeType:"audio/webm",audioBitsPerSecond:128e3,autoSave:!1,fileNamePrefix:"recording"};function mr(j={}){const B={...kl,...j},$=X.ref("inactive"),i=X.ref(null),z=X.ref([]),x=X.ref(null),t=X.ref(null),R=X.ref(null),C=X.ref(0),s=X.ref(null),f=X.ref(null),a=async T=>{try{if($.value==="recording")return!0;z.value=[],x.value=null,t.value=null,R.value=null;const w={mimeType:B.mimeType,audioBitsPerSecond:B.audioBitsPerSecond};return B.mimeType&&!MediaRecorder.isTypeSupported(B.mimeType)&&(console.warn(`浏览器不支持${B.mimeType}格式,将使用默认格式`),delete w.mimeType),i.value=new MediaRecorder(T,w),i.value.ondataavailable=E=>{E.data.size>0&&z.value.push(E.data)},i.value.onstop=()=>{var I;const E=((I=i.value)==null?void 0:I.mimeType)||"audio/webm";x.value=new Blob(z.value,{type:E}),t.value=URL.createObjectURL(x.value),B.autoSave&&x.value&&H(),N(),$.value="inactive",i.value=null,z.value=[]},i.value.start(1e3),$.value="recording",k(),!0}catch(w){return R.value=w instanceof Error?w:new Error("录音失败"),console.error("录音失败:",w),!1}},d=()=>{try{return i.value&&$.value==="recording"?(i.value.pause(),$.value="paused",g(),!0):!1}catch(T){return R.value=T instanceof Error?T:new Error("暂停录音失败"),console.error("暂停录音失败:",T),!1}},_=()=>{try{return i.value&&$.value==="paused"?(i.value.resume(),$.value="recording",O(),!0):!1}catch(T){return R.value=T instanceof Error?T:new Error("恢复录音失败"),console.error("恢复录音失败:",T),!1}},W=()=>{try{return i.value&&($.value==="recording"||$.value==="paused")?(i.value.stop(),!0):!1}catch(T){return R.value=T instanceof Error?T:new Error("停止录音失败"),console.error("停止录音失败:",T),!1}},H=T=>{if(!x.value)return;const w=new Date().toISOString().replace(/[:.]/g,"-"),E=T||`${B.fileNamePrefix}-${w}.webm`,I=document.createElement("a");I.href=t.value,I.download=E,I.click()},k=()=>{f.value=Date.now(),C.value=0,s.value=window.setInterval(()=>{f.value&&(C.value=Math.floor((Date.now()-f.value)/1e3))},1e3)},g=()=>{s.value&&(clearInterval(s.value),s.value=null)},O=()=>{f.value&&(f.value=Date.now()-C.value*1e3,s.value=window.setInterval(()=>{C.value=Math.floor((Date.now()-f.value)/1e3)},1e3))},N=()=>{s.value&&(clearInterval(s.value),s.value=null),f.value=null},y=X.computed(()=>{const T=Math.floor(C.value/60),w=C.value%60;return`${T.toString().padStart(2,"0")}:${w.toString().padStart(2,"0")}`});return{status:$,audioBlob:x,audioUrl:t,duration:C,error:R,start:a,pause:d,resume:_,stop:W,saveToFile:H,formattedDuration:y,destroy:()=>{W(),N(),t.value&&(URL.revokeObjectURL(t.value),t.value=null),z.value=[],x.value=null,i.value=null}}}const Dl={class:"dialog-content"},Pl={class:"call-status"},xl={key:0,class:"status-incoming"},Ul={class:"caller-info"},Ml={key:1,class:"status-calling"},Hl={key:2,class:"status-failed"},Ll={key:3,class:"status-active"},Fl={class:"status-icon active-icon"},ql={class:"status-text"},Bl={key:0,class:"recording-status"},jl={class:"call-controls"},Vl={key:0,class:"recording-controls"},Gl=[".srcObject"],Wl=X.defineComponent({__name:"IntercomDialog",props:{visible:{type:Boolean,default:!1},isInCall:{type:Boolean,default:!1},callStatus:{default:""},remoteStream:{default:null},localStream:{default:null},disableRecording:{type:Boolean,default:!1},autoSaveRecording:{type:Boolean,default:!1},fileNamePrefix:{default:"sip-recording"},isStatic:{type:Boolean,default:!1},noHeader:{type:Boolean,default:!1}},emits:["close","answer","hangup","recordingStart","recordingPause","recordingResume","recordingStop"],setup(j,{emit:B}){const $=j,i=B,z=X.ref(null),x=X.ref(0),t=X.ref(null),R=X.ref("未知来电"),{status:C,start:s,pause:f,resume:a,stop:d,formattedDuration:_,destroy:W}=mr({autoSave:$.autoSaveRecording,fileNamePrefix:$.fileNamePrefix}),H=X.computed(()=>{const A=Math.floor(x.value/60),S=x.value%60;return`${A.toString().padStart(2,"0")}:${S.toString().padStart(2,"0")}`}),k=()=>{i("close")},g=()=>{i("answer")},O=()=>{C.value!=="inactive"&&y(),i("hangup")},N=()=>{$.localStream&&(s($.localStream),i("recordingStart"))},y=()=>{d(),i("recordingStop"),C.value="inactive"},v=()=>{z.value=Date.now(),x.value=0,t.value=window.setInterval(()=>{z.value&&(x.value=Math.floor((Date.now()-z.value)/1e3))},1e3)},T=()=>{t.value&&(clearInterval(t.value),t.value=null),z.value=null,x.value=0};X.watch(()=>$.visible,A=>{A&&w.value&&(w.value.style.right="20px",w.value.style.bottom="20px")}),X.watch(()=>$.callStatus,A=>{A==="active"?v():A===""&&T()});const w=X.ref(null);let E=!1,I=0,G=0,K=0,D=0;const U=A=>{if(!w.value||A.target.closest(".close-button"))return;E=!0;const S=window.getComputedStyle(w.value);K=parseInt(S.right)||0,D=parseInt(S.bottom)||0,I=A.clientX,G=A.clientY,document.addEventListener("mousemove",h),document.addEventListener("mouseup",p)},h=A=>{if(!E||!w.value)return;const S=I-A.clientX,F=G-A.clientY,V=window.innerWidth,P=window.innerHeight,u=w.value.offsetWidth,m=w.value.offsetHeight,M=20,q=Math.min(Math.max(K+S,-u+M),V-M),J=Math.min(Math.max(D+F,-m+M),P-M);w.value.style.right=`${q}px`,w.value.style.bottom=`${J}px`},p=()=>{E=!1,document.removeEventListener("mousemove",h),document.removeEventListener("mouseup",p)};return X.onUnmounted(()=>{T(),W(),document.removeEventListener("mousemove",h),document.removeEventListener("mouseup",p)}),(A,S)=>(X.openBlock(),X.createBlock(X.Transition,{name:A.isStatic?"":"slide-fade"},{default:X.withCtx(()=>[A.visible?(X.openBlock(),X.createElementBlock("div",{key:0,class:X.normalizeClass(["intercom-dialog",{static:A.isStatic}]),ref_key:"dialogRef",ref:w},[A.noHeader?X.createCommentVNode("",!0):(X.openBlock(),X.createElementBlock("div",{key:0,class:"dialog-header",onMousedown:U},[S[3]||(S[3]=X.createElementVNode("h3",null,"语音对讲",-1)),!A.isInCall||A.callStatus==="failed"||A.callStatus==="outgoing"?(X.openBlock(),X.createElementBlock("button",{key:0,class:"close-button",onClick:k}," × ")):X.createCommentVNode("",!0)],32)),X.createElementVNode("div",Dl,[X.createElementVNode("div",Pl,[A.callStatus==="incoming"?(X.openBlock(),X.createElementBlock("div",xl,[S[4]||(S[4]=X.createElementVNode("div",{class:"status-icon incoming-icon"},null,-1)),S[5]||(S[5]=X.createElementVNode("div",{class:"status-text"},"来电呼叫",-1)),X.createElementVNode("div",Ul,X.toDisplayString(R.value),1)])):X.createCommentVNode("",!0),A.callStatus==="outgoing"?(X.openBlock(),X.createElementBlock("div",Ml,S[6]||(S[6]=[X.createElementVNode("div",{class:"status-icon calling-icon"},null,-1),X.createElementVNode("div",{class:"status-text"},"正在呼叫...",-1)]))):X.createCommentVNode("",!0),A.callStatus==="failed"?(X.openBlock(),X.createElementBlock("div",Hl,S[7]||(S[7]=[X.createElementVNode("div",{class:"status-icon failed-icon"},null,-1),X.createElementVNode("div",{class:"status-text"},"呼叫失败",-1)]))):X.createCommentVNode("",!0),A.callStatus==="active"?(X.openBlock(),X.createElementBlock("div",Ll,[X.createElementVNode("div",Fl,[X.renderSlot(A.$slots,"default",{},()=>[S[8]||(S[8]=X.createElementVNode("i",{class:"ves-font icon-voiceprint-line"},null,-1))],!0)]),X.createElementVNode("div",ql,X.toDisplayString(H.value),1),X.unref(C)!=="inactive"&&!A.disableRecording?(X.openBlock(),X.createElementBlock("div",Bl,[S[9]||(S[9]=X.createElementVNode("span",{class:"recording-indicator"},null,-1)),X.createElementVNode("span",null,X.toDisplayString(X.unref(C)==="recording"?"录音中":"录音已暂停"),1),X.createElementVNode("span",null,X.toDisplayString(X.unref(_)),1)])):X.createCommentVNode("",!0)])):X.createCommentVNode("",!0)]),X.createElementVNode("div",jl,[A.callStatus==="incoming"?(X.openBlock(),X.createElementBlock(X.Fragment,{key:0},[X.createElementVNode("button",{class:"answer-button",onClick:g},S[10]||(S[10]=[X.createElementVNode("i",{class:"ves-font icon-phone-hang-up-fill"},null,-1),X.createTextVNode("接听 ")])),X.createElementVNode("button",{class:"reject-button",onClick:O},S[11]||(S[11]=[X.createElementVNode("i",{class:"ves-font icon-phone-hang-up-fill"},null,-1),X.createTextVNode("拒绝 ")]))],64)):X.createCommentVNode("",!0),A.callStatus==="active"?(X.openBlock(),X.createElementBlock(X.Fragment,{key:1},[A.disableRecording?X.createCommentVNode("",!0):(X.openBlock(),X.createElementBlock("div",Vl,[X.unref(C)==="inactive"?(X.openBlock(),X.createElementBlock("button",{key:0,class:"record-button",onClick:N}," 开始录音 ")):X.createCommentVNode("",!0),X.unref(C)==="recording"?(X.openBlock(),X.createElementBlock("button",{key:1,class:"pause-button",onClick:S[0]||(S[0]=(...F)=>X.unref(f)&&X.unref(f)(...F))}," 暂停录音 ")):X.createCommentVNode("",!0),X.unref(C)==="paused"?(X.openBlock(),X.createElementBlock("button",{key:2,class:"resume-button",onClick:S[1]||(S[1]=(...F)=>X.unref(a)&&X.unref(a)(...F))}," 继续录音 ")):X.createCommentVNode("",!0),X.unref(C)!=="inactive"?(X.openBlock(),X.createElementBlock("button",{key:3,class:"stop-button",onClick:S[2]||(S[2]=(...F)=>X.unref(d)&&X.unref(d)(...F))}," 停止录音 ")):X.createCommentVNode("",!0)])),X.createElementVNode("button",{class:"hangup-button",onClick:O},S[12]||(S[12]=[X.createElementVNode("i",{class:"ves-font icon-phone-hang-up-fill"},null,-1),X.createTextVNode("挂断 ")]))],64)):X.createCommentVNode("",!0)])]),A.remoteStream?(X.openBlock(),X.createElementBlock("audio",{key:1,".srcObject":A.remoteStream,autoplay:""},null,40,Gl)):X.createCommentVNode("",!0)],2)):X.createCommentVNode("",!0)]),_:3},8,["name"]))}}),gr=(j,B)=>{const $=j.__vccOpts||j;for(const[i,z]of B)$[i]=z;return $},tn=gr(Wl,[["__scopeId","data-v-faeacb27"]]),zl={class:"intercom-button-container"},yr=gr(X.defineComponent({__name:"IntercomButton",props:{callTarget:{default:"1110"},wsServer:{default:void 0},sipUri:{default:void 0},password:{default:void 0},displayName:{default:void 0},userAgent:{default:void 0},autoRegister:{type:Boolean,default:void 0},sipConfig:{default:()=>({})},autoAnswer:{type:Boolean,default:!1},disableRecording:{type:Boolean,default:!0},autoSaveRecording:{type:Boolean,default:!0},fileNamePrefix:{default:"sip-recording"},mediaConstraints:{default:void 0},isStatic:{type:Boolean,default:!1},noHeader:{type:Boolean,default:!1}},emits:["registered","registerFailed","connectionFailed","callFailed","callStarted","callEnded","incomingCall","recordingStart","recordingPause","recordingResume","recordingStop"],setup(j,{expose:B,emit:$}){const i=j,z=$,x=X.ref(!1),{status:t,isRegistered:R,isInCall:C,callStatus:s,remoteStream:f,localStream:a,error:d,init:_,register:W,call:H,answer:k,hangup:g,destroy:O}=vr({...rn(),...i.wsServer?{wsServer:i.wsServer}:{},...i.sipUri?{sipUri:i.sipUri}:{},...i.password?{password:i.password}:{},...i.displayName?{displayName:i.displayName}:{},...i.userAgent?{userAgent:i.userAgent}:{},...i.autoRegister!==void 0?{autoRegister:i.autoRegister}:{},...i.mediaConstraints?{mediaConstraints:i.mediaConstraints}:{},...i.sipConfig,autoAnswer:i.autoAnswer},z),N=async()=>{if(t.value==="disconnected")try{await _(),console.error("init-showIntercomDialog",i.callTarget)}catch(U){console.error("11-error",i.callTarget),z("connectionFailed",U instanceof Error?U:new Error(String(U)));return}if(!R.value&&t.value==="connected")try{await W()}catch(U){z("registerFailed",U instanceof Error?U:new Error(String(U)));return}if(R.value){if(!C.value){x.value=!0;try{await H(i.callTarget)}catch(U){z("callFailed",U instanceof Error?U:new Error(String(U)))}}}else{z("connectionFailed",new Error("SIP客户端未连接"));return}},y=async()=>{C.value&&await T(),x.value=!1},v=async()=>{try{await k(),z("callStarted")}catch(U){z("callFailed",U instanceof Error?U:new Error(String(U)))}},T=async()=>{try{await g(),z("callEnded")}catch(U){console.error("挂断失败:",U)}s.value==="failed"&&setTimeout(()=>{x.value=!1},1e3)},w=U=>{x.value=!0,z("incomingCall",U)},E=()=>{z("recordingStart")},I=()=>{z("recordingPause")},G=()=>{z("recordingResume")},K=()=>{z("recordingStop")};return(async()=>{try{await _(),t.value==="connected"&&await W()}catch(U){t.value==="disconnected"?z("connectionFailed",U instanceof Error?U:new Error(String(U))):z("registerFailed",U instanceof Error?U:new Error(String(U)))}})(),X.watch(()=>s.value,U=>{U==="active"?z("callStarted"):U==="failed"?(setTimeout(()=>{x.value=!1},1e3),z("callFailed",d.value||new Error("呼叫失败"))):U===""?(y(),z("callEnded")):U==="incoming"&&w("未知来电")}),X.onBeforeUnmount(()=>{O(),window.removeEventListener("beforeunload",O)}),window.addEventListener("beforeunload",O),B({showIntercomDialog:N,closeDialog:y}),(U,h)=>(X.openBlock(),X.createElementBlock("div",zl,[X.createElementVNode("button",{class:"intercom-button",onClick:N},[X.renderSlot(U.$slots,"default",{},()=>[h[0]||(h[0]=X.createTextVNode("对讲"))],!0)]),X.createVNode(tn,{visible:x.value,isInCall:X.unref(C),callStatus:X.unref(s),remoteStream:X.unref(f),localStream:X.unref(a),disableRecording:U.disableRecording,autoSaveRecording:U.autoSaveRecording,fileNamePrefix:U.fileNamePrefix,isStatic:U.isStatic,noHeader:U.noHeader,onClose:y,onAnswer:v,onHangup:T,onRecordingStart:E,onRecordingPause:I,onRecordingResume:G,onRecordingStop:K},null,8,["visible","isInCall","callStatus","remoteStream","localStream","disableRecording","autoSaveRecording","fileNamePrefix","isStatic","noHeader"])]))}}),[["__scopeId","data-v-40d9c139"]]);let nn={...{wsServer:"wss://suixing.cspid.cn:7443",sipUri:"sip:1009@suixing.cspid.cn:5080",password:"1234",displayName:"Vue SIP Client",userAgent:"Vue Easy SIP",autoRegister:!1,autoAnswer:!1,mediaConstraints:{audio:!0,video:!1}}};const Tr=j=>{nn={...nn,...j}},rn=()=>({...nn}),Kl={install:(j,B)=>{B&&Tr(B),j.component("IntercomButton",yr),j.component("IntercomDialog",tn)}};we.IntercomButton=yr,we.IntercomDialog=tn,we.createSipClient=Nl,we.default=Kl,we.getSipConfig=rn,we.setSipConfig=Tr,we.useRecorder=mr,Object.defineProperties(we,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue-easy-sip",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "一个简单易用的Vue 3 SIP对讲组件库,基于JsSIP",
5
5
  "type": "module",
6
6
  "main": "dist/vue-easy-sip.umd.js",