From 0bf1b656d7cf23c10841f1ca0e9a69f8892574ae Mon Sep 17 00:00:00 2001 From: Eugene Serb <46799701+eugene-serb@users.noreply.github.com> Date: Tue, 9 Aug 2022 14:18:05 +0300 Subject: [PATCH] - Rebuild and deploy the new production. --- docs/assets/patterns.json | 177 ++++++++++--------- docs/index.html | 2 +- docs/js/app.177bb4cf.js.map | 1 - docs/js/{app.177bb4cf.js => app.9e6bfa01.js} | 4 +- docs/js/app.9e6bfa01.js.map | 1 + 5 files changed, 93 insertions(+), 92 deletions(-) delete mode 100644 docs/js/app.177bb4cf.js.map rename docs/js/{app.177bb4cf.js => app.9e6bfa01.js} (50%) create mode 100644 docs/js/app.9e6bfa01.js.map diff --git a/docs/assets/patterns.json b/docs/assets/patterns.json index df90c86..52e3a1f 100644 --- a/docs/assets/patterns.json +++ b/docs/assets/patterns.json @@ -1,57 +1,116 @@ [ { - "name": "Dotted Weak", + "name": "Constant Weak", "type": "Simple", - "icon": "๐Ÿ˜Œ", + "icon": "๐Ÿ˜", "pattern": [ { - "startDelay": 200, - "duration": 100, + "startDelay": 0, + "duration": 1000, "weakMagnitude": 1.0, "strongMagnitude": 0.0 } ] }, { - "name": "Dotted Strong", + "name": "Constant Strong", "type": "Simple", - "icon": "๐Ÿ˜‰", + "icon": "๐Ÿคฉ", "pattern": [ { - "startDelay": 200, - "duration": 100, + "startDelay": 0, + "duration": 1000, "weakMagnitude": 0.0, "strongMagnitude": 1.0 } ] }, { - "name": "Dotted Max", + "name": "Constant Max", "type": "Simple", - "icon": "๐Ÿ™ƒ", + "icon": "๐Ÿ˜", "pattern": [ { - "startDelay": 200, - "duration": 100, + "startDelay": 0, + "duration": 1000, "weakMagnitude": 1.0, "strongMagnitude": 1.0 } ] }, { - "name": "Dotted AC", + "name": "Constant AC", "type": "Complex", - "icon": "๐Ÿคจ", + "icon": "๐Ÿ˜ต", + "pattern": [ + { + "startDelay": 0, + "duration": 1000, + "weakMagnitude": 1.0, + "strongMagnitude": 0.0 + }, + { + "startDelay": 0, + "duration": 1000, + "weakMagnitude": 0.0, + "strongMagnitude": 1.0 + } + ] + }, + + { + "name": "Long Dashed Weak", + "type": "Simple", + "icon": "๐Ÿ˜‹", "pattern": [ { "startDelay": 200, - "duration": 100, + "duration": 500, + "weakMagnitude": 1.0, + "strongMagnitude": 0.0 + } + ] + }, + { + "name": "Long Dashed Strong", + "type": "Simple", + "icon": "๐Ÿ˜œ", + "pattern": [ + { + "startDelay": 100, + "duration": 500, + "weakMagnitude": 0.0, + "strongMagnitude": 1.0 + } + ] + }, + { + "name": "Long Dashed Max", + "type": "Simple", + "icon": "๐Ÿคช", + "pattern": [ + { + "startDelay": 200, + "duration": 500, + "weakMagnitude": 1.0, + "strongMagnitude": 1.0 + } + ] + }, + { + "name": "Long Dashed AC", + "type": "Complex", + "icon": "๐Ÿ˜", + "pattern": [ + { + "startDelay": 200, + "duration": 500, "weakMagnitude": 1.0, "strongMagnitude": 0.0 }, { "startDelay": 200, - "duration": 100, + "duration": 500, "weakMagnitude": 0.0, "strongMagnitude": 1.0 } @@ -116,116 +175,58 @@ ] }, { - "name": "Long Dashed Weak", + "name": "Dotted Weak", "type": "Simple", - "icon": "๐Ÿ˜‹", + "icon": "๐Ÿ˜Œ", "pattern": [ { "startDelay": 200, - "duration": 500, + "duration": 100, "weakMagnitude": 1.0, "strongMagnitude": 0.0 } ] }, { - "name": "Long Dashed Strong", + "name": "Dotted Strong", "type": "Simple", - "icon": "๐Ÿ˜œ", + "icon": "๐Ÿ˜‰", "pattern": [ { - "startDelay": 100, - "duration": 500, + "startDelay": 200, + "duration": 100, "weakMagnitude": 0.0, "strongMagnitude": 1.0 } ] }, { - "name": "Long Dashed Max", + "name": "Dotted Max", "type": "Simple", - "icon": "๐Ÿคช", + "icon": "๐Ÿ™ƒ", "pattern": [ { "startDelay": 200, - "duration": 500, + "duration": 100, "weakMagnitude": 1.0, "strongMagnitude": 1.0 } ] }, { - "name": "Long Dashed AC", + "name": "Dotted AC", "type": "Complex", - "icon": "๐Ÿ˜", + "icon": "๐Ÿคจ", "pattern": [ { "startDelay": 200, - "duration": 500, + "duration": 100, "weakMagnitude": 1.0, "strongMagnitude": 0.0 }, { "startDelay": 200, - "duration": 500, - "weakMagnitude": 0.0, - "strongMagnitude": 1.0 - } - ] - }, - { - "name": "Constant Weak", - "type": "Simple", - "icon": "๐Ÿ˜", - "pattern": [ - { - "startDelay": 0, - "duration": 1000, - "weakMagnitude": 1.0, - "strongMagnitude": 0.0 - } - ] - }, - { - "name": "Constant Strong", - "type": "Simple", - "icon": "๐Ÿคฉ", - "pattern": [ - { - "startDelay": 0, - "duration": 1000, - "weakMagnitude": 0.0, - "strongMagnitude": 1.0 - } - ] - }, - { - "name": "Constant Max", - "type": "Simple", - "icon": "๐Ÿ˜", - "pattern": [ - { - "startDelay": 0, - "duration": 1000, - "weakMagnitude": 1.0, - "strongMagnitude": 1.0 - } - ] - }, - { - "name": "Constant AC", - "type": "Complex", - "icon": "๐Ÿ˜ต", - "pattern": [ - { - "startDelay": 0, - "duration": 1000, - "weakMagnitude": 1.0, - "strongMagnitude": 0.0 - }, - { - "startDelay": 0, - "duration": 1000, + "duration": 100, "weakMagnitude": 0.0, "strongMagnitude": 1.0 } diff --git a/docs/index.html b/docs/index.html index 1decbf3..a9e89c3 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,4 +15,4 @@ webvisor: true });

Wavelovers

\ No newline at end of file + }

Wavelovers

