feat: 电子药箱小程序 - 4Tab药品管理

- 电子药箱: 药品库存管理 + 手动录入 + 今日用药打卡
- 药品百科: 搜索 + 分类筛选 + 20种药品静态数据
- 惠教中心: 4条药品使用指南课程
- 我的: 家庭成员信息管理
- 自定义TabBar + navigation-bar组件
- SVG药品分类插图
This commit is contained in:
陈誉午
2026-07-29 11:20:52 +08:00
commit 994b267f5c
683 changed files with 43849 additions and 0 deletions
@@ -0,0 +1 @@
<svg width="20" height="20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M17.5 8.333h-4.167c-.92 0-1.666-.746-1.666-1.666V2.5h1.666v4.167H17.5v1.666zM2.5 6.667v1.666h4.167c.92 0 1.666-.746 1.666-1.666V2.5H6.667v4.167H2.5zM2.5 13.333h4.167V17.5h1.666v-4.167c0-.92-.746-1.666-1.666-1.666H2.5v1.666zM13.333 17.5v-4.167H17.5v-1.666h-4.167c-.92 0-1.666.746-1.666 1.666V17.5h1.666z" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 407 B

@@ -0,0 +1 @@
<svg width="20" height="20" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.125 3a.375.375 0 00-.375.375v.75c0 .207.168.375.375.375H15.5v3.375c0 .207.168.375.375.375h.75A.375.375 0 0017 7.875v-4.5A.375.375 0 0016.625 3h-4.5zm0 12.5a.375.375 0 00-.375.375v.75c0 .207.168.375.375.375h4.5a.375.375 0 00.375-.375v-4.5a.375.375 0 00-.375-.375h-.75a.375.375 0 00-.375.375V15.5h-3.375zM3 3.375C3 3.168 3.168 3 3.375 3h4.5c.207 0 .375.168.375.375v.75a.375.375 0 01-.375.375H4.5v3.375a.375.375 0 01-.375.375h-.75A.375.375 0 013 7.875v-4.5zM7.875 15.5H4.5v-3.375a.375.375 0 00-.375-.375h-.75a.375.375 0 00-.375.375v4.5c0 .207.168.375.375.375h4.5a.375.375 0 00.375-.375v-.75a.375.375 0 00-.375-.375z" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 761 B

