UNPKG

nadesiko3

Version:
109 lines (107 loc) 3.39 kB
// @ts-nocheck import { NakoSystem } from '../core/src/plugin_api.mjs' export default { // @カメラ 'カメラオプション': { type: 'const', value: { video: true, audio: false } }, // @かめらおぷしょん 'カメラ起動': { // @カメラを起動する // @かめらきどう type: 'func', josi: [['の', 'に', 'へ', 'で']], pure: true, asyncFn: true, fn: async function(v: any, sys: NakoSystem) { const options = sys.__getSysVar('カメラオプション') const stream = await navigator.mediaDevices.getUserMedia(options) v.srcObject = stream const settings = sys.__exec('カメラ設定取得', [v, sys]) if (settings.width && settings.height) { v.width = settings.width v.height = settings.height } v.onloadedmetadata = function() { v.play() } sys.tags.usingCamera = true sys.tags.video = v }, return_none: true }, 'カメラ終了': { // @カメラを終了 // @かめらしゅうりょう type: 'func', josi: [['の']], pure: true, fn: function(v: any, sys: NakoSystem) { if (v) { sys.__exec('メディアストリーム停止', [v, sys]) v.srcObject = null } sys.tags.usingCamera = false sys.tags.video = null }, return_none: true }, 'カメラ映像再生': { // @カメラ映像を再生する // @かめらえいぞうさいせい type: 'func', josi: [['の']], pure: true, fn: function(v: any, sys: NakoSystem) { if (v && v.play) { v.play() } }, return_none: true }, 'カメラ映像一時停止': { // @カメラ映像の再生を一時停止する // @かめらえいぞういちじていし type: 'func', josi: [['の']], pure: true, fn: function(v: any, sys: NakoSystem) { if (v && v.pause) { v.pause() } }, return_none: true }, 'カメラ設定取得': { // @カメラ設定を取得して返す // @かめらせっていしゅとく type: 'func', josi: [['の']], pure: true, fn: function(v: any, sys: NakoSystem) { if (v && v.srcObject && v.srcObject.getVideoTracks) { const tracks = v.srcObject.getVideoTracks() if (tracks.length > 0) { const settings = tracks[0].getSettings() return settings } return {} } return {} }, return_none: false }, 'メディアストリーム取得': { // @メディアストリームを取得して返す(カメラオプションを参照) // @めでぃあすとりーむしゅとく type: 'func', josi: [], pure: true, asyncFn: true, fn: async function(sys: NakoSystem) { const options = sys.__getSysVar('カメラオプション') const stream = await navigator.mediaDevices.getUserMedia(options) return stream }, return_none: false }, 'メディアストリーム停止': { // @メディアストリームを停止する // @めでぃあすとりーむていし type: 'func', josi: [['の']], pure: true, fn: function(v:any, sys: NakoSystem) { if (v && v.srcObject && v.srcObject.getVideoTracks) { const tracks = v.srcObject.getVideoTracks() for (const track of tracks) { track.stop() } } }, return_none: false } }