UNPKG

jsdk-offical

Version:

JSDK is the most comprehensive TypeScript framework, like JDK.

281 lines (280 loc) 9.53 kB
//# sourceURL=../dist/jsmedia.js //JSDK 2.7.0 MIT var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var JS; (function (JS) { let media; (function (media) { class AudioCache { constructor(init) { this._init = init; this._cache = new DataCache({ name: init.name }); } _load(id, url) { let m = this; return Promises.create(function () { Http.get({ url: url, responseType: 'arraybuffer', success: res => { m.set(id, res.data).then(() => { this.resolve(); }); } }).catch(res => { if (m._init.loaderror) m._init.loaderror.call(m, res); }); }); } load(imgs) { let ms = Types.isArray(imgs) ? imgs : [imgs], plans = []; ms.forEach(img => { plans.push(Promises.newPlan(this._load, [img.id, img.url], this)); }); return Promises.order(plans); } get(id) { return __awaiter(this, void 0, void 0, function* () { return yield this._cache.read(id); }); } set(id, data) { return __awaiter(this, void 0, void 0, function* () { return yield this._cache.write({ id: id, data: data }); }); } has(id) { return __awaiter(this, void 0, void 0, function* () { return yield this._cache.hasKey(id); }); } clear() { return __awaiter(this, void 0, void 0, function* () { yield this._cache.clear(); }); } destroy() { return __awaiter(this, void 0, void 0, function* () { yield this._cache.destroy(); }); } } media.AudioCache = AudioCache; })(media = JS.media || (JS.media = {})); })(JS || (JS = {})); var AudioCache = JS.media.AudioCache; var JS; (function (JS) { let media; (function (media) { let W = window, A = W.AudioContext || W['msAudioContext'], AC = new A(); class AudioPro { constructor(init) { this._init = Jsons.union({ volume: 1, loop: false }, init); } static play(id, cache) { new AudioPro().play(id, cache); } loop(is) { let m = this; if (is == void 0) return m._init.loop; m._init.loop = is; m._node.loop = is; return m; } _play(a) { let m = this; m.stop(); m._gain = AC.createGain(); m._gain.gain.value = m._init.volume; m._node = AC.createBufferSource(); m._node.buffer = a; let c = m._init; m._node.loop = c.loop; if (c.played) m._node.onended = e => { m._dispose(); c.played.call(m); }; m._node.connect(m._gain); if (c.handler) { let node = c.handler.call(m, AC); m._gain.connect(node); node.connect(AC.destination); } else { m._gain.connect(AC.destination); } if (c.playing) c.playing.call(m); m._node.start(); } play(a, cache) { if (typeof a == 'string') { cache.get(a).then(buf => { this.play(buf); }); } else { if (a) AC.decodeAudioData(a, (buffer) => { this._play(buffer); }, err => { JSLogger.error('Decode audio buffer fail!'); }); } } stop() { if (this._node) this._node.stop(); } volume(n) { let m = this; m._init.volume = n; if (m._gain) m._gain.gain.value = n; } _dispose() { let m = this; m._gain.disconnect(); m._node.disconnect(); } } media.AudioPro = AudioPro; })(media = JS.media || (JS.media = {})); })(JS || (JS = {})); var AudioPro = JS.media.AudioPro; var JS; (function (JS) { let media; (function (media) { class VideoPlayer { constructor(c) { let T = this; T._c = Jsons.union({ controls: true, autoplay: false, loop: false, muted: false, preload: 'auto' }, c); T._src = T._c.src; let el = $1('#' + T._c.id); if (el) { T._el = el; Jsons.forEach(T._c, (v, k) => { if (k != 'id' && k != 'ctor' && k != 'on') T._el.attr(k, v); }); } else { let ctr = (Types.isString(T._c.appendTo) ? $1(T._c.appendTo) : T._c.appendTo) || document.body, id = T._c.id || Random.uuid(4); ctr.append(Strings.nodeHTML('video', { id: id, controls: T._c.controls, loop: T._c.loop, muted: T._c.muted, preload: T._c.preload, poster: T._c.poster, width: T._c.width, height: T._c.height, src: T._c.src })); this._el = $1(`#${id}`); } if (T._c.on) Jsons.forEach(T._c.on, (v, k) => { this.on(k, v); }); } src(src) { let T = this; if (!src) return T._src; T._src = src; T._el.src = src; T._el.load(); return T; } currentTime(t) { return this._gs('currentTime', t); } defaultPlaybackRate(r) { return this._gs('defaultPlaybackRate', r); } playbackRate(r) { return this._gs('playbackRate', r); } defaultMuted(is) { return this._gs('defaultMuted', is); } muted(is) { return this._gs('muted', is); } duration() { return this._el.duration; } play() { return this._el.play(); } paused() { return this._el.paused; } ended() { return this._el.ended; } error() { return this._el.error; } loop(is) { return this._gs('loop', is); } played() { return this._el.played; } volume(v) { return this._gs('volume', v); } pause() { this._el.pause(); return this; } preload(s) { return this._gs('preload', s); } crossOrigin(s) { return this._gs('crossOrigin', s); } _gs(p, v) { if (v == void 0) return this._el[p]; this._el[p] = v; return this; } canPlayType(type) { return this._el.canPlayType(type); } on(e, fn) { this._el['on' + e] = fn; } } media.VideoPlayer = VideoPlayer; })(media = JS.media || (JS.media = {})); })(JS || (JS = {})); var VideoPlayer = JS.media.VideoPlayer;