@@ -0,0 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M29.7424 15.6249C32.849 21.0057 31.0054 27.8861 25.6246 30.9927C20.2439 34.0993 13.3635 32.2557 10.2569 26.8749C7.15026 21.4941 8.99385 14.6138 14.3746 11.5072C16.9893 9.99757 19.9581 9.65686 22.6759 10.3229L16.8749 7.49989L16.8749 10" stroke="white" stroke-width="2.125" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M24.375 20.1675C25.2083 20.6486 25.2083 21.8514 24.375 22.3325L18.75 25.5801C17.9167 26.0613 16.875 25.4598 16.875 24.4976L16.875 18.0024C16.875 17.0402 17.9167 16.4387 18.75 16.9199L24.375 20.1675Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 657 B

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.requestBackgroundPlayback=exports.getCurrentMediaContextController=exports.canRequestBackgroundPlayback=void 0;var _miniSdkConfig=require("./mini-sdk-config"),_types=require("./types"),_utils=require("./utils"),_backgroundPlayback=require("../../utils/background-playback"),getCurrentMediaContextController=function(e){var r;return e.data.videoType===_types.VideoType.LIVE?{playerType:e.data.liveEngine,context:null===(r=e._getLivePlayerComponent)||void 0===r?void 0:r.call(e)}:e.data.videoType===_types.VideoType.VOD?(e.videoContext||(e.videoContext=wx.createVideoContext("volcVodPlayer",e)),{playerType:"video",context:e.videoContext}):{playerType:e.data.videoType||"",context:null}};exports.getCurrentMediaContextController=getCurrentMediaContextController;var canRequestBackgroundPlayback=function(e){var r=(0,_miniSdkConfig.getMiniSdkBackgroundPlaybackConfig)(e.store);if((0,_utils.isDeviceMatchRulesMatched)(r.enabledDevices))return!0;if((0,_utils.isDeviceMatchRulesMatched)(r.disabledDevices))return!1;var a=getCurrentMediaContextController(e).playerType;return(0,_backgroundPlayback.canRequestBackgroundPlaybackByPlayerType)(a)};exports.canRequestBackgroundPlayback=canRequestBackgroundPlayback;var requestBackgroundPlayback=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"api",a=getCurrentMediaContextController(e),t=a.context,o=a.playerType,n=function(e,a){return{ok:!1,payload:{source:r,playerType:o,errMsg:a,reason:e}}};if(!t)return n("player_not_ready","requestBackgroundPlayback:fail player not ready");if(!canRequestBackgroundPlayback(e))return n("unsupported","requestBackgroundPlayback:fail method not found");try{return t.requestBackgroundPlayback(),{ok:!0,payload:{source:r,playerType:o,errMsg:"requestBackgroundPlayback:ok"}}}catch(e){return n("wechat_fail",(null==e?void 0:e.errMsg)||(null==e?void 0:e.message)||"requestBackgroundPlayback:fail")}};exports.requestBackgroundPlayback=requestBackgroundPlayback;
@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VIDEO_WAITING_END_TIMEOUT_MS=exports.VIDEO_RECREATE_BACKGROUND_THRESHOLD_DEFAULT_MS=exports.VIDEO_FIRST_FRAME_TIMEOUT_DEFAULT_MS=exports.LIVE_VIDEO_WAITING_THRESHOLD_DEFAULT_COUNT=exports.LIVE_SUCCESS_CODE_DEFAULT=exports.LIVE_STALL_WINDOW_DEFAULT_MS=exports.LIVE_STALL_THRESHOLD_DEFAULT_COUNT=exports.LIVE_RETRY_ROUND_MAX=exports.LIVE_MIN_CACHE_DEFAULT=exports.LIVE_MAX_CACHE_DEFAULT=exports.LIVE_LOADING_TIMEOUT_DEFAULT_MS=exports.LIVE_FIRST_FRAME_TIMEOUT_DEFAULT_MS=exports.LIVE_ENGINE_MODE_DEFAULT=exports.DEFAULT_MINI_SDK_CONFIG=exports.API_RETRY_MAX=void 0;var _types=require("./types"),_constant=require("../../utils/constant"),LIVE_RETRY_ROUND_MAX=3;exports.LIVE_RETRY_ROUND_MAX=LIVE_RETRY_ROUND_MAX;var LIVE_SUCCESS_CODE_DEFAULT=_types.LiveStateCode.SUCCESS;exports.LIVE_SUCCESS_CODE_DEFAULT=LIVE_SUCCESS_CODE_DEFAULT;var LIVE_LOADING_TIMEOUT_DEFAULT_MS=2e4;exports.LIVE_LOADING_TIMEOUT_DEFAULT_MS=LIVE_LOADING_TIMEOUT_DEFAULT_MS;var LIVE_STALL_WINDOW_DEFAULT_MS=5e3;exports.LIVE_STALL_WINDOW_DEFAULT_MS=LIVE_STALL_WINDOW_DEFAULT_MS;var LIVE_STALL_THRESHOLD_DEFAULT_COUNT=3;exports.LIVE_STALL_THRESHOLD_DEFAULT_COUNT=LIVE_STALL_THRESHOLD_DEFAULT_COUNT;var LIVE_VIDEO_WAITING_THRESHOLD_DEFAULT_COUNT=2;exports.LIVE_VIDEO_WAITING_THRESHOLD_DEFAULT_COUNT=LIVE_VIDEO_WAITING_THRESHOLD_DEFAULT_COUNT;var LIVE_MIN_CACHE_DEFAULT=5;exports.LIVE_MIN_CACHE_DEFAULT=LIVE_MIN_CACHE_DEFAULT;var LIVE_MAX_CACHE_DEFAULT=20;exports.LIVE_MAX_CACHE_DEFAULT=LIVE_MAX_CACHE_DEFAULT;var API_RETRY_MAX=4;exports.API_RETRY_MAX=API_RETRY_MAX;var LIVE_FIRST_FRAME_TIMEOUT_DEFAULT_MS=15e3;exports.LIVE_FIRST_FRAME_TIMEOUT_DEFAULT_MS=LIVE_FIRST_FRAME_TIMEOUT_DEFAULT_MS;var VIDEO_FIRST_FRAME_TIMEOUT_DEFAULT_MS=3e4;exports.VIDEO_FIRST_FRAME_TIMEOUT_DEFAULT_MS=VIDEO_FIRST_FRAME_TIMEOUT_DEFAULT_MS;var VIDEO_WAITING_END_TIMEOUT_MS=2e3;exports.VIDEO_WAITING_END_TIMEOUT_MS=VIDEO_WAITING_END_TIMEOUT_MS;var VIDEO_RECREATE_BACKGROUND_THRESHOLD_DEFAULT_MS=3e4;exports.VIDEO_RECREATE_BACKGROUND_THRESHOLD_DEFAULT_MS=VIDEO_RECREATE_BACKGROUND_THRESHOLD_DEFAULT_MS;var LIVE_ENGINE_MODE_DEFAULT=_constant.BUILD_VIDEO_ONLY?"video":"auto";exports.LIVE_ENGINE_MODE_DEFAULT=LIVE_ENGINE_MODE_DEFAULT;var DEFAULT_MINI_SDK_CONFIG={player:{live:{buffer:{minCache:LIVE_MIN_CACHE_DEFAULT,maxCache:LIVE_MAX_CACHE_DEFAULT},stability:{successCode:LIVE_SUCCESS_CODE_DEFAULT,firstFrameTimeoutMs:LIVE_FIRST_FRAME_TIMEOUT_DEFAULT_MS,loadingTimeoutMs:LIVE_LOADING_TIMEOUT_DEFAULT_MS,stall:{windowMs:LIVE_STALL_WINDOW_DEFAULT_MS,threshold:LIVE_STALL_THRESHOLD_DEFAULT_COUNT},videoWaitingThreshold:LIVE_VIDEO_WAITING_THRESHOLD_DEFAULT_COUNT,perfDebounceMs:Math.min(LIVE_LOADING_TIMEOUT_DEFAULT_MS,LIVE_STALL_WINDOW_DEFAULT_MS)},strategy:{enableQualityDowngrade:!0,enableStreamSwitch:!0,enableStreamSwitchOnPerfIssue:!0,streamSwitchRoundMax:LIVE_RETRY_ROUND_MAX,reduceQualityOnWeakNetAtStart:!0,reduceQualityOnLowPerformanceDeviceAtStart:!0},engine:{mode:LIVE_ENGINE_MODE_DEFAULT,forceUseVideoDevices:[{platform:"devtools"}]}},video:{stability:{firstFrameTimeoutMs:VIDEO_FIRST_FRAME_TIMEOUT_DEFAULT_MS},strategy:{enableStreamSwitch:!0,reduceQualityOnWeakNetAtStart:!0,reduceQualityOnLowPerformanceDeviceAtStart:!0}},videoRecreate:{backgroundThresholdMs:VIDEO_RECREATE_BACKGROUND_THRESHOLD_DEFAULT_MS,unexpectedPauseRecreate:!0,appShowRecreateDevices:[{platform:"ohos"}],pageShowRecreateDevices:[{platform:"ohos"}],videoErrorCallbackRecreateDevices:[{platform:"ohos"}]},backgroundPlayback:{enabledDevices:[],disabledDevices:[{platform:"ios"},{platform:"android"},{platform:"ohos"},{platform:"devtools"},{platform:"windows"},{platform:"mac"}]}}};exports.DEFAULT_MINI_SDK_CONFIG=DEFAULT_MINI_SDK_CONFIG;
@@ -0,0 +1 @@
"use strict";Component({properties:{type:{type:String,value:""},visible:{type:Boolean,value:!1},title:{type:String,value:""},list:{type:Array,value:[]},selected:{type:String,value:"auto"}},observers:{},data:{},methods:{valueChange:function(e){var t,a=((null==e||null===(t=e.currentTarget)||void 0===t?void 0:t.dataset)||{}).item;a.key!==this.data.selected&&this.triggerEvent("valueChange",{item:a,type:this.data.type})}}});
@@ -0,0 +1 @@
{"component":true,"usingComponents":{}}
@@ -0,0 +1,15 @@
<view class="content-wrapper content-wrapper-{{type}}">
<view class="content-list">
<view
class="{{'content-list-item ' + (selected === item.key ? 'content-list-item-selected' : '')}}"
wx:for="{{ list }}"
wx:for-index="index"
wx:for-item="item"
wx:key="key"
data-item="{{item}}"
bindtap="valueChange"
>
<text>{{ item.value }}</text>
</view>
</view>
</view>
@@ -0,0 +1 @@
.content-wrapper{display:flex;flex-direction:column;width:100%;box-sizing:border-box;background:#202124;padding:24rpx 0 20rpx}.content-list{align-items:center;box-sizing:border-box;color:#fff;display:flex;flex-direction:column;padding:0 24rpx;width:100%}.content-list-item{align-items:center;border-radius:8rpx;box-sizing:border-box;display:flex;font-size:calc(30rpx + .5 * (1rem - 16px));font-weight:500;height:calc(112rpx + .5 * (1rem - 16px));justify-content:center;line-height:calc(42rpx + .5 * (1rem - 16px));margin:0 auto;width:100%;max-width:100%}.content-list-item-selected{background-color:rgba(255,255,255,.18);color:#fff}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.pickNextLowerDefinition=exports.pickNextLiveCandidate=exports.isValidLiveEngineMode=exports.buildStreamSwitchPayload=exports.buildLiveCandidatesByEngine=exports.buildLiveCandidates=void 0;var _utils=require("../../utils/utils");function _createForOfIteratorHelper(r,e){var n="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!n){if(Array.isArray(r)||(n=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){n&&(r=n);var i=0,t=function(){};return{s:t,n:function(){return i>=r.length?{done:!0}:{done:!1,value:r[i++]}},e:function(r){throw r},f:t}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=n.call(r)},n:function(){var r=n.next();return a=r.done,r},e:function(r){l=!0,o=r},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function _unsupportedIterableToArray(r,e){if(r){if("string"==typeof r)return _arrayLikeToArray(r,e);var n=Object.prototype.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(r,e):void 0}}function _arrayLikeToArray(r,e){(null==e||e>r.length)&&(e=r.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=r[n];return i}var buildLiveCandidates=function(r,e){var n=[],i=function(r,e,i,t){var o=(0,_utils.normalizePullUrl)(e);o&&n.push({protocol:r,url:o,fromPrimary:i,mapDefinition:t})},t=function(r,e,n,t){i(r,e,!0,t);var o,a=_createForOfIteratorHelper(Array.isArray(n)?n:[]);try{for(a.s();!(o=a.n()).done;){var l=o.value;i(r,l,!1,t)}}catch(r){a.e(r)}finally{a.f()}},o=((null==r?void 0:r.FlvPlayList)||[]).find(function(r){return r.definition===e});o&&t("flv",o.url,o.backUrlList,o.mapDefinition);var a=((null==r?void 0:r.RtmpPlayList)||[]).find(function(r){return r.definition===e});return a&&t("rtmp",a.url,a.backUrlList,a.mapDefinition),n};exports.buildLiveCandidates=buildLiveCandidates;var buildLiveCandidatesByEngine=function(r,e,n){if("video"===n){var i=[],t=function(r,e,n,t){var o=(0,_utils.normalizePullUrl)(e);o&&i.push({protocol:r,url:o,fromPrimary:n,mapDefinition:t})},o=((null==r?void 0:r.VideoPlayList)||[]).filter(function(r){return r.definition===e}),a=((null==r?void 0:r.HlsPlayList)||[]).filter(function(r){return r.definition===e});return(o.length?o:a).forEach(function(r){!function(r,e,n,i){t(r,e,!0,i);var o,a=_createForOfIteratorHelper(Array.isArray(n)?n:[]);try{for(a.s();!(o=a.n()).done;){var l=o.value;t(r,l,!1,i)}}catch(r){a.e(r)}finally{a.f()}}(r.protocol||r.streamType||"hls",r.url,r.backUrlList,r.mapDefinition)}),i}return buildLiveCandidates(r,e)};exports.buildLiveCandidatesByEngine=buildLiveCandidatesByEngine;var pickNextLowerDefinition=function(r,e){var n=(Array.isArray(e)?e:[]).filter(function(r){return r&&"auto"!==r});if(!n.length)return null;if(!r)return n[n.length-1];var i=n.indexOf(r);return i<0?n[n.length-1]:i>=n.length-1?null:n[i+1]};exports.pickNextLowerDefinition=pickNextLowerDefinition;var pickNextLiveCandidate=function(r){var e=Array.isArray(null==r?void 0:r.candidates)?r.candidates:[];if(!e.length)return null;var n=(null==r?void 0:r.roundMax)||0,i=Number.isFinite(Number(null==r?void 0:r.currentIndex))?r.currentIndex:0,t=Number.isFinite(Number(null==r?void 0:r.roundIndex))&&r.roundIndex>0?r.roundIndex:1,o=e[i]||{},a=i+1,l=e[a],u=t;if(!l){if(n&&t>=n)return null;u=t+1,a=0,l=e[0]}return{current:o,next:l,nextIndex:a,nextRound:u}};exports.pickNextLiveCandidate=pickNextLiveCandidate;var buildStreamSwitchPayload=function(r){var e,n=null!==(e=null==r?void 0:r.now)&&void 0!==e?e:Date.now(),i=null==r?void 0:r.current,t=null==r?void 0:r.next;return{startMs:n,protocolFrom:null==i?void 0:i.protocol,protocolTo:null==t?void 0:t.protocol,fromPrimary:null==i?void 0:i.fromPrimary,reason:null==r?void 0:r.reason,retryIndex:null==r?void 0:r.retryIndex,roundIndex:null==r?void 0:r.roundIndex,fromUrl:null==i?void 0:i.url,toUrl:null==t?void 0:t.url}};exports.buildStreamSwitchPayload=buildStreamSwitchPayload;var SUPPORTED_ENGINE_MODES=["video","live-player","auto"],isValidLiveEngineMode=function(r){return SUPPORTED_ENGINE_MODES.includes(r)};exports.isValidLiveEngineMode=isValidLiveEngineMode;
@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMiniSdkVideoRecreateConfig=exports.getMiniSdkVideoConfig=exports.getMiniSdkLiveConfig=exports.getMiniSdkConfigNumber=exports.getMiniSdkConfigBoolean=exports.getMiniSdkBackgroundPlaybackConfig=void 0;var _utils=require("../../utils/utils"),_constants=require("./constants"),getMiniSdkConfig=function(e,i,t){var n,a=null==e||null===(n=e.get)||void 0===n?void 0:n.call(e,"miniSdkConfig"),r=(0,_utils.isPlainObject)(a)?(0,_utils.deepGet)(a,i):void 0,o=(0,_utils.deepGet)(_constants.DEFAULT_MINI_SDK_CONFIG,i);return"function"==typeof t?t(r,o):void 0===r?o:r},getMiniSdkConfigNumber=function(e,i){return getMiniSdkConfig(e,i,function(e,i){return(0,_utils.toSafeInt)(e,i)})};exports.getMiniSdkConfigNumber=getMiniSdkConfigNumber;var getMiniSdkConfigBoolean=function(e,i){return getMiniSdkConfig(e,i,function(e,i){return!0===e||!1===e?e:1===e||0!==e&&!!i})};exports.getMiniSdkConfigBoolean=getMiniSdkConfigBoolean;var getMiniSdkLiveConfig=function(e){var i="player.live",t=function(t){return getMiniSdkConfigNumber(e,"".concat(i,".").concat(t))},n=function(t){return getMiniSdkConfigBoolean(e,"".concat(i,".").concat(t))},a=getMiniSdkConfig(e,"".concat(i,".engine.mode")),r="video"===a||"live-player"===a?a:"auto",o=getMiniSdkConfig(e,"".concat(i,".engine.forceUseVideoDevices")),c=Array.isArray(o)?o:[];return{buffer:{minCache:t("buffer.minCache"),maxCache:t("buffer.maxCache")},stability:{firstFrameTimeoutMs:t("stability.firstFrameTimeoutMs"),successCode:t("stability.successCode"),loadingTimeoutMs:t("stability.loadingTimeoutMs"),stallWindowMs:t("stability.stall.windowMs"),stallThreshold:t("stability.stall.threshold"),videoWaitingThreshold:t("stability.videoWaitingThreshold"),perfDebounceMs:t("stability.perfDebounceMs")},strategy:{enableQualityDowngrade:n("strategy.enableQualityDowngrade"),enableStreamSwitch:n("strategy.enableStreamSwitch"),enableStreamSwitchOnPerfIssue:n("strategy.enableStreamSwitchOnPerfIssue"),streamSwitchRoundMax:t("strategy.streamSwitchRoundMax"),reduceQualityOnWeakNetAtStart:n("strategy.reduceQualityOnWeakNetAtStart"),reduceQualityOnLowPerformanceDeviceAtStart:n("strategy.reduceQualityOnLowPerformanceDeviceAtStart")},engine:{mode:r,forceUseVideoDevices:c}}};exports.getMiniSdkLiveConfig=getMiniSdkLiveConfig;var getMiniSdkVideoConfig=function(e){var i="player.video",t=function(t){return getMiniSdkConfigBoolean(e,"".concat(i,".").concat(t))};return{stability:{firstFrameTimeoutMs:getMiniSdkConfigNumber(e,"".concat(i,".").concat("stability.firstFrameTimeoutMs"))},strategy:{enableStreamSwitch:t("strategy.enableStreamSwitch"),reduceQualityOnWeakNetAtStart:t("strategy.reduceQualityOnWeakNetAtStart"),reduceQualityOnLowPerformanceDeviceAtStart:t("strategy.reduceQualityOnLowPerformanceDeviceAtStart")}}};exports.getMiniSdkVideoConfig=getMiniSdkVideoConfig;var getMiniSdkVideoRecreateConfig=function(e){var i="player.videoRecreate",t=getMiniSdkConfig(e,"".concat(i,".appShowRecreateDevices")),n=getMiniSdkConfig(e,"".concat(i,".pageShowRecreateDevices")),a=getMiniSdkConfig(e,"".concat(i,".videoErrorCallbackRecreateDevices"));return{backgroundThresholdMs:getMiniSdkConfigNumber(e,"".concat(i,".backgroundThresholdMs")),unexpectedPauseRecreate:getMiniSdkConfigBoolean(e,"".concat(i,".unexpectedPauseRecreate")),appShowRecreateDevices:Array.isArray(t)?t:[],pageShowRecreateDevices:Array.isArray(n)?n:[],videoErrorCallbackRecreateDevices:Array.isArray(a)?a:[]}};exports.getMiniSdkVideoRecreateConfig=getMiniSdkVideoRecreateConfig;var getMiniSdkBackgroundPlaybackConfig=function(e){var i="player.backgroundPlayback",t=getMiniSdkConfig(e,"".concat(i,".enabledDevices")),n=getMiniSdkConfig(e,"".concat(i,".disabledDevices"));return{enabledDevices:Array.isArray(t)?t:[],disabledDevices:Array.isArray(n)?n:[]}};exports.getMiniSdkBackgroundPlaybackConfig=getMiniSdkBackgroundPlaybackConfig;
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"component":true,"usingComponents":{"volc-live-player":"./volc-live-player/volc-live-player","people-counter":"../people-counter/people-counter","dialog-content":"./dialog-content/dialog-content","Drawer":"../../pubComponents/drawer/drawer","volc-loading":"../../pubComponents/loading/loading"}}
@@ -0,0 +1,131 @@
<!-- volc-mini-sdk/components/player.wxml -->
<view
class="volc-video-container {{isPortrait ? 'room-portrait' : 'room-landscape'}}"
id="volc-video-container"
>
<view class="volc-video-status {{statusBannerCentered ? 'volc-video-status-centered' : ''}}" wx:if="{{showStatusBanner}}">
{{statusBannerText}}
</view>
<view wx:if="{{!isPortrait && (showPeopleCount || showStatusTag)}}" class="volc-video-left-top-row">
<people-counter
wx:if="{{showPeopleCount}}"
mode="landscape"
sdkInstance="{{sdkInstance}}"
/>
<view class="volc-video-status-tag" wx:if="{{showStatusTag}}">
<view class="volc-video-status-tag-icon">
<view class="volc-video-status-tag-icon-bar volc-video-status-tag-icon-bar-1"></view>
<view class="volc-video-status-tag-icon-bar volc-video-status-tag-icon-bar-2"></view>
<view class="volc-video-status-tag-icon-bar volc-video-status-tag-icon-bar-3"></view>
</view>
<view>{{statusTagText}}</view>
</view>
</view>
<image
wx:if="{{videoType == 'poster'}}"
mode="cover"
src="{{CoverImageUrl}}"
class="video-item"
/>
<view wx:if="{{!isPortrait && !isFullscreen && videoType == 'poster'}}" class="player-top-actions">
<slot name="topRight"></slot>
</view>
<volc-loading wx:if="{{isLoading}}" zIndex="{{3}}" theme="dark" type="player" />
<view wx:if="{{playErrorVisible}}" class="play-error-mask">
<view class="play-error-content">
<view class="play-error-text">{{playErrorText}}</view>
<button
wx:if="{{videoType === 'live'}}"
class="weui-btn weui-btn_default play-error-retry-btn"
bindtap="handleRetryPull"
>
重试
</button>
</view>
</view>
<view wx:if="{{videoType == 'live' || videoType == 'vod'}}" style="{{videoStyle}}" class="videoContainer">
<video wx:if="{{videoType == 'vod' && shouldRenderVodPlayer}}" id="volcVodPlayer" src="{{vodSrc}}" class="video-item"
initial-time="{{vodInitialTime}}"
show-fullscreen-btn="{{!isPortrait || !isVideoPortrait}}"
enable-play-gesture="{{videoAttrs['enable-play-gesture']}}"
enable-progress-gesture="{{videoAttrs['enable-progress-gesture']}}"
loop="{{trailerLoop}}"
show-center-play-btn="{{videoAttrs['show-center-play-btn']}}"
show-play-btn="{{videoAttrs['show-play-btn']}}"
show-progress="{{videoAttrs['show-progress']}}"
controls="{{videoAttrs['controls']}}"
show-background-playback-button="{{false}}"
object-fit="{{videoAttrs['object-fit']}}"
autoplay="{{videoAttrs['autoplay'] && vodAutoplay}}"
picture-in-picture-mode="{{videoAttrs['picture-in-picture-mode']}}"
bindplay="handelPlay"
bindpause="handelPause"
bindended="bindVodEnded"
binderror="videoErrorCallback"
bindtimeupdate="handleVodTimeUpdate"
bindfullscreenchange="bindFullscreenChange"
bindwaiting="handleWaiting"
bindprogress="handleProgress"
bindloadedmetadata="handleLoadedMetaData"
bindcontrolstoggle="handleControlDisplay"
bindenterpictureinpicture="handleEnterPictureInPicture"
bindleavepictureinpicture="handleLeavePictureInPicture"
bindseekcomplete="handleSeekComplete"
>
<image
wx:if="{{isShowReplayBtn && CoverImageUrl}}"
mode="aspectFill"
src="{{CoverImageUrl}}"
class="video-item vod-poster-layer"
/>
<view wx:if="{{isShowReplayBtn}}" class="replay-mask">
<view bindtap="handleClickReplay" class="replay-btn">
<image src="./assets/replay.svg" class="replay-icon" />
<view class="replay-text">重播</view>
</view>
</view>
<!-- 由于全屏播放时,抽屉展示不出来,使用 cover-view 会导致元素放大,无法正常使用,暂时在全屏时引擎,后续统一优化交互 -->
<view wx:if="{{!isPortrait && !isFullscreen && videoControlsVisible}}" class="player-top-actions">
<slot name="topRight"></slot>
</view>
</video>
<volc-live-player wx:if="{{videoType == 'live' && shouldRenderLivePlayer}}" id="volcLivePlayer" class="video-item"
engine="{{liveEngine}}"
src="{{liveSrc}}"
object-fit="{{livePlayerAttrs['object-fit']}}"
picture-in-picture-mode="{{livePlayerAttrs['picture-in-picture-mode']}}"
min-cache="{{livePlayerAttrs['min-cache']}}"
max-cache="{{livePlayerAttrs['max-cache']}}"
success-code="{{liveSuccessCode}}"
show-controls="{{!isPortrait}}"
show-play-control="{{(!isPortrait || !isVideoPortrait) && !(isDesktopPlatform && liveEngine !== 'video')}}"
show-fullscreen-control="{{!isPortrait || !isVideoPortrait}}"
bindplay="handelPlay"
bindpause="handelPause"
bindfirstframe="liveFirstFrame"
bindwaiting="liveWaiting"
bindwaitingend="liveWaitingEnd"
bindloadedmetadata="liveLoadedMetaData"
bindretry="liveRetry"
bindtimeupdate="liveTimeUpdate"
bindended="liveEnded"
binderror="liveErrorCallback"
bindstatechange="liveStateChange"
bindfullscreenchange="bindFullscreenChange"
bindnetstatus="liveNetStatus"
bindenterpictureinpicture="handleEnterPictureInPicture"
bindleavepictureinpicture="handleLeavePictureInPicture"
>
<!-- 由于全屏播放时,抽屉展示不出来,使用 cover-view 会导致元素放大,无法正常使用,暂时在全屏时引擎,后续统一优化交互 -->
<view wx:if="{{!isPortrait && !isFullscreen}}" slot="topRight" class="player-live-top-actions">
<slot name="topRight"></slot>
</view>
</volc-live-player>
</view>
<Drawer id='volc-backRate-drawer'>
<dialog-content bindvalueChange="valueChange" type="backRate" list="{{backRateList}}" selected="{{playRate}}" />
</Drawer>
<Drawer id='volc-clarity-drawer'>
<dialog-content bindvalueChange="valueChange" type="clarity" list="{{videoType === 'live' ? liveAllowedSize : vodAllowedSize}}" selected="{{videoType === 'live' ? liveSelectedSize : vodSelectedSize }}" />
</Drawer>
</view>
@@ -0,0 +1 @@
.volc-video-container{position:relative;width:100%;height:100%}.videoContainer{width:100%;height:100%}.play-error-mask{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.5);z-index:2}.play-error-content{display:flex;flex-direction:column;align-items:center;justify-content:center}.play-error-text{color:#fff;font-size:calc(28rpx + .5 * (1rem - 16px));font-weight:500;padding:0 32rpx;text-align:center}.play-error-retry-btn{margin-top:24rpx;border-radius:44rpx;overflow:hidden}.video-item{position:absolute;top:0;left:0;width:100%;height:100%}.vod-poster-layer{z-index:1;background:#000}.replay-mask{position:absolute;height:100%;width:100%;top:0;left:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.5);z-index:2}.replay-btn{width:88px;height:88px;display:flex;flex-direction:column;align-items:center;border-radius:8px;padding-top:18px;padding-bottom:15px;background:rgba(0,0,0,.5);box-sizing:border-box}.replay-icon{width:40px;height:40px}.replay-text{font-weight:500;font-size:calc(14px + .5 * (1rem - 16px));line-height:calc(22px + .5 * (1rem - 16px));text-align:center;color:#fff}.video-icon-container{width:24px;height:24px;position:absolute;right:12px;bottom:12px}.video-icon{width:100%;height:100%}.volc-video-status{position:absolute;top:40rpx;right:30rpx;height:calc(44rpx + .5 * (1rem - 16px));line-height:calc(44rpx + .5 * (1rem - 16px));background:rgba(0,0,0,.4);border-radius:22rpx;color:#fff;font-size:calc(24rpx + .5 * (1rem - 16px));font-weight:500;opacity:.8;padding:0 16rpx;text-align:center;z-index:1}.room-landscape .volc-video-status{left:30rpx;right:auto}.room-landscape .volc-video-status-centered,.room-portrait .volc-video-status-centered,.volc-video-status-centered{top:50%;left:50%;right:auto;transform:translate(-50%,-50%);max-width:calc(100% - 64rpx);min-height:calc(84rpx + .5 * (1rem - 16px));border-radius:64rpx;display:flex;align-items:center;justify-content:center;font-size:calc(32rpx + .5 * (1rem - 16px));font-weight:400;padding:16rpx 64rpx;text-align:center;white-space:nowrap;box-sizing:border-box}.room-portrait .volc-video-status-centered{top:40%}.volc-video-left-top-row{position:absolute;top:40rpx;left:30rpx;z-index:2;display:flex;align-items:center;gap:12rpx}.volc-video-status-tag{display:flex;align-items:center;height:calc(36rpx + .5 * (1rem - 16px));padding:0 16rpx;border-radius:18rpx;background-color:rgba(0,0,0,.2);color:#fff;font-size:calc(20rpx + .5 * (1rem - 16px));font-weight:500;line-height:calc(36rpx + .5 * (1rem - 16px));box-sizing:border-box}.volc-video-status-tag-icon{position:relative;width:20rpx;height:20rpx;margin-right:4rpx}.volc-video-status-tag-icon-bar{position:absolute;bottom:2rpx;width:3rpx;border-radius:2rpx;background:#ff8383}.volc-video-status-tag-icon-bar-1{left:3rpx;height:13rpx}.volc-video-status-tag-icon-bar-2{left:9rpx;height:8rpx}.volc-video-status-tag-icon-bar-3{left:15rpx;height:12rpx}.chat-edit-icon-container{display:flex;align-items:center;position:absolute;right:28rpx;z-index:100;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.chat-edit-icon{align-items:center;font-size:calc(48rpx + .5 * (1rem - 16px));background-color:rgba(0,0,0,.14);border-radius:50%;display:flex;height:calc(35px + .5 * (1rem - 16px));justify-content:center;width:35px}.chat-edit-icon-mp{display:flex;align-items:center;justify-content:center}.chat-edit-more-body{display:flex;flex-flow:wrap;padding:42rpx 0 42rpx 30rpx;position:relative}.chat-edit-more-item{margin-bottom:16rpx;margin-right:16rpx;align-items:center;color:#d2d3d3;display:flex;flex-direction:column;font-size:calc(24rpx + .5 * (1rem - 16px));min-width:104rpx}.chat-edit-more-item-img{align-items:center;background-color:#2c2d30;border-radius:50%;display:flex;height:70rpx;justify-content:center;width:70rpx}.chat-edit-more-item-text{color:#d2d3d3;margin-top:8rpx;font-size:calc(24rpx + .5 * (1rem - 16px))}.chat-edit-more-footer{color:#757577;font-size:calc(32rpx + .5 * (1rem - 16px));padding:24rpx 0;text-align:center;border-top:1px solid #343434;padding-bottom:calc(24rpx + constant(safe-area-inset-bottom));padding-bottom:calc(24rpx + env(safe-area-inset-bottom))}.player-top-actions{position:absolute;top:24rpx;right:24rpx;z-index:20;opacity:.5}.player-live-top-actions{display:flex;align-items:center}
@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.syncPseudoLiveRuntime=exports.syncPseudoLivePlayhead=exports.resolvePseudoLiveTimeUpdateActions=exports.getPseudoLivePayload=exports.estimatePseudoLiveCurrentTime=exports.createPseudoLiveState=exports.PseudoLiveTimeUpdateAction=void 0;var _constant=require("../../utils/constant"),PseudoLiveTimeUpdateAction={SEEK:"seek",PLAYBACK_RATE:"playbackRate",FINISH:"finish"};exports.PseudoLiveTimeUpdateAction=PseudoLiveTimeUpdateAction;var createPseudoLiveState=function(){return{enabled:!1,pendingInitialSeek:!1,seekTime:0,currentLoopNumber:1,totalLoopNumber:1,offset:0,duration:0,localLoopNumber:1,currentLineIndex:0,playbackRate:1,finalEnded:!1,playheadTime:0,playheadUpdatedAtMs:0,playing:!1}};exports.createPseudoLiveState=createPseudoLiveState;var getPseudoLivePayload=function(e){var o,t,i,a=(null==e?void 0:e.Basic)||{},n=null==e||null===(o=e.VodLoopVideoConfig)||void 0===o||null===(t=o.LineConfigs)||void 0===t?void 0:t[0],r=null==n||null===(i=n.VodLoopVideos)||void 0===i?void 0:i[0];return a.Status===_constant.LIVE_STATUS.直播&&a.IsVodLoopVideoEnable&&n&&r?{lineConfig:n,loopVideo:r}:null};exports.getPseudoLivePayload=getPseudoLivePayload;var syncPseudoLiveRuntime=function(e,o){var t,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=getPseudoLivePayload(o);if(!a)return null;var n=e||createPseudoLiveState(),r=a.lineConfig,u=a.loopVideo,d=null!==(t=i.currentLineIndex)&&void 0!==t?t:0,s=Number((null==r?void 0:r.CurrentLoopNumber)||1),l=Number((null==r?void 0:r.TotalLoopNumber)||1),p=Number((null==u?void 0:u.Offset)||0),v=Number((null==u?void 0:u.Duration)||0),m=i.resetLocalLoop||!n.enabled||n.currentLineIndex!==d,L=n.currentLoopNumber!==s||n.totalLoopNumber!==l||n.offset!==p||n.duration!==v;return n.enabled=!0,n.currentLineIndex=d,n.seekTime=Number((null==u?void 0:u.SeekTime)||0),n.currentLoopNumber=s,n.totalLoopNumber=l,n.offset=p,n.duration=v,(m||L||i.pendingInitialSeek)&&(n.finalEnded=!1),m&&(n.localLoopNumber=n.currentLoopNumber),i.pendingInitialSeek&&(n.pendingInitialSeek=!0,n.playbackRate=1),n};exports.syncPseudoLiveRuntime=syncPseudoLiveRuntime;var estimatePseudoLiveCurrentTime=function(e){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),t=Number((null==e?void 0:e.playheadTime)||0),i=Number((null==e?void 0:e.playbackRate)||1),a=Number((null==e?void 0:e.playheadUpdatedAtMs)||0);return null==e||!e.playing||!a||!Number.isFinite(i)||i<=0?t:t+Math.max(0,o-a)/1e3*i};exports.estimatePseudoLiveCurrentTime=estimatePseudoLiveCurrentTime;var syncPseudoLivePlayhead=function(e,o){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e)return null;var i=t.nowMs||Date.now(),a=Number(o),n=void 0!==o&&Number.isFinite(a)?a:estimatePseudoLiveCurrentTime(e,i);e.playheadTime=n>=0?n:0,e.playheadUpdatedAtMs=i,"boolean"==typeof t.playing&&(e.playing=t.playing);var r=Number(t.playbackRate);return Number.isFinite(r)&&r>0&&(e.playbackRate=r),e};exports.syncPseudoLivePlayhead=syncPseudoLivePlayhead;var resolvePseudoLiveTimeUpdateActions=function(e,o){if(null==e||!e.enabled)return[];var t=[],i=Number(e.seekTime||0);if(e.localLoopNumber!==e.currentLoopNumber)return e.localLoopNumber=e.currentLoopNumber,[{type:PseudoLiveTimeUpdateAction.SEEK,time:i,reason:"loop_number_changed",targetTime:i}];var a=i-o;return a>=60?t.push({type:PseudoLiveTimeUpdateAction.SEEK,time:i,reason:"gap_gte_60",gapTime:a,targetTime:i}):a>10?t.push({type:PseudoLiveTimeUpdateAction.PLAYBACK_RATE,rate:1.2,reason:"gap_gt_10",gapTime:a,targetTime:i}):a<3&&t.push({type:PseudoLiveTimeUpdateAction.PLAYBACK_RATE,rate:1,reason:"gap_lt_3",gapTime:a,targetTime:i}),e.currentLoopNumber>=e.totalLoopNumber&&e.duration>0&&o>=e.duration&&t.push({type:PseudoLiveTimeUpdateAction.FINISH}),t};exports.resolvePseudoLiveTimeUpdateActions=resolvePseudoLiveTimeUpdateActions;
@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.createPlayerStateManager=exports.PlayerStateManager=void 0;var _types=require("./types");function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,i)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){_defineProperty(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function _defineProperty(e,t,r){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,_toPropertyKey(i.key),i)}}function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _toPropertyKey(e){var t=_toPrimitive(e,"string");return"symbol"===_typeof(t)?t:String(t)}function _toPrimitive(e,t){if("object"!==_typeof(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!==_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}var createInitialLiveState=function(){return{lineIndex:0,line:null,definition:"",candidates:null,candidateIndex:0,roundIndex:1,retryIndex:0,protocol:"",fromPrimary:!0,attemptId:0,attemptReportedFailed:!1,pendingSwitch:null,pendingQuality:null,lastPerfTriggerMs:0,lastNetStatusInfo:null,playerParams:{startPlay:0,firstFrame:0,playUrl:"",attemptId:0}}},createInitialVodState=function(){return{params:{startPlay:0,firstFrame:0,vid:"",playUrl:""},attemptId:0,attemptReportedFailed:!1,switchPending:null,switchRetryIndex:0,backupUrl:"",usingBackup:!1,backupMap:null}},PlayerStateManager=function(){function e(){_classCallCheck(this,e),this._liveState=createInitialLiveState(),this._vodState=createInitialVodState(),this._videoType="",this._lastVideoType=""}return _createClass(e,[{key:"videoType",get:function(){return this._videoType},set:function(e){this._lastVideoType=this._videoType,this._videoType=e}},{key:"lastVideoType",get:function(){return this._lastVideoType}},{key:"liveState",get:function(){return this._liveState}},{key:"vodState",get:function(){return this._vodState}},{key:"getLiveSessionSnapshot",value:function(){return{lineIndex:this._liveState.lineIndex||0,line:this._liveState.line||null,definition:this._liveState.definition||"",candidates:Array.isArray(this._liveState.candidates)?this._liveState.candidates:[],candidateIndex:this._liveState.candidateIndex||0,roundIndex:this._liveState.roundIndex||0,retryIndex:this._liveState.retryIndex||0,protocol:this._liveState.protocol||"",fromPrimary:!1!==this._liveState.fromPrimary}}},{key:"resetLiveRuntimeState",value:function(e){var t=null!=e&&e.keepQualityPending?this._liveState.pendingQuality:null;this._liveState=_objectSpread(_objectSpread({},createInitialLiveState()),{},{pendingQuality:t})}},{key:"resetVodRuntimeState",value:function(){this._vodState=createInitialVodState()}},{key:"updateLiveState",value:function(e){this._liveState=_objectSpread(_objectSpread({},this._liveState),e)}},{key:"updateVodState",value:function(e){this._vodState=_objectSpread(_objectSpread({},this._vodState),e)}},{key:"isLivePlaying",value:function(){return this._videoType===_types.VideoType.LIVE}},{key:"isVodPlaying",value:function(){return this._videoType===_types.VideoType.VOD}},{key:"isPrevPlayable",value:function(){return this._lastVideoType===_types.VideoType.LIVE||this._lastVideoType===_types.VideoType.VOD}}]),e}();exports.PlayerStateManager=PlayerStateManager;var createPlayerStateManager=function(){return new PlayerStateManager};exports.createPlayerStateManager=createPlayerStateManager;
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VideoType=exports.SwitchReason=exports.Protocol=exports.LiveStateCode=exports.LivePusherStateCode=exports.LIVE_PLAYER_ERROR_CODES=exports.HeartbeatAction=exports.FailureReason=void 0;var VideoType={LIVE:"live",VOD:"vod",POSTER:"poster"};exports.VideoType=VideoType;var LiveStateCode={SUCCESS:2003,CONNECTED:2001,CONNECTED_PULL:2002,FIRST_VIDEO_PACKET:2003,BEGIN_PLAY:2004,PLAY_PROGRESS:2005,PLAY_ENDED:2006,LOADING_START:2007,DECODER_START:2008,RESOLUTION_CHANGED:2009,NETWORK_RECONNECTING:2103,STALL:2105,DECODE_VIDEO_ERROR:2101,DECODE_AUDIO_ERROR:2102,NETWORK_UNSTABLE:2104,HARD_DECODE_START_FAIL:2106,VIDEO_FRAME_DISCONTINUOUS:2107,HARD_DECODE_FIRST_I_FRAME_FAIL:2108,RTMP_DNS_ERROR:3001,RTMP_CONNECT_ERROR:3002,RTMP_HANDSHAKE_ERROR:3003,RTMP_RW_ERROR:3005,NETWORK_DISCONNECT:-2301,GET_URL_ERROR:-2302};exports.LiveStateCode=LiveStateCode;var LivePusherStateCode={ENCODER_START:1008,NETWORK_DISCONNECT:-1307};exports.LivePusherStateCode=LivePusherStateCode;var FailureReason={STALL_THRESHOLD:"stall_threshold",WAITING_THRESHOLD:"waiting_threshold",LOADING_TIMEOUT:"loading_timeout",FAIL_TIMEOUT:"fail_timeout",LIVE_ERROR:"live_error",VOD_PLAY_FAILED:"vod_play_failed",STATE_ERROR:"state_error"};exports.FailureReason=FailureReason;var SwitchReason={INIT:"init",QUALITY_DOWNGRADE:"quality_downgrade",MANUAL_DEFINITION:"manual_definition",STALL_THRESHOLD:"stall_threshold",WAITING_THRESHOLD:"waiting_threshold",LOADING_TIMEOUT:"loading_timeout",STATE_ERROR:"state_error"};exports.SwitchReason=SwitchReason;var Protocol={FLV:"flv",RTMP:"rtmp"};exports.Protocol=Protocol;var HeartbeatAction={PLAY:"play",TICK:"tick",PAUSE:"pause",ENDED:"ended"};exports.HeartbeatAction=HeartbeatAction;var LIVE_PLAYER_ERROR_CODES=[LiveStateCode.DECODE_VIDEO_ERROR,LiveStateCode.DECODE_AUDIO_ERROR,LiveStateCode.NETWORK_UNSTABLE,LiveStateCode.RTMP_DNS_ERROR,LiveStateCode.RTMP_CONNECT_ERROR,LiveStateCode.RTMP_HANDSHAKE_ERROR,LiveStateCode.RTMP_RW_ERROR,LiveStateCode.NETWORK_DISCONNECT,LiveStateCode.GET_URL_ERROR];exports.LIVE_PLAYER_ERROR_CODES=LIVE_PLAYER_ERROR_CODES;
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseLiveStateResolutionChangeMessage=exports.getVideoErrorRetryAction=exports.VideoErrorRetryAction=void 0;var parseLiveStateResolutionChangeMessage=function(r){var e=r.match(/resolution:(\d+)x(\d+)/);return e?{width:Number(e[1]),height:Number(e[2])}:null};exports.parseLiveStateResolutionChangeMessage=parseLiveStateResolutionChangeMessage;var VIDEO_REPORT_ONLY_ERROR_PATTERNS=[/bufferSeekOverhole/i,/bufferStalledError/i,/bufferNudgeOnStall/i],VIDEO_RETRYABLE_ERROR_PATTERNS=[/MEDIA_ERR_NETWORK/i,/networkError/i,/fragLoadError/i,/manifestLoadError/i,/fragParsingError/i,/fragLoopLoadingError/i],VIDEO_RESTART_ERROR_PATTERNS=[/MEDIA_ERR_DECODE/i,/MEDIA_ERR_SRC_NOT_SUPPORTED/i],VIDEO_NON_RETRYABLE_ERROR_PATTERNS=[],VideoErrorRetryAction={NONE:"none",PLAY:"play",REPORT_ONLY:"report_only",RESTART:"restart"};exports.VideoErrorRetryAction=VideoErrorRetryAction;var getVideoErrorRetryAction=function(r,e){var o="".concat(e||""," ").concat((null==r?void 0:r.errMsg)||""," ").concat((null==r?void 0:r.message)||""," ").concat((null==r?void 0:r.msg)||"");return VIDEO_NON_RETRYABLE_ERROR_PATTERNS.some(function(r){return r.test(o)})?VideoErrorRetryAction.NONE:VIDEO_REPORT_ONLY_ERROR_PATTERNS.some(function(r){return r.test(o)})?VideoErrorRetryAction.REPORT_ONLY:VIDEO_RESTART_ERROR_PATTERNS.some(function(r){return r.test(o)})?VideoErrorRetryAction.RESTART:(VIDEO_RETRYABLE_ERROR_PATTERNS.some(function(r){return r.test(o)}),VideoErrorRetryAction.PLAY)};exports.getVideoErrorRetryAction=getVideoErrorRetryAction;
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"component":true,"usingComponents":{"volc-loading":"../../../pubComponents/loading/loading"}}
@@ -0,0 +1,66 @@
<view class="volc-live-player-container">
<video
class="volc-live-player"
wx:if="{{engine === 'video'}}"
id="innerLiveVideo"
src="{{src}}"
is-live="{{true}}"
autoplay="{{true}}"
controls="{{false}}"
show-center-play-btn="{{false}}"
show-play-btn="{{false}}"
enable-progress-gesture="{{false}}"
show-fullscreen-btn="{{false}}"
show-background-playback-button="{{false}}"
object-fit="{{objectFit}}"
picture-in-picture-mode="{{pictureInPictureMode}}"
bindplay="handlePlay"
bindpause="handlePause"
binderror="handleError"
bindfullscreenchange="handleFullscreenChange"
bindwaiting="handleWaiting"
bindloadedmetadata="handleLoadedMetaData"
bindenterpictureinpicture="handleEnterPictureInPicture"
bindleavepictureinpicture="handleLeavePictureInPicture"
bindprogress="handleProgress"
bindtimeupdate="handleTimeUpdate"
bindended="handleEnded"
>
<slot />
<view wx:if="{{showControls}}" class="volc-live-player-tap-layer" bindtap="_handleTapLayerTap"></view>
<view
wx:if="{{showControls && controlsVisible}}"
class="volc-live-player-controls {{isFullscreen ? 'is-fullscreen' : ''}}"
catchtap="_handleControlsTap"
>
<view class="volc-live-player-top">
<view class="volc-live-player-top-right-slot">
<slot name="topRight" />
</view>
</view>
<view class="volc-live-player-controls-bottom-shadow"></view>
<view class="volc-live-player-controls-top-shadow"></view>
<view wx:if="{{showPlayControl}}" class="volc-live-player-play" bindtap="_togglePlay">
<image
class="volc-live-player-play-icon"
src="{{isPlaying ? '../../../assets/mobilePause.svg' : '../../../assets/mobilePlay.svg'}}"
mode="aspectFit"
/>
</view>
<view
wx:if="{{showFullscreenControl}}"
class="volc-live-player-fullscreen"
bindtap="_toggleFullscreen"
>
<image
class="volc-live-player-fullscreen-icon"
src="{{isFullscreen ? '../assets/mobileExitFullscreen.svg' : '../assets/mobileFullscreen.svg'}}"
/>
</view>
</view>
<volc-loading wx:if="{{isLoading}}" zIndex="{{15}}" theme="dark" type="player" />
</video>
</view>
@@ -0,0 +1 @@
.volc-live-player-container{position:relative;width:100%;height:100%}.volc-live-player{width:100%;height:100%}.volc-live-player-tap-layer{position:absolute;top:0;left:0;width:100%;height:100%;z-index:5}.volc-live-player-controls{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.volc-live-player-top{position:absolute;width:100%;height:100rpx;left:0;top:0;z-index:11}.volc-live-player-top-right-slot{position:absolute;top:24rpx;right:24rpx}.volc-live-player-controls-bottom-shadow{position:absolute;left:0;bottom:0;width:100%;height:100rpx;background:linear-gradient(to top,rgba(0,0,0,.25),rgba(0,0,0,0))}.volc-live-player-controls-top-shadow{position:absolute;top:0;left:0;width:100%;height:100rpx;background:linear-gradient(to bottom,rgba(0,0,0,.25),rgba(0,0,0,0))}.volc-live-player-play{position:absolute;left:24rpx;bottom:24rpx;width:56rpx;height:56rpx;display:flex;align-items:center;justify-content:center}.volc-live-player-play-icon{width:32px;height:32px}.volc-live-player-fullscreen{position:absolute;right:24rpx;bottom:24rpx;width:56rpx;height:56rpx;display:flex;align-items:center;justify-content:center}.volc-live-player-fullscreen-icon{width:32px;height:32px}