@tencentcloud/trtc-component-wx 1.0.6-beta.4 → 1.0.6-beta.6

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.
@@ -111,7 +111,22 @@ var InterfaceEventEmitter = trtcCloud.InterfaceEventEmitter;
111
111
 
112
112
  Component({
113
113
  properties: {
114
- streamId: String
114
+ streamId: String,
115
+ pictureInPictureMode: {
116
+ type: null,
117
+ optionalTypes: [String, Array]
118
+ },
119
+ pictureInPictureInitPosition: {
120
+ type: String
121
+ },
122
+ enableSystemPip: {
123
+ type: null,
124
+ optionalTypes: [Boolean]
125
+ },
126
+ enableCasting: {
127
+ type: null,
128
+ optionalTypes: [Boolean]
129
+ }
115
130
  },
116
131
  data: {
117
132
  player: {},
@@ -186,16 +201,22 @@ Component({
186
201
  InterfaceEventEmitter.off('playerAttributesChange', this.playerAttributesChange);
187
202
  InterfaceEventEmitter.off('playerAudioRouteChange', this.playerAudioRouteChange);
188
203
  },
204
+ emitDocEvent: function emitDocEvent(name, event) {
205
+ this.triggerEvent(name, event && event.detail || {});
206
+ },
189
207
 
190
208
  // 请保持跟 wxml 中绑定的事件名称一致
191
209
  _playerStateChange: function _playerStateChange(event) {
192
210
  trtc.playerEventHandler(event);
211
+ this.emitDocEvent('statechange', event);
193
212
  },
194
213
  _playerFullscreenChange: function _playerFullscreenChange(event) {
195
214
  trtc.playerFullscreenChange(event);
215
+ this.emitDocEvent('fullscreenchange', event);
196
216
  },
197
217
  _playerNetStatus: function _playerNetStatus(event) {
198
218
  trtc.playerNetStatus(event);
219
+ this.emitDocEvent('netstatus', event);
199
220
  },
200
221
  _playerAudioVolumeNotify: function _playerAudioVolumeNotify(event) {
201
222
  try {
@@ -203,7 +224,24 @@ Component({
203
224
  trtc.playerAudioVolumeNotify(event);
204
225
  } catch (err) {
205
226
  trtcCloud.logger.warn(err);
227
+ } finally {
228
+ this.emitDocEvent('audiovolumenotify', event);
206
229
  }
230
+ },
231
+ _playerEnterPictureInPicture: function _playerEnterPictureInPicture(event) {
232
+ this.emitDocEvent('enterpictureinpicture', event);
233
+ },
234
+ _playerLeavePictureInPicture: function _playerLeavePictureInPicture(event) {
235
+ this.emitDocEvent('leavepictureinpicture', event);
236
+ },
237
+ _playerCastingUserSelect: function _playerCastingUserSelect(event) {
238
+ this.emitDocEvent('castinguserselect', event);
239
+ },
240
+ _playerCastingStateChange: function _playerCastingStateChange(event) {
241
+ this.emitDocEvent('castingstatechange', event);
242
+ },
243
+ _playerCastingInterrupt: function _playerCastingInterrupt(event) {
244
+ this.emitDocEvent('castinginterrupt', event);
207
245
  }
208
246
  }
209
247
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"@tencentcloud/trtc-cloud-wx\"","webpack:///./src/trtc-player.js"],"names":["trtcCloud","TRTCCloud","getTRTCShareInstance","trtc","InterfaceEventEmitter","Component","properties","streamId","String","data","player","TRTCStreamId","soundMode","lifetimes","attached","logger","info","emit","isReady","view","getTRTCStreamId","bindTRTCCloudEvent","detached","unbindTRTCCloudEvent","methods","setTRTCStreamId","id","Promise","resolve","reject","setData","err","playerAttributesChange","event","playerAttributes","callback","JSON","stringify","playerAudioRouteChange","tempArray","split","userId","slice","join","streamType","Number","length","on","off","_playerStateChange","playerEventHandler","_playerFullscreenChange","playerFullscreenChange","_playerNetStatus","playerNetStatus","_playerAudioVolumeNotify","currentTarget","dataset","streamid","streamID","playerAudioVolumeNotify","warn"],"mappings":"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","file":"trtc-player.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","module.exports = require(\"@tencentcloud/trtc-cloud-wx\");","import TRTCCloud, {translateTRTCStreamId} from '@tencentcloud/trtc-cloud-wx'\n\nconst trtcCloud = TRTCCloud.getTRTCShareInstance()\nconst trtc = trtcCloud.trtc\nconst InterfaceEventEmitter = trtcCloud.InterfaceEventEmitter\n\nComponent({\n properties: {\n streamId: String\n },\n data: {\n player: {},\n TRTCStreamId: '',\n soundMode: ''\n },\n lifetimes: {\n attached() {\n trtcCloud.logger.info('trtc-player attached', this.data.streamId)\n if (this.data.streamId) {\n InterfaceEventEmitter.emit('playerDomReady', {isReady: true, view: this.data.streamId})\n }\n this.data.TRTCStreamId = this.getTRTCStreamId(this.data.streamId)\n this.bindTRTCCloudEvent()\n },\n detached() {\n trtcCloud.logger.info('trtc-player detached', this.data.streamId)\n InterfaceEventEmitter.emit('playerDomReady', {isReady: false, streamId: this.data.streamId})\n this.unbindTRTCCloudEvent()\n }\n },\n\n methods: {\n // todo room uniapp 特供,因为 uniapp 打包导致组件传惨变量名更替 trtc-player 组建内部无法识别\n setTRTCStreamId(id) {\n trtcCloud.logger.info('trtc-player setTRTCStreamId', id)\n return new Promise((resolve, reject) => {\n try {\n this.data.streamId = id\n this.data.TRTCStreamId = this.getTRTCStreamId(id)\n this.setData({streamId: this.data.streamId}, () => {\n trtcCloud.logger.info('trtc-player setTRTCStreamId success', id)\n resolve()\n InterfaceEventEmitter.emit('playerDomReady', {isReady: true, view: id})\n })\n } catch (err) {\n trtcCloud.logger.info('trtc-player setTRTCStreamId fail', id, err)\n reject(err)\n }\n })\n },\n playerAttributesChange(event) {\n const {view, playerAttributes, callback} = event\n trtcCloud.logger.info('trtc-player playerAttributesChange', view, JSON.stringify(playerAttributes), this.data.streamId)\n if (view === this.data.streamId) {\n this.setData({player: playerAttributes}, callback)\n }\n },\n playerAudioRouteChange(event) {\n const { soundMode, callback } = event\n trtcCloud.logger.info('trtc-player playerAudioRouteChange', soundMode)\n this.setData({ soundMode }, callback)\n },\n getTRTCStreamId(streamId) {\n const tempArray = streamId.split('_')\n const userId = tempArray.slice(0, -1).join('_')\n const streamType = Number(tempArray[tempArray.length - 1])\n return translateTRTCStreamId(userId, streamType)\n },\n bindTRTCCloudEvent() {\n InterfaceEventEmitter.on('playerAttributesChange', this.playerAttributesChange, this)\n InterfaceEventEmitter.on('playerAudioRouteChange', this.playerAudioRouteChange, this)\n },\n unbindTRTCCloudEvent() {\n InterfaceEventEmitter.off('playerAttributesChange', this.playerAttributesChange)\n InterfaceEventEmitter.off('playerAudioRouteChange', this.playerAudioRouteChange)\n },\n // 请保持跟 wxml 中绑定的事件名称一致\n _playerStateChange(event) {\n trtc.playerEventHandler(event)\n },\n _playerFullscreenChange(event) {\n trtc.playerFullscreenChange(event)\n },\n _playerNetStatus(event) {\n trtc.playerNetStatus(event)\n },\n _playerAudioVolumeNotify(event) {\n try {\n event.currentTarget.dataset.streamid = this.data.player.streamID\n trtc.playerAudioVolumeNotify(event)\n } catch (err) {\n trtcCloud.logger.warn(err)\n }\n },\n }\n})\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"@tencentcloud/trtc-cloud-wx\"","webpack:///./src/trtc-player.js"],"names":["trtcCloud","TRTCCloud","getTRTCShareInstance","trtc","InterfaceEventEmitter","Component","properties","streamId","String","pictureInPictureMode","type","optionalTypes","Array","pictureInPictureInitPosition","enableSystemPip","Boolean","enableCasting","data","player","TRTCStreamId","soundMode","lifetimes","attached","logger","info","emit","isReady","view","getTRTCStreamId","bindTRTCCloudEvent","detached","unbindTRTCCloudEvent","methods","setTRTCStreamId","id","Promise","resolve","reject","setData","err","playerAttributesChange","event","playerAttributes","callback","JSON","stringify","playerAudioRouteChange","tempArray","split","userId","slice","join","streamType","Number","length","on","off","emitDocEvent","name","triggerEvent","detail","_playerStateChange","playerEventHandler","_playerFullscreenChange","playerFullscreenChange","_playerNetStatus","playerNetStatus","_playerAudioVolumeNotify","currentTarget","dataset","streamid","streamID","playerAudioVolumeNotify","warn","_playerEnterPictureInPicture","_playerLeavePictureInPicture","_playerCastingUserSelect","_playerCastingStateChange","_playerCastingInterrupt"],"mappings":"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","file":"trtc-player.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","module.exports = require(\"@tencentcloud/trtc-cloud-wx\");","import TRTCCloud, {translateTRTCStreamId} from '@tencentcloud/trtc-cloud-wx'\n\nconst trtcCloud = TRTCCloud.getTRTCShareInstance()\nconst trtc = trtcCloud.trtc\nconst InterfaceEventEmitter = trtcCloud.InterfaceEventEmitter\n\nComponent({\n properties: {\n streamId: String,\n pictureInPictureMode: {\n type: null,\n optionalTypes: [String, Array],\n },\n pictureInPictureInitPosition: {\n type: String,\n },\n enableSystemPip: {\n type: null,\n optionalTypes: [Boolean],\n },\n enableCasting: {\n type: null,\n optionalTypes: [Boolean],\n },\n },\n data: {\n player: {},\n TRTCStreamId: '',\n soundMode: ''\n },\n lifetimes: {\n attached() {\n trtcCloud.logger.info('trtc-player attached', this.data.streamId)\n if (this.data.streamId) {\n InterfaceEventEmitter.emit('playerDomReady', {isReady: true, view: this.data.streamId})\n }\n this.data.TRTCStreamId = this.getTRTCStreamId(this.data.streamId)\n this.bindTRTCCloudEvent()\n },\n detached() {\n trtcCloud.logger.info('trtc-player detached', this.data.streamId)\n InterfaceEventEmitter.emit('playerDomReady', {isReady: false, streamId: this.data.streamId})\n this.unbindTRTCCloudEvent()\n }\n },\n\n methods: {\n // todo room uniapp 特供,因为 uniapp 打包导致组件传惨变量名更替 trtc-player 组建内部无法识别\n setTRTCStreamId(id) {\n trtcCloud.logger.info('trtc-player setTRTCStreamId', id)\n return new Promise((resolve, reject) => {\n try {\n this.data.streamId = id\n this.data.TRTCStreamId = this.getTRTCStreamId(id)\n this.setData({streamId: this.data.streamId}, () => {\n trtcCloud.logger.info('trtc-player setTRTCStreamId success', id)\n resolve()\n InterfaceEventEmitter.emit('playerDomReady', {isReady: true, view: id})\n })\n } catch (err) {\n trtcCloud.logger.info('trtc-player setTRTCStreamId fail', id, err)\n reject(err)\n }\n })\n },\n playerAttributesChange(event) {\n const {view, playerAttributes, callback} = event\n trtcCloud.logger.info('trtc-player playerAttributesChange', view, JSON.stringify(playerAttributes), this.data.streamId)\n if (view === this.data.streamId) {\n this.setData({player: playerAttributes}, callback)\n }\n },\n playerAudioRouteChange(event) {\n const { soundMode, callback } = event\n trtcCloud.logger.info('trtc-player playerAudioRouteChange', soundMode)\n this.setData({ soundMode }, callback)\n },\n getTRTCStreamId(streamId) {\n const tempArray = streamId.split('_')\n const userId = tempArray.slice(0, -1).join('_')\n const streamType = Number(tempArray[tempArray.length - 1])\n return translateTRTCStreamId(userId, streamType)\n },\n bindTRTCCloudEvent() {\n InterfaceEventEmitter.on('playerAttributesChange', this.playerAttributesChange, this)\n InterfaceEventEmitter.on('playerAudioRouteChange', this.playerAudioRouteChange, this)\n },\n unbindTRTCCloudEvent() {\n InterfaceEventEmitter.off('playerAttributesChange', this.playerAttributesChange)\n InterfaceEventEmitter.off('playerAudioRouteChange', this.playerAudioRouteChange)\n },\n emitDocEvent(name, event) {\n this.triggerEvent(name, (event && event.detail) || {})\n },\n // 请保持跟 wxml 中绑定的事件名称一致\n _playerStateChange(event) {\n trtc.playerEventHandler(event)\n this.emitDocEvent('statechange', event)\n },\n _playerFullscreenChange(event) {\n trtc.playerFullscreenChange(event)\n this.emitDocEvent('fullscreenchange', event)\n },\n _playerNetStatus(event) {\n trtc.playerNetStatus(event)\n this.emitDocEvent('netstatus', event)\n },\n _playerAudioVolumeNotify(event) {\n try {\n event.currentTarget.dataset.streamid = this.data.player.streamID\n trtc.playerAudioVolumeNotify(event)\n } catch (err) {\n trtcCloud.logger.warn(err)\n } finally {\n this.emitDocEvent('audiovolumenotify', event)\n }\n },\n _playerEnterPictureInPicture(event) {\n this.emitDocEvent('enterpictureinpicture', event)\n },\n _playerLeavePictureInPicture(event) {\n this.emitDocEvent('leavepictureinpicture', event)\n },\n _playerCastingUserSelect(event) {\n this.emitDocEvent('castinguserselect', event)\n },\n _playerCastingStateChange(event) {\n this.emitDocEvent('castingstatechange', event)\n },\n _playerCastingInterrupt(event) {\n this.emitDocEvent('castinginterrupt', event)\n },\n }\n})\n"],"sourceRoot":""}
@@ -6,7 +6,16 @@
6
6
  background-mute="{{player.enableBackgroundMute}}" min-cache="{{player.minCache}}" max-cache="{{player.maxCache}}"
7
7
  sound-mode="{{soundMode}}" enable-recv-message="{{player.enableRecvMessage}}"
8
8
  auto-pause-if-navigate="{{player.autoPauseIfNavigate}}" auto-pause-if-open-native="{{player.autoPauseIfOpenNative}}"
9
+ picture-in-picture-mode="{{pictureInPictureMode}}"
10
+ picture-in-picture-init-position="{{pictureInPictureInitPosition}}"
11
+ enable-system-pip="{{enableSystemPip}}"
12
+ enable-casting="{{enableCasting}}"
9
13
  debug="{{player.debug}}" bindstatechange="_playerStateChange" bindfullscreenchange="_playerFullscreenChange"
10
- bindnetstatus="_playerNetStatus" bindaudiovolumenotify="_playerAudioVolumeNotify" />
14
+ bindnetstatus="_playerNetStatus" bindaudiovolumenotify="_playerAudioVolumeNotify"
15
+ bindenterpictureinpicture="_playerEnterPictureInPicture"
16
+ bindleavepictureinpicture="_playerLeavePictureInPicture"
17
+ bindcastinguserselect="_playerCastingUserSelect"
18
+ bindcastingstatechange="_playerCastingStateChange"
19
+ bindcastinginterrupt="_playerCastingInterrupt" />
11
20
  <view wx:if="{{player.stopVideo}}" class="trtc-dark-mask"></view>
12
21
  </view>
@@ -109,7 +109,12 @@ var trtc = trtcCloud.trtc;
109
109
  var InterfaceEventEmitter = trtcCloud.InterfaceEventEmitter;
110
110
 
111
111
  Component({
112
- properties: {},
112
+ properties: {
113
+ pictureInPictureMode: {
114
+ type: null,
115
+ optionalTypes: [String, Array]
116
+ }
117
+ },
113
118
  data: {
114
119
  pusher: {}
115
120
  },
@@ -150,31 +155,48 @@ Component({
150
155
  InterfaceEventEmitter.off('pusherAttributesChange', this.pusherAttributesChange);
151
156
  InterfaceEventEmitter.off('playerAudioRouteChange', this.playerAudioRouteChange);
152
157
  },
158
+ emitDocEvent: function emitDocEvent(name, event) {
159
+ this.triggerEvent(name, event && event.detail || {});
160
+ },
153
161
 
154
162
  // 请保持跟 wxml 中绑定的事件名称一致
155
163
  _pusherStateChangeHandler: function _pusherStateChangeHandler(event) {
156
164
  trtc.pusherEventHandler(event);
165
+ this.emitDocEvent('statechange', event);
157
166
  },
158
167
  _pusherNetStatusHandler: function _pusherNetStatusHandler(event) {
159
168
  trtc.pusherNetStatusHandler(event);
169
+ this.emitDocEvent('netstatus', event);
160
170
  },
161
171
  _pusherErrorHandler: function _pusherErrorHandler(event) {
162
172
  trtc.pusherErrorHandler(event);
173
+ this.emitDocEvent('error', event);
163
174
  },
164
175
  _pusherBGMStartHandler: function _pusherBGMStartHandler(event) {
165
176
  trtc.pusherBGMStartHandler(event);
177
+ this.emitDocEvent('bgmstart', event);
166
178
  },
167
179
  _pusherBGMProgressHandler: function _pusherBGMProgressHandler(event) {
168
180
  trtc.pusherBGMProgressHandler(event);
181
+ this.emitDocEvent('bgmprogress', event);
169
182
  },
170
183
  _pusherBGMCompleteHandler: function _pusherBGMCompleteHandler(event) {
171
184
  trtc.pusherBGMCompleteHandler(event);
185
+ this.emitDocEvent('bgmcomplete', event);
172
186
  },
173
187
  _pusherAudioVolumeNotify: function _pusherAudioVolumeNotify(event) {
174
188
  if (!trtcCloud.isEnterRoom) {
189
+ this.emitDocEvent('audiovolumenotify', event);
175
190
  return;
176
191
  }
177
192
  trtc.pusherAudioVolumeNotify(event);
193
+ this.emitDocEvent('audiovolumenotify', event);
194
+ },
195
+ _pusherEnterPictureInPicture: function _pusherEnterPictureInPicture(event) {
196
+ this.emitDocEvent('enterpictureinpicture', event);
197
+ },
198
+ _pusherLeavePictureInPicture: function _pusherLeavePictureInPicture(event) {
199
+ this.emitDocEvent('leavepictureinpicture', event);
178
200
  }
179
201
  }
180
202
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"@tencentcloud/trtc-cloud-wx\"","webpack:///./src/trtc-pusher.js"],"names":["trtcCloud","TRTCCloud","getTRTCShareInstance","trtc","InterfaceEventEmitter","Component","properties","data","pusher","lifetimes","attached","logger","info","bindTRTCCloudEvent","emit","detached","unbindTRTCCloudEvent","exitRoom","methods","pusherAttributesChange","event","callback","setData","playerAudioRouteChange","soundMode","on","off","_pusherStateChangeHandler","pusherEventHandler","_pusherNetStatusHandler","pusherNetStatusHandler","_pusherErrorHandler","pusherErrorHandler","_pusherBGMStartHandler","pusherBGMStartHandler","_pusherBGMProgressHandler","pusherBGMProgressHandler","_pusherBGMCompleteHandler","pusherBGMCompleteHandler","_pusherAudioVolumeNotify","isEnterRoom","pusherAudioVolumeNotify"],"mappings":"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","file":"trtc-pusher.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","module.exports = require(\"@tencentcloud/trtc-cloud-wx\");","import TRTCCloud from '@tencentcloud/trtc-cloud-wx'\n\nconst trtcCloud = TRTCCloud.getTRTCShareInstance()\nconst trtc = trtcCloud.trtc\nconst InterfaceEventEmitter = trtcCloud.InterfaceEventEmitter\n\nComponent({\n properties: {\n },\n data: {\n pusher: {},\n },\n lifetimes: {\n attached() {\n trtcCloud.logger.info('trtc-pusher attached')\n this.bindTRTCCloudEvent()\n // 注意事件绑定应该放在 domReady 之前,因为此时出发 domReady 会执行 ready 后的后续操作依赖 bindTRTCCloudEvent\n InterfaceEventEmitter.emit('pusherDomReady', true)\n },\n detached() {\n trtcCloud.logger.info('trtc-pusher detached')\n InterfaceEventEmitter.emit('pusherDomReady', false)\n this.unbindTRTCCloudEvent()\n trtcCloud.exitRoom()\n },\n },\n\n\n methods: {\n pusherAttributesChange(event) {\n const {pusher, callback} = event\n this.setData({pusher}, callback)\n },\n playerAudioRouteChange(event) {\n const { soundMode, callback } = event\n trtcCloud.logger.info('trtc-player playerAudioRouteChange', soundMode)\n this.setData({ soundMode }, callback)\n },\n bindTRTCCloudEvent() {\n InterfaceEventEmitter.on('pusherAttributesChange', this.pusherAttributesChange, this)\n InterfaceEventEmitter.on('playerAudioRouteChange', this.playerAudioRouteChange, this)\n },\n unbindTRTCCloudEvent() {\n InterfaceEventEmitter.off('pusherAttributesChange', this.pusherAttributesChange)\n InterfaceEventEmitter.off('playerAudioRouteChange', this.playerAudioRouteChange)\n },\n // 请保持跟 wxml 中绑定的事件名称一致\n _pusherStateChangeHandler(event) {\n trtc.pusherEventHandler(event)\n },\n _pusherNetStatusHandler(event) {\n trtc.pusherNetStatusHandler(event)\n },\n _pusherErrorHandler(event) {\n trtc.pusherErrorHandler(event)\n },\n _pusherBGMStartHandler(event) {\n trtc.pusherBGMStartHandler(event)\n },\n _pusherBGMProgressHandler(event) {\n trtc.pusherBGMProgressHandler(event)\n },\n _pusherBGMCompleteHandler(event) {\n trtc.pusherBGMCompleteHandler(event)\n },\n _pusherAudioVolumeNotify(event) {\n if (!trtcCloud.isEnterRoom) {\n return\n }\n trtc.pusherAudioVolumeNotify(event)\n }\n }\n})\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"@tencentcloud/trtc-cloud-wx\"","webpack:///./src/trtc-pusher.js"],"names":["trtcCloud","TRTCCloud","getTRTCShareInstance","trtc","InterfaceEventEmitter","Component","properties","pictureInPictureMode","type","optionalTypes","String","Array","data","pusher","lifetimes","attached","logger","info","bindTRTCCloudEvent","emit","detached","unbindTRTCCloudEvent","exitRoom","methods","pusherAttributesChange","event","callback","setData","playerAudioRouteChange","soundMode","on","off","emitDocEvent","name","triggerEvent","detail","_pusherStateChangeHandler","pusherEventHandler","_pusherNetStatusHandler","pusherNetStatusHandler","_pusherErrorHandler","pusherErrorHandler","_pusherBGMStartHandler","pusherBGMStartHandler","_pusherBGMProgressHandler","pusherBGMProgressHandler","_pusherBGMCompleteHandler","pusherBGMCompleteHandler","_pusherAudioVolumeNotify","isEnterRoom","pusherAudioVolumeNotify","_pusherEnterPictureInPicture","_pusherLeavePictureInPicture"],"mappings":"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","file":"trtc-pusher.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","module.exports = require(\"@tencentcloud/trtc-cloud-wx\");","import TRTCCloud from '@tencentcloud/trtc-cloud-wx'\n\nconst trtcCloud = TRTCCloud.getTRTCShareInstance()\nconst trtc = trtcCloud.trtc\nconst InterfaceEventEmitter = trtcCloud.InterfaceEventEmitter\n\nComponent({\n properties: {\n pictureInPictureMode: {\n type: null,\n optionalTypes: [String, Array],\n },\n },\n data: {\n pusher: {},\n },\n lifetimes: {\n attached() {\n trtcCloud.logger.info('trtc-pusher attached')\n this.bindTRTCCloudEvent()\n // 注意事件绑定应该放在 domReady 之前,因为此时出发 domReady 会执行 ready 后的后续操作依赖 bindTRTCCloudEvent\n InterfaceEventEmitter.emit('pusherDomReady', true)\n },\n detached() {\n trtcCloud.logger.info('trtc-pusher detached')\n InterfaceEventEmitter.emit('pusherDomReady', false)\n this.unbindTRTCCloudEvent()\n trtcCloud.exitRoom()\n },\n },\n\n\n methods: {\n pusherAttributesChange(event) {\n const {pusher, callback} = event\n this.setData({pusher}, callback)\n },\n playerAudioRouteChange(event) {\n const { soundMode, callback } = event\n trtcCloud.logger.info('trtc-player playerAudioRouteChange', soundMode)\n this.setData({ soundMode }, callback)\n },\n bindTRTCCloudEvent() {\n InterfaceEventEmitter.on('pusherAttributesChange', this.pusherAttributesChange, this)\n InterfaceEventEmitter.on('playerAudioRouteChange', this.playerAudioRouteChange, this)\n },\n unbindTRTCCloudEvent() {\n InterfaceEventEmitter.off('pusherAttributesChange', this.pusherAttributesChange)\n InterfaceEventEmitter.off('playerAudioRouteChange', this.playerAudioRouteChange)\n },\n emitDocEvent(name, event) {\n this.triggerEvent(name, (event && event.detail) || {})\n },\n // 请保持跟 wxml 中绑定的事件名称一致\n _pusherStateChangeHandler(event) {\n trtc.pusherEventHandler(event)\n this.emitDocEvent('statechange', event)\n },\n _pusherNetStatusHandler(event) {\n trtc.pusherNetStatusHandler(event)\n this.emitDocEvent('netstatus', event)\n },\n _pusherErrorHandler(event) {\n trtc.pusherErrorHandler(event)\n this.emitDocEvent('error', event)\n },\n _pusherBGMStartHandler(event) {\n trtc.pusherBGMStartHandler(event)\n this.emitDocEvent('bgmstart', event)\n },\n _pusherBGMProgressHandler(event) {\n trtc.pusherBGMProgressHandler(event)\n this.emitDocEvent('bgmprogress', event)\n },\n _pusherBGMCompleteHandler(event) {\n trtc.pusherBGMCompleteHandler(event)\n this.emitDocEvent('bgmcomplete', event)\n },\n _pusherAudioVolumeNotify(event) {\n if (!trtcCloud.isEnterRoom) {\n this.emitDocEvent('audiovolumenotify', event)\n return\n }\n trtc.pusherAudioVolumeNotify(event)\n this.emitDocEvent('audiovolumenotify', event)\n },\n _pusherEnterPictureInPicture(event) {\n this.emitDocEvent('enterpictureinpicture', event)\n },\n _pusherLeavePictureInPicture(event) {\n this.emitDocEvent('leavepictureinpicture', event)\n },\n }\n})\n"],"sourceRoot":""}
@@ -10,12 +10,15 @@
10
10
  local-mirror="{{pusher.localMirror}}" background-mute="{{pusher.enableBackgroundMute}}"