\ No newline at end of file diff --git a/docs/js/app.177bb4cf.js.map b/docs/js/app.177bb4cf.js.map deleted file mode 100644 index 69cf74d..0000000 --- a/docs/js/app.177bb4cf.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/app.177bb4cf.js","mappings":"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","sources":["webpack://wavelovers/./src/App.vue?98fb","webpack://wavelovers/./src/components/NavigationList.vue?dd67","webpack://wavelovers/./src/components/NavigationList.vue?d88b","webpack://wavelovers/./src/components/NavigationList.vue","webpack://wavelovers/./src/components/GamepadList.vue?111b","webpack://wavelovers/./src/components/GamepadItem.vue?d49b","webpack://wavelovers/./src/components/GamepadItem.vue?ef0b","webpack://wavelovers/./src/components/GamepadItem.vue","webpack://wavelovers/./src/components/GamepadList.vue?8510","webpack://wavelovers/./src/components/GamepadList.vue","webpack://wavelovers/./src/components/MessageItem.vue?9584","webpack://wavelovers/./src/components/MessageItem.vue?b787","webpack://wavelovers/./src/components/MessageItem.vue","webpack://wavelovers/./src/App.vue?847a","webpack://wavelovers/./src/App.vue","webpack://wavelovers/./src/views/PatternsView.vue?4fc5","webpack://wavelovers/./src/components/AppPatterns.vue?5128","webpack://wavelovers/./src/components/PatternList.vue?f7a7","webpack://wavelovers/./src/components/PatternItem.vue?0621","webpack://wavelovers/./src/components/PatternItem.vue?80c2","webpack://wavelovers/./src/components/PatternItem.vue","webpack://wavelovers/./src/components/PatternList.vue?eb4b","webpack://wavelovers/./src/components/PatternList.vue","webpack://wavelovers/./src/components/AppPatterns.vue?5f2c","webpack://wavelovers/./src/components/AppPatterns.vue","webpack://wavelovers/./src/views/PatternsView.vue?8109","webpack://wavelovers/./src/views/PatternsView.vue","webpack://wavelovers/./src/router/index.ts","webpack://wavelovers/./src/main.ts","webpack://wavelovers/./src/models/Vibrator.ts","webpack://wavelovers/./src/store/modules/MGamepads.ts","webpack://wavelovers/./src/store/modules/MPatterns.ts","webpack://wavelovers/./src/store/index.ts","webpack://wavelovers/webpack/bootstrap","webpack://wavelovers/webpack/runtime/chunk loaded","webpack://wavelovers/webpack/runtime/compat get default export","webpack://wavelovers/webpack/runtime/define property getters","webpack://wavelovers/webpack/runtime/ensure chunk","webpack://wavelovers/webpack/runtime/get javascript chunk filename","webpack://wavelovers/webpack/runtime/get mini-css chunk filename","webpack://wavelovers/webpack/runtime/global","webpack://wavelovers/webpack/runtime/hasOwnProperty shorthand","webpack://wavelovers/webpack/runtime/load script","webpack://wavelovers/webpack/runtime/make namespace object","webpack://wavelovers/webpack/runtime/publicPath","webpack://wavelovers/webpack/runtime/css loading","webpack://wavelovers/webpack/runtime/jsonp chunk loading","webpack://wavelovers/webpack/startup"],"sourcesContent":["import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"wavelovers\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\"Press any gamepad button or connect a new gamepad to vibrate.\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NavigationList = _resolveComponent(\"NavigationList\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_GamepadList = _resolveComponent(\"GamepadList\")!\n const _component_MessageItem = _resolveComponent(\"MessageItem\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_NavigationList),\n _createVNode(_component_router_view),\n (_ctx.gamepads.length > 0)\n ? (_openBlock(), _createBlock(_component_GamepadList, {\n key: 0,\n gamepads: _ctx.gamepads\n }, null, 8, [\"gamepads\"]))\n : (_openBlock(), _createBlock(_component_MessageItem, { key: 1 }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }))\n ]))\n}","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"content-item navigation-list\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\"Manual\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"Patterns\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"Diagnostic\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_router_link, {\n to: \"/manual\",\n class: \"navigation-item\"\n }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/\",\n class: \"navigation-item\"\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/diagnostic\",\n class: \"navigation-item\"\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n })\n ]))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'NavigationList',\r\n });\r\n","import { render } from \"./NavigationList.vue?vue&type=template&id=1919eb74&ts=true\"\nimport script from \"./NavigationList.vue?vue&type=script&lang=ts\"\nexport * from \"./NavigationList.vue?vue&type=script&lang=ts\"\n\nimport \"./NavigationList.vue?vue&type=style&index=0&id=1919eb74&lang=scss\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, toDisplayString as _toDisplayString, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"content-item device-list\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_GamepadItem = _resolveComponent(\"GamepadItem\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.gamepads, (gamepad) => {\n return (_openBlock(), _createBlock(_component_GamepadItem, {\n key: gamepad.id,\n textContent: _toDisplayString(gamepad.unit.id)\n }, null, 8, [\"textContent\"]))\n }), 128))\n ]))\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"list-item\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'GamepadItem',\r\n });\r\n","import { render } from \"./GamepadItem.vue?vue&type=template&id=e6e6c988&ts=true\"\nimport script from \"./GamepadItem.vue?vue&type=script&lang=ts\"\nexport * from \"./GamepadItem.vue?vue&type=script&lang=ts\"\n\nimport \"./GamepadItem.vue?vue&type=style&index=0&id=e6e6c988&lang=scss\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n import { defineComponent } from 'vue';\r\n import GamepadItem from '@/components/GamepadItem.vue';\r\n\r\n export default defineComponent({\r\n name: 'GamepadList',\r\n props: {\r\n gamepads: {\r\n type: Array,\r\n },\r\n },\r\n components: {\r\n GamepadItem: GamepadItem,\r\n },\r\n });\r\n ","import { render } from \"./GamepadList.vue?vue&type=template&id=16065af4&ts=true\"\nimport script from \"./GamepadList.vue?vue&type=script&lang=ts\"\nexport * from \"./GamepadList.vue?vue&type=script&lang=ts\"\n\nimport \"./GamepadList.vue?vue&type=style&index=0&id=16065af4&lang=scss\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"content-item message\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", null, [\n _renderSlot(_ctx.$slots, \"default\")\n ])\n ]))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'MessageItem',\r\n });\r\n","import { render } from \"./MessageItem.vue?vue&type=template&id=31b477d2&ts=true\"\nimport script from \"./MessageItem.vue?vue&type=script&lang=ts\"\nexport * from \"./MessageItem.vue?vue&type=script&lang=ts\"\n\nimport \"./MessageItem.vue?vue&type=style&index=0&id=31b477d2&lang=scss\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n import { defineComponent } from 'vue';\r\n import store from '@/store/index';\r\n import NavigationList from '@/components/NavigationList.vue';\r\n import GamepadList from '@/components/GamepadList.vue';\r\n import MessageItem from '@/components/MessageItem.vue';\r\n import Vibrator from '@/models/Vibrator';\r\n\r\n export default defineComponent({\r\n name: 'App',\r\n components: {\r\n NavigationList: NavigationList,\r\n GamepadList: GamepadList,\r\n MessageItem: MessageItem,\r\n },\r\n computed: {\r\n gamepads: function (): Vibrator[] {\r\n return store.getters.gamepads as Vibrator[];\r\n },\r\n },\r\n methods: {\r\n addEventListeners(): void {\r\n window.addEventListener('gamepadconnected', (event: GamepadEvent) => store.dispatch('addGamepad', event));\r\n window.addEventListener('gamepaddisconnected', (event: GamepadEvent) => store.dispatch('deleteGamepad', event));\r\n },\r\n removeEventListeners(): void {\r\n window.removeEventListener('gamepadconnected', (event: GamepadEvent) => store.dispatch('addGamepad', event));\r\n window.removeEventListener('gamepaddisconnected', (event: GamepadEvent) => store.dispatch('deleteGamepad', event));\r\n },\r\n },\r\n mounted() {\r\n this.addEventListeners();\r\n },\r\n unmounted() {\r\n this.removeEventListeners();\r\n },\r\n });\r\n","import { render } from \"./App.vue?vue&type=template&id=7f0977f6&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_AppPatterns = _resolveComponent(\"AppPatterns\")!\n\n return (_openBlock(), _createBlock(_component_AppPatterns))\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"app-patterns\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\"Loading...\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_PatternList = _resolveComponent(\"PatternList\")!\n const _component_MessageItem = _resolveComponent(\"MessageItem\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.patterns.length > 0)\n ? (_openBlock(), _createBlock(_component_PatternList, {\n key: 0,\n patterns: _ctx.patterns,\n mode: _ctx.mode,\n isActive: _ctx.isActive,\n onChange: _ctx.change\n }, null, 8, [\"patterns\", \"mode\", \"isActive\", \"onChange\"]))\n : (_openBlock(), _createBlock(_component_MessageItem, { key: 1 }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }))\n ]))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"content-item pattern-list\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_PatternItem = _resolveComponent(\"PatternItem\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.patterns, (pattern, index) => {\n return (_openBlock(), _createBlock(_component_PatternItem, {\n key: pattern.name,\n pattern: pattern,\n index: index,\n mode: _ctx.mode,\n isActive: _ctx.isActive,\n onChange: _ctx.change\n }, null, 8, [\"pattern\", \"index\", \"mode\", \"isActive\", \"onChange\"]))\n }), 128))\n ]))\n}","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"textContent\"]\nconst _hoisted_2 = { class: \"pattern-item__info-container\" }\nconst _hoisted_3 = [\"textContent\"]\nconst _hoisted_4 = [\"textContent\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.change(_ctx.index))),\n class: _normalizeClass(['pattern-item',\r\n _ctx.index === _ctx.mode && _ctx.isActive === true ?\r\n 'pattern-item_selected' : '',\r\n ])\n }, [\n _createElementVNode(\"span\", {\n class: \"pattern-item__icon\",\n textContent: _toDisplayString(_ctx.pattern.icon)\n }, null, 8, _hoisted_1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", {\n class: \"pattern-item__name\",\n textContent: _toDisplayString(_ctx.pattern.name)\n }, null, 8, _hoisted_3),\n _createElementVNode(\"span\", {\n class: \"pattern-item__type\",\n textContent: _toDisplayString(_ctx.pattern.type)\n }, null, 8, _hoisted_4)\n ])\n ], 2))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'PatternItem',\r\n props: {\r\n pattern: {\r\n type: Object,\r\n },\r\n index: {\r\n type: Number,\r\n },\r\n mode: {\r\n type: Number,\r\n },\r\n isActive: {\r\n type: Boolean,\r\n },\r\n },\r\n methods: {\r\n change: function (index: number): void {\r\n this.$emit('change', index as number);\r\n },\r\n },\r\n });\r\n","import { render } from \"./PatternItem.vue?vue&type=template&id=7dfe2650&ts=true\"\nimport script from \"./PatternItem.vue?vue&type=script&lang=ts\"\nexport * from \"./PatternItem.vue?vue&type=script&lang=ts\"\n\nimport \"./PatternItem.vue?vue&type=style&index=0&id=7dfe2650&lang=scss\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n import { defineComponent } from 'vue';\r\n import PatternItem from '@/components/PatternItem.vue';\r\n\r\n export default defineComponent({\r\n name: 'PatternList',\r\n props: {\r\n patterns: {\r\n type: Array,\r\n },\r\n mode: {\r\n type: Number,\r\n },\r\n isActive: {\r\n type: Boolean,\r\n },\r\n },\r\n components: {\r\n PatternItem: PatternItem,\r\n },\r\n methods: {\r\n change: function (index: number): void {\r\n this.$emit('change', index as number);\r\n },\r\n },\r\n });\r\n","import { render } from \"./PatternList.vue?vue&type=template&id=0515b58e&ts=true\"\nimport script from \"./PatternList.vue?vue&type=script&lang=ts\"\nexport * from \"./PatternList.vue?vue&type=script&lang=ts\"\n\nimport \"./PatternList.vue?vue&type=style&index=0&id=0515b58e&lang=scss\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n import { defineComponent } from 'vue';\r\n import store from '@/store/index';\r\n import PatternList from '@/components/PatternList.vue';\r\n import MessageItem from '@/components/MessageItem.vue';\r\n import TPattern from '@/models/TPattern';\r\n\r\n export default defineComponent({\r\n name: 'AppPatterns',\r\n components: {\r\n PatternList: PatternList,\r\n MessageItem: MessageItem,\r\n },\r\n computed: {\r\n patterns: function (): TPattern[] {\r\n return store.getters.patterns as TPattern[];\r\n },\r\n mode: function (): number {\r\n return store.getters.mode as number;\r\n },\r\n isActive: function (): boolean {\r\n return store.getters.isActive as boolean;\r\n },\r\n },\r\n methods: {\r\n change(index: number): void {\r\n store.dispatch('change', index as number);\r\n },\r\n },\r\n mounted() {\r\n store.dispatch('loadPatterns');\r\n },\r\n });\r\n","import { render } from \"./AppPatterns.vue?vue&type=template&id=44c5840c&ts=true\"\nimport script from \"./AppPatterns.vue?vue&type=script&lang=ts\"\nexport * from \"./AppPatterns.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n import { defineComponent } from 'vue';\r\n import AppPatterns from '@/components/AppPatterns.vue';\r\n\r\n export default defineComponent({\r\n name: 'PatternsView',\r\n components: {\r\n AppPatterns: AppPatterns,\r\n },\r\n });\r\n","import { render } from \"./PatternsView.vue?vue&type=template&id=440c70d9&ts=true\"\nimport script from \"./PatternsView.vue?vue&type=script&lang=ts\"\nexport * from \"./PatternsView.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';\r\nimport PatternsView from '@/views/PatternsView.vue';\r\n\r\nconst routes: Array = [\r\n {\r\n path: '/',\r\n name: 'patterns-view',\r\n component: PatternsView,\r\n },\r\n {\r\n path: '/manual',\r\n name: 'manual-view',\r\n component: () => import('@/views/ManualView.vue'),\r\n },\r\n {\r\n path: '/diagnostic',\r\n name: 'diagnostic-view',\r\n component: () => import('@/views/DiagnosticView.vue'),\r\n },\r\n {\r\n path: '/404',\r\n name: '404',\r\n component: () => import('@/views/NotFoundView.vue'),\r\n },\r\n {\r\n path: '/:catchAll(.*)',\r\n redirect: '/404',\r\n },\r\n];\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes,\r\n});\r\n\r\nexport default router;\r\n\r\n","import { createApp } from 'vue';\r\nimport App from './App.vue';\r\nimport router from './router';\r\nimport store from './store';\r\n\r\ncreateApp(App).use(store).use(router).mount('#app');\r\n\r\n","import TPatternUnit from '@/models/TPatternUnit';\r\nimport IGamepad from '@/models/IGamepad';\r\nimport IVibrator from '@/models/IVibrator';\r\n\r\nclass Vibrator implements IVibrator {\r\n readonly id: number;\r\n readonly canVibrate: boolean;\r\n isVibrating: boolean;\r\n unit: IGamepad;\r\n pattern: TPatternUnit[];\r\n interval: number;\r\n\r\n constructor(unit: IGamepad) {\r\n this.unit = unit;\r\n this.id = Date.now();\r\n this.canVibrate = (this.unit.vibrationActuator) ? true : false;\r\n this.isVibrating = false;\r\n this.pattern = [];\r\n\r\n this.update = this.update.bind(this);\r\n this.interval = setInterval(this.update, 1);\r\n }\r\n\r\n update(): void {\r\n const gamepads = navigator.getGamepads();\r\n this.unit = gamepads[this.unit.index] as unknown as IGamepad;\r\n }\r\n\r\n reset(): void {\r\n this.isVibrating = false;\r\n this.unit.vibrationActuator.reset();\r\n }\r\n\r\n async vibrate(pattern: TPatternUnit[]) {\r\n this.isVibrating = true;\r\n this.pattern = pattern;\r\n while (this.isVibrating === true) {\r\n for (let i = 0; i < this.pattern.length; i++) {\r\n if (this.isVibrating === true) {\r\n this.unit.vibrationActuator.playEffect('dual-rumble', this.pattern[i]);\r\n await this.sleep(this.pattern[i].startDelay + this.pattern[i].duration);\r\n } else {\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n sleep(ms: number): Promise {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n}\r\n\r\nexport default Vibrator;\r\n\r\n","import { ActionContext, Module } from 'vuex';\r\nimport IRootState from '@/store/models/IRootState';\r\nimport IGamepadsState from '@/store/models/IGamepadsState';\r\nimport Vibrator from '@/models/Vibrator';\r\nimport IGamepad from '@/models/IGamepad';\r\nimport IGamepadEvent from '@/models/IGamepadEvent';\r\nimport TPatternUnit from '@/models/TPatternUnit';\r\n\r\nconst MGamepads: Module = {\r\n state: () => ({\r\n gamepads: [] as Vibrator[],\r\n }),\r\n getters: {\r\n gamepads: function (state: IGamepadsState): Vibrator[] {\r\n return state.gamepads as Vibrator[];\r\n },\r\n },\r\n mutations: {\r\n addGamepad: function (state: IGamepadsState, gamepad: Vibrator): void {\r\n state.gamepads.push(gamepad as Vibrator);\r\n },\r\n deleteGamepad: function (state: IGamepadsState, index: number): void {\r\n state.gamepads.splice(index, 1);\r\n },\r\n },\r\n actions: {\r\n addGamepad: function (\r\n context: ActionContext,\r\n event: GamepadEvent\r\n ): void {\r\n const iEvent: IGamepadEvent = event as unknown as IGamepadEvent;\r\n if (context.getters.gamepads.length >= 1) {\r\n return;\r\n } else {\r\n context.commit('addGamepad', new Vibrator(iEvent.gamepad as IGamepad));\r\n }\r\n },\r\n deleteGamepad: function (\r\n context: ActionContext,\r\n event: GamepadEvent\r\n ): void {\r\n context.getters.gamepads.forEach((gamepad: Vibrator, index: number) => {\r\n if (gamepad.unit.id === event.gamepad.id) {\r\n context.commit('deleteGamepad', index as number);\r\n }\r\n });\r\n },\r\n vibrate: function (\r\n context: ActionContext,\r\n pattern: TPatternUnit[]\r\n ): void {\r\n context.getters.gamepads.forEach((gamepad: Vibrator) => {\r\n gamepad.vibrate(pattern);\r\n });\r\n },\r\n reset: function (\r\n context: ActionContext\r\n ): void {\r\n context.getters.gamepads.forEach((gamepad: Vibrator) => {\r\n gamepad.reset();\r\n });\r\n },\r\n },\r\n};\r\n\r\nexport default MGamepads;\r\n\r\n","import { ActionContext, Module } from 'vuex';\r\nimport IRootState from '@/store/models/IRootState';\r\nimport IPatternState from '@/store/models/IPatternState';\r\nimport TPattern from '@/models/TPattern';\r\n\r\nconst MPatterns: Module = {\r\n state: () => ({\r\n patterns: [] as TPattern[],\r\n }),\r\n getters: {\r\n patterns: function (state: IPatternState): TPattern[] {\r\n return state.patterns as TPattern[];\r\n },\r\n },\r\n mutations: {\r\n setPatterns: function (state: IPatternState, patterns: TPattern[]): void {\r\n state.patterns = patterns as TPattern[];\r\n },\r\n },\r\n actions: {\r\n loadPatterns: async function (\r\n context: ActionContext\r\n ): Promise {\r\n const url = 'https://wavelovers.ru/assets/patterns.json';\r\n try {\r\n const response: Response = await fetch(url);\r\n if (response.ok) {\r\n const json: TPattern[] = await response.json();\r\n context.commit('setPatterns', json as TPattern[]);\r\n } else {\r\n console.log('Connect to the Internet for download more patterns...');\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n },\r\n};\r\n\r\nexport default MPatterns;\r\n\r\n","import { createStore, Store } from 'vuex';\r\nimport IRootState from './models/IRootState';\r\nimport MGamepads from '@/store/modules/MGamepads';\r\nimport MPatterns from '@/store/modules/MPatterns';\r\nimport TPatternUnit from '../models/TPatternUnit';\r\n\r\nconst store: Store = createStore({\r\n state: () => ({\r\n mode: 0 as number,\r\n isActive: false as boolean,\r\n }),\r\n getters: {\r\n mode: function (state: IRootState): number {\r\n return state.mode as number;\r\n },\r\n isActive: function (state: IRootState): boolean {\r\n return state.isActive as boolean;\r\n },\r\n },\r\n mutations: {\r\n setMode: function (state: IRootState, mode: number): void {\r\n state.mode = mode as number;\r\n },\r\n setIsActive: function (state: IRootState, isActive: boolean): void {\r\n state.isActive = isActive as boolean;\r\n },\r\n },\r\n actions: {\r\n setMode: function (context, index: number): void {\r\n context.commit('setMode', index as number);\r\n },\r\n setIsActive: function (context, isActive: boolean): void {\r\n context.commit('setIsActive', isActive as boolean);\r\n },\r\n change: function (context, index: number): void {\r\n if (context.getters.mode === index) {\r\n context.dispatch('setIsActive', !context.getters.isActive);\r\n } else {\r\n context.dispatch('setIsActive', true);\r\n context.dispatch('setMode', index);\r\n }\r\n if (context.getters.isActive === true) {\r\n context.dispatch('reset');\r\n context.dispatch(\r\n 'vibrate',\r\n context.getters.patterns[context.getters.mode].pattern\r\n );\r\n } else {\r\n context.dispatch('reset');\r\n }\r\n },\r\n startCustom: function (context, pattern: TPatternUnit[]): void {\r\n context.dispatch('setIsActive', false);\r\n context.dispatch('setMode', 0);\r\n context.dispatch('reset');\r\n context.dispatch('vibrate', pattern);\r\n },\r\n },\r\n modules: {\r\n MGamepads: MGamepads,\r\n MPatterns: MPatterns,\r\n },\r\n});\r\n\r\nexport default store;\r\n\r\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"46\":\"c7a9f83c\",\"554\":\"0d3dfa8b\",\"567\":\"1165d9e5\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"46\":\"30c3638a\",\"554\":\"10b8ac32\"}[chunkId] + \".css\";\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); }","var inProgress = {};\nvar dataWebpackPrefix = \"wavelovers:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"46\":1,\"554\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// 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__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\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[\"webpackChunkwavelovers\"] = self[\"webpackChunkwavelovers\"] || [];\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__(2892); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_hoisted_1","class","_hoisted_2","_createTextVNode","render","_ctx","_cache","$props","$setup","$data","$options","_component_NavigationList","_resolveComponent","_component_router_view","_component_GamepadList","_component_MessageItem","_openBlock","_createElementBlock","_createVNode","gamepads","length","_createBlock","key","default","_withCtx","_","_hoisted_3","_hoisted_4","_component_router_link","to","defineComponent","name","__exports__","_component_GamepadItem","_Fragment","_renderList","gamepad","id","textContent","_toDisplayString","unit","props","type","Array","components","GamepadItem","_createElementVNode","_renderSlot","$slots","NavigationList","GamepadList","MessageItem","computed","store","methods","addEventListeners","window","addEventListener","event","removeEventListeners","removeEventListener","mounted","this","unmounted","_component_AppPatterns","_component_PatternList","patterns","mode","isActive","onChange","change","_component_PatternItem","pattern","index","onClick","$event","_normalizeClass","icon","Object","Number","Boolean","$emit","PatternItem","PatternList","AppPatterns","routes","path","component","PatternsView","redirect","router","createRouter","history","createWebHistory","process","createApp","App","use","mount","Vibrator","constructor","Date","now","canVibrate","vibrationActuator","isVibrating","update","bind","interval","setInterval","navigator","getGamepads","reset","i","playEffect","sleep","startDelay","duration","ms","Promise","resolve","setTimeout","MGamepads","state","getters","mutations","addGamepad","push","deleteGamepad","splice","actions","context","iEvent","commit","forEach","vibrate","MPatterns","setPatterns","loadPatterns","async","url","response","fetch","ok","json","console","log","error","createStore","setMode","setIsActive","dispatch","startCustom","modules","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","keys","every","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","all","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","call","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","target","head","appendChild","Symbol","toStringTag","value","p","createStylesheet","fullhref","reject","linkTag","rel","onLinkComplete","errorType","realHref","href","err","Error","code","request","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","then","installedChunks","installedChunkData","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/app.177bb4cf.js b/docs/js/app.9e6bfa01.js similarity index 50% rename from docs/js/app.177bb4cf.js rename to docs/js/app.9e6bfa01.js index 94cc854..8f683c2 100644 --- a/docs/js/app.177bb4cf.js +++ b/docs/js/app.9e6bfa01.js @@ -1,2 +1,2 @@ -(function(){"use strict";var t={2892:function(t,e,n){var a=n(9242),i=n(3396);const r={class:"wavelovers"},s=(0,i.Uk)("Press any gamepad button or connect a new gamepad to vibrate.");function o(t,e,n,a,o,c){const u=(0,i.up)("NavigationList"),d=(0,i.up)("router-view"),p=(0,i.up)("GamepadList"),m=(0,i.up)("MessageItem");return(0,i.wg)(),(0,i.iD)("div",r,[(0,i.Wm)(u),(0,i.Wm)(d),t.gamepads.length>0?((0,i.wg)(),(0,i.j4)(p,{key:0,gamepads:t.gamepads},null,8,["gamepads"])):((0,i.wg)(),(0,i.j4)(m,{key:1},{default:(0,i.w5)((()=>[s])),_:1}))])}var c=n(1746);const u={class:"content-item navigation-list"},d=(0,i.Uk)("Manual"),p=(0,i.Uk)("Patterns"),m=(0,i.Uk)("Diagnostic");function l(t,e,n,a,r,s){const o=(0,i.up)("router-link");return(0,i.wg)(),(0,i.iD)("div",u,[(0,i.Wm)(o,{to:"/manual",class:"navigation-item"},{default:(0,i.w5)((()=>[d])),_:1}),(0,i.Wm)(o,{to:"/",class:"navigation-item"},{default:(0,i.w5)((()=>[p])),_:1}),(0,i.Wm)(o,{to:"/diagnostic",class:"navigation-item"},{default:(0,i.w5)((()=>[m])),_:1})])}var f=(0,i.aZ)({name:"NavigationList"}),v=n(89);const g=(0,v.Z)(f,[["render",l]]);var h=g,w=n(7139);const b={class:"content-item device-list"};function y(t,e,n,a,r,s){const o=(0,i.up)("GamepadItem");return(0,i.wg)(),(0,i.iD)("div",b,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t.gamepads,(t=>((0,i.wg)(),(0,i.j4)(o,{key:t.id,textContent:(0,w.zw)(t.unit.id)},null,8,["textContent"])))),128))])}const A={class:"list-item"};function Z(t,e,n,a,r,s){return(0,i.wg)(),(0,i.iD)("div",A)}var k=(0,i.aZ)({name:"GamepadItem"});const C=(0,v.Z)(k,[["render",Z]]);var _=C,P=(0,i.aZ)({name:"GamepadList",props:{gamepads:{type:Array}},components:{GamepadItem:_}});const E=(0,v.Z)(P,[["render",y]]);var L=E;const j={class:"content-item message"};function I(t,e,n,a,r,s){return(0,i.wg)(),(0,i.iD)("div",j,[(0,i._)("span",null,[(0,i.WI)(t.$slots,"default")])])}var x=(0,i.aZ)({name:"MessageItem"});const G=(0,v.Z)(x,[["render",I]]);var M=G,O=(0,i.aZ)({name:"App",components:{NavigationList:h,GamepadList:L,MessageItem:M},computed:{gamepads:function(){return c.Z.getters.gamepads}},methods:{addEventListeners(){window.addEventListener("gamepadconnected",(t=>c.Z.dispatch("addGamepad",t))),window.addEventListener("gamepaddisconnected",(t=>c.Z.dispatch("deleteGamepad",t)))},removeEventListeners(){window.removeEventListener("gamepadconnected",(t=>c.Z.dispatch("addGamepad",t))),window.removeEventListener("gamepaddisconnected",(t=>c.Z.dispatch("deleteGamepad",t)))}},mounted(){this.addEventListeners()},unmounted(){this.removeEventListeners()}});const D=(0,v.Z)(O,[["render",o]]);var N=D,T=n(2483);function S(t,e,n,a,r,s){const o=(0,i.up)("AppPatterns");return(0,i.wg)(),(0,i.j4)(o)}const V={class:"app-patterns"},U=(0,i.Uk)("Loading...");function W(t,e,n,a,r,s){const o=(0,i.up)("PatternList"),c=(0,i.up)("MessageItem");return(0,i.wg)(),(0,i.iD)("div",V,[t.patterns.length>0?((0,i.wg)(),(0,i.j4)(o,{key:0,patterns:t.patterns,mode:t.mode,isActive:t.isActive,onChange:t.change},null,8,["patterns","mode","isActive","onChange"])):((0,i.wg)(),(0,i.j4)(c,{key:1},{default:(0,i.w5)((()=>[U])),_:1}))])}const B={class:"content-item pattern-list"};function z(t,e,n,a,r,s){const o=(0,i.up)("PatternItem");return(0,i.wg)(),(0,i.iD)("div",B,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t.patterns,((e,n)=>((0,i.wg)(),(0,i.j4)(o,{key:e.name,pattern:e,index:n,mode:t.mode,isActive:t.isActive,onChange:t.change},null,8,["pattern","index","mode","isActive","onChange"])))),128))])}const F=["textContent"],H={class:"pattern-item__info-container"},K=["textContent"],$=["textContent"];function q(t,e,n,a,r,s){return(0,i.wg)(),(0,i.iD)("div",{onClick:e[0]||(e[0]=e=>t.change(t.index)),class:(0,w.C_)(["pattern-item",t.index===t.mode&&!0===t.isActive?"pattern-item_selected":""])},[(0,i._)("span",{class:"pattern-item__icon",textContent:(0,w.zw)(t.pattern.icon)},null,8,F),(0,i._)("div",H,[(0,i._)("span",{class:"pattern-item__name",textContent:(0,w.zw)(t.pattern.name)},null,8,K),(0,i._)("span",{class:"pattern-item__type",textContent:(0,w.zw)(t.pattern.type)},null,8,$)])],2)}var Y=(0,i.aZ)({name:"PatternItem",props:{pattern:{type:Object},index:{type:Number},mode:{type:Number},isActive:{type:Boolean}},methods:{change:function(t){this.$emit("change",t)}}});const J=(0,v.Z)(Y,[["render",q]]);var Q=J,R=(0,i.aZ)({name:"PatternList",props:{patterns:{type:Array},mode:{type:Number},isActive:{type:Boolean}},components:{PatternItem:Q},methods:{change:function(t){this.$emit("change",t)}}});const X=(0,v.Z)(R,[["render",z]]);var tt=X,et=(0,i.aZ)({name:"AppPatterns",components:{PatternList:tt,MessageItem:M},computed:{patterns:function(){return c.Z.getters.patterns},mode:function(){return c.Z.getters.mode},isActive:function(){return c.Z.getters.isActive}},methods:{change(t){c.Z.dispatch("change",t)}},mounted(){c.Z.dispatch("loadPatterns")}});const nt=(0,v.Z)(et,[["render",W]]);var at=nt,it=(0,i.aZ)({name:"PatternsView",components:{AppPatterns:at}});const rt=(0,v.Z)(it,[["render",S]]);var st=rt;const ot=[{path:"/",name:"patterns-view",component:st},{path:"/manual",name:"manual-view",component:()=>n.e(46).then(n.bind(n,9046))},{path:"/diagnostic",name:"diagnostic-view",component:()=>n.e(554).then(n.bind(n,4554))},{path:"/404",name:"404",component:()=>n.e(567).then(n.bind(n,7567))},{path:"/:catchAll(.*)",redirect:"/404"}],ct=(0,T.p7)({history:(0,T.PO)("/"),routes:ot});var ut=ct;(0,a.ri)(N).use(c.Z).use(ut).mount("#app")},1746:function(t,e,n){n.d(e,{Z:function(){return m}});var a=n(65),i=n(2482);class r{constructor(t){(0,i.Z)(this,"id",void 0),(0,i.Z)(this,"canVibrate",void 0),(0,i.Z)(this,"isVibrating",void 0),(0,i.Z)(this,"unit",void 0),(0,i.Z)(this,"pattern",void 0),(0,i.Z)(this,"interval",void 0),this.unit=t,this.id=Date.now(),this.canVibrate=!!this.unit.vibrationActuator,this.isVibrating=!1,this.pattern=[],this.update=this.update.bind(this),this.interval=setInterval(this.update,1)}update(){const t=navigator.getGamepads();this.unit=t[this.unit.index]}reset(){this.isVibrating=!1,this.unit.vibrationActuator.reset()}async vibrate(t){this.isVibrating=!0,this.pattern=t;while(!0===this.isVibrating)for(let t=0;tsetTimeout(e,t)))}}var s=r;const o={state:()=>({gamepads:[]}),getters:{gamepads:function(t){return t.gamepads}},mutations:{addGamepad:function(t,e){t.gamepads.push(e)},deleteGamepad:function(t,e){t.gamepads.splice(e,1)}},actions:{addGamepad:function(t,e){const n=e;t.getters.gamepads.length>=1||t.commit("addGamepad",new s(n.gamepad))},deleteGamepad:function(t,e){t.getters.gamepads.forEach(((n,a)=>{n.unit.id===e.gamepad.id&&t.commit("deleteGamepad",a)}))},vibrate:function(t,e){t.getters.gamepads.forEach((t=>{t.vibrate(e)}))},reset:function(t){t.getters.gamepads.forEach((t=>{t.reset()}))}}};var c=o;const u={state:()=>({patterns:[]}),getters:{patterns:function(t){return t.patterns}},mutations:{setPatterns:function(t,e){t.patterns=e}},actions:{loadPatterns:async function(t){const e="https://wavelovers.ru/assets/patterns.json";try{const n=await fetch(e);if(n.ok){const e=await n.json();t.commit("setPatterns",e)}else console.log("Connect to the Internet for download more patterns...")}catch(n){console.log(n)}}}};var d=u;const p=(0,a.MT)({state:()=>({mode:0,isActive:!1}),getters:{mode:function(t){return t.mode},isActive:function(t){return t.isActive}},mutations:{setMode:function(t,e){t.mode=e},setIsActive:function(t,e){t.isActive=e}},actions:{setMode:function(t,e){t.commit("setMode",e)},setIsActive:function(t,e){t.commit("setIsActive",e)},change:function(t,e){t.getters.mode===e?t.dispatch("setIsActive",!t.getters.isActive):(t.dispatch("setIsActive",!0),t.dispatch("setMode",e)),!0===t.getters.isActive?(t.dispatch("reset"),t.dispatch("vibrate",t.getters.patterns[t.getters.mode].pattern)):t.dispatch("reset")},startCustom:function(t,e){t.dispatch("setIsActive",!1),t.dispatch("setMode",0),t.dispatch("reset"),t.dispatch("vibrate",e)}},modules:{MGamepads:c,MPatterns:d}});var m=p}},e={};function n(a){var i=e[a];if(void 0!==i)return i.exports;var r=e[a]={exports:{}};return t[a](r,r.exports,n),r.exports}n.m=t,function(){var t=[];n.O=function(e,a,i,r){if(!a){var s=1/0;for(d=0;d=r)&&Object.keys(n.O).every((function(t){return n.O[t](a[c])}))?a.splice(c--,1):(o=!1,r0&&t[d-1][2]>r;d--)t[d]=t[d-1];t[d]=[a,i,r]}}(),function(){n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,{a:e}),e}}(),function(){n.d=function(t,e){for(var a in e)n.o(e,a)&&!n.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})}}(),function(){n.f={},n.e=function(t){return Promise.all(Object.keys(n.f).reduce((function(e,a){return n.f[a](t,e),e}),[]))}}(),function(){n.u=function(t){return"js/"+t+"."+{46:"c7a9f83c",554:"0d3dfa8b",567:"1165d9e5"}[t]+".js"}}(),function(){n.miniCssF=function(t){return"css/"+t+"."+{46:"30c3638a",554:"10b8ac32"}[t]+".css"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"===typeof window)return window}}()}(),function(){n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)}}(),function(){var t={},e="wavelovers:";n.l=function(a,i,r,s){if(t[a])t[a].push(i);else{var o,c;if(void 0!==r)for(var u=document.getElementsByTagName("script"),d=0;d0?((0,i.wg)(),(0,i.j4)(p,{key:0,gamepads:t.gamepads},null,8,["gamepads"])):((0,i.wg)(),(0,i.j4)(m,{key:1},{default:(0,i.w5)((()=>[s])),_:1}))])}var c=n(1746);const u={class:"content-item navigation-list"},d=(0,i.Uk)("Manual"),p=(0,i.Uk)("Patterns"),m=(0,i.Uk)("Diagnostic");function l(t,e,n,a,r,s){const o=(0,i.up)("router-link");return(0,i.wg)(),(0,i.iD)("div",u,[(0,i.Wm)(o,{to:"/manual",class:"navigation-item"},{default:(0,i.w5)((()=>[d])),_:1}),(0,i.Wm)(o,{to:"/",class:"navigation-item"},{default:(0,i.w5)((()=>[p])),_:1}),(0,i.Wm)(o,{to:"/diagnostic",class:"navigation-item"},{default:(0,i.w5)((()=>[m])),_:1})])}var f=(0,i.aZ)({name:"NavigationList"}),v=n(89);const g=(0,v.Z)(f,[["render",l]]);var h=g,w=n(7139);const b={class:"content-item device-list"};function y(t,e,n,a,r,s){const o=(0,i.up)("GamepadItem");return(0,i.wg)(),(0,i.iD)("div",b,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t.gamepads,(t=>((0,i.wg)(),(0,i.j4)(o,{key:t.id,textContent:(0,w.zw)(t.unit.id)},null,8,["textContent"])))),128))])}const A={class:"list-item"};function Z(t,e,n,a,r,s){return(0,i.wg)(),(0,i.iD)("div",A)}var k=(0,i.aZ)({name:"GamepadItem"});const C=(0,v.Z)(k,[["render",Z]]);var _=C,P=(0,i.aZ)({name:"GamepadList",props:{gamepads:{type:Array}},components:{GamepadItem:_}});const E=(0,v.Z)(P,[["render",y]]);var L=E;const j={class:"content-item message"};function I(t,e,n,a,r,s){return(0,i.wg)(),(0,i.iD)("div",j,[(0,i._)("span",null,[(0,i.WI)(t.$slots,"default")])])}var x=(0,i.aZ)({name:"MessageItem"});const G=(0,v.Z)(x,[["render",I]]);var M=G,O=(0,i.aZ)({name:"App",components:{NavigationList:h,GamepadList:L,MessageItem:M},computed:{gamepads:function(){return c.Z.getters.gamepads}},methods:{addEventListeners(){window.addEventListener("gamepadconnected",(t=>c.Z.dispatch("addGamepad",t))),window.addEventListener("gamepaddisconnected",(t=>c.Z.dispatch("deleteGamepad",t)))},removeEventListeners(){window.removeEventListener("gamepadconnected",(t=>c.Z.dispatch("addGamepad",t))),window.removeEventListener("gamepaddisconnected",(t=>c.Z.dispatch("deleteGamepad",t)))}},mounted(){this.addEventListeners()},unmounted(){this.removeEventListeners()}});const D=(0,v.Z)(O,[["render",o]]);var N=D,T=n(2483);function S(t,e,n,a,r,s){const o=(0,i.up)("AppPatterns");return(0,i.wg)(),(0,i.j4)(o)}const V={class:"app-patterns"},U=(0,i.Uk)("Loading...");function W(t,e,n,a,r,s){const o=(0,i.up)("PatternList"),c=(0,i.up)("MessageItem");return(0,i.wg)(),(0,i.iD)("div",V,[t.patterns.length>0?((0,i.wg)(),(0,i.j4)(o,{key:0,patterns:t.patterns,mode:t.mode,isActive:t.isActive,onChange:t.change},null,8,["patterns","mode","isActive","onChange"])):((0,i.wg)(),(0,i.j4)(c,{key:1},{default:(0,i.w5)((()=>[U])),_:1}))])}const B={class:"content-item pattern-list"};function z(t,e,n,a,r,s){const o=(0,i.up)("PatternItem");return(0,i.wg)(),(0,i.iD)("div",B,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t.patterns,((e,n)=>((0,i.wg)(),(0,i.j4)(o,{key:e.name,pattern:e,index:n,mode:t.mode,isActive:t.isActive,onChange:t.change},null,8,["pattern","index","mode","isActive","onChange"])))),128))])}const F=["textContent"],H={class:"pattern-item__info-container"},K=["textContent"],$=["textContent"];function q(t,e,n,a,r,s){return(0,i.wg)(),(0,i.iD)("div",{onClick:e[0]||(e[0]=e=>t.change(t.index)),class:(0,w.C_)(["pattern-item",t.index===t.mode&&!0===t.isActive?"pattern-item_selected":""])},[(0,i._)("span",{class:"pattern-item__icon",textContent:(0,w.zw)(t.pattern.icon)},null,8,F),(0,i._)("div",H,[(0,i._)("span",{class:"pattern-item__name",textContent:(0,w.zw)(t.pattern.name)},null,8,K),(0,i._)("span",{class:"pattern-item__type",textContent:(0,w.zw)(t.pattern.type)},null,8,$)])],2)}var Y=(0,i.aZ)({name:"PatternItem",props:{pattern:{type:Object},index:{type:Number},mode:{type:Number},isActive:{type:Boolean}},methods:{change:function(t){this.$emit("change",t)}}});const J=(0,v.Z)(Y,[["render",q]]);var Q=J,R=(0,i.aZ)({name:"PatternList",props:{patterns:{type:Array},mode:{type:Number},isActive:{type:Boolean}},components:{PatternItem:Q},methods:{change:function(t){this.$emit("change",t)}}});const X=(0,v.Z)(R,[["render",z]]);var tt=X,et=(0,i.aZ)({name:"AppPatterns",components:{PatternList:tt,MessageItem:M},computed:{patterns:function(){return c.Z.getters.patterns},mode:function(){return c.Z.getters.mode},isActive:function(){return c.Z.getters.isActive}},methods:{change(t){c.Z.dispatch("change",t)}},mounted(){c.Z.dispatch("loadPatterns")}});const nt=(0,v.Z)(et,[["render",W]]);var at=nt,it=(0,i.aZ)({name:"PatternsView",components:{AppPatterns:at}});const rt=(0,v.Z)(it,[["render",S]]);var st=rt;const ot=[{path:"/",name:"patterns-view",component:st},{path:"/manual",name:"manual-view",component:()=>n.e(46).then(n.bind(n,9046))},{path:"/diagnostic",name:"diagnostic-view",component:()=>n.e(554).then(n.bind(n,4554))},{path:"/404",name:"404",component:()=>n.e(567).then(n.bind(n,7567))},{path:"/:catchAll(.*)",redirect:"/404"}],ct=(0,T.p7)({history:(0,T.PO)("/"),routes:ot});var ut=ct;(0,a.ri)(N).use(c.Z).use(ut).mount("#app")},1746:function(t,e,n){n.d(e,{Z:function(){return m}});var a=n(65),i=n(2482);class r{constructor(t){(0,i.Z)(this,"id",void 0),(0,i.Z)(this,"canVibrate",void 0),(0,i.Z)(this,"isVibrating",void 0),(0,i.Z)(this,"unit",void 0),(0,i.Z)(this,"pattern",void 0),(0,i.Z)(this,"interval",void 0),this.unit=t,this.id=Date.now(),this.canVibrate=!!this.unit.vibrationActuator,this.isVibrating=!1,this.pattern=[],this.update=this.update.bind(this),this.interval=setInterval(this.update,1)}update(){const t=navigator.getGamepads();this.unit=t[this.unit.index]}reset(){this.isVibrating=!1,this.unit.vibrationActuator.reset()}async vibrate(t){this.isVibrating=!0,this.pattern=t;while(!0===this.isVibrating)for(let t=0;tsetTimeout(e,t)))}}var s=r;const o={state:()=>({gamepads:[]}),getters:{gamepads:function(t){return t.gamepads}},mutations:{addGamepad:function(t,e){t.gamepads.push(e)},deleteGamepad:function(t,e){t.gamepads.splice(e,1)}},actions:{addGamepad:function(t,e){const n=e;t.getters.gamepads.length>=1||t.commit("addGamepad",new s(n.gamepad))},deleteGamepad:function(t,e){t.getters.gamepads.forEach(((n,a)=>{n.unit.id===e.gamepad.id&&t.commit("deleteGamepad",a)}))},vibrate:function(t,e){t.getters.gamepads.forEach((t=>{t.vibrate(e)}))},reset:function(t){t.getters.gamepads.forEach((t=>{t.reset()}))}}};var c=o;const u={state:()=>({patterns:[]}),getters:{patterns:function(t){return t.patterns}},mutations:{setPatterns:function(t,e){t.patterns=e}},actions:{loadPatterns:async function(t){const e="https://wavelovers.ru/assets/patterns.json";try{const n=await fetch(e);if(n.ok){const e=await n.json();t.commit("setPatterns",e)}else console.log("Connect to the Internet for download more patterns...")}catch(n){console.log(n)}}}};var d=u;const p=(0,a.MT)({state:()=>({mode:0,isActive:!1}),getters:{mode:function(t){return t.mode},isActive:function(t){return t.isActive}},mutations:{setMode:function(t,e){t.mode=e},setIsActive:function(t,e){t.isActive=e}},actions:{setMode:function(t,e){t.commit("setMode",e)},setIsActive:function(t,e){t.commit("setIsActive",e)},change:function(t,e){t.getters.mode===e?t.dispatch("setIsActive",!t.getters.isActive):(t.dispatch("setIsActive",!0),t.dispatch("setMode",e)),!0===t.getters.isActive?(t.dispatch("reset"),t.dispatch("vibrate",t.getters.patterns[t.getters.mode].pattern)):t.dispatch("reset")},startCustom:function(t,e){t.dispatch("setIsActive",!1),t.dispatch("setMode",0),t.dispatch("reset"),t.dispatch("vibrate",e)}},modules:{MGamepads:c,MPatterns:d}});var m=p}},e={};function n(a){var i=e[a];if(void 0!==i)return i.exports;var r=e[a]={exports:{}};return t[a](r,r.exports,n),r.exports}n.m=t,function(){var t=[];n.O=function(e,a,i,r){if(!a){var s=1/0;for(d=0;d=r)&&Object.keys(n.O).every((function(t){return n.O[t](a[c])}))?a.splice(c--,1):(o=!1,r0&&t[d-1][2]>r;d--)t[d]=t[d-1];t[d]=[a,i,r]}}(),function(){n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,{a:e}),e}}(),function(){n.d=function(t,e){for(var a in e)n.o(e,a)&&!n.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})}}(),function(){n.f={},n.e=function(t){return Promise.all(Object.keys(n.f).reduce((function(e,a){return n.f[a](t,e),e}),[]))}}(),function(){n.u=function(t){return"js/"+t+"."+{46:"c7a9f83c",554:"0d3dfa8b",567:"1165d9e5"}[t]+".js"}}(),function(){n.miniCssF=function(t){return"css/"+t+"."+{46:"30c3638a",554:"10b8ac32"}[t]+".css"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"===typeof window)return window}}()}(),function(){n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)}}(),function(){var t={},e="wavelovers:";n.l=function(a,i,r,s){if(t[a])t[a].push(i);else{var o,c;if(void 0!==r)for(var u=document.getElementsByTagName("script"),d=0;d 0)\n ? (_openBlock(), _createBlock(_component_GamepadList, {\n key: 0,\n gamepads: _ctx.gamepads\n }, null, 8, [\"gamepads\"]))\n : (_openBlock(), _createBlock(_component_MessageItem, { key: 1 }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }))\n ]))\n}","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"content-item navigation-list\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\"Manual\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"Patterns\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"Diagnostic\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_router_link, {\n to: \"/manual\",\n class: \"navigation-item\"\n }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/\",\n class: \"navigation-item\"\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/diagnostic\",\n class: \"navigation-item\"\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n })\n ]))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'NavigationList',\r\n });\r\n","import { render } from \"./NavigationList.vue?vue&type=template&id=1919eb74&ts=true\"\nimport script from \"./NavigationList.vue?vue&type=script&lang=ts\"\nexport * from \"./NavigationList.vue?vue&type=script&lang=ts\"\n\nimport \"./NavigationList.vue?vue&type=style&index=0&id=1919eb74&lang=scss\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, toDisplayString as _toDisplayString, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"content-item device-list\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_GamepadItem = _resolveComponent(\"GamepadItem\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.gamepads, (gamepad) => {\n return (_openBlock(), _createBlock(_component_GamepadItem, {\n key: gamepad.id,\n textContent: _toDisplayString(gamepad.unit.id)\n }, null, 8, [\"textContent\"]))\n }), 128))\n ]))\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"list-item\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'GamepadItem',\r\n });\r\n","import { render } from \"./GamepadItem.vue?vue&type=template&id=e6e6c988&ts=true\"\nimport script from \"./GamepadItem.vue?vue&type=script&lang=ts\"\nexport * from \"./GamepadItem.vue?vue&type=script&lang=ts\"\n\nimport \"./GamepadItem.vue?vue&type=style&index=0&id=e6e6c988&lang=scss\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n import { defineComponent } from 'vue';\r\n import GamepadItem from '@/components/GamepadItem.vue';\r\n\r\n export default defineComponent({\r\n name: 'GamepadList',\r\n props: {\r\n gamepads: {\r\n type: Array,\r\n },\r\n },\r\n components: {\r\n GamepadItem: GamepadItem,\r\n },\r\n });\r\n ","import { render } from \"./GamepadList.vue?vue&type=template&id=16065af4&ts=true\"\nimport script from \"./GamepadList.vue?vue&type=script&lang=ts\"\nexport * from \"./GamepadList.vue?vue&type=script&lang=ts\"\n\nimport \"./GamepadList.vue?vue&type=style&index=0&id=16065af4&lang=scss\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"content-item message\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", null, [\n _renderSlot(_ctx.$slots, \"default\")\n ])\n ]))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'MessageItem',\r\n });\r\n","import { render } from \"./MessageItem.vue?vue&type=template&id=31b477d2&ts=true\"\nimport script from \"./MessageItem.vue?vue&type=script&lang=ts\"\nexport * from \"./MessageItem.vue?vue&type=script&lang=ts\"\n\nimport \"./MessageItem.vue?vue&type=style&index=0&id=31b477d2&lang=scss\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n import { defineComponent } from 'vue';\r\n import store from '@/store/index';\r\n import NavigationList from '@/components/NavigationList.vue';\r\n import GamepadList from '@/components/GamepadList.vue';\r\n import MessageItem from '@/components/MessageItem.vue';\r\n import Vibrator from '@/models/Vibrator';\r\n\r\n export default defineComponent({\r\n name: 'App',\r\n components: {\r\n NavigationList: NavigationList,\r\n GamepadList: GamepadList,\r\n MessageItem: MessageItem,\r\n },\r\n computed: {\r\n gamepads: function (): Vibrator[] {\r\n return store.getters.gamepads as Vibrator[];\r\n },\r\n },\r\n methods: {\r\n addEventListeners(): void {\r\n window.addEventListener('gamepadconnected', (event: GamepadEvent) => store.dispatch('addGamepad', event));\r\n window.addEventListener('gamepaddisconnected', (event: GamepadEvent) => store.dispatch('deleteGamepad', event));\r\n },\r\n removeEventListeners(): void {\r\n window.removeEventListener('gamepadconnected', (event: GamepadEvent) => store.dispatch('addGamepad', event));\r\n window.removeEventListener('gamepaddisconnected', (event: GamepadEvent) => store.dispatch('deleteGamepad', event));\r\n },\r\n },\r\n mounted() {\r\n this.addEventListeners();\r\n },\r\n unmounted() {\r\n this.removeEventListeners();\r\n },\r\n });\r\n","import { render } from \"./App.vue?vue&type=template&id=7f0977f6&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_AppPatterns = _resolveComponent(\"AppPatterns\")!\n\n return (_openBlock(), _createBlock(_component_AppPatterns))\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"app-patterns\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\"Loading...\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_PatternList = _resolveComponent(\"PatternList\")!\n const _component_MessageItem = _resolveComponent(\"MessageItem\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.patterns.length > 0)\n ? (_openBlock(), _createBlock(_component_PatternList, {\n key: 0,\n patterns: _ctx.patterns,\n mode: _ctx.mode,\n isActive: _ctx.isActive,\n onChange: _ctx.change\n }, null, 8, [\"patterns\", \"mode\", \"isActive\", \"onChange\"]))\n : (_openBlock(), _createBlock(_component_MessageItem, { key: 1 }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }))\n ]))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"content-item pattern-list\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_PatternItem = _resolveComponent(\"PatternItem\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.patterns, (pattern, index) => {\n return (_openBlock(), _createBlock(_component_PatternItem, {\n key: pattern.name,\n pattern: pattern,\n index: index,\n mode: _ctx.mode,\n isActive: _ctx.isActive,\n onChange: _ctx.change\n }, null, 8, [\"pattern\", \"index\", \"mode\", \"isActive\", \"onChange\"]))\n }), 128))\n ]))\n}","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"textContent\"]\nconst _hoisted_2 = { class: \"pattern-item__info-container\" }\nconst _hoisted_3 = [\"textContent\"]\nconst _hoisted_4 = [\"textContent\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.change(_ctx.index))),\n class: _normalizeClass(['pattern-item',\r\n _ctx.index === _ctx.mode && _ctx.isActive === true ?\r\n 'pattern-item_selected' : '',\r\n ])\n }, [\n _createElementVNode(\"span\", {\n class: \"pattern-item__icon\",\n textContent: _toDisplayString(_ctx.pattern.icon)\n }, null, 8, _hoisted_1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", {\n class: \"pattern-item__name\",\n textContent: _toDisplayString(_ctx.pattern.name)\n }, null, 8, _hoisted_3),\n _createElementVNode(\"span\", {\n class: \"pattern-item__type\",\n textContent: _toDisplayString(_ctx.pattern.type)\n }, null, 8, _hoisted_4)\n ])\n ], 2))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'PatternItem',\r\n props: {\r\n pattern: {\r\n type: Object,\r\n },\r\n index: {\r\n type: Number,\r\n },\r\n mode: {\r\n type: Number,\r\n },\r\n isActive: {\r\n type: Boolean,\r\n },\r\n },\r\n methods: {\r\n change: function (index: number): void {\r\n this.$emit('change', index as number);\r\n },\r\n },\r\n });\r\n","import { render } from \"./PatternItem.vue?vue&type=template&id=7dfe2650&ts=true\"\nimport script from \"./PatternItem.vue?vue&type=script&lang=ts\"\nexport * from \"./PatternItem.vue?vue&type=script&lang=ts\"\n\nimport \"./PatternItem.vue?vue&type=style&index=0&id=7dfe2650&lang=scss\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n import { defineComponent } from 'vue';\r\n import PatternItem from '@/components/PatternItem.vue';\r\n\r\n export default defineComponent({\r\n name: 'PatternList',\r\n props: {\r\n patterns: {\r\n type: Array,\r\n },\r\n mode: {\r\n type: Number,\r\n },\r\n isActive: {\r\n type: Boolean,\r\n },\r\n },\r\n components: {\r\n PatternItem: PatternItem,\r\n },\r\n methods: {\r\n change: function (index: number): void {\r\n this.$emit('change', index as number);\r\n },\r\n },\r\n });\r\n","import { render } from \"./PatternList.vue?vue&type=template&id=0515b58e&ts=true\"\nimport script from \"./PatternList.vue?vue&type=script&lang=ts\"\nexport * from \"./PatternList.vue?vue&type=script&lang=ts\"\n\nimport \"./PatternList.vue?vue&type=style&index=0&id=0515b58e&lang=scss\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n import { defineComponent } from 'vue';\r\n import store from '@/store/index';\r\n import PatternList from '@/components/PatternList.vue';\r\n import MessageItem from '@/components/MessageItem.vue';\r\n import TPattern from '@/models/TPattern';\r\n\r\n export default defineComponent({\r\n name: 'AppPatterns',\r\n components: {\r\n PatternList: PatternList,\r\n MessageItem: MessageItem,\r\n },\r\n computed: {\r\n patterns: function (): TPattern[] {\r\n return store.getters.patterns as TPattern[];\r\n },\r\n mode: function (): number {\r\n return store.getters.mode as number;\r\n },\r\n isActive: function (): boolean {\r\n return store.getters.isActive as boolean;\r\n },\r\n },\r\n methods: {\r\n change(index: number): void {\r\n store.dispatch('change', index as number);\r\n },\r\n },\r\n mounted() {\r\n store.dispatch('loadPatterns');\r\n },\r\n });\r\n","import { render } from \"./AppPatterns.vue?vue&type=template&id=44c5840c&ts=true\"\nimport script from \"./AppPatterns.vue?vue&type=script&lang=ts\"\nexport * from \"./AppPatterns.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n import { defineComponent } from 'vue';\r\n import AppPatterns from '@/components/AppPatterns.vue';\r\n\r\n export default defineComponent({\r\n name: 'PatternsView',\r\n components: {\r\n AppPatterns: AppPatterns,\r\n },\r\n });\r\n","import { render } from \"./PatternsView.vue?vue&type=template&id=440c70d9&ts=true\"\nimport script from \"./PatternsView.vue?vue&type=script&lang=ts\"\nexport * from \"./PatternsView.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"E:\\\\Sources\\\\Repos\\\\wavelovers\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';\r\nimport PatternsView from '@/views/PatternsView.vue';\r\n\r\nconst routes: Array = [\r\n {\r\n path: '/',\r\n name: 'patterns-view',\r\n component: PatternsView,\r\n },\r\n {\r\n path: '/manual',\r\n name: 'manual-view',\r\n component: () => import('@/views/ManualView.vue'),\r\n },\r\n {\r\n path: '/diagnostic',\r\n name: 'diagnostic-view',\r\n component: () => import('@/views/DiagnosticView.vue'),\r\n },\r\n {\r\n path: '/404',\r\n name: '404',\r\n component: () => import('@/views/NotFoundView.vue'),\r\n },\r\n {\r\n path: '/:catchAll(.*)',\r\n redirect: '/404',\r\n },\r\n];\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes,\r\n});\r\n\r\nexport default router;\r\n\r\n","import { createApp } from 'vue';\r\nimport App from './App.vue';\r\nimport router from './router';\r\nimport store from './store';\r\n\r\ncreateApp(App).use(store).use(router).mount('#app');\r\n\r\n","import TPatternUnit from '@/models/TPatternUnit';\r\nimport IGamepad from '@/models/IGamepad';\r\nimport IVibrator from '@/models/IVibrator';\r\n\r\nclass Vibrator implements IVibrator {\r\n readonly id: number;\r\n readonly canVibrate: boolean;\r\n isVibrating: boolean;\r\n unit: IGamepad;\r\n pattern: TPatternUnit[];\r\n interval: number;\r\n\r\n constructor(unit: IGamepad) {\r\n this.unit = unit;\r\n this.id = Date.now();\r\n this.canVibrate = (this.unit.vibrationActuator) ? true : false;\r\n this.isVibrating = false;\r\n this.pattern = [];\r\n\r\n this.update = this.update.bind(this);\r\n this.interval = setInterval(this.update, 1);\r\n }\r\n\r\n update(): void {\r\n const gamepads = navigator.getGamepads();\r\n this.unit = gamepads[this.unit.index] as unknown as IGamepad;\r\n }\r\n\r\n reset(): void {\r\n this.isVibrating = false;\r\n this.unit.vibrationActuator.reset();\r\n }\r\n\r\n async vibrate(pattern: TPatternUnit[]) {\r\n this.isVibrating = true;\r\n this.pattern = pattern;\r\n while (this.isVibrating === true) {\r\n for (let i = 0; i < this.pattern.length; i++) {\r\n if (this.isVibrating === true) {\r\n this.unit.vibrationActuator.playEffect('dual-rumble', this.pattern[i]);\r\n await this.sleep(this.pattern[i].startDelay + this.pattern[i].duration - 10);\r\n } else {\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n sleep(ms: number): Promise {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n}\r\n\r\nexport default Vibrator;\r\n\r\n","import { ActionContext, Module } from 'vuex';\r\nimport IRootState from '@/store/models/IRootState';\r\nimport IGamepadsState from '@/store/models/IGamepadsState';\r\nimport Vibrator from '@/models/Vibrator';\r\nimport IGamepad from '@/models/IGamepad';\r\nimport IGamepadEvent from '@/models/IGamepadEvent';\r\nimport TPatternUnit from '@/models/TPatternUnit';\r\n\r\nconst MGamepads: Module = {\r\n state: () => ({\r\n gamepads: [] as Vibrator[],\r\n }),\r\n getters: {\r\n gamepads: function (state: IGamepadsState): Vibrator[] {\r\n return state.gamepads as Vibrator[];\r\n },\r\n },\r\n mutations: {\r\n addGamepad: function (state: IGamepadsState, gamepad: Vibrator): void {\r\n state.gamepads.push(gamepad as Vibrator);\r\n },\r\n deleteGamepad: function (state: IGamepadsState, index: number): void {\r\n state.gamepads.splice(index, 1);\r\n },\r\n },\r\n actions: {\r\n addGamepad: function (\r\n context: ActionContext,\r\n event: GamepadEvent\r\n ): void {\r\n const iEvent: IGamepadEvent = event as unknown as IGamepadEvent;\r\n if (context.getters.gamepads.length >= 1) {\r\n return;\r\n } else {\r\n context.commit('addGamepad', new Vibrator(iEvent.gamepad as IGamepad));\r\n }\r\n },\r\n deleteGamepad: function (\r\n context: ActionContext,\r\n event: GamepadEvent\r\n ): void {\r\n context.getters.gamepads.forEach((gamepad: Vibrator, index: number) => {\r\n if (gamepad.unit.id === event.gamepad.id) {\r\n context.commit('deleteGamepad', index as number);\r\n }\r\n });\r\n },\r\n vibrate: function (\r\n context: ActionContext,\r\n pattern: TPatternUnit[]\r\n ): void {\r\n context.getters.gamepads.forEach((gamepad: Vibrator) => {\r\n gamepad.vibrate(pattern);\r\n });\r\n },\r\n reset: function (\r\n context: ActionContext\r\n ): void {\r\n context.getters.gamepads.forEach((gamepad: Vibrator) => {\r\n gamepad.reset();\r\n });\r\n },\r\n },\r\n};\r\n\r\nexport default MGamepads;\r\n\r\n","import { ActionContext, Module } from 'vuex';\r\nimport IRootState from '@/store/models/IRootState';\r\nimport IPatternState from '@/store/models/IPatternState';\r\nimport TPattern from '@/models/TPattern';\r\n\r\nconst MPatterns: Module = {\r\n state: () => ({\r\n patterns: [] as TPattern[],\r\n }),\r\n getters: {\r\n patterns: function (state: IPatternState): TPattern[] {\r\n return state.patterns as TPattern[];\r\n },\r\n },\r\n mutations: {\r\n setPatterns: function (state: IPatternState, patterns: TPattern[]): void {\r\n state.patterns = patterns as TPattern[];\r\n },\r\n },\r\n actions: {\r\n loadPatterns: async function (\r\n context: ActionContext\r\n ): Promise {\r\n const url = 'https://wavelovers.ru/assets/patterns.json';\r\n try {\r\n const response: Response = await fetch(url);\r\n if (response.ok) {\r\n const json: TPattern[] = await response.json();\r\n context.commit('setPatterns', json as TPattern[]);\r\n } else {\r\n console.log('Connect to the Internet for download more patterns...');\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n },\r\n};\r\n\r\nexport default MPatterns;\r\n\r\n","import { createStore, Store } from 'vuex';\r\nimport IRootState from './models/IRootState';\r\nimport MGamepads from '@/store/modules/MGamepads';\r\nimport MPatterns from '@/store/modules/MPatterns';\r\nimport TPatternUnit from '../models/TPatternUnit';\r\n\r\nconst store: Store = createStore({\r\n state: () => ({\r\n mode: 0 as number,\r\n isActive: false as boolean,\r\n }),\r\n getters: {\r\n mode: function (state: IRootState): number {\r\n return state.mode as number;\r\n },\r\n isActive: function (state: IRootState): boolean {\r\n return state.isActive as boolean;\r\n },\r\n },\r\n mutations: {\r\n setMode: function (state: IRootState, mode: number): void {\r\n state.mode = mode as number;\r\n },\r\n setIsActive: function (state: IRootState, isActive: boolean): void {\r\n state.isActive = isActive as boolean;\r\n },\r\n },\r\n actions: {\r\n setMode: function (context, index: number): void {\r\n context.commit('setMode', index as number);\r\n },\r\n setIsActive: function (context, isActive: boolean): void {\r\n context.commit('setIsActive', isActive as boolean);\r\n },\r\n change: function (context, index: number): void {\r\n if (context.getters.mode === index) {\r\n context.dispatch('setIsActive', !context.getters.isActive);\r\n } else {\r\n context.dispatch('setIsActive', true);\r\n context.dispatch('setMode', index);\r\n }\r\n if (context.getters.isActive === true) {\r\n context.dispatch('reset');\r\n context.dispatch(\r\n 'vibrate',\r\n context.getters.patterns[context.getters.mode].pattern\r\n );\r\n } else {\r\n context.dispatch('reset');\r\n }\r\n },\r\n startCustom: function (context, pattern: TPatternUnit[]): void {\r\n context.dispatch('setIsActive', false);\r\n context.dispatch('setMode', 0);\r\n context.dispatch('reset');\r\n context.dispatch('vibrate', pattern);\r\n },\r\n },\r\n modules: {\r\n MGamepads: MGamepads,\r\n MPatterns: MPatterns,\r\n },\r\n});\r\n\r\nexport default store;\r\n\r\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"46\":\"c7a9f83c\",\"554\":\"0d3dfa8b\",\"567\":\"1165d9e5\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"46\":\"30c3638a\",\"554\":\"10b8ac32\"}[chunkId] + \".css\";\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); }","var inProgress = {};\nvar dataWebpackPrefix = \"wavelovers:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"46\":1,\"554\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// 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__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\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[\"webpackChunkwavelovers\"] = self[\"webpackChunkwavelovers\"] || [];\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__(2892); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_hoisted_1","class","_hoisted_2","_createTextVNode","render","_ctx","_cache","$props","$setup","$data","$options","_component_NavigationList","_resolveComponent","_component_router_view","_component_GamepadList","_component_MessageItem","_openBlock","_createElementBlock","_createVNode","gamepads","length","_createBlock","key","default","_withCtx","_","_hoisted_3","_hoisted_4","_component_router_link","to","defineComponent","name","__exports__","_component_GamepadItem","_Fragment","_renderList","gamepad","id","textContent","_toDisplayString","unit","props","type","Array","components","GamepadItem","_createElementVNode","_renderSlot","$slots","NavigationList","GamepadList","MessageItem","computed","store","methods","addEventListeners","window","addEventListener","event","removeEventListeners","removeEventListener","mounted","this","unmounted","_component_AppPatterns","_component_PatternList","patterns","mode","isActive","onChange","change","_component_PatternItem","pattern","index","onClick","$event","_normalizeClass","icon","Object","Number","Boolean","$emit","PatternItem","PatternList","AppPatterns","routes","path","component","PatternsView","redirect","router","createRouter","history","createWebHistory","process","createApp","App","use","mount","Vibrator","constructor","Date","now","canVibrate","vibrationActuator","isVibrating","update","bind","interval","setInterval","navigator","getGamepads","reset","i","playEffect","sleep","startDelay","duration","ms","Promise","resolve","setTimeout","MGamepads","state","getters","mutations","addGamepad","push","deleteGamepad","splice","actions","context","iEvent","commit","forEach","vibrate","MPatterns","setPatterns","loadPatterns","async","url","response","fetch","ok","json","console","log","error","createStore","setMode","setIsActive","dispatch","startCustom","modules","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","keys","every","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","all","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","call","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","target","head","appendChild","Symbol","toStringTag","value","p","createStylesheet","fullhref","reject","linkTag","rel","onLinkComplete","errorType","realHref","href","err","Error","code","request","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","then","installedChunks","installedChunkData","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file