{"version":3,"file":"js/app.a1fe4f14.js","mappings":"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","sources":["webpack://web_sim/./src/App.vue?4b50","webpack://web_sim/./src/components/CustomRadio.vue?3f9a","webpack://web_sim/./src/components/CustomRadio.vue?bc1f","webpack://web_sim/./src/components/CustomRadio.vue","webpack://web_sim/./src/composables/useAudio.ts","webpack://web_sim/./src/App.vue?847a","webpack://web_sim/./src/App.vue","webpack://web_sim/./src/main.ts","webpack://web_sim/webpack/bootstrap","webpack://web_sim/webpack/runtime/chunk loaded","webpack://web_sim/webpack/runtime/compat get default export","webpack://web_sim/webpack/runtime/define property getters","webpack://web_sim/webpack/runtime/global","webpack://web_sim/webpack/runtime/hasOwnProperty shorthand","webpack://web_sim/webpack/runtime/publicPath","webpack://web_sim/webpack/runtime/jsonp chunk loading","webpack://web_sim/webpack/startup"],"sourcesContent":["import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, Fragment as _Fragment } from \"vue\"\nimport _imports_0 from '@/assets/images/image_profile_0.png'\nimport _imports_1 from '@/assets/images/image_profile_1.png'\nimport _imports_2 from '@/assets/images/image_profile_2.png'\nimport _imports_3 from '@/assets/images/icon_wave.svg'\nimport _imports_4 from '@/assets/images/icon_pause.svg'\nimport _imports_5 from '@/assets/images/icon_play.svg'\nimport _imports_6 from '@/assets/images/icon_ear.svg'\n\n\nconst _hoisted_1 = {\n key: 2,\n class: \"pending\"\n}\nconst _hoisted_2 = {\n key: 3,\n class: \"persona\"\n}\nconst _hoisted_3 = {\n key: 0,\n src: _imports_0\n}\nconst _hoisted_4 = {\n key: 1,\n src: _imports_1\n}\nconst _hoisted_5 = {\n key: 2,\n src: _imports_2\n}\nconst _hoisted_6 = { key: 6 }\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"img\", {\n class: \"wave-img\",\n src: _imports_3\n}, null, -1)\nconst _hoisted_9 = {\n key: 0,\n class: \"proc-label\"\n}\nconst _hoisted_10 = {\n key: 1,\n class: \"proc-label\"\n}\nconst _hoisted_11 = [\"disabled\"]\nconst _hoisted_12 = {\n key: 0,\n class: \"transport-img\",\n src: _imports_4\n}\nconst _hoisted_13 = {\n key: 1,\n class: \"transport-img\",\n src: _imports_5\n}\nconst _hoisted_14 = {\n key: 7,\n class: \"blah\"\n}\nconst _hoisted_15 = {\n key: 8,\n class: \"blah\",\n style: {\"color\":\"red\"}\n}\nconst _hoisted_16 = {\n key: 9,\n class: \"blah\"\n}\nconst _hoisted_17 = /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_6 }, null, -1)\nconst _hoisted_18 = [\n _hoisted_17\n]\nconst _hoisted_19 = {\n key: 0,\n class: \"bla-label\"\n}\nconst _hoisted_20 = {\n key: 1,\n class: \"bla-label\"\n}\nconst _hoisted_21 = {\n key: 2,\n class: \"bla-label\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_CustomRadio = _resolveComponent(\"CustomRadio\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_ctx.status.fetchPending.value)\n ? (_openBlock(), _createBlock(_component_CustomRadio, {\n key: 0,\n class: \"people\",\n cats: ['...', '...', '...'],\n initial_idx: _ctx.personaIdx\n }, null, 8, [\"cats\", \"initial_idx\"]))\n : (_openBlock(), _createBlock(_component_CustomRadio, {\n key: 1,\n class: \"people\",\n cats: ['Mark', 'Emma', 'Tom'],\n onSelection: _ctx.handlePersonSelect,\n initial_idx: _ctx.personaIdx\n }, null, 8, [\"onSelection\", \"initial_idx\"])),\n (_ctx.status.fetchPending.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, \" Loading (\" + _toDisplayString(Math.floor(100.0 * _ctx.status.numLoaded.value / _ctx.status.NUM_FILES)) + \"%)... \", 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_ctx.personaIdx == 0)\n ? (_openBlock(), _createElementBlock(\"img\", _hoisted_3))\n : _createCommentVNode(\"\", true),\n (_ctx.personaIdx == 1)\n ? (_openBlock(), _createElementBlock(\"img\", _hoisted_4))\n : _createCommentVNode(\"\", true),\n (_ctx.personaIdx == 2)\n ? (_openBlock(), _createElementBlock(\"img\", _hoisted_5))\n : _createCommentVNode(\"\", true),\n (_ctx.isPlay)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 3,\n class: _normalizeClass({playMusic: _ctx.contentIdx==0, playSpeech: _ctx.contentIdx==1})\n }, null, 2))\n : _createCommentVNode(\"\", true),\n (_ctx.isProc && _ctx.isPlay)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 4,\n class: _normalizeClass({procMusic: _ctx.contentIdx==0, procSpeech: _ctx.contentIdx==1})\n }, null, 2))\n : _createCommentVNode(\"\", true)\n ])),\n (_ctx.status.fetchPending.value)\n ? (_openBlock(), _createBlock(_component_CustomRadio, {\n key: 4,\n class: \"content\",\n cats: ['...', '...'],\n initial_idx: _ctx.contentIdx\n }, null, 8, [\"cats\", \"initial_idx\"]))\n : (_openBlock(), _createBlock(_component_CustomRadio, {\n key: 5,\n class: \"content\",\n cats: ['Music', 'Movie'],\n onSelection: _ctx.handleContentSelect,\n initial_idx: _ctx.contentIdx\n }, null, 8, [\"onSelection\", \"initial_idx\"])),\n (!_ctx.status.fetchPending.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", {\n class: _normalizeClass([\"proc-toggle\", {procOn: _ctx.isProc, procOff: !_ctx.isProc}]),\n disabled: _ctx.status.fetchPending.value,\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.handleProcSelect && _ctx.handleProcSelect(...args)))\n }, [\n _hoisted_8,\n (_ctx.isProc)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_9, \"ON\"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_10, \"OFF\"))\n ], 10, _hoisted_7),\n _createElementVNode(\"button\", {\n class: _normalizeClass([\"play-toggle\", {procOn: _ctx.isProc, procOff: !_ctx.isProc}]),\n disabled: _ctx.status.fetchPending.value || _ctx.status.suspendPending.value,\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.isPlay=!_ctx.isPlay))\n }, [\n (_ctx.isPlay)\n ? (_openBlock(), _createElementBlock(\"img\", _hoisted_12))\n : (_openBlock(), _createElementBlock(\"img\", _hoisted_13))\n ], 10, _hoisted_11)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.status.fetchPending.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, \" Just a moment \"))\n : (_ctx.status.fetchError.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, _toDisplayString(_ctx.status.fetchError), 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createElementVNode(\"div\", {\n class: _normalizeClass({earImg: true, earGreen: _ctx.personaIdx==0, earYellow: _ctx.personaIdx==1, earRed: _ctx.personaIdx==2 })\n }, _hoisted_18, 2),\n (_ctx.personaIdx == 0)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_19, \" Mark hears great but may occasionally miss a specific sound detail at a very low volume or in adverse listening situations, such as noise. \"))\n : _createCommentVNode(\"\", true),\n (_ctx.personaIdx == 1)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_20, \" Emma hears well but may increasingly notice mild difficulty hearing certain sounds or people, especially when the listening situation is not ideal. \"))\n : _createCommentVNode(\"\", true),\n (_ctx.personaIdx == 2)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_21, \" Tom may regularly notice difficulty hearing quiet sounds and following dialogue in daily life or when watching TV. Music sounds somewhat muffled. \"))\n : _createCommentVNode(\"\", true)\n ]))\n ], 64))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = [\"onClick\", \"disabled\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.props.cats, (cat, idx) => {\n return (_openBlock(), _createElementBlock(\"section\", { key: idx }, [\n _createElementVNode(\"button\", {\n onClick: ($event: any) => (_ctx.handleClick(idx)),\n disabled: idx==_ctx.selectedIdx\n }, _toDisplayString(cat), 9, _hoisted_1)\n ]))\n }), 128))\n ]))\n}","\nimport { defineComponent, ref } from 'vue';\n\nexport default defineComponent({\n name: 'CustomRadio',\n components: {},\n props: {\n cats: { \n type: Array, \n required: true \n },\n initial_idx: { \n type: Number, \n required: false \n },\n\n },\n emits: [\"selection\"],\n setup(props, { emit }) {\n const selectedIdx = ref(props.initial_idx ? props.initial_idx : 0)\n\n const handleClick = (idx: number) => {\n selectedIdx.value = idx\n emit('selection', idx)\n }\n\n return {\n handleClick,\n props, selectedIdx\n }\n }\n});\n","import { render } from \"./CustomRadio.vue?vue&type=template&id=7f043586&ts=true&lang=true\"\nimport script from \"./CustomRadio.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomRadio.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\SoundDemo_WEB-share\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// © 2023 Mimi Hearing Technologies GmbH. All rights reserved.\n\nimport { ref } from 'vue'\nimport oggmentedAudioContext from 'oggmented'\n\nconst fetchError = ref(null)\nconst fetchPending = ref(false)\nconst suspendPending = ref(false)\nconst numLoaded = ref(0.0)\n\nconst NUM_PERSONAS = 3;\nconst NUM_TRACKS = 2;\nconst NUM_FILES = NUM_PERSONAS * NUM_TRACKS * 2;\n\nconst audioCtx = new oggmentedAudioContext()\n\nconst sourceNodes: AudioBufferSourceNode[] = [];\nconst gainNodes: GainNode[] = [];\n\nlet personaIdx = 0;\nlet trackIdx = 0;\nlet isProc = false;\n\nlet initialPlay = true\n\n// Check if the browser is capable of a-rate parameter changes\nconst CAVEMAN_BROWSER = audioCtx.createGain().gain.cancelAndHoldAtTime===undefined\n\nconst play = () => { \n if (initialPlay) {\n const startTime = audioCtx.currentTime + 0.25; // give us an epoch to get everything in order async\n sourceNodes.forEach(el => el.start(startTime));\n initialPlay = false\n } else { \n audioCtx.resume(); \n }\n\n const now = audioCtx.currentTime\n const FADE_SECONDS = 1;\n gainNodes.forEach(el => { \n if(!CAVEMAN_BROWSER) {\n el.gain.cancelScheduledValues(now);\n } \n \n el.gain.value = 0; \n });\n if(CAVEMAN_BROWSER) {\n gainNodes[getTargetIdx()].gain.value = 1 \n } else {\n gainNodes[getTargetIdx()].gain.linearRampToValueAtTime(1, now+FADE_SECONDS)\n }\n}\n\nconst stop = async () => {\n if(!CAVEMAN_BROWSER) {\n const now = audioCtx.currentTime\n const FADE_SECONDS = 0.25;\n gainNodes.forEach(el => { \n el.gain.cancelAndHoldAtTime(now);\n el.gain.linearRampToValueAtTime(0, now+FADE_SECONDS)\n });\n\n suspendPending.value = true\n // actually wait for this fade to happen before suspend\n await new Promise(r => setTimeout(r, 1000*FADE_SECONDS+50));\n }\n await audioCtx.suspend();\n suspendPending.value = false\n}\n\nconst setPersona = (idx: number) => {\n // console.log(`Setting persona to ${idx}`)\n personaIdx = idx;\n if(CAVEMAN_BROWSER) {\n setGainsAbruptly()\n } else {\n setGainsGracefully(true)\n } \n}\n\nconst setTrack = (idx: number) => {\n // console.log(`Setting track to ${idx}`)\n trackIdx = idx;\n if(CAVEMAN_BROWSER) {\n setGainsAbruptly()\n } else {\n setGainsGracefully(false, 1)\n } \n}\n\nconst setProcessing = (val: boolean) => {\n // console.log(`Setting processing to ${val}`)\n isProc = val\n if(CAVEMAN_BROWSER) {\n setGainsAbruptly()\n } else {\n setGainsGracefully(true)\n } \n}\n\n// Private functions\nconst getTargetIdx = () => {\n let targetIdx = 2 * NUM_PERSONAS * trackIdx + 2*personaIdx\n if (isProc) {\n targetIdx++\n }\n return targetIdx\n}\n\nlet prevTargetIdx = 0\nconst setGainsAbruptly = () => {\n const targetIdx = getTargetIdx()\n gainNodes.forEach(el => el.gain.value = 0);\n gainNodes[targetIdx].gain.value = 1;\n prevTargetIdx = targetIdx\n}\n\nconst makeCosRamps = (nRamp: number) => {\n const rampOFF_incoherent = new Float32Array(nRamp)\n const rampOFF_coherent = new Float32Array(nRamp)\n for(let x=0; x {\n const targetIdx = getTargetIdx() \n\n // Cancel whatever was going on and jump the state to where it should be before change\n // If targetIdx == prevTargetIdx, then this sets the correct state and the glide is not required\n gainNodes.forEach(el => el.gain.cancelScheduledValues(audioCtx.currentTime));\n gainNodes[prevTargetIdx].gain.value = 1;\n gainNodes[targetIdx].gain.value = 0;\n gainNodes.forEach((el, idx) => {\n if(idx == prevTargetIdx) {\n el.gain.value = 1\n } else {\n el.gain.value = 0\n } \n });\n\n // Glide gracefully\n if (prevTargetIdx != targetIdx) {\n const startTime = audioCtx.currentTime + 0.010; // Epoch for sync\n gainNodes[prevTargetIdx].gain.setValueCurveAtTime(isCoherentSources ? rampOFF_coherent : rampOFF_incoherent, startTime, xfade_s)\n gainNodes[targetIdx].gain.setValueCurveAtTime(isCoherentSources ? rampON_coherent : rampON_incoherent, startTime, xfade_s) \n } \n\n prevTargetIdx = targetIdx\n}\n\nconst initAudio = async () => {\n fetchError.value = null\n fetchPending.value = true\n\n const soundsInfo = [\n { url: '/sound/bangin_loops/sparse_short_loss_40.ogg' },\n { url: '/sound/bangin_loops/sparse_short_loss_40_loudnessISO.ogg' },\n { url: '/sound/bangin_loops/sparse_short_loss_60.ogg' },\n { url: '/sound/bangin_loops/sparse_short_loss_60_loudnessISO.ogg' },\n { url: '/sound/bangin_loops/sparse_short_loss_70.ogg' },\n { url: '/sound/bangin_loops/sparse_short_loss_70_loudnessISO.ogg' },\n \n { url: '/sound/demo_tv/moon_loss_40.ogg' },\n { url: '/sound/demo_tv/moon_loss_40_loudnessISO.ogg' },\n { url: '/sound/demo_tv/moon_loss_60.ogg' },\n { url: '/sound/demo_tv/moon_loss_60_loudnessISO.ogg' },\n { url: '/sound/demo_tv/moon_loss_70.ogg' },\n { url: '/sound/demo_tv/moon_loss_70_loudnessISO.ogg' },\n ]\n\n try {\n\n if (NUM_FILES != soundsInfo.length) {\n throw new Error('Number of files versus track logic mismatch')\n }\n\n for (let ii = 0; ii < soundsInfo.length; ii++) {\n // wire it up \n sourceNodes.push(audioCtx.createBufferSource());\n gainNodes.push(audioCtx.createGain());\n sourceNodes[ii].connect(gainNodes[ii]);\n gainNodes[ii].connect(audioCtx.destination);\n sourceNodes[ii].loop = true\n gainNodes[ii].gain.value = 0;\n\n // fetch / decode / load into buffer\n const fetchData = await fetch(soundsInfo[ii].url)\n if (!fetchData.ok) {\n throw new Error(`Could not complete load for ${soundsInfo[ii].url}`)\n }\n\n const arrayBuffer = await fetchData.arrayBuffer()\n const audioBuffer = await audioCtx.decodeAudioData(arrayBuffer)\n\n if (!audioBuffer) {\n throw new Error(`Could not complete decode for ${soundsInfo[ii].url}`)\n }\n\n sourceNodes[ii].buffer = audioBuffer\n numLoaded.value++;\n }\n\n fetchError.value = null\n fetchPending.value = false\n }\n catch (err: any) {\n console.error(err.message)\n fetchError.value = err.message\n fetchPending.value = false\n }\n}\n\nconst useAudio = () => {\n // The only problem with nesting reactive values into objects is that `.value` needs to be explicit in template\n return {\n status: { fetchError, fetchPending, NUM_FILES, numLoaded, suspendPending },\n initAudio,\n transport: { play, stop },\n selectors: { setPersona, setTrack, setProcessing }\n }\n}\n\nexport default useAudio","\nimport { defineComponent, ref, watch } from 'vue';\nimport CustomRadio from '@/components/CustomRadio.vue';\nimport useAudio from './composables/useAudio';\n\nexport default defineComponent({\n name: 'App',\n components: { CustomRadio },\n setup() {\n const personaIdx = ref(1)\n const contentIdx = ref(0)\n const isProc = ref(false)\n const isPlay = ref(false)\n\n const { status, initAudio, transport, selectors } = useAudio()\n\n const handlePersonSelect = (idx: number) => {\n personaIdx.value = idx\n selectors.setPersona(idx)\n isProc.value = false\n selectors.setProcessing(false)\n } \n\n const handleContentSelect = (idx: number) => {\n contentIdx.value = idx \n selectors.setTrack(idx)\n }\n \n // Initialize audio, and then apply the initial conditions async\n initAudio().then( ()=>{\n handlePersonSelect(personaIdx.value) \n handleContentSelect(contentIdx.value)\n })\n\n const handleProcSelect = () => {\n isProc.value=!isProc.value\n selectors.setProcessing(isProc.value)\n }\n\n watch(isPlay, (currentValue) => {\n currentValue ? transport.play() : transport.stop()\n });\n\n return {\n personaIdx, contentIdx, \n isProc, isPlay,\n handlePersonSelect, handleContentSelect, handleProcSelect,\n status\n }\n }\n});\n","import { render } from \"./App.vue?vue&type=template&id=1cf63d76&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=1cf63d76&lang=css\"\n\nimport exportComponent from \"C:\\\\SoundDemo_WEB-share\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\nimport App from './App.vue'\n\ncreateApp(App).mount('#app')\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkweb_sim\"] = self[\"webpackChunkweb_sim\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(5639); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_hoisted_1","key","class","_hoisted_2","_hoisted_3","src","_imports_0","_hoisted_4","_imports_1","_hoisted_5","_imports_2","_hoisted_6","_hoisted_7","_hoisted_8","_createElementVNode","_imports_3","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_imports_4","_hoisted_13","_imports_5","_hoisted_14","_hoisted_15","style","_hoisted_16","_hoisted_17","_imports_6","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","render","_ctx","_cache","$props","$setup","$data","$options","_component_CustomRadio","_resolveComponent","_openBlock","_createElementBlock","_Fragment","status","fetchPending","value","_createBlock","cats","initial_idx","personaIdx","onSelection","handlePersonSelect","_toDisplayString","Math","floor","numLoaded","NUM_FILES","_createCommentVNode","isPlay","_normalizeClass","playMusic","contentIdx","playSpeech","isProc","procMusic","procSpeech","handleContentSelect","procOn","procOff","disabled","onClick","args","handleProcSelect","suspendPending","$event","fetchError","earImg","earGreen","earYellow","earRed","_renderList","props","cat","idx","handleClick","selectedIdx","defineComponent","name","components","type","Array","required","Number","emits","setup","emit","ref","__exports__","NUM_PERSONAS","NUM_TRACKS","audioCtx","oggmentedAudioContext","sourceNodes","gainNodes","trackIdx","initialPlay","CAVEMAN_BROWSER","undefined","createGain","gain","cancelAndHoldAtTime","play","startTime","currentTime","forEach","el","start","resume","now","FADE_SECONDS","cancelScheduledValues","getTargetIdx","linearRampToValueAtTime","stop","async","Promise","r","setTimeout","suspend","setPersona","setGainsAbruptly","setGainsGracefully","setTrack","setProcessing","val","targetIdx","prevTargetIdx","makeCosRamps","nRamp","rampOFF_incoherent","Float32Array","rampOFF_coherent","x","cos_x","cos","PI","rampON_coherent","reverse","rampON_incoherent","isCoherentSources","xfade_s","setValueCurveAtTime","initAudio","soundsInfo","url","length","Error","ii","push","createBufferSource","connect","destination","loop","fetchData","fetch","ok","arrayBuffer","audioBuffer","decodeAudioData","buffer","err","console","error","message","useAudio","transport","selectors","CustomRadio","then","watch","currentValue","createApp","App","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","window","obj","prop","prototype","hasOwnProperty","call","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""}