11
11
  audio-quality="{{pusher.audioQuality}}" audio-volume-type="{{pusher.audioVolumeType}}"
12
12
  audio-reverb-type="{{pusher.audioReverbType}}" waiting-image="{{pusher.waitingImage}}"
13
+ picture-in-picture-mode="{{pictureInPictureMode}}"
13
14
  beauty-style="{{pusher.beautyStyle}}" fps="{{pusher.fps}}" filter="{{pusher.filter}}"
14
15
  audio-quality="{{pusher.audioQuality}}"
15
16
  bindstatechange="_pusherStateChangeHandler" bindnetstatus="_pusherNetStatusHandler"
16
17
  binderror="_pusherErrorHandler" bindbgmstart="_pusherBGMStartHandler"
17
18
  bindbgmprogress="_pusherBGMProgressHandler" bindbgmcomplete="_pusherBGMCompleteHandler"
18
- bindaudiovolumenotify="_pusherAudioVolumeNotify" />
19
+ bindaudiovolumenotify="_pusherAudioVolumeNotify"
20
+ bindenterpictureinpicture="_pusherEnterPictureInPicture"
21
+ bindleavepictureinpicture="_pusherLeavePictureInPicture" />
19
22
  <live-player class="trtc-player" sound-mode="{{soundMode}}">
