taro-hooks
Version:
为 Taro 而设计的 Hooks Library
57 lines (56 loc) • 1.78 kB
JavaScript
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.INITOPTION = void 0;
var tslib_1 = require("tslib");
var taro_1 = require("@tarojs/taro");
var core_1 = require("@taro-hooks/core");
var utils_1 = require("./utils");
var usePromise_1 = tslib_1.__importDefault(require("../usePromise"));
exports.INITOPTION = {
autoplay: false,
loop: false,
obeyMuteSwitch: true,
playbackRate: 1,
volume: 1,
startTime: 0
};
function useAudio(initOption) {
if (initOption === void 0) {
initOption = exports.INITOPTION;
}
var audioContext = (0, core_1.useRef)((0, taro_1.createInnerAudioContext)());
var sources = (0, core_1.useRef)();
var setOption = (0, usePromise_1["default"])(utils_1.setInnerAudioOption);
var getSourceAsync = (0, usePromise_1["default"])(taro_1.getAvailableAudioSources);
var getSources = function getSources() {
return getSourceAsync().then(function (res) {
sources.current = res.audioSources;
return res;
});
};
(0, core_1.useEffect)(function () {
setOption(_extends({}, initOption, {
context: audioContext.current
}));
getSources();
}, [initOption]);
var play = function play(src) {
if (audioContext.current) {
if (src) {
setOption({
src: src
});
}
audioContext.current.play();
}
};
return [audioContext.current, {
sources: sources.current,
setOption: setOption,
play: play
}];
}
exports["default"] = useAudio;
;