UNPKG

taro-hooks

Version:
57 lines (56 loc) 1.78 kB
"use strict"; 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;