20
23
  </live-player>
21
24
  <!-- <camera wx:if="{{pusher.videoPreview}}" class="trtc-camera" device-position="{{pusher.frontCamera}}"></camera> -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tencentcloud/trtc-component-wx",
3
- "version": "1.0.6-beta.4",
3
+ "version": "1.0.6-beta.6",
4
4
  "description": "",
5
5
  "main": "miniprogram_dist/index.js",
6
6
  "scripts": {
@@ -67,6 +67,6 @@
67
67
  "webpack-node-externals": "^1.7.2"
68
68
  },
69
69
  "dependencies": {
70
- "@tencentcloud/trtc-cloud-wx": "1.0.6-beta.7"
70
+ "@tencentcloud/trtc-cloud-wx": "^1.0.7"
71
71
  }
72
72
  }
@@ -6,7 +6,22 @@ const InterfaceEventEmitter = trtcCloud.InterfaceEventEmitter
6
6
 
7
7
  Component({
8
8
  properties: {
9
- streamId: String
9
+ streamId: String,
10
+ pictureInPictureMode: {
11
+ type: null,
12
+ optionalTypes: [String, Array],
13
+ },
14
+ pictureInPictureInitPosition: {
15
+ type: String,
16
+ },
17
+ enableSystemPip: {
18
+ type: null,
19
+ optionalTypes: [Boolean],
20
+ },
21
+ enableCasting: {
22
+ type: null,
23
+ optionalTypes: [Boolean],
24
+ },
10
25
  },
11
26
  data: {
12
27
  player: {},
@@ -74,15 +89,21 @@ Component({
74
89
  InterfaceEventEmitter.off('playerAttributesChange', this.playerAttributesChange)
75
90
  InterfaceEventEmitter.off('playerAudioRouteChange', this.playerAudioRouteChange)
76
91
  },
92
+ emitDocEvent(name, event) {
93
+ this.triggerEvent(name, (event && event.detail) || {})
94
+ },
77
95
  // 请保持跟 wxml 中绑定的事件名称一致
78
96
  _playerStateChange(event) {
79
97
  trtc.playerEventHandler(event)
98
+ this.emitDocEvent('statechange', event)
80
99
  },
81
100
  _playerFullscreenChange(event) {
82
101
  trtc.playerFullscreenChange(event)
102
+ this.emitDocEvent('fullscreenchange', event)
83
103
  },
84
104
  _playerNetStatus(event) {
85
105
  trtc.playerNetStatus(event)
106
+ this.emitDocEvent('netstatus', event)
86
107
  },
87
108
  _playerAudioVolumeNotify(event) {
88
109
  try {
@@ -90,7 +111,24 @@ Component({
90
111
  trtc.playerAudioVolumeNotify(event)
91
112
  } catch (err) {
92
113
  trtcCloud.logger.warn(err)
114
+ } finally {
115
+ this.emitDocEvent('audiovolumenotify', event)
93
116
  }
94
117
  },
118
+ _playerEnterPictureInPicture(event) {
119
+ this.emitDocEvent('enterpictureinpicture', event)
120
+ },
121
+ _playerLeavePictureInPicture(event) {
122
+ this.emitDocEvent('leavepictureinpicture', event)
123
+ },
124
+ _playerCastingUserSelect(event) {
125
+ this.emitDocEvent('castinguserselect', event)
126
+ },
127
+ _playerCastingStateChange(event) {
128
+ this.emitDocEvent('castingstatechange', event)
129
+ },
130
+ _playerCastingInterrupt(event) {
131
+ this.emitDocEvent('castinginterrupt', event)
132
+ },
95
133
  }
96
134
  })
@@ -6,7 +6,16 @@
6
6
  background-mute="{{player.enableBackgroundMute}}" min-cache="{{player.minCache}}" max-cache="{{player.maxCache}}"
7
7
  sound-mode="{{soundMode}}" enable-recv-message="{{player.enableRecvMessage}}"
8
8
  auto-pause-if-navigate="{{player.autoPauseIfNavigate}}" auto-pause-if-open-native="{{player.autoPauseIfOpenNative}}"
9
+ picture-in-picture-mode="{{pictureInPictureMode}}"
10
+ picture-in-picture-init-position="{{pictureInPictureInitPosition}}"
11
+ enable-system-pip="{{enableSystemPip}}"
12
+ enable-casting="{{enableCasting}}"
9
13
  debug="{{player.debug}}" bindstatechange="_playerStateChange" bindfullscreenchange="_playerFullscreenChange"
10
- bindnetstatus="_playerNetStatus" bindaudiovolumenotify="_playerAudioVolumeNotify" />
14
+ bindnetstatus="_playerNetStatus" bindaudiovolumenotify="_playerAudioVolumeNotify"
15
+ bindenterpictureinpicture="_playerEnterPictureInPicture"
16
+ bindleavepictureinpicture="_playerLeavePictureInPicture"
17
+ bindcastinguserselect="_playerCastingUserSelect"
18
+ bindcastingstatechange="_playerCastingStateChange"
19
+ bindcastinginterrupt="_playerCastingInterrupt" />
11
20
  <view wx:if="{{player.stopVideo}}" class="trtc-dark-mask"></view>
12
21
  </view>
@@ -6,6 +6,10 @@ const InterfaceEventEmitter = trtcCloud.InterfaceEventEmitter
6
6
 
7
7
  Component({
8
8
  properties: {
9
+ pictureInPictureMode: {
10
+ type: null,
11
+ optionalTypes: [String, Array],
12
+ },
9
13
  },
10
14
  data: {
11
15
  pusher: {},
@@ -44,30 +48,47 @@ Component({
44
48
  InterfaceEventEmitter.off('pusherAttributesChange', this.pusherAttributesChange)
45
49
  InterfaceEventEmitter.off('playerAudioRouteChange', this.playerAudioRouteChange)
46
50
  },
51
+ emitDocEvent(name, event) {
52
+ this.triggerEvent(name, (event && event.detail) || {})
53
+ },
47
54
  // 请保持跟 wxml 中绑定的事件名称一致
48
55
  _pusherStateChangeHandler(event) {
49
56
  trtc.pusherEventHandler(event)
57
+ this.emitDocEvent('statechange', event)
50
58
  },
51
59
  _pusherNetStatusHandler(event) {
52
60
  trtc.pusherNetStatusHandler(event)
61
+ this.emitDocEvent('netstatus', event)
53
62
  },
54
63
  _pusherErrorHandler(event) {
55
64
  trtc.pusherErrorHandler(event)
65
+ this.emitDocEvent('error', event)
56
66
  },
57
67
  _pusherBGMStartHandler(event) {
58
68
  trtc.pusherBGMStartHandler(event)
69
+ this.emitDocEvent('bgmstart', event)
59
70
  },
60
71
  _pusherBGMProgressHandler(event) {
61
72
  trtc.pusherBGMProgressHandler(event)
73
+ this.emitDocEvent('bgmprogress', event)
62
74
  },
63
75
  _pusherBGMCompleteHandler(event) {
64
76
  trtc.pusherBGMCompleteHandler(event)
77
+ this.emitDocEvent('bgmcomplete', event)
65
78
  },
66
79
  _pusherAudioVolumeNotify(event) {
67
80
  if (!trtcCloud.isEnterRoom) {
81
+ this.emitDocEvent('audiovolumenotify', event)
68
82
  return
69
83
  }
70
84
  trtc.pusherAudioVolumeNotify(event)
71
- }
85
+ this.emitDocEvent('audiovolumenotify', event)
86
+ },
87
+ _pusherEnterPictureInPicture(event) {
88
+ this.emitDocEvent('enterpictureinpicture', event)
89
+ },
90
+ _pusherLeavePictureInPicture(event) {
91
+ this.emitDocEvent('leavepictureinpicture', event)
92
+ },
72
93
  }
73
94
  })
@@ -10,12 +10,15 @@
10
10
  local-mirror="{{pusher.localMirror}}" background-mute="{{pusher.enableBackgroundMute}}"
11
11
  audio-quality="{{pusher.audioQuality}}" audio-volume-type="{{pusher.audioVolumeType}}"
12
12
  audio-reverb-type="{{pusher.audioReverbType}}" waiting-image="{{pusher.waitingImage}}"
13
+ picture-in-picture-mode="{{pictureInPictureMode}}"
13
14
  beauty-style="{{pusher.beautyStyle}}" fps="{{pusher.fps}}" filter="{{pusher.filter}}"
14
15
  audio-quality="{{pusher.audioQuality}}"
15
16
  bindstatechange="_pusherStateChangeHandler" bindnetstatus="_pusherNetStatusHandler"
16
17
  binderror="_pusherErrorHandler" bindbgmstart="_pusherBGMStartHandler"
17
18
  bindbgmprogress="_pusherBGMProgressHandler" bindbgmcomplete="_pusherBGMCompleteHandler"
18
- bindaudiovolumenotify="_pusherAudioVolumeNotify" />
19
+ bindaudiovolumenotify="_pusherAudioVolumeNotify"
20
+ bindenterpictureinpicture="_pusherEnterPictureInPicture"
21
+ bindleavepictureinpicture="_pusherLeavePictureInPicture" />
19
22
  <live-player class="trtc-player" sound-mode="{{soundMode}}">
20
23
  </live-player>
21
24
  <!-- <camera wx:if="{{pusher.videoPreview}}" class="trtc-camera" device-position="{{pusher.frontCamera}}"></camera> -->