From 5b70538117c21255fd4190e3cc53476651f8b460 Mon Sep 17 00:00:00 2001 From: Eugene Serb <46799701+eugene-serb@users.noreply.github.com> Date: Sat, 10 Sep 2022 17:29:20 +0300 Subject: [PATCH] - modified MetaTagUpdater. - added condition for link tags. - improve stability. - linted code. - up version. - build. --- .eslintrc.js | 1 - LICENSE.md | 1 - README.md | 1 - babel.config.js | 1 - .../{582.266e2dcc.css => 114.266e2dcc.css} | 0 .../{807.d84ba812.css => 286.d84ba812.css} | 0 docs/css/{66.bb6440f7.css => 37.bb6440f7.css} | 0 .../{219.c3fb6094.css => 402.c3fb6094.css} | 0 .../{709.ef4a4981.css => 743.ef4a4981.css} | 0 .../{672.278b2bb3.css => 994.278b2bb3.css} | 0 docs/index.html | 2 +- docs/js/114.98880cb6.js | 2 + ...82.a8f6467f.js.map => 114.98880cb6.js.map} | 2 +- docs/js/219.2a2a502d.js.map | 1 - docs/js/286.cdd8d127.js | 2 + docs/js/286.cdd8d127.js.map | 1 + docs/js/{66.54b2ec35.js => 37.e3372f87.js} | 4 +- ...{66.54b2ec35.js.map => 37.e3372f87.js.map} | 2 +- docs/js/370.2a33e7b8.js | 2 + ...45.b32a0b62.js.map => 370.2a33e7b8.js.map} | 2 +- docs/js/{219.2a2a502d.js => 402.5e25729c.js} | 4 +- docs/js/402.5e25729c.js.map | 1 + docs/js/582.a8f6467f.js | 2 - docs/js/645.b32a0b62.js | 2 - docs/js/709.b171ad0f.js | 2 - docs/js/743.4b374804.js | 2 + ...09.b171ad0f.js.map => 743.4b374804.js.map} | 2 +- docs/js/{531.6af13e76.js => 784.8d118bb9.js} | 4 +- ...31.6af13e76.js.map => 784.8d118bb9.js.map} | 2 +- docs/js/807.d54b1ac1.js | 2 - docs/js/807.d54b1ac1.js.map | 1 - docs/js/{672.270ec4e0.js => 994.7e011783.js} | 4 +- ...72.270ec4e0.js.map => 994.7e011783.js.map} | 2 +- docs/js/app.c1a049b3.js | 2 + docs/js/app.c1a049b3.js.map | 1 + docs/js/app.d0c8a9ec.js | 2 - docs/js/app.d0c8a9ec.js.map | 1 - package-lock.json | 4 +- package.json | 2 +- src/App.vue | 1 - src/components/AppCustom.vue | 1 - src/components/AppDiagnostic.vue | 1 - src/components/AppManual.vue | 1 - src/components/AppPatterns.vue | 1 - src/components/DiagnosticItem.vue | 1 - src/components/FooterItem.vue | 1 - src/components/GamepadItem.vue | 1 - src/components/GamepadList.vue | 1 - src/components/HeaderItem.vue | 1 - src/components/MessageItem.vue | 1 - src/components/NavigationList.vue | 1 - src/components/PatternItem.vue | 1 - src/components/PatternList.vue | 1 - src/main.ts | 1 - src/models/IGamepad.ts | 1 - src/models/IGamepadButton.ts | 1 - src/models/IGamepadEvent.ts | 1 - src/models/IPatternUnit.ts | 1 - src/models/IVibrationActuator.ts | 1 - src/models/IVibrator.ts | 1 - src/models/PatternUnit.ts | 1 - src/models/TPattern.ts | 1 - src/models/TPatternUnit.ts | 1 - src/models/Vibrator.ts | 1 - src/router/index.ts | 1 - src/router/modules/MetaTagUpdater.ts | 60 +++++++++++-------- src/router/modules/QueryRouter.ts | 1 - src/shims-vue.d.ts | 1 - src/store/index.ts | 1 - src/store/models/IGamepadsState.ts | 1 - src/store/models/IPatternState.ts | 1 - src/store/models/IRootState.ts | 1 - src/store/modules/MGamepads.ts | 1 - src/store/modules/MPatterns.ts | 1 - src/views/AboutView.vue | 1 - src/views/CustomView.vue | 1 - src/views/DiagnosticView.vue | 1 - src/views/DonateView.vue | 1 - src/views/FaqView.vue | 1 - src/views/ManualView.vue | 1 - src/views/NotFoundView.vue | 1 - src/views/PatternsView.vue | 1 - tsconfig.json | 1 - vue.config.js | 1 - 84 files changed, 67 insertions(+), 103 deletions(-) rename docs/css/{582.266e2dcc.css => 114.266e2dcc.css} (100%) rename docs/css/{807.d84ba812.css => 286.d84ba812.css} (100%) rename docs/css/{66.bb6440f7.css => 37.bb6440f7.css} (100%) rename docs/css/{219.c3fb6094.css => 402.c3fb6094.css} (100%) rename docs/css/{709.ef4a4981.css => 743.ef4a4981.css} (100%) rename docs/css/{672.278b2bb3.css => 994.278b2bb3.css} (100%) create mode 100644 docs/js/114.98880cb6.js rename docs/js/{582.a8f6467f.js.map => 114.98880cb6.js.map} (94%) delete mode 100644 docs/js/219.2a2a502d.js.map create mode 100644 docs/js/286.cdd8d127.js create mode 100644 docs/js/286.cdd8d127.js.map rename docs/js/{66.54b2ec35.js => 37.e3372f87.js} (90%) rename docs/js/{66.54b2ec35.js.map => 37.e3372f87.js.map} (86%) create mode 100644 docs/js/370.2a33e7b8.js rename docs/js/{645.b32a0b62.js.map => 370.2a33e7b8.js.map} (92%) rename docs/js/{219.2a2a502d.js => 402.5e25729c.js} (60%) create mode 100644 docs/js/402.5e25729c.js.map delete mode 100644 docs/js/582.a8f6467f.js delete mode 100644 docs/js/645.b32a0b62.js delete mode 100644 docs/js/709.b171ad0f.js create mode 100644 docs/js/743.4b374804.js rename docs/js/{709.b171ad0f.js.map => 743.4b374804.js.map} (93%) rename docs/js/{531.6af13e76.js => 784.8d118bb9.js} (83%) rename docs/js/{531.6af13e76.js.map => 784.8d118bb9.js.map} (92%) delete mode 100644 docs/js/807.d54b1ac1.js delete mode 100644 docs/js/807.d54b1ac1.js.map rename docs/js/{672.270ec4e0.js => 994.7e011783.js} (96%) rename docs/js/{672.270ec4e0.js.map => 994.7e011783.js.map} (93%) create mode 100644 docs/js/app.c1a049b3.js create mode 100644 docs/js/app.c1a049b3.js.map delete mode 100644 docs/js/app.d0c8a9ec.js delete mode 100644 docs/js/app.d0c8a9ec.js.map diff --git a/.eslintrc.js b/.eslintrc.js index e06d988..c65f90e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -16,4 +16,3 @@ module.exports = { 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', }, }; - diff --git a/LICENSE.md b/LICENSE.md index 53d1f3d..f288702 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -672,4 +672,3 @@ may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . - diff --git a/README.md b/README.md index 0d9bd3b..8861611 100644 --- a/README.md +++ b/README.md @@ -17,4 +17,3 @@ Catalogs structure:
***/(root)*** – dev files. If you are interested in this or my other projects, or would like to suggest and share ideas with me, or just talk to me, contact me: *[@eugene_serb](https://t.me/eugene_serb)* - diff --git a/babel.config.js b/babel.config.js index e952187..757ff9b 100644 --- a/babel.config.js +++ b/babel.config.js @@ -3,4 +3,3 @@ module.exports = { '@vue/cli-plugin-babel/preset', ], }; - diff --git a/docs/css/582.266e2dcc.css b/docs/css/114.266e2dcc.css similarity index 100% rename from docs/css/582.266e2dcc.css rename to docs/css/114.266e2dcc.css diff --git a/docs/css/807.d84ba812.css b/docs/css/286.d84ba812.css similarity index 100% rename from docs/css/807.d84ba812.css rename to docs/css/286.d84ba812.css diff --git a/docs/css/66.bb6440f7.css b/docs/css/37.bb6440f7.css similarity index 100% rename from docs/css/66.bb6440f7.css rename to docs/css/37.bb6440f7.css diff --git a/docs/css/219.c3fb6094.css b/docs/css/402.c3fb6094.css similarity index 100% rename from docs/css/219.c3fb6094.css rename to docs/css/402.c3fb6094.css diff --git a/docs/css/709.ef4a4981.css b/docs/css/743.ef4a4981.css similarity index 100% rename from docs/css/709.ef4a4981.css rename to docs/css/743.ef4a4981.css diff --git a/docs/css/672.278b2bb3.css b/docs/css/994.278b2bb3.css similarity index 100% rename from docs/css/672.278b2bb3.css rename to docs/css/994.278b2bb3.css diff --git a/docs/index.html b/docs/index.html index 16dc308..57e22cf 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,4 +15,4 @@ webvisor: true });
\ No newline at end of file + }
\ No newline at end of file diff --git a/docs/js/114.98880cb6.js b/docs/js/114.98880cb6.js new file mode 100644 index 0000000..4386339 --- /dev/null +++ b/docs/js/114.98880cb6.js @@ -0,0 +1,2 @@ +"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[114],{1682:function(a,t,e){e.d(t,{Z:function(){return v}});var n=e(3396),s=e(7139);const i={class:"content-item device-list"};function u(a,t,e,u,o,d){const p=(0,n.up)("GamepadItem");return(0,n.wg)(),(0,n.iD)("div",i,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(a.gamepads,(a=>((0,n.wg)(),(0,n.j4)(p,{key:a.id,textContent:(0,s.zw)(a.unit.id)},null,8,["textContent"])))),128))])}const o={class:"list-item"};function d(a,t,e,s,i,u){return(0,n.wg)(),(0,n.iD)("div",o)}var p=(0,n.aZ)({name:"GamepadItem"}),l=e(89);const m=(0,l.Z)(p,[["render",d]]);var g=m,r=(0,n.aZ)({name:"GamepadList",props:{gamepads:{type:Array}},components:{GamepadItem:g}});const c=(0,l.Z)(r,[["render",u]]);var v=c},322:function(a,t,e){e.d(t,{Z:function(){return p}});var n=e(3396);const s={class:"content-item message"};function i(a,t,e,i,u,o){return(0,n.wg)(),(0,n.iD)("div",s,[(0,n._)("span",null,[(0,n.WI)(a.$slots,"default")])])}var u=(0,n.aZ)({name:"MessageItem"}),o=e(89);const d=(0,o.Z)(u,[["render",i]]);var p=d},9100:function(a,t,e){e.d(t,{Z:function(){return r}});var n=e(3396);const s={class:"content-item navigation-list"},i=(0,n.Uk)("Patterns"),u=(0,n.Uk)("Custom"),o=(0,n.Uk)("Manual"),d=(0,n.Uk)("Diagnostic");function p(a,t,e,p,l,m){const g=(0,n.up)("router-link");return(0,n.wg)(),(0,n.iD)("div",s,[(0,n.Wm)(g,{to:"/",class:"navigation-list__item"},{default:(0,n.w5)((()=>[i])),_:1}),(0,n.Wm)(g,{to:"/custom",class:"navigation-list__item"},{default:(0,n.w5)((()=>[u])),_:1}),(0,n.Wm)(g,{to:"/manual",class:"navigation-list__item"},{default:(0,n.w5)((()=>[o])),_:1}),(0,n.Wm)(g,{to:"/diagnostic",class:"navigation-list__item"},{default:(0,n.w5)((()=>[d])),_:1})])}var l=(0,n.aZ)({name:"NavigationList"}),m=e(89);const g=(0,m.Z)(l,[["render",p]]);var r=g},6259:function(a,t,e){e.d(t,{Z:function(){return o}});var n=e(3396),s=e(1746),i=(0,n.aZ)({name:"ComputedGamepads",data:()=>({timestamp:0,interval:0}),computed:{gamepads:function(){const a=this.timestamp,t=s.Z.getters.gamepads;return t.forEach((t=>{t.interval=a})),t}},methods:{updateComputed:function(){this.timestamp=Date.now()}},mounted(){this.interval=setInterval(this.updateComputed,1)},unmounted(){clearInterval(this.interval)}});const u=i;var o=u},2114:function(a,t,e){e.r(t),e.d(t,{default:function(){return D}});var n=e(3396);const s=(0,n._)("h1",{class:"visually-hidden"},"Wavelovers οΏ½ Diagnostic",-1);function i(a,t,e,i,u,o){const d=(0,n.up)("AppDiagnostic");return(0,n.wg)(),(0,n.iD)(n.HY,null,[s,(0,n.Wm)(d)],64)}const u={key:0,class:"content-item"},o=(0,n.Uk)("Press any gamepad button or connect a new gamepad to vibrate.");function d(a,t,e,s,i,d){const p=(0,n.up)("NavigationList"),l=(0,n.up)("DiagnosticItem"),m=(0,n.up)("GamepadList"),g=(0,n.up)("MessageItem");return(0,n.wg)(),(0,n.iD)(n.HY,null,[(0,n.Wm)(p),a.gamepads.length>0?((0,n.wg)(),(0,n.iD)("div",u,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(a.gamepads,(t=>((0,n.wg)(),(0,n.j4)(l,{key:t.id,gamepad:t,timestamp:a.timestamp},null,8,["gamepad","timestamp"])))),128))])):(0,n.kq)("",!0),a.gamepads.length>0?((0,n.wg)(),(0,n.j4)(m,{key:1,gamepads:a.gamepads},null,8,["gamepads"])):((0,n.wg)(),(0,n.j4)(g,{key:2},{default:(0,n.w5)((()=>[o])),_:1}))],64)}var p=e(9100),l=e(1682),m=e(322),g=e(7139);const r={class:"output-gamepad"},c={class:"gamepad-group"};function v(a,t,e,s,i,u){return(0,n.wg)(),(0,n.iD)("div",r,[(0,n._)("h3",null,"#"+(0,g.zw)(a.gamepad.unit.index+1)+". "+(0,g.zw)(a.gamepad.unit.id),1),(0,n._)("div",c,[(0,n._)("div",null,[(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[0].value?"pressed":""])},"A: "+(0,g.zw)(a.gamepad.unit.buttons[0].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[1].value?"pressed":""])},"B: "+(0,g.zw)(a.gamepad.unit.buttons[1].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[2].value?"pressed":""])},"X: "+(0,g.zw)(a.gamepad.unit.buttons[2].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[3].value?"pressed":""])},"Y: "+(0,g.zw)(a.gamepad.unit.buttons[3].value.toFixed(2)),3)]),(0,n._)("div",null,[(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[4].value?"pressed":""])},"LB: "+(0,g.zw)(a.gamepad.unit.buttons[4].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[5].value?"pressed":""])},"RB: "+(0,g.zw)(a.gamepad.unit.buttons[5].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[6].value?"pressed":""])},"LT: "+(0,g.zw)(a.gamepad.unit.buttons[6].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[7].value?"pressed":""])},"RT: "+(0,g.zw)(a.gamepad.unit.buttons[7].value.toFixed(2)),3)]),(0,n._)("div",null,[(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[8].value?"pressed":""])},"Back: "+(0,g.zw)(a.gamepad.unit.buttons[8].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[9].value?"pressed":""])},"Start: "+(0,g.zw)(a.gamepad.unit.buttons[9].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[10].value?"pressed":""])},"Left Stick: "+(0,g.zw)(a.gamepad.unit.buttons[10].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[11].value?"pressed":""])},"Right Stick: "+(0,g.zw)(a.gamepad.unit.buttons[11].value.toFixed(2)),3)]),(0,n._)("div",null,[(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[12].value?"pressed":""])},"Forward: "+(0,g.zw)(a.gamepad.unit.buttons[12].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[13].value?"pressed":""])},"Backward: "+(0,g.zw)(a.gamepad.unit.buttons[13].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[14].value?"pressed":""])},"Left: "+(0,g.zw)(a.gamepad.unit.buttons[14].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[15].value?"pressed":""])},"Right: "+(0,g.zw)(a.gamepad.unit.buttons[15].value.toFixed(2)),3)]),(0,n._)("div",null,[(0,n._)("span",null,"Left Stick X: "+(0,g.zw)(a.gamepad.unit.axes[0]?a.gamepad.unit.axes[0].toFixed(2):"missing"),1),(0,n._)("span",null,"Left Stick Y: "+(0,g.zw)(a.gamepad.unit.axes[1]?a.gamepad.unit.axes[1].toFixed(2):"missing"),1),(0,n._)("span",null,"Right Stick X: "+(0,g.zw)(a.gamepad.unit.axes[2]?a.gamepad.unit.axes[2].toFixed(2):"missing"),1),(0,n._)("span",null,"Right Stick Y: "+(0,g.zw)(a.gamepad.unit.axes[3]?a.gamepad.unit.axes[3].toFixed(2):"missing"),1)])]),(0,n._)("span",null,"Vibration Actuator: "+(0,g.zw)(a.gamepad.unit.vibrationActuator?"Available":"missing"),1)])}var _=(0,n.aZ)({name:"DiagnosticItem",props:{gamepad:{type:Object},timestamp:{type:Number}}}),w=e(89);const b=(0,w.Z)(_,[["render",v]]);var f=b,x=e(6259),k=(0,n.aZ)({name:"AppDiagnostic",mixins:[x.Z],components:{DiagnosticItem:f,NavigationList:p.Z,GamepadList:l.Z,MessageItem:m.Z}});const z=(0,w.Z)(k,[["render",d]]);var C=z,Z=(0,n.aZ)({name:"DiagnosticView",components:{AppDiagnostic:C}});const F=(0,w.Z)(Z,[["render",i]]);var D=F}}]); +//# sourceMappingURL=114.98880cb6.js.map \ No newline at end of file diff --git a/docs/js/582.a8f6467f.js.map b/docs/js/114.98880cb6.js.map similarity index 94% rename from docs/js/582.a8f6467f.js.map rename to docs/js/114.98880cb6.js.map index 0afb471..8f5f538 100644 --- a/docs/js/582.a8f6467f.js.map +++ b/docs/js/114.98880cb6.js.map @@ -1 +1 @@ -{"version":3,"file":"js/582.a8f6467f.js","mappings":"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","sources":["webpack://wavelovers/./src/components/GamepadList.vue?84d4","webpack://wavelovers/./src/components/GamepadItem.vue?3876","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?34b4","webpack://wavelovers/./src/components/MessageItem.vue?b787","webpack://wavelovers/./src/components/MessageItem.vue","webpack://wavelovers/./src/components/NavigationList.vue?746c","webpack://wavelovers/./src/components/NavigationList.vue?d88b","webpack://wavelovers/./src/components/NavigationList.vue","webpack://wavelovers/./src/mixins/ComputedGamepads.vue?fc43","webpack://wavelovers/./src/mixins/ComputedGamepads.vue","webpack://wavelovers/./src/views/DiagnosticView.vue?ca92","webpack://wavelovers/./src/components/AppDiagnostic.vue?bdd7","webpack://wavelovers/./src/components/DiagnosticItem.vue?7649","webpack://wavelovers/./src/components/DiagnosticItem.vue?0e90","webpack://wavelovers/./src/components/DiagnosticItem.vue","webpack://wavelovers/./src/components/AppDiagnostic.vue?1eec","webpack://wavelovers/./src/components/AppDiagnostic.vue","webpack://wavelovers/./src/views/DiagnosticView.vue?a628","webpack://wavelovers/./src/views/DiagnosticView.vue"],"sourcesContent":["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=7c902388&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=7c902388&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=b6851174&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=b6851174&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=50d3c0d7&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=50d3c0d7&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 { 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(\"Patterns\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"Custom\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"Manual\")\nconst _hoisted_5 = /*#__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: \"/\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/custom\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/manual\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/diagnostic\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_5\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=5b991a16&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=5b991a16&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 Vibrator from '@/models/Vibrator';\r\n\r\n export default defineComponent({\r\n name: 'ComputedGamepads',\r\n data: () => {\r\n return {\r\n timestamp: 0 as number,\r\n interval: 0 as number,\r\n };\r\n },\r\n computed: {\r\n gamepads: function (): Vibrator[] {\r\n const timestamp: number = this.timestamp;\r\n const result: Vibrator[] = store.getters.gamepads as Vibrator[];\r\n result.forEach((item) => {\r\n item.interval = timestamp;\r\n });\r\n return result;\r\n },\r\n },\r\n methods: {\r\n updateComputed: function (): void {\r\n this.timestamp = Date.now();\r\n },\r\n },\r\n mounted() {\r\n this.interval = setInterval(this.updateComputed, 1);\r\n },\r\n unmounted() {\r\n clearInterval(this.interval);\r\n },\r\n });\r\n","import script from \"./ComputedGamepads.vue?vue&type=script&lang=ts\"\nexport * from \"./ComputedGamepads.vue?vue&type=script&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"h1\", { class: \"visually-hidden\" }, \"Wavelovers οΏ½ Diagnostic\", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_AppDiagnostic = _resolveComponent(\"AppDiagnostic\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(_component_AppDiagnostic)\n ], 64))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"content-item\"\n}\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_DiagnosticItem = _resolveComponent(\"DiagnosticItem\")!\n const _component_GamepadList = _resolveComponent(\"GamepadList\")!\n const _component_MessageItem = _resolveComponent(\"MessageItem\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_NavigationList),\n (_ctx.gamepads.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.gamepads, (gamepad) => {\n return (_openBlock(), _createBlock(_component_DiagnosticItem, {\n key: gamepad.id,\n gamepad: gamepad,\n timestamp: _ctx.timestamp\n }, null, 8, [\"gamepad\", \"timestamp\"]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.gamepads.length > 0)\n ? (_openBlock(), _createBlock(_component_GamepadList, {\n key: 1,\n gamepads: _ctx.gamepads\n }, null, 8, [\"gamepads\"]))\n : (_openBlock(), _createBlock(_component_MessageItem, { key: 2 }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }))\n ], 64))\n}","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"output-gamepad\" }\nconst _hoisted_2 = { class: \"gamepad-group\" }\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(\"h3\", null, \"#\" + _toDisplayString(_ctx.gamepad.unit.index + 1) + \". \" + _toDisplayString(_ctx.gamepad.unit.id), 1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[0].value === 1 ? 'pressed' : '' ])\n }, \"A: \" + _toDisplayString(_ctx.gamepad.unit.buttons[0].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([_ctx.gamepad.unit.buttons[1].value === 1 ? 'pressed' : '' ])\n }, \"B: \" + _toDisplayString(_ctx.gamepad.unit.buttons[1].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[2].value === 1 ? 'pressed' : '' ])\n }, \"X: \" + _toDisplayString(_ctx.gamepad.unit.buttons[2].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[3].value === 1 ? 'pressed' : '' ])\n }, \"Y: \" + _toDisplayString(_ctx.gamepad.unit.buttons[3].value.toFixed(2)), 3)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[4].value === 1 ? 'pressed' : '' ])\n }, \"LB: \" + _toDisplayString(_ctx.gamepad.unit.buttons[4].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[5].value === 1 ? 'pressed' : '' ])\n }, \"RB: \" + _toDisplayString(_ctx.gamepad.unit.buttons[5].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[6].value === 1 ? 'pressed' : '' ])\n }, \"LT: \" + _toDisplayString(_ctx.gamepad.unit.buttons[6].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[7].value === 1 ? 'pressed' : '' ])\n }, \"RT: \" + _toDisplayString(_ctx.gamepad.unit.buttons[7].value.toFixed(2)), 3)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[8].value === 1 ? 'pressed' : '' ])\n }, \"Back: \" + _toDisplayString(_ctx.gamepad.unit.buttons[8].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[9].value === 1 ? 'pressed' : '' ])\n }, \"Start: \" + _toDisplayString(_ctx.gamepad.unit.buttons[9].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[10].value === 1 ? 'pressed' : '' ])\n }, \"Left Stick: \" + _toDisplayString(_ctx.gamepad.unit.buttons[10].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[11].value === 1 ? 'pressed' : '' ])\n }, \"Right Stick: \" + _toDisplayString(_ctx.gamepad.unit.buttons[11].value.toFixed(2)), 3)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[12].value === 1 ? 'pressed' : '' ])\n }, \"Forward: \" + _toDisplayString(_ctx.gamepad.unit.buttons[12].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[13].value === 1 ? 'pressed' : '' ])\n }, \"Backward: \" + _toDisplayString(_ctx.gamepad.unit.buttons[13].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[14].value === 1 ? 'pressed' : '' ])\n }, \"Left: \" + _toDisplayString(_ctx.gamepad.unit.buttons[14].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[15].value === 1 ? 'pressed' : '' ])\n }, \"Right: \" + _toDisplayString(_ctx.gamepad.unit.buttons[15].value.toFixed(2)), 3)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", null, \"Left Stick X: \" + _toDisplayString(_ctx.gamepad.unit.axes[0] ? _ctx.gamepad.unit.axes[0].toFixed(2) : 'missing'), 1),\n _createElementVNode(\"span\", null, \"Left Stick Y: \" + _toDisplayString(_ctx.gamepad.unit.axes[1] ? _ctx.gamepad.unit.axes[1].toFixed(2) : 'missing'), 1),\n _createElementVNode(\"span\", null, \"Right Stick X: \" + _toDisplayString(_ctx.gamepad.unit.axes[2] ? _ctx.gamepad.unit.axes[2].toFixed(2) : 'missing'), 1),\n _createElementVNode(\"span\", null, \"Right Stick Y: \" + _toDisplayString(_ctx.gamepad.unit.axes[3] ? _ctx.gamepad.unit.axes[3].toFixed(2) : 'missing'), 1)\n ])\n ]),\n _createElementVNode(\"span\", null, \"Vibration Actuator: \" + _toDisplayString(_ctx.gamepad.unit.vibrationActuator ? 'Available' : 'missing'), 1)\n ]))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'DiagnosticItem',\r\n props: {\r\n gamepad: {\r\n type: Object,\r\n },\r\n timestamp: {\r\n type: Number,\r\n },\r\n },\r\n });\r\n","import { render } from \"./DiagnosticItem.vue?vue&type=template&id=cc668106&ts=true\"\nimport script from \"./DiagnosticItem.vue?vue&type=script&lang=ts\"\nexport * from \"./DiagnosticItem.vue?vue&type=script&lang=ts\"\n\nimport \"./DiagnosticItem.vue?vue&type=style&index=0&id=cc668106&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 NavigationList from '@/components/NavigationList.vue';\r\n import GamepadList from '@/components/GamepadList.vue';\r\n import MessageItem from '@/components/MessageItem.vue';\r\n import DiagnosticItem from '@/components/DiagnosticItem.vue';\r\n import ComputedGamepads from '@/mixins/ComputedGamepads.vue';\r\n\r\n export default defineComponent({\r\n name: 'AppDiagnostic',\r\n mixins: [ComputedGamepads],\r\n components: {\r\n DiagnosticItem: DiagnosticItem,\r\n NavigationList: NavigationList,\r\n GamepadList: GamepadList,\r\n MessageItem: MessageItem,\r\n },\r\n });\r\n","import { render } from \"./AppDiagnostic.vue?vue&type=template&id=10f2e1f0&ts=true\"\nimport script from \"./AppDiagnostic.vue?vue&type=script&lang=ts\"\nexport * from \"./AppDiagnostic.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 AppDiagnostic from '@/components/AppDiagnostic.vue';\r\n\r\n export default defineComponent({\r\n name: 'DiagnosticView',\r\n components: {\r\n AppDiagnostic: AppDiagnostic,\r\n },\r\n });\r\n","import { render } from \"./DiagnosticView.vue?vue&type=template&id=49c4bff2&ts=true\"\nimport script from \"./DiagnosticView.vue?vue&type=script&lang=ts\"\nexport * from \"./DiagnosticView.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__"],"names":["_hoisted_1","class","render","_ctx","_cache","$props","$setup","$data","$options","_component_GamepadItem","_resolveComponent","_openBlock","_createElementBlock","_Fragment","_renderList","gamepads","gamepad","_createBlock","key","id","textContent","_toDisplayString","unit","defineComponent","name","__exports__","props","type","Array","components","GamepadItem","_createElementVNode","_renderSlot","$slots","_hoisted_2","_createTextVNode","_hoisted_3","_hoisted_4","_hoisted_5","_component_router_link","_createVNode","to","default","_withCtx","_","data","timestamp","interval","computed","this","result","store","forEach","item","methods","updateComputed","Date","now","mounted","setInterval","unmounted","clearInterval","_component_AppDiagnostic","_component_NavigationList","_component_DiagnosticItem","_component_GamepadList","_component_MessageItem","length","_createCommentVNode","index","_normalizeClass","buttons","value","toFixed","axes","vibrationActuator","Object","Number","mixins","ComputedGamepads","DiagnosticItem","NavigationList","GamepadList","MessageItem","AppDiagnostic"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/114.98880cb6.js","mappings":"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","sources":["webpack://wavelovers/./src/components/GamepadList.vue?5b9c","webpack://wavelovers/./src/components/GamepadItem.vue?0665","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?088b","webpack://wavelovers/./src/components/MessageItem.vue?b787","webpack://wavelovers/./src/components/MessageItem.vue","webpack://wavelovers/./src/components/NavigationList.vue?0746","webpack://wavelovers/./src/components/NavigationList.vue?d88b","webpack://wavelovers/./src/components/NavigationList.vue","webpack://wavelovers/./src/mixins/ComputedGamepads.vue?fc43","webpack://wavelovers/./src/mixins/ComputedGamepads.vue","webpack://wavelovers/./src/views/DiagnosticView.vue?700c","webpack://wavelovers/./src/components/AppDiagnostic.vue?d3ce","webpack://wavelovers/./src/components/DiagnosticItem.vue?e55e","webpack://wavelovers/./src/components/DiagnosticItem.vue?0e90","webpack://wavelovers/./src/components/DiagnosticItem.vue","webpack://wavelovers/./src/components/AppDiagnostic.vue?1eec","webpack://wavelovers/./src/components/AppDiagnostic.vue","webpack://wavelovers/./src/views/DiagnosticView.vue?a628","webpack://wavelovers/./src/views/DiagnosticView.vue"],"sourcesContent":["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=6958838e&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=6958838e&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=2658b144&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=2658b144&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=7e7a7193&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=7e7a7193&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 { 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(\"Patterns\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"Custom\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"Manual\")\nconst _hoisted_5 = /*#__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: \"/\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/custom\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/manual\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/diagnostic\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_5\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=c925f896&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=c925f896&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 Vibrator from '@/models/Vibrator';\r\n\r\n export default defineComponent({\r\n name: 'ComputedGamepads',\r\n data: () => {\r\n return {\r\n timestamp: 0 as number,\r\n interval: 0 as number,\r\n };\r\n },\r\n computed: {\r\n gamepads: function (): Vibrator[] {\r\n const timestamp: number = this.timestamp;\r\n const result: Vibrator[] = store.getters.gamepads as Vibrator[];\r\n result.forEach((item) => {\r\n item.interval = timestamp;\r\n });\r\n return result;\r\n },\r\n },\r\n methods: {\r\n updateComputed: function (): void {\r\n this.timestamp = Date.now();\r\n },\r\n },\r\n mounted() {\r\n this.interval = setInterval(this.updateComputed, 1);\r\n },\r\n unmounted() {\r\n clearInterval(this.interval);\r\n },\r\n });\r\n","import script from \"./ComputedGamepads.vue?vue&type=script&lang=ts\"\nexport * from \"./ComputedGamepads.vue?vue&type=script&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"h1\", { class: \"visually-hidden\" }, \"Wavelovers οΏ½ Diagnostic\", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_AppDiagnostic = _resolveComponent(\"AppDiagnostic\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(_component_AppDiagnostic)\n ], 64))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"content-item\"\n}\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_DiagnosticItem = _resolveComponent(\"DiagnosticItem\")!\n const _component_GamepadList = _resolveComponent(\"GamepadList\")!\n const _component_MessageItem = _resolveComponent(\"MessageItem\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_NavigationList),\n (_ctx.gamepads.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.gamepads, (gamepad) => {\n return (_openBlock(), _createBlock(_component_DiagnosticItem, {\n key: gamepad.id,\n gamepad: gamepad,\n timestamp: _ctx.timestamp\n }, null, 8, [\"gamepad\", \"timestamp\"]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.gamepads.length > 0)\n ? (_openBlock(), _createBlock(_component_GamepadList, {\n key: 1,\n gamepads: _ctx.gamepads\n }, null, 8, [\"gamepads\"]))\n : (_openBlock(), _createBlock(_component_MessageItem, { key: 2 }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }))\n ], 64))\n}","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"output-gamepad\" }\nconst _hoisted_2 = { class: \"gamepad-group\" }\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(\"h3\", null, \"#\" + _toDisplayString(_ctx.gamepad.unit.index + 1) + \". \" + _toDisplayString(_ctx.gamepad.unit.id), 1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[0].value === 1 ? 'pressed' : '' ])\n }, \"A: \" + _toDisplayString(_ctx.gamepad.unit.buttons[0].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([_ctx.gamepad.unit.buttons[1].value === 1 ? 'pressed' : '' ])\n }, \"B: \" + _toDisplayString(_ctx.gamepad.unit.buttons[1].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[2].value === 1 ? 'pressed' : '' ])\n }, \"X: \" + _toDisplayString(_ctx.gamepad.unit.buttons[2].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[3].value === 1 ? 'pressed' : '' ])\n }, \"Y: \" + _toDisplayString(_ctx.gamepad.unit.buttons[3].value.toFixed(2)), 3)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[4].value === 1 ? 'pressed' : '' ])\n }, \"LB: \" + _toDisplayString(_ctx.gamepad.unit.buttons[4].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[5].value === 1 ? 'pressed' : '' ])\n }, \"RB: \" + _toDisplayString(_ctx.gamepad.unit.buttons[5].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[6].value === 1 ? 'pressed' : '' ])\n }, \"LT: \" + _toDisplayString(_ctx.gamepad.unit.buttons[6].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[7].value === 1 ? 'pressed' : '' ])\n }, \"RT: \" + _toDisplayString(_ctx.gamepad.unit.buttons[7].value.toFixed(2)), 3)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[8].value === 1 ? 'pressed' : '' ])\n }, \"Back: \" + _toDisplayString(_ctx.gamepad.unit.buttons[8].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[9].value === 1 ? 'pressed' : '' ])\n }, \"Start: \" + _toDisplayString(_ctx.gamepad.unit.buttons[9].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[10].value === 1 ? 'pressed' : '' ])\n }, \"Left Stick: \" + _toDisplayString(_ctx.gamepad.unit.buttons[10].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[11].value === 1 ? 'pressed' : '' ])\n }, \"Right Stick: \" + _toDisplayString(_ctx.gamepad.unit.buttons[11].value.toFixed(2)), 3)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[12].value === 1 ? 'pressed' : '' ])\n }, \"Forward: \" + _toDisplayString(_ctx.gamepad.unit.buttons[12].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[13].value === 1 ? 'pressed' : '' ])\n }, \"Backward: \" + _toDisplayString(_ctx.gamepad.unit.buttons[13].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[14].value === 1 ? 'pressed' : '' ])\n }, \"Left: \" + _toDisplayString(_ctx.gamepad.unit.buttons[14].value.toFixed(2)), 3),\n _createElementVNode(\"span\", {\n class: _normalizeClass([ _ctx.gamepad.unit.buttons[15].value === 1 ? 'pressed' : '' ])\n }, \"Right: \" + _toDisplayString(_ctx.gamepad.unit.buttons[15].value.toFixed(2)), 3)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", null, \"Left Stick X: \" + _toDisplayString(_ctx.gamepad.unit.axes[0] ? _ctx.gamepad.unit.axes[0].toFixed(2) : 'missing'), 1),\n _createElementVNode(\"span\", null, \"Left Stick Y: \" + _toDisplayString(_ctx.gamepad.unit.axes[1] ? _ctx.gamepad.unit.axes[1].toFixed(2) : 'missing'), 1),\n _createElementVNode(\"span\", null, \"Right Stick X: \" + _toDisplayString(_ctx.gamepad.unit.axes[2] ? _ctx.gamepad.unit.axes[2].toFixed(2) : 'missing'), 1),\n _createElementVNode(\"span\", null, \"Right Stick Y: \" + _toDisplayString(_ctx.gamepad.unit.axes[3] ? _ctx.gamepad.unit.axes[3].toFixed(2) : 'missing'), 1)\n ])\n ]),\n _createElementVNode(\"span\", null, \"Vibration Actuator: \" + _toDisplayString(_ctx.gamepad.unit.vibrationActuator ? 'Available' : 'missing'), 1)\n ]))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'DiagnosticItem',\r\n props: {\r\n gamepad: {\r\n type: Object,\r\n },\r\n timestamp: {\r\n type: Number,\r\n },\r\n },\r\n });\r\n","import { render } from \"./DiagnosticItem.vue?vue&type=template&id=0697f3a6&ts=true\"\nimport script from \"./DiagnosticItem.vue?vue&type=script&lang=ts\"\nexport * from \"./DiagnosticItem.vue?vue&type=script&lang=ts\"\n\nimport \"./DiagnosticItem.vue?vue&type=style&index=0&id=0697f3a6&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 NavigationList from '@/components/NavigationList.vue';\r\n import GamepadList from '@/components/GamepadList.vue';\r\n import MessageItem from '@/components/MessageItem.vue';\r\n import DiagnosticItem from '@/components/DiagnosticItem.vue';\r\n import ComputedGamepads from '@/mixins/ComputedGamepads.vue';\r\n\r\n export default defineComponent({\r\n name: 'AppDiagnostic',\r\n mixins: [ComputedGamepads],\r\n components: {\r\n DiagnosticItem: DiagnosticItem,\r\n NavigationList: NavigationList,\r\n GamepadList: GamepadList,\r\n MessageItem: MessageItem,\r\n },\r\n });\r\n","import { render } from \"./AppDiagnostic.vue?vue&type=template&id=29d6495a&ts=true\"\nimport script from \"./AppDiagnostic.vue?vue&type=script&lang=ts\"\nexport * from \"./AppDiagnostic.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 AppDiagnostic from '@/components/AppDiagnostic.vue';\r\n\r\n export default defineComponent({\r\n name: 'DiagnosticView',\r\n components: {\r\n AppDiagnostic: AppDiagnostic,\r\n },\r\n });\r\n","import { render } from \"./DiagnosticView.vue?vue&type=template&id=40dfec63&ts=true\"\nimport script from \"./DiagnosticView.vue?vue&type=script&lang=ts\"\nexport * from \"./DiagnosticView.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__"],"names":["_hoisted_1","class","render","_ctx","_cache","$props","$setup","$data","$options","_component_GamepadItem","_resolveComponent","_openBlock","_createElementBlock","_Fragment","_renderList","gamepads","gamepad","_createBlock","key","id","textContent","_toDisplayString","unit","defineComponent","name","__exports__","props","type","Array","components","GamepadItem","_createElementVNode","_renderSlot","$slots","_hoisted_2","_createTextVNode","_hoisted_3","_hoisted_4","_hoisted_5","_component_router_link","_createVNode","to","default","_withCtx","_","data","timestamp","interval","computed","this","result","store","forEach","item","methods","updateComputed","Date","now","mounted","setInterval","unmounted","clearInterval","_component_AppDiagnostic","_component_NavigationList","_component_DiagnosticItem","_component_GamepadList","_component_MessageItem","length","_createCommentVNode","index","_normalizeClass","buttons","value","toFixed","axes","vibrationActuator","Object","Number","mixins","ComputedGamepads","DiagnosticItem","NavigationList","GamepadList","MessageItem","AppDiagnostic"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/219.2a2a502d.js.map b/docs/js/219.2a2a502d.js.map deleted file mode 100644 index 5eda527..0000000 --- a/docs/js/219.2a2a502d.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/219.2a2a502d.js","mappings":"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","sources":["webpack://wavelovers/./src/models/PatternUnit.ts","webpack://wavelovers/./src/components/GamepadList.vue?84d4","webpack://wavelovers/./src/components/GamepadItem.vue?3876","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?34b4","webpack://wavelovers/./src/components/MessageItem.vue?b787","webpack://wavelovers/./src/components/MessageItem.vue","webpack://wavelovers/./src/components/NavigationList.vue?746c","webpack://wavelovers/./src/components/NavigationList.vue?d88b","webpack://wavelovers/./src/components/NavigationList.vue","webpack://wavelovers/./src/views/CustomView.vue?c270","webpack://wavelovers/./src/components/AppCustom.vue?c1f1","webpack://wavelovers/./src/components/AppCustom.vue?08c8","webpack://wavelovers/./src/components/AppCustom.vue","webpack://wavelovers/./src/views/CustomView.vue?8886","webpack://wavelovers/./src/views/CustomView.vue"],"sourcesContent":["import IPatternUnit from \"@/models/IPatternUnit\";\r\n\r\nclass PatternUnit implements IPatternUnit {\r\n\r\n startDelay: number;\r\n duration: number;\r\n weakMagnitude: number;\r\n strongMagnitude: number;\r\n\r\n constructor(\r\n startDelay: number, duration: number,\r\n weakMagnitude: number, strongMagnitude: number\r\n ) {\r\n this.startDelay = startDelay;\r\n this.duration = duration;\r\n this.weakMagnitude = weakMagnitude;\r\n this.strongMagnitude = strongMagnitude;\r\n }\r\n}\r\n\r\nexport default PatternUnit;\r\n\r\n","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=7c902388&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=7c902388&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=b6851174&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=b6851174&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=50d3c0d7&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=50d3c0d7&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 { 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(\"Patterns\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"Custom\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"Manual\")\nconst _hoisted_5 = /*#__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: \"/\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/custom\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/manual\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/diagnostic\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_5\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=5b991a16&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=5b991a16&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 { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"h1\", { class: \"visually-hidden\" }, \"Wavelovers οΏ½ Custom\", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_AppCustom = _resolveComponent(\"AppCustom\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(_component_AppCustom)\n ], 64))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"content-item app-custom\" }\nconst _hoisted_2 = { class: \"custom-form\" }\nconst _hoisted_3 = { class: \"custom-form__input\" }\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Start Delay (ms)\", -1)\nconst _hoisted_5 = { class: \"custom-form__input\" }\nconst _hoisted_6 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Duration (ms)\", -1)\nconst _hoisted_7 = { class: \"custom-form__input\" }\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Weak Magnitude\", -1)\nconst _hoisted_9 = { class: \"custom-form__input\" }\nconst _hoisted_10 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Strong Magnitude\", -1)\nconst _hoisted_11 = { class: \"custom-form__buttons\" }\nconst _hoisted_12 = /*#__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_GamepadList = _resolveComponent(\"GamepadList\")!\n const _component_MessageItem = _resolveComponent(\"MessageItem\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_NavigationList),\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"fieldset\", _hoisted_2, [\n _createElementVNode(\"label\", _hoisted_3, [\n _hoisted_4,\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.startDelay) = $event)),\n type: \"number\",\n placeholder: \"Start Delay\",\n min: \"0\",\n max: \"1000\",\n step: \"25\",\n required: \"\"\n }, null, 512), [\n [_vModelText, _ctx.startDelay]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_5, [\n _hoisted_6,\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.duration) = $event)),\n type: \"number\",\n placeholder: \"Duration\",\n min: \"0\",\n max: \"1000\",\n step: \"25\",\n required: \"\"\n }, null, 512), [\n [_vModelText, _ctx.duration]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _hoisted_8,\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.weakMagnitude) = $event)),\n type: \"range\",\n required: \"\",\n min: \"0.0\",\n max: \"1.0\",\n step: \"0.01\"\n }, null, 512), [\n [_vModelText, _ctx.weakMagnitude]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_9, [\n _hoisted_10,\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.strongMagnitude) = $event)),\n type: \"range\",\n required: \"\",\n min: \"0.0\",\n max: \"1.0\",\n step: \"0.01\"\n }, null, 512), [\n [_vModelText, _ctx.strongMagnitude]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.start && _ctx.start(...args))),\n class: \"custom-form__button\"\n }, \"Start\"),\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.stop && _ctx.stop(...args))),\n class: \"custom-form__button\"\n }, \"Stop\")\n ])\n ])\n ]),\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_12\n ]),\n _: 1\n }))\n ], 64))\n}","\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 import TPatternUnit from '@/models/TPatternUnit';\r\n import PatternUnit from '@/models/PatternUnit';\r\n\r\n export default defineComponent({\r\n name: 'AppCustom',\r\n components: {\r\n NavigationList: NavigationList,\r\n GamepadList: GamepadList,\r\n MessageItem: MessageItem,\r\n },\r\n data: () => {\r\n return {\r\n startDelay: 250 as number,\r\n duration: 250 as number,\r\n weakMagnitude: 1 as number,\r\n strongMagnitude: 1 as number,\r\n };\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 start: function (): void {\r\n const patterns: TPatternUnit[] = [new PatternUnit(\r\n this.startDelay,\r\n this.duration,\r\n this.weakMagnitude,\r\n this.strongMagnitude,\r\n )];\r\n store.dispatch('startCustom', patterns);\r\n },\r\n stop: function (): void {\r\n store.dispatch('reset');\r\n },\r\n },\r\n });\r\n","import { render } from \"./AppCustom.vue?vue&type=template&id=a9fa56b4&ts=true\"\nimport script from \"./AppCustom.vue?vue&type=script&lang=ts\"\nexport * from \"./AppCustom.vue?vue&type=script&lang=ts\"\n\nimport \"./AppCustom.vue?vue&type=style&index=0&id=a9fa56b4&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 AppCustom from '@/components/AppCustom.vue';\r\n\r\n export default defineComponent({\r\n name: 'CustomView',\r\n components: {\r\n AppCustom: AppCustom,\r\n },\r\n });\r\n","import { render } from \"./CustomView.vue?vue&type=template&id=38c0b533&ts=true\"\nimport script from \"./CustomView.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomView.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__"],"names":["PatternUnit","constructor","startDelay","duration","weakMagnitude","strongMagnitude","this","_hoisted_1","class","render","_ctx","_cache","$props","$setup","$data","$options","_component_GamepadItem","_resolveComponent","_openBlock","_createElementBlock","_Fragment","_renderList","gamepads","gamepad","_createBlock","key","id","textContent","_toDisplayString","unit","defineComponent","name","__exports__","props","type","Array","components","GamepadItem","_createElementVNode","_renderSlot","$slots","_hoisted_2","_createTextVNode","_hoisted_3","_hoisted_4","_hoisted_5","_component_router_link","_createVNode","to","default","_withCtx","_","_component_AppCustom","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_component_NavigationList","_component_GamepadList","_component_MessageItem","_withDirectives","$event","placeholder","min","max","step","required","_vModelText","onClick","args","start","stop","length","NavigationList","GamepadList","MessageItem","data","computed","store","methods","patterns","AppCustom"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/286.cdd8d127.js b/docs/js/286.cdd8d127.js new file mode 100644 index 0000000..a141a04 --- /dev/null +++ b/docs/js/286.cdd8d127.js @@ -0,0 +1,2 @@ +"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[286],{3913:function(t,a,n){var e=n(2482);class s{constructor(t,a,n,s){(0,e.Z)(this,"startDelay",void 0),(0,e.Z)(this,"duration",void 0),(0,e.Z)(this,"weakMagnitude",void 0),(0,e.Z)(this,"strongMagnitude",void 0),this.startDelay=t,this.duration=a,this.weakMagnitude=n,this.strongMagnitude=s}}a["Z"]=s},1682:function(t,a,n){n.d(a,{Z:function(){return h}});var e=n(3396),s=n(7139);const i={class:"content-item device-list"};function o(t,a,n,o,d,u){const r=(0,e.up)("GamepadItem");return(0,e.wg)(),(0,e.iD)("div",i,[((0,e.wg)(!0),(0,e.iD)(e.HY,null,(0,e.Ko)(t.gamepads,(t=>((0,e.wg)(),(0,e.j4)(r,{key:t.id,textContent:(0,s.zw)(t.unit.id)},null,8,["textContent"])))),128))])}const d={class:"list-item"};function u(t,a,n,s,i,o){return(0,e.wg)(),(0,e.iD)("div",d)}var r=(0,e.aZ)({name:"GamepadItem"}),l=n(89);const m=(0,l.Z)(r,[["render",u]]);var p=m,c=(0,e.aZ)({name:"GamepadList",props:{gamepads:{type:Array}},components:{GamepadItem:p}});const g=(0,l.Z)(c,[["render",o]]);var h=g},322:function(t,a,n){n.d(a,{Z:function(){return r}});var e=n(3396);const s={class:"content-item message"};function i(t,a,n,i,o,d){return(0,e.wg)(),(0,e.iD)("div",s,[(0,e._)("span",null,[(0,e.WI)(t.$slots,"default")])])}var o=(0,e.aZ)({name:"MessageItem"}),d=n(89);const u=(0,d.Z)(o,[["render",i]]);var r=u},9100:function(t,a,n){n.d(a,{Z:function(){return c}});var e=n(3396);const s={class:"content-item navigation-list"},i=(0,e.Uk)("Patterns"),o=(0,e.Uk)("Custom"),d=(0,e.Uk)("Manual"),u=(0,e.Uk)("Diagnostic");function r(t,a,n,r,l,m){const p=(0,e.up)("router-link");return(0,e.wg)(),(0,e.iD)("div",s,[(0,e.Wm)(p,{to:"/",class:"navigation-list__item"},{default:(0,e.w5)((()=>[i])),_:1}),(0,e.Wm)(p,{to:"/custom",class:"navigation-list__item"},{default:(0,e.w5)((()=>[o])),_:1}),(0,e.Wm)(p,{to:"/manual",class:"navigation-list__item"},{default:(0,e.w5)((()=>[d])),_:1}),(0,e.Wm)(p,{to:"/diagnostic",class:"navigation-list__item"},{default:(0,e.w5)((()=>[u])),_:1})])}var l=(0,e.aZ)({name:"NavigationList"}),m=n(89);const p=(0,m.Z)(l,[["render",r]]);var c=p},6259:function(t,a,n){n.d(a,{Z:function(){return d}});var e=n(3396),s=n(1746),i=(0,e.aZ)({name:"ComputedGamepads",data:()=>({timestamp:0,interval:0}),computed:{gamepads:function(){const t=this.timestamp,a=s.Z.getters.gamepads;return a.forEach((a=>{a.interval=t})),a}},methods:{updateComputed:function(){this.timestamp=Date.now()}},mounted(){this.interval=setInterval(this.updateComputed,1)},unmounted(){clearInterval(this.interval)}});const o=i;var d=o},5286:function(t,a,n){n.r(a),n.d(a,{default:function(){return C}});var e=n(3396);const s=(0,e._)("h1",{class:"visually-hidden"},"Wavelovers οΏ½ Manual",-1);function i(t,a,n,i,o,d){const u=(0,e.up)("AppManual");return(0,e.wg)(),(0,e.iD)(e.HY,null,[s,(0,e.Wm)(u)],64)}var o=n(9242);const d={class:"content-item app-manual"},u={class:"manual-form__input"},r=(0,e._)("span",null,"Weak Magnitude",-1),l={class:"manual-form__input"},m=(0,e._)("span",null,"Strong Magnitude",-1),p=(0,e.uE)('
RT – Vibrate
A – Combined Mode
X – Strong Mode
Y – Light Mode
B – Lock Intensity
',1),c=(0,e.Uk)("Press any gamepad button or connect a new gamepad to vibrate.");function g(t,a,n,s,i,g){const h=(0,e.up)("NavigationList"),v=(0,e.up)("GamepadList"),k=(0,e.up)("MessageItem");return(0,e.wg)(),(0,e.iD)(e.HY,null,[(0,e.Wm)(h),(0,e._)("div",d,[(0,e._)("label",u,[r,(0,e.wy)((0,e._)("input",{"onUpdate:modelValue":a[0]||(a[0]=a=>t.weakMagnitude=a),type:"range",required:"",disabled:"",min:"0.0",max:"1.0",step:"0.01"},null,512),[[o.nr,t.weakMagnitude]])]),(0,e._)("label",l,[m,(0,e.wy)((0,e._)("input",{"onUpdate:modelValue":a[1]||(a[1]=a=>t.strongMagnitude=a),type:"range",required:"",disabled:"",min:"0.0",max:"1.0",step:"0.01"},null,512),[[o.nr,t.strongMagnitude]])]),p]),t.gamepads.length>0?((0,e.wg)(),(0,e.j4)(v,{key:0,gamepads:t.gamepads},null,8,["gamepads"])):((0,e.wg)(),(0,e.j4)(k,{key:1},{default:(0,e.w5)((()=>[c])),_:1}))],64)}var h=n(1746),v=n(9100),k=n(1682),f=n(322),w=n(6259),M=n(3913),Z=(0,e.aZ)({name:"AppCustom",mixins:[w.Z],components:{NavigationList:v.Z,GamepadList:k.Z,MessageItem:f.Z},data:()=>({mode:0,lock:!1,startDelay:0,duration:260,weakMagnitude:0,strongMagnitude:0}),methods:{start:function(){const t=new M.Z(this.startDelay,this.duration,this.weakMagnitude,this.strongMagnitude);h.Z.dispatch("vibrate",t)},stop:function(){h.Z.dispatch("setIsActive",!1),h.Z.dispatch("setMode",0),h.Z.dispatch("reset")},eventLoop:function(){this.updateComputed(),this.updateMode(),this.updatePattern(),this.handle()},updateMode:function(){this.gamepads.length>0&&(!0===this.gamepads[0].unit.buttons[1].pressed&&(this.lock=!this.lock),!1===this.lock&&(!0===this.gamepads[0].unit.buttons[0].pressed&&(this.mode=0),!0===this.gamepads[0].unit.buttons[2].pressed&&(this.mode=1),!0===this.gamepads[0].unit.buttons[3].pressed&&(this.mode=2)))},updatePattern:function(){this.gamepads.length>0&&!1===this.lock&&(0===this.mode&&(this.weakMagnitude=this.gamepads[0].unit.buttons[7].value,this.strongMagnitude=this.gamepads[0].unit.buttons[7].value),1===this.mode&&(this.weakMagnitude=0,this.strongMagnitude=this.gamepads[0].unit.buttons[7].value),2===this.mode&&(this.weakMagnitude=this.gamepads[0].unit.buttons[7].value,this.strongMagnitude=0))},handle:function(){this.gamepads.length>0&&this.gamepads.forEach((t=>{t.unit.buttons[7].value>0||!0===this.lock?this.start():this.stop()}))}},mounted(){this.interval=setInterval(this.eventLoop,250)}}),b=n(89);const _=(0,b.Z)(Z,[["render",g]]);var y=_,D=(0,e.aZ)({name:"ManualView",components:{AppManual:y}});const I=(0,b.Z)(D,[["render",i]]);var C=I}}]); +//# sourceMappingURL=286.cdd8d127.js.map \ No newline at end of file diff --git a/docs/js/286.cdd8d127.js.map b/docs/js/286.cdd8d127.js.map new file mode 100644 index 0000000..1f71fc4 --- /dev/null +++ b/docs/js/286.cdd8d127.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/286.cdd8d127.js","mappings":"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","sources":["webpack://wavelovers/./src/models/PatternUnit.ts","webpack://wavelovers/./src/components/GamepadList.vue?5b9c","webpack://wavelovers/./src/components/GamepadItem.vue?0665","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?088b","webpack://wavelovers/./src/components/MessageItem.vue?b787","webpack://wavelovers/./src/components/MessageItem.vue","webpack://wavelovers/./src/components/NavigationList.vue?0746","webpack://wavelovers/./src/components/NavigationList.vue?d88b","webpack://wavelovers/./src/components/NavigationList.vue","webpack://wavelovers/./src/mixins/ComputedGamepads.vue?fc43","webpack://wavelovers/./src/mixins/ComputedGamepads.vue","webpack://wavelovers/./src/views/ManualView.vue?9506","webpack://wavelovers/./src/components/AppManual.vue?9069","webpack://wavelovers/./src/components/AppManual.vue?5cf9","webpack://wavelovers/./src/components/AppManual.vue","webpack://wavelovers/./src/views/ManualView.vue?67f9","webpack://wavelovers/./src/views/ManualView.vue"],"sourcesContent":["import IPatternUnit from \"@/models/IPatternUnit\";\r\n\r\nclass PatternUnit implements IPatternUnit {\r\n\r\n startDelay: number;\r\n duration: number;\r\n weakMagnitude: number;\r\n strongMagnitude: number;\r\n\r\n constructor(\r\n startDelay: number, duration: number,\r\n weakMagnitude: number, strongMagnitude: number\r\n ) {\r\n this.startDelay = startDelay;\r\n this.duration = duration;\r\n this.weakMagnitude = weakMagnitude;\r\n this.strongMagnitude = strongMagnitude;\r\n }\r\n}\r\n\r\nexport default PatternUnit;\r\n","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=6958838e&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=6958838e&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=2658b144&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=2658b144&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=7e7a7193&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=7e7a7193&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 { 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(\"Patterns\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"Custom\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"Manual\")\nconst _hoisted_5 = /*#__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: \"/\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/custom\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/manual\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/diagnostic\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_5\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=c925f896&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=c925f896&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 Vibrator from '@/models/Vibrator';\r\n\r\n export default defineComponent({\r\n name: 'ComputedGamepads',\r\n data: () => {\r\n return {\r\n timestamp: 0 as number,\r\n interval: 0 as number,\r\n };\r\n },\r\n computed: {\r\n gamepads: function (): Vibrator[] {\r\n const timestamp: number = this.timestamp;\r\n const result: Vibrator[] = store.getters.gamepads as Vibrator[];\r\n result.forEach((item) => {\r\n item.interval = timestamp;\r\n });\r\n return result;\r\n },\r\n },\r\n methods: {\r\n updateComputed: function (): void {\r\n this.timestamp = Date.now();\r\n },\r\n },\r\n mounted() {\r\n this.interval = setInterval(this.updateComputed, 1);\r\n },\r\n unmounted() {\r\n clearInterval(this.interval);\r\n },\r\n });\r\n","import script from \"./ComputedGamepads.vue?vue&type=script&lang=ts\"\nexport * from \"./ComputedGamepads.vue?vue&type=script&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"h1\", { class: \"visually-hidden\" }, \"Wavelovers οΏ½ Manual\", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_AppManual = _resolveComponent(\"AppManual\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(_component_AppManual)\n ], 64))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createStaticVNode as _createStaticVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"content-item app-manual\" }\nconst _hoisted_2 = { class: \"manual-form__input\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Weak Magnitude\", -1)\nconst _hoisted_4 = { class: \"manual-form__input\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Strong Magnitude\", -1)\nconst _hoisted_6 = /*#__PURE__*/_createStaticVNode(\"
RT – Vibrate
A – Combined Mode
X – Strong Mode
Y – Light Mode
B – Lock Intensity
\", 1)\nconst _hoisted_7 = /*#__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_GamepadList = _resolveComponent(\"GamepadList\")!\n const _component_MessageItem = _resolveComponent(\"MessageItem\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_NavigationList),\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", _hoisted_2, [\n _hoisted_3,\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.weakMagnitude) = $event)),\n type: \"range\",\n required: \"\",\n disabled: \"\",\n min: \"0.0\",\n max: \"1.0\",\n step: \"0.01\"\n }, null, 512), [\n [_vModelText, _ctx.weakMagnitude]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_4, [\n _hoisted_5,\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.strongMagnitude) = $event)),\n type: \"range\",\n required: \"\",\n disabled: \"\",\n min: \"0.0\",\n max: \"1.0\",\n step: \"0.01\"\n }, null, 512), [\n [_vModelText, _ctx.strongMagnitude]\n ])\n ]),\n _hoisted_6\n ]),\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_7\n ]),\n _: 1\n }))\n ], 64))\n}","\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 ComputedGamepads from '@/mixins/ComputedGamepads.vue';\r\n import Vibrator from '@/models/Vibrator';\r\n import TPatternUnit from '@/models/TPatternUnit';\r\n import PatternUnit from '@/models/PatternUnit';\r\n\r\n export default defineComponent({\r\n name: 'AppCustom',\r\n mixins: [ComputedGamepads],\r\n components: {\r\n NavigationList: NavigationList,\r\n GamepadList: GamepadList,\r\n MessageItem: MessageItem,\r\n },\r\n data: () => {\r\n return {\r\n mode: 0 as number,\r\n lock: false as boolean,\r\n startDelay: 0 as number,\r\n duration: 260 as number,\r\n weakMagnitude: 0 as number,\r\n strongMagnitude: 0 as number,\r\n };\r\n },\r\n methods: {\r\n start: function (): void {\r\n const pattern: TPatternUnit = new PatternUnit(\r\n this.startDelay,\r\n this.duration,\r\n this.weakMagnitude,\r\n this.strongMagnitude,\r\n );\r\n store.dispatch('vibrate', pattern);\r\n },\r\n stop: function (): void {\r\n store.dispatch('setIsActive', false);\r\n store.dispatch('setMode', 0);\r\n store.dispatch('reset');\r\n },\r\n eventLoop: function (): void {\r\n this.updateComputed();\r\n this.updateMode();\r\n this.updatePattern();\r\n this.handle();\r\n },\r\n updateMode: function (): void {\r\n if (this.gamepads.length > 0) {\r\n if (this.gamepads[0].unit.buttons[1].pressed === true) {\r\n this.lock = !this.lock;\r\n }\r\n if (this.lock === false) {\r\n if (this.gamepads[0].unit.buttons[0].pressed === true) {\r\n this.mode = 0;\r\n }\r\n if (this.gamepads[0].unit.buttons[2].pressed === true) {\r\n this.mode = 1;\r\n }\r\n if (this.gamepads[0].unit.buttons[3].pressed === true) {\r\n this.mode = 2;\r\n }\r\n }\r\n }\r\n },\r\n updatePattern: function (): void {\r\n if (this.gamepads.length > 0) {\r\n if (this.lock === false) {\r\n if (this.mode === 0) {\r\n this.weakMagnitude = this.gamepads[0].unit.buttons[7].value;\r\n this.strongMagnitude = this.gamepads[0].unit.buttons[7].value;\r\n }\r\n if (this.mode === 1) {\r\n this.weakMagnitude = 0;\r\n this.strongMagnitude = this.gamepads[0].unit.buttons[7].value;\r\n }\r\n if (this.mode === 2) {\r\n this.weakMagnitude = this.gamepads[0].unit.buttons[7].value;\r\n this.strongMagnitude = 0;\r\n }\r\n }\r\n }\r\n },\r\n handle: function (): void {\r\n if (this.gamepads.length > 0) {\r\n this.gamepads.forEach((gamepad: Vibrator) => {\r\n if (gamepad.unit.buttons[7].value > 0 || this.lock === true) {\r\n this.start();\r\n } else {\r\n this.stop();\r\n }\r\n });\r\n }\r\n },\r\n },\r\n mounted() {\r\n this.interval = setInterval(this.eventLoop, 250);\r\n },\r\n });\r\n","import { render } from \"./AppManual.vue?vue&type=template&id=16213996&ts=true\"\nimport script from \"./AppManual.vue?vue&type=script&lang=ts\"\nexport * from \"./AppManual.vue?vue&type=script&lang=ts\"\n\nimport \"./AppManual.vue?vue&type=style&index=0&id=16213996&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 AppManual from '@/components/AppManual.vue';\r\n\r\n export default defineComponent({\r\n name: 'ManualView',\r\n components: {\r\n AppManual: AppManual,\r\n },\r\n });\r\n","import { render } from \"./ManualView.vue?vue&type=template&id=3cebd67e&ts=true\"\nimport script from \"./ManualView.vue?vue&type=script&lang=ts\"\nexport * from \"./ManualView.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__"],"names":["PatternUnit","constructor","startDelay","duration","weakMagnitude","strongMagnitude","this","_hoisted_1","class","render","_ctx","_cache","$props","$setup","$data","$options","_component_GamepadItem","_resolveComponent","_openBlock","_createElementBlock","_Fragment","_renderList","gamepads","gamepad","_createBlock","key","id","textContent","_toDisplayString","unit","defineComponent","name","__exports__","props","type","Array","components","GamepadItem","_createElementVNode","_renderSlot","$slots","_hoisted_2","_createTextVNode","_hoisted_3","_hoisted_4","_hoisted_5","_component_router_link","_createVNode","to","default","_withCtx","_","data","timestamp","interval","computed","result","store","forEach","item","methods","updateComputed","Date","now","mounted","setInterval","unmounted","clearInterval","_component_AppManual","_hoisted_6","_createStaticVNode","_hoisted_7","_component_NavigationList","_component_GamepadList","_component_MessageItem","_withDirectives","$event","required","disabled","min","max","step","_vModelText","length","mixins","ComputedGamepads","NavigationList","GamepadList","MessageItem","mode","lock","start","pattern","stop","eventLoop","updateMode","updatePattern","handle","buttons","pressed","value","AppManual"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/66.54b2ec35.js b/docs/js/37.e3372f87.js similarity index 90% rename from docs/js/66.54b2ec35.js rename to docs/js/37.e3372f87.js index 44efad9..c71fe1b 100644 --- a/docs/js/66.54b2ec35.js +++ b/docs/js/37.e3372f87.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[66],{1066:function(e,o,r){r.r(o),r.d(o,{default:function(){return i}});var a=r(3396);const n=(0,a.uE)('

Wavelovers οΏ½ Donate

Donate

If you like this app, you can thank me and donate to me.

Why should you donate to Wavelovers?

More donation = more money
More money allows me buy more coffee
More coffee makes me write more code
More code means more features
More features make you more happiness and productive
More happiness and productive so you earn more money
More money you earn more donation to me


Bitcoin: bc1qspzgj7xrf099s2ej8f5zmm52xu0wkfurpezny5
',2);function s(e,o,r,a,s,t){return n}var t=(0,a.aZ)({name:"DonateView"}),u=r(89);const c=(0,u.Z)(t,[["render",s]]);var i=c}}]); -//# sourceMappingURL=66.54b2ec35.js.map \ No newline at end of file +"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[37],{3037:function(e,o,r){r.r(o),r.d(o,{default:function(){return i}});var a=r(3396);const n=(0,a.uE)('

Wavelovers οΏ½ Donate

Donate

If you like this app, you can thank me and donate to me.

Why should you donate to Wavelovers?

More donation = more money
More money allows me buy more coffee
More coffee makes me write more code
More code means more features
More features make you more happiness and productive
More happiness and productive so you earn more money
More money you earn more donation to me


Bitcoin: bc1qspzgj7xrf099s2ej8f5zmm52xu0wkfurpezny5
',2);function s(e,o,r,a,s,t){return n}var t=(0,a.aZ)({name:"DonateView"}),u=r(89);const c=(0,u.Z)(t,[["render",s]]);var i=c}}]); +//# sourceMappingURL=37.e3372f87.js.map \ No newline at end of file diff --git a/docs/js/66.54b2ec35.js.map b/docs/js/37.e3372f87.js.map similarity index 86% rename from docs/js/66.54b2ec35.js.map rename to docs/js/37.e3372f87.js.map index 4e283ab..aa94f2b 100644 --- a/docs/js/66.54b2ec35.js.map +++ b/docs/js/37.e3372f87.js.map @@ -1 +1 @@ -{"version":3,"file":"js/66.54b2ec35.js","mappings":"6KAEA,MAAMA,GAA0BC,EAAAA,EAAAA,IAAmB,swBAAmxB,GAEh0B,SAAUC,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAOR,CACR,CCHC,OAAeS,EAAAA,EAAAA,IAAgB,CAC7BC,KAAM,e,QCGV,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAST,KAEpE,O","sources":["webpack://wavelovers/./src/views/DonateView.vue?c864","webpack://wavelovers/./src/views/DonateView.vue?82fb","webpack://wavelovers/./src/views/DonateView.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createStaticVNode(\"

Wavelovers οΏ½ Donate

Donate

If you like this app, you can thank me and donate to me.

Why should you donate to Wavelovers?

More donation = more money
More money allows me buy more coffee
More coffee makes me write more code
More code means more features
More features make you more happiness and productive
More happiness and productive so you earn more money
More money you earn more donation to me


Bitcoin: bc1qspzgj7xrf099s2ej8f5zmm52xu0wkfurpezny5
\", 2)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return _hoisted_1\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'DonateView',\r\n });\r\n","import { render } from \"./DonateView.vue?vue&type=template&id=4a1e50be&ts=true\"\nimport script from \"./DonateView.vue?vue&type=script&lang=ts\"\nexport * from \"./DonateView.vue?vue&type=script&lang=ts\"\n\nimport \"./DonateView.vue?vue&type=style&index=0&id=4a1e50be&lang=css\"\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__"],"names":["_hoisted_1","_createStaticVNode","render","_ctx","_cache","$props","$setup","$data","$options","defineComponent","name","__exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/37.e3372f87.js","mappings":"6KAEA,MAAMA,GAA0BC,EAAAA,EAAAA,IAAmB,swBAAmxB,GAEh0B,SAAUC,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAOR,CACR,CCHC,OAAeS,EAAAA,EAAAA,IAAgB,CAC7BC,KAAM,e,QCGV,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAST,KAEpE,O","sources":["webpack://wavelovers/./src/views/DonateView.vue?9f27","webpack://wavelovers/./src/views/DonateView.vue?82fb","webpack://wavelovers/./src/views/DonateView.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createStaticVNode(\"

Wavelovers οΏ½ Donate

Donate

If you like this app, you can thank me and donate to me.

Why should you donate to Wavelovers?

More donation = more money
More money allows me buy more coffee
More coffee makes me write more code
More code means more features
More features make you more happiness and productive
More happiness and productive so you earn more money
More money you earn more donation to me


Bitcoin: bc1qspzgj7xrf099s2ej8f5zmm52xu0wkfurpezny5
\", 2)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return _hoisted_1\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'DonateView',\r\n });\r\n","import { render } from \"./DonateView.vue?vue&type=template&id=5d3ac8cc&ts=true\"\nimport script from \"./DonateView.vue?vue&type=script&lang=ts\"\nexport * from \"./DonateView.vue?vue&type=script&lang=ts\"\n\nimport \"./DonateView.vue?vue&type=style&index=0&id=5d3ac8cc&lang=css\"\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__"],"names":["_hoisted_1","_createStaticVNode","render","_ctx","_cache","$props","$setup","$data","$options","defineComponent","name","__exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/370.2a33e7b8.js b/docs/js/370.2a33e7b8.js new file mode 100644 index 0000000..52ee208 --- /dev/null +++ b/docs/js/370.2a33e7b8.js @@ -0,0 +1,2 @@ +"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[370],{6370:function(e,t,a){a.r(t),a.d(t,{default:function(){return c}});var d=a(3396);const s=(0,d.uE)('

Wavelovers οΏ½ FAQ

FAQ

What is the purpose of this software?
Everyone decides for himself, but can be used as a gamepad vibration tester, or as a hand massager.
Can I use this software as a hand massager?
Yes of course. If you use this as a massager, then before the session I recommend consulting with a doctor.
I have a gamepad with vibration, what should I do before using it as a hand massager?
I recommend checking the device for correct operation, mechanical damage, and be sure to use an antiseptic.
I'm having problems with the app or connecting my device to the app?
Go to Troubleshooting.

Troubleshooting

If you are having difficulty detecting a gamepad by the browser, you can use the utility Wavelovers Diagnostic

The app does not see my device.
Make sure you have a chromium-based browser, then update the app and reconnect your device.
The application sees the gamepad, but writes that the vibration actuator is missing.
This problem is specific to mozilla firefox browser and d-input mode. Check the system requirements before using the software.
My question is not here.
Write me eugene.serb@gmail.com

System Requirements

Gamepad:
X-Input and vibration actuator required.
Browser:
Google Chrome or any other Chromium-based browser is recommended.
Operating System:
Windows 7 or higher recommended.
',2);function r(e,t,a,d,r,o){return s}var o=(0,d.aZ)({name:"FaqView"}),i=a(89);const n=(0,i.Z)(o,[["render",r]]);var c=n}}]); +//# sourceMappingURL=370.2a33e7b8.js.map \ No newline at end of file diff --git a/docs/js/645.b32a0b62.js.map b/docs/js/370.2a33e7b8.js.map similarity index 92% rename from docs/js/645.b32a0b62.js.map rename to docs/js/370.2a33e7b8.js.map index 6cc0025..390495b 100644 --- a/docs/js/645.b32a0b62.js.map +++ b/docs/js/370.2a33e7b8.js.map @@ -1 +1 @@ -{"version":3,"file":"js/645.b32a0b62.js","mappings":"6KAEA,MAAMA,GAA0BC,EAAAA,EAAAA,IAAmB,k4DAAy5D,GAEt8D,SAAUC,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAOR,CACR,CCHC,OAAeS,EAAAA,EAAAA,IAAgB,CAC7BC,KAAM,Y,QCCV,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAST,KAEpE,O","sources":["webpack://wavelovers/./src/views/FaqView.vue?c024","webpack://wavelovers/./src/views/FaqView.vue?a581","webpack://wavelovers/./src/views/FaqView.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createStaticVNode(\"

Wavelovers οΏ½ FAQ

FAQ

What is the purpose of this software?
Everyone decides for himself, but can be used as a gamepad vibration tester, or as a hand massager.
Can I use this software as a hand massager?
Yes of course. If you use this as a massager, then before the session I recommend consulting with a doctor.
I have a gamepad with vibration, what should I do before using it as a hand massager?
I recommend checking the device for correct operation, mechanical damage, and be sure to use an antiseptic.
I'm having problems with the app or connecting my device to the app?
Go to Troubleshooting.

Troubleshooting

If you are having difficulty detecting a gamepad by the browser, you can use the utility Wavelovers Diagnostic

The app does not see my device.
Make sure you have a chromium-based browser, then update the app and reconnect your device.
The application sees the gamepad, but writes that the vibration actuator is missing.
This problem is specific to mozilla firefox browser and d-input mode. Check the system requirements before using the software.
My question is not here.
Write me eugene.serb@gmail.com

System Requirements

Gamepad:
X-Input and vibration actuator required.
Browser:
Google Chrome or any other Chromium-based browser is recommended.
Operating System:
Windows 7 or higher recommended.
\", 2)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return _hoisted_1\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'FaqView',\r\n });\r\n","import { render } from \"./FaqView.vue?vue&type=template&id=0e2de9db&ts=true\"\nimport script from \"./FaqView.vue?vue&type=script&lang=ts\"\nexport * from \"./FaqView.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__"],"names":["_hoisted_1","_createStaticVNode","render","_ctx","_cache","$props","$setup","$data","$options","defineComponent","name","__exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/370.2a33e7b8.js","mappings":"8KAEA,MAAMA,GAA0BC,EAAAA,EAAAA,IAAmB,k4DAAy5D,GAEt8D,SAAUC,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAOR,CACR,CCHC,OAAeS,EAAAA,EAAAA,IAAgB,CAC7BC,KAAM,Y,QCCV,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAST,KAEpE,O","sources":["webpack://wavelovers/./src/views/FaqView.vue?24af","webpack://wavelovers/./src/views/FaqView.vue?a581","webpack://wavelovers/./src/views/FaqView.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createStaticVNode(\"

Wavelovers οΏ½ FAQ

FAQ

What is the purpose of this software?
Everyone decides for himself, but can be used as a gamepad vibration tester, or as a hand massager.
Can I use this software as a hand massager?
Yes of course. If you use this as a massager, then before the session I recommend consulting with a doctor.
I have a gamepad with vibration, what should I do before using it as a hand massager?
I recommend checking the device for correct operation, mechanical damage, and be sure to use an antiseptic.
I'm having problems with the app or connecting my device to the app?
Go to Troubleshooting.

Troubleshooting

If you are having difficulty detecting a gamepad by the browser, you can use the utility Wavelovers Diagnostic

The app does not see my device.
Make sure you have a chromium-based browser, then update the app and reconnect your device.
The application sees the gamepad, but writes that the vibration actuator is missing.
This problem is specific to mozilla firefox browser and d-input mode. Check the system requirements before using the software.
My question is not here.
Write me eugene.serb@gmail.com

System Requirements

Gamepad:
X-Input and vibration actuator required.
Browser:
Google Chrome or any other Chromium-based browser is recommended.
Operating System:
Windows 7 or higher recommended.
\", 2)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return _hoisted_1\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'FaqView',\r\n });\r\n","import { render } from \"./FaqView.vue?vue&type=template&id=0075180f&ts=true\"\nimport script from \"./FaqView.vue?vue&type=script&lang=ts\"\nexport * from \"./FaqView.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__"],"names":["_hoisted_1","_createStaticVNode","render","_ctx","_cache","$props","$setup","$data","$options","defineComponent","name","__exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/219.2a2a502d.js b/docs/js/402.5e25729c.js similarity index 60% rename from docs/js/219.2a2a502d.js rename to docs/js/402.5e25729c.js index 4e05a0e..f288f6b 100644 --- a/docs/js/219.2a2a502d.js +++ b/docs/js/402.5e25729c.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[219],{3913:function(t,n,a){var e=a(2482);class s{constructor(t,n,a,s){(0,e.Z)(this,"startDelay",void 0),(0,e.Z)(this,"duration",void 0),(0,e.Z)(this,"weakMagnitude",void 0),(0,e.Z)(this,"strongMagnitude",void 0),this.startDelay=t,this.duration=n,this.weakMagnitude=a,this.strongMagnitude=s}}n["Z"]=s},3375:function(t,n,a){a.d(n,{Z:function(){return _}});var e=a(3396),s=a(7139);const i={class:"content-item device-list"};function o(t,n,a,o,u,r){const l=(0,e.up)("GamepadItem");return(0,e.wg)(),(0,e.iD)("div",i,[((0,e.wg)(!0),(0,e.iD)(e.HY,null,(0,e.Ko)(t.gamepads,(t=>((0,e.wg)(),(0,e.j4)(l,{key:t.id,textContent:(0,s.zw)(t.unit.id)},null,8,["textContent"])))),128))])}const u={class:"list-item"};function r(t,n,a,s,i,o){return(0,e.wg)(),(0,e.iD)("div",u)}var l=(0,e.aZ)({name:"GamepadItem"}),m=a(89);const d=(0,m.Z)(l,[["render",r]]);var c=d,p=(0,e.aZ)({name:"GamepadList",props:{gamepads:{type:Array}},components:{GamepadItem:c}});const g=(0,m.Z)(p,[["render",o]]);var _=g},9808:function(t,n,a){a.d(n,{Z:function(){return l}});var e=a(3396);const s={class:"content-item message"};function i(t,n,a,i,o,u){return(0,e.wg)(),(0,e.iD)("div",s,[(0,e._)("span",null,[(0,e.WI)(t.$slots,"default")])])}var o=(0,e.aZ)({name:"MessageItem"}),u=a(89);const r=(0,u.Z)(o,[["render",i]]);var l=r},4246:function(t,n,a){a.d(n,{Z:function(){return p}});var e=a(3396);const s={class:"content-item navigation-list"},i=(0,e.Uk)("Patterns"),o=(0,e.Uk)("Custom"),u=(0,e.Uk)("Manual"),r=(0,e.Uk)("Diagnostic");function l(t,n,a,l,m,d){const c=(0,e.up)("router-link");return(0,e.wg)(),(0,e.iD)("div",s,[(0,e.Wm)(c,{to:"/",class:"navigation-list__item"},{default:(0,e.w5)((()=>[i])),_:1}),(0,e.Wm)(c,{to:"/custom",class:"navigation-list__item"},{default:(0,e.w5)((()=>[o])),_:1}),(0,e.Wm)(c,{to:"/manual",class:"navigation-list__item"},{default:(0,e.w5)((()=>[u])),_:1}),(0,e.Wm)(c,{to:"/diagnostic",class:"navigation-list__item"},{default:(0,e.w5)((()=>[r])),_:1})])}var m=(0,e.aZ)({name:"NavigationList"}),d=a(89);const c=(0,d.Z)(m,[["render",l]]);var p=c},219:function(t,n,a){a.r(n),a.d(n,{default:function(){return G}});var e=a(3396);const s=(0,e._)("h1",{class:"visually-hidden"},"Wavelovers οΏ½ Custom",-1);function i(t,n,a,i,o,u){const r=(0,e.up)("AppCustom");return(0,e.wg)(),(0,e.iD)(e.HY,null,[s,(0,e.Wm)(r)],64)}var o=a(9242);const u={class:"content-item app-custom"},r={class:"custom-form"},l={class:"custom-form__input"},m=(0,e._)("span",null,"Start Delay (ms)",-1),d={class:"custom-form__input"},c=(0,e._)("span",null,"Duration (ms)",-1),p={class:"custom-form__input"},g=(0,e._)("span",null,"Weak Magnitude",-1),_={class:"custom-form__input"},v=(0,e._)("span",null,"Strong Magnitude",-1),f={class:"custom-form__buttons"},w=(0,e.Uk)("Press any gamepad button or connect a new gamepad to vibrate.");function Z(t,n,a,s,i,Z){const h=(0,e.up)("NavigationList"),y=(0,e.up)("GamepadList"),k=(0,e.up)("MessageItem");return(0,e.wg)(),(0,e.iD)(e.HY,null,[(0,e.Wm)(h),(0,e._)("div",u,[(0,e._)("fieldset",r,[(0,e._)("label",l,[m,(0,e.wy)((0,e._)("input",{"onUpdate:modelValue":n[0]||(n[0]=n=>t.startDelay=n),type:"number",placeholder:"Start Delay",min:"0",max:"1000",step:"25",required:""},null,512),[[o.nr,t.startDelay]])]),(0,e._)("label",d,[c,(0,e.wy)((0,e._)("input",{"onUpdate:modelValue":n[1]||(n[1]=n=>t.duration=n),type:"number",placeholder:"Duration",min:"0",max:"1000",step:"25",required:""},null,512),[[o.nr,t.duration]])]),(0,e._)("label",p,[g,(0,e.wy)((0,e._)("input",{"onUpdate:modelValue":n[2]||(n[2]=n=>t.weakMagnitude=n),type:"range",required:"",min:"0.0",max:"1.0",step:"0.01"},null,512),[[o.nr,t.weakMagnitude]])]),(0,e._)("label",_,[v,(0,e.wy)((0,e._)("input",{"onUpdate:modelValue":n[3]||(n[3]=n=>t.strongMagnitude=n),type:"range",required:"",min:"0.0",max:"1.0",step:"0.01"},null,512),[[o.nr,t.strongMagnitude]])]),(0,e._)("div",f,[(0,e._)("button",{onClick:n[4]||(n[4]=(...n)=>t.start&&t.start(...n)),class:"custom-form__button"},"Start"),(0,e._)("button",{onClick:n[5]||(n[5]=(...n)=>t.stop&&t.stop(...n)),class:"custom-form__button"},"Stop")])])]),t.gamepads.length>0?((0,e.wg)(),(0,e.j4)(y,{key:0,gamepads:t.gamepads},null,8,["gamepads"])):((0,e.wg)(),(0,e.j4)(k,{key:1},{default:(0,e.w5)((()=>[w])),_:1}))],64)}var h=a(1746),y=a(4246),k=a(3375),D=a(9808),M=a(3913),b=(0,e.aZ)({name:"AppCustom",components:{NavigationList:y.Z,GamepadList:k.Z,MessageItem:D.Z},data:()=>({startDelay:250,duration:250,weakMagnitude:1,strongMagnitude:1}),computed:{gamepads:function(){return h.Z.getters.gamepads}},methods:{start:function(){const t=[new M.Z(this.startDelay,this.duration,this.weakMagnitude,this.strongMagnitude)];h.Z.dispatch("startCustom",t)},stop:function(){h.Z.dispatch("reset")}}}),C=a(89);const U=(0,C.Z)(b,[["render",Z]]);var W=U,I=(0,e.aZ)({name:"CustomView",components:{AppCustom:W}});const x=(0,C.Z)(I,[["render",i]]);var G=x}}]); -//# sourceMappingURL=219.2a2a502d.js.map \ No newline at end of file +"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[402],{3913:function(t,n,a){var e=a(2482);class s{constructor(t,n,a,s){(0,e.Z)(this,"startDelay",void 0),(0,e.Z)(this,"duration",void 0),(0,e.Z)(this,"weakMagnitude",void 0),(0,e.Z)(this,"strongMagnitude",void 0),this.startDelay=t,this.duration=n,this.weakMagnitude=a,this.strongMagnitude=s}}n["Z"]=s},1682:function(t,n,a){a.d(n,{Z:function(){return _}});var e=a(3396),s=a(7139);const i={class:"content-item device-list"};function o(t,n,a,o,u,r){const l=(0,e.up)("GamepadItem");return(0,e.wg)(),(0,e.iD)("div",i,[((0,e.wg)(!0),(0,e.iD)(e.HY,null,(0,e.Ko)(t.gamepads,(t=>((0,e.wg)(),(0,e.j4)(l,{key:t.id,textContent:(0,s.zw)(t.unit.id)},null,8,["textContent"])))),128))])}const u={class:"list-item"};function r(t,n,a,s,i,o){return(0,e.wg)(),(0,e.iD)("div",u)}var l=(0,e.aZ)({name:"GamepadItem"}),m=a(89);const d=(0,m.Z)(l,[["render",r]]);var c=d,p=(0,e.aZ)({name:"GamepadList",props:{gamepads:{type:Array}},components:{GamepadItem:c}});const g=(0,m.Z)(p,[["render",o]]);var _=g},322:function(t,n,a){a.d(n,{Z:function(){return l}});var e=a(3396);const s={class:"content-item message"};function i(t,n,a,i,o,u){return(0,e.wg)(),(0,e.iD)("div",s,[(0,e._)("span",null,[(0,e.WI)(t.$slots,"default")])])}var o=(0,e.aZ)({name:"MessageItem"}),u=a(89);const r=(0,u.Z)(o,[["render",i]]);var l=r},9100:function(t,n,a){a.d(n,{Z:function(){return p}});var e=a(3396);const s={class:"content-item navigation-list"},i=(0,e.Uk)("Patterns"),o=(0,e.Uk)("Custom"),u=(0,e.Uk)("Manual"),r=(0,e.Uk)("Diagnostic");function l(t,n,a,l,m,d){const c=(0,e.up)("router-link");return(0,e.wg)(),(0,e.iD)("div",s,[(0,e.Wm)(c,{to:"/",class:"navigation-list__item"},{default:(0,e.w5)((()=>[i])),_:1}),(0,e.Wm)(c,{to:"/custom",class:"navigation-list__item"},{default:(0,e.w5)((()=>[o])),_:1}),(0,e.Wm)(c,{to:"/manual",class:"navigation-list__item"},{default:(0,e.w5)((()=>[u])),_:1}),(0,e.Wm)(c,{to:"/diagnostic",class:"navigation-list__item"},{default:(0,e.w5)((()=>[r])),_:1})])}var m=(0,e.aZ)({name:"NavigationList"}),d=a(89);const c=(0,d.Z)(m,[["render",l]]);var p=c},4402:function(t,n,a){a.r(n),a.d(n,{default:function(){return G}});var e=a(3396);const s=(0,e._)("h1",{class:"visually-hidden"},"Wavelovers οΏ½ Custom",-1);function i(t,n,a,i,o,u){const r=(0,e.up)("AppCustom");return(0,e.wg)(),(0,e.iD)(e.HY,null,[s,(0,e.Wm)(r)],64)}var o=a(9242);const u={class:"content-item app-custom"},r={class:"custom-form"},l={class:"custom-form__input"},m=(0,e._)("span",null,"Start Delay (ms)",-1),d={class:"custom-form__input"},c=(0,e._)("span",null,"Duration (ms)",-1),p={class:"custom-form__input"},g=(0,e._)("span",null,"Weak Magnitude",-1),_={class:"custom-form__input"},v=(0,e._)("span",null,"Strong Magnitude",-1),f={class:"custom-form__buttons"},w=(0,e.Uk)("Press any gamepad button or connect a new gamepad to vibrate.");function Z(t,n,a,s,i,Z){const h=(0,e.up)("NavigationList"),y=(0,e.up)("GamepadList"),k=(0,e.up)("MessageItem");return(0,e.wg)(),(0,e.iD)(e.HY,null,[(0,e.Wm)(h),(0,e._)("div",u,[(0,e._)("fieldset",r,[(0,e._)("label",l,[m,(0,e.wy)((0,e._)("input",{"onUpdate:modelValue":n[0]||(n[0]=n=>t.startDelay=n),type:"number",placeholder:"Start Delay",min:"0",max:"1000",step:"25",required:""},null,512),[[o.nr,t.startDelay]])]),(0,e._)("label",d,[c,(0,e.wy)((0,e._)("input",{"onUpdate:modelValue":n[1]||(n[1]=n=>t.duration=n),type:"number",placeholder:"Duration",min:"0",max:"1000",step:"25",required:""},null,512),[[o.nr,t.duration]])]),(0,e._)("label",p,[g,(0,e.wy)((0,e._)("input",{"onUpdate:modelValue":n[2]||(n[2]=n=>t.weakMagnitude=n),type:"range",required:"",min:"0.0",max:"1.0",step:"0.01"},null,512),[[o.nr,t.weakMagnitude]])]),(0,e._)("label",_,[v,(0,e.wy)((0,e._)("input",{"onUpdate:modelValue":n[3]||(n[3]=n=>t.strongMagnitude=n),type:"range",required:"",min:"0.0",max:"1.0",step:"0.01"},null,512),[[o.nr,t.strongMagnitude]])]),(0,e._)("div",f,[(0,e._)("button",{onClick:n[4]||(n[4]=(...n)=>t.start&&t.start(...n)),class:"custom-form__button"},"Start"),(0,e._)("button",{onClick:n[5]||(n[5]=(...n)=>t.stop&&t.stop(...n)),class:"custom-form__button"},"Stop")])])]),t.gamepads.length>0?((0,e.wg)(),(0,e.j4)(y,{key:0,gamepads:t.gamepads},null,8,["gamepads"])):((0,e.wg)(),(0,e.j4)(k,{key:1},{default:(0,e.w5)((()=>[w])),_:1}))],64)}var h=a(1746),y=a(9100),k=a(1682),D=a(322),M=a(3913),b=(0,e.aZ)({name:"AppCustom",components:{NavigationList:y.Z,GamepadList:k.Z,MessageItem:D.Z},data:()=>({startDelay:250,duration:250,weakMagnitude:1,strongMagnitude:1}),computed:{gamepads:function(){return h.Z.getters.gamepads}},methods:{start:function(){const t=[new M.Z(this.startDelay,this.duration,this.weakMagnitude,this.strongMagnitude)];h.Z.dispatch("startCustom",t)},stop:function(){h.Z.dispatch("reset")}}}),C=a(89);const U=(0,C.Z)(b,[["render",Z]]);var W=U,I=(0,e.aZ)({name:"CustomView",components:{AppCustom:W}});const x=(0,C.Z)(I,[["render",i]]);var G=x}}]); +//# sourceMappingURL=402.5e25729c.js.map \ No newline at end of file diff --git a/docs/js/402.5e25729c.js.map b/docs/js/402.5e25729c.js.map new file mode 100644 index 0000000..486fc03 --- /dev/null +++ b/docs/js/402.5e25729c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/402.5e25729c.js","mappings":"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","sources":["webpack://wavelovers/./src/models/PatternUnit.ts","webpack://wavelovers/./src/components/GamepadList.vue?5b9c","webpack://wavelovers/./src/components/GamepadItem.vue?0665","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?088b","webpack://wavelovers/./src/components/MessageItem.vue?b787","webpack://wavelovers/./src/components/MessageItem.vue","webpack://wavelovers/./src/components/NavigationList.vue?0746","webpack://wavelovers/./src/components/NavigationList.vue?d88b","webpack://wavelovers/./src/components/NavigationList.vue","webpack://wavelovers/./src/views/CustomView.vue?0e3b","webpack://wavelovers/./src/components/AppCustom.vue?d16c","webpack://wavelovers/./src/components/AppCustom.vue?08c8","webpack://wavelovers/./src/components/AppCustom.vue","webpack://wavelovers/./src/views/CustomView.vue?8886","webpack://wavelovers/./src/views/CustomView.vue"],"sourcesContent":["import IPatternUnit from \"@/models/IPatternUnit\";\r\n\r\nclass PatternUnit implements IPatternUnit {\r\n\r\n startDelay: number;\r\n duration: number;\r\n weakMagnitude: number;\r\n strongMagnitude: number;\r\n\r\n constructor(\r\n startDelay: number, duration: number,\r\n weakMagnitude: number, strongMagnitude: number\r\n ) {\r\n this.startDelay = startDelay;\r\n this.duration = duration;\r\n this.weakMagnitude = weakMagnitude;\r\n this.strongMagnitude = strongMagnitude;\r\n }\r\n}\r\n\r\nexport default PatternUnit;\r\n","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=6958838e&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=6958838e&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=2658b144&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=2658b144&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=7e7a7193&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=7e7a7193&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 { 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(\"Patterns\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"Custom\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"Manual\")\nconst _hoisted_5 = /*#__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: \"/\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/custom\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/manual\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/diagnostic\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_5\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=c925f896&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=c925f896&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 { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"h1\", { class: \"visually-hidden\" }, \"Wavelovers οΏ½ Custom\", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_AppCustom = _resolveComponent(\"AppCustom\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(_component_AppCustom)\n ], 64))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"content-item app-custom\" }\nconst _hoisted_2 = { class: \"custom-form\" }\nconst _hoisted_3 = { class: \"custom-form__input\" }\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Start Delay (ms)\", -1)\nconst _hoisted_5 = { class: \"custom-form__input\" }\nconst _hoisted_6 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Duration (ms)\", -1)\nconst _hoisted_7 = { class: \"custom-form__input\" }\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Weak Magnitude\", -1)\nconst _hoisted_9 = { class: \"custom-form__input\" }\nconst _hoisted_10 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Strong Magnitude\", -1)\nconst _hoisted_11 = { class: \"custom-form__buttons\" }\nconst _hoisted_12 = /*#__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_GamepadList = _resolveComponent(\"GamepadList\")!\n const _component_MessageItem = _resolveComponent(\"MessageItem\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_NavigationList),\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"fieldset\", _hoisted_2, [\n _createElementVNode(\"label\", _hoisted_3, [\n _hoisted_4,\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.startDelay) = $event)),\n type: \"number\",\n placeholder: \"Start Delay\",\n min: \"0\",\n max: \"1000\",\n step: \"25\",\n required: \"\"\n }, null, 512), [\n [_vModelText, _ctx.startDelay]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_5, [\n _hoisted_6,\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.duration) = $event)),\n type: \"number\",\n placeholder: \"Duration\",\n min: \"0\",\n max: \"1000\",\n step: \"25\",\n required: \"\"\n }, null, 512), [\n [_vModelText, _ctx.duration]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _hoisted_8,\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.weakMagnitude) = $event)),\n type: \"range\",\n required: \"\",\n min: \"0.0\",\n max: \"1.0\",\n step: \"0.01\"\n }, null, 512), [\n [_vModelText, _ctx.weakMagnitude]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_9, [\n _hoisted_10,\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.strongMagnitude) = $event)),\n type: \"range\",\n required: \"\",\n min: \"0.0\",\n max: \"1.0\",\n step: \"0.01\"\n }, null, 512), [\n [_vModelText, _ctx.strongMagnitude]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.start && _ctx.start(...args))),\n class: \"custom-form__button\"\n }, \"Start\"),\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.stop && _ctx.stop(...args))),\n class: \"custom-form__button\"\n }, \"Stop\")\n ])\n ])\n ]),\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_12\n ]),\n _: 1\n }))\n ], 64))\n}","\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 import TPatternUnit from '@/models/TPatternUnit';\r\n import PatternUnit from '@/models/PatternUnit';\r\n\r\n export default defineComponent({\r\n name: 'AppCustom',\r\n components: {\r\n NavigationList: NavigationList,\r\n GamepadList: GamepadList,\r\n MessageItem: MessageItem,\r\n },\r\n data: () => {\r\n return {\r\n startDelay: 250 as number,\r\n duration: 250 as number,\r\n weakMagnitude: 1 as number,\r\n strongMagnitude: 1 as number,\r\n };\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 start: function (): void {\r\n const patterns: TPatternUnit[] = [new PatternUnit(\r\n this.startDelay,\r\n this.duration,\r\n this.weakMagnitude,\r\n this.strongMagnitude,\r\n )];\r\n store.dispatch('startCustom', patterns);\r\n },\r\n stop: function (): void {\r\n store.dispatch('reset');\r\n },\r\n },\r\n });\r\n","import { render } from \"./AppCustom.vue?vue&type=template&id=057bb038&ts=true\"\nimport script from \"./AppCustom.vue?vue&type=script&lang=ts\"\nexport * from \"./AppCustom.vue?vue&type=script&lang=ts\"\n\nimport \"./AppCustom.vue?vue&type=style&index=0&id=057bb038&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 AppCustom from '@/components/AppCustom.vue';\r\n\r\n export default defineComponent({\r\n name: 'CustomView',\r\n components: {\r\n AppCustom: AppCustom,\r\n },\r\n });\r\n","import { render } from \"./CustomView.vue?vue&type=template&id=6d2f81b7&ts=true\"\nimport script from \"./CustomView.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomView.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__"],"names":["PatternUnit","constructor","startDelay","duration","weakMagnitude","strongMagnitude","this","_hoisted_1","class","render","_ctx","_cache","$props","$setup","$data","$options","_component_GamepadItem","_resolveComponent","_openBlock","_createElementBlock","_Fragment","_renderList","gamepads","gamepad","_createBlock","key","id","textContent","_toDisplayString","unit","defineComponent","name","__exports__","props","type","Array","components","GamepadItem","_createElementVNode","_renderSlot","$slots","_hoisted_2","_createTextVNode","_hoisted_3","_hoisted_4","_hoisted_5","_component_router_link","_createVNode","to","default","_withCtx","_","_component_AppCustom","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_component_NavigationList","_component_GamepadList","_component_MessageItem","_withDirectives","$event","placeholder","min","max","step","required","_vModelText","onClick","args","start","stop","length","NavigationList","GamepadList","MessageItem","data","computed","store","methods","patterns","AppCustom"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/582.a8f6467f.js b/docs/js/582.a8f6467f.js deleted file mode 100644 index 8de439c..0000000 --- a/docs/js/582.a8f6467f.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[582],{3375:function(a,t,e){e.d(t,{Z:function(){return v}});var n=e(3396),s=e(7139);const i={class:"content-item device-list"};function u(a,t,e,u,o,d){const p=(0,n.up)("GamepadItem");return(0,n.wg)(),(0,n.iD)("div",i,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(a.gamepads,(a=>((0,n.wg)(),(0,n.j4)(p,{key:a.id,textContent:(0,s.zw)(a.unit.id)},null,8,["textContent"])))),128))])}const o={class:"list-item"};function d(a,t,e,s,i,u){return(0,n.wg)(),(0,n.iD)("div",o)}var p=(0,n.aZ)({name:"GamepadItem"}),l=e(89);const m=(0,l.Z)(p,[["render",d]]);var g=m,r=(0,n.aZ)({name:"GamepadList",props:{gamepads:{type:Array}},components:{GamepadItem:g}});const c=(0,l.Z)(r,[["render",u]]);var v=c},9808:function(a,t,e){e.d(t,{Z:function(){return p}});var n=e(3396);const s={class:"content-item message"};function i(a,t,e,i,u,o){return(0,n.wg)(),(0,n.iD)("div",s,[(0,n._)("span",null,[(0,n.WI)(a.$slots,"default")])])}var u=(0,n.aZ)({name:"MessageItem"}),o=e(89);const d=(0,o.Z)(u,[["render",i]]);var p=d},4246:function(a,t,e){e.d(t,{Z:function(){return r}});var n=e(3396);const s={class:"content-item navigation-list"},i=(0,n.Uk)("Patterns"),u=(0,n.Uk)("Custom"),o=(0,n.Uk)("Manual"),d=(0,n.Uk)("Diagnostic");function p(a,t,e,p,l,m){const g=(0,n.up)("router-link");return(0,n.wg)(),(0,n.iD)("div",s,[(0,n.Wm)(g,{to:"/",class:"navigation-list__item"},{default:(0,n.w5)((()=>[i])),_:1}),(0,n.Wm)(g,{to:"/custom",class:"navigation-list__item"},{default:(0,n.w5)((()=>[u])),_:1}),(0,n.Wm)(g,{to:"/manual",class:"navigation-list__item"},{default:(0,n.w5)((()=>[o])),_:1}),(0,n.Wm)(g,{to:"/diagnostic",class:"navigation-list__item"},{default:(0,n.w5)((()=>[d])),_:1})])}var l=(0,n.aZ)({name:"NavigationList"}),m=e(89);const g=(0,m.Z)(l,[["render",p]]);var r=g},6259:function(a,t,e){e.d(t,{Z:function(){return o}});var n=e(3396),s=e(1746),i=(0,n.aZ)({name:"ComputedGamepads",data:()=>({timestamp:0,interval:0}),computed:{gamepads:function(){const a=this.timestamp,t=s.Z.getters.gamepads;return t.forEach((t=>{t.interval=a})),t}},methods:{updateComputed:function(){this.timestamp=Date.now()}},mounted(){this.interval=setInterval(this.updateComputed,1)},unmounted(){clearInterval(this.interval)}});const u=i;var o=u},6582:function(a,t,e){e.r(t),e.d(t,{default:function(){return D}});var n=e(3396);const s=(0,n._)("h1",{class:"visually-hidden"},"Wavelovers οΏ½ Diagnostic",-1);function i(a,t,e,i,u,o){const d=(0,n.up)("AppDiagnostic");return(0,n.wg)(),(0,n.iD)(n.HY,null,[s,(0,n.Wm)(d)],64)}const u={key:0,class:"content-item"},o=(0,n.Uk)("Press any gamepad button or connect a new gamepad to vibrate.");function d(a,t,e,s,i,d){const p=(0,n.up)("NavigationList"),l=(0,n.up)("DiagnosticItem"),m=(0,n.up)("GamepadList"),g=(0,n.up)("MessageItem");return(0,n.wg)(),(0,n.iD)(n.HY,null,[(0,n.Wm)(p),a.gamepads.length>0?((0,n.wg)(),(0,n.iD)("div",u,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(a.gamepads,(t=>((0,n.wg)(),(0,n.j4)(l,{key:t.id,gamepad:t,timestamp:a.timestamp},null,8,["gamepad","timestamp"])))),128))])):(0,n.kq)("",!0),a.gamepads.length>0?((0,n.wg)(),(0,n.j4)(m,{key:1,gamepads:a.gamepads},null,8,["gamepads"])):((0,n.wg)(),(0,n.j4)(g,{key:2},{default:(0,n.w5)((()=>[o])),_:1}))],64)}var p=e(4246),l=e(3375),m=e(9808),g=e(7139);const r={class:"output-gamepad"},c={class:"gamepad-group"};function v(a,t,e,s,i,u){return(0,n.wg)(),(0,n.iD)("div",r,[(0,n._)("h3",null,"#"+(0,g.zw)(a.gamepad.unit.index+1)+". "+(0,g.zw)(a.gamepad.unit.id),1),(0,n._)("div",c,[(0,n._)("div",null,[(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[0].value?"pressed":""])},"A: "+(0,g.zw)(a.gamepad.unit.buttons[0].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[1].value?"pressed":""])},"B: "+(0,g.zw)(a.gamepad.unit.buttons[1].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[2].value?"pressed":""])},"X: "+(0,g.zw)(a.gamepad.unit.buttons[2].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[3].value?"pressed":""])},"Y: "+(0,g.zw)(a.gamepad.unit.buttons[3].value.toFixed(2)),3)]),(0,n._)("div",null,[(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[4].value?"pressed":""])},"LB: "+(0,g.zw)(a.gamepad.unit.buttons[4].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[5].value?"pressed":""])},"RB: "+(0,g.zw)(a.gamepad.unit.buttons[5].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[6].value?"pressed":""])},"LT: "+(0,g.zw)(a.gamepad.unit.buttons[6].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[7].value?"pressed":""])},"RT: "+(0,g.zw)(a.gamepad.unit.buttons[7].value.toFixed(2)),3)]),(0,n._)("div",null,[(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[8].value?"pressed":""])},"Back: "+(0,g.zw)(a.gamepad.unit.buttons[8].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[9].value?"pressed":""])},"Start: "+(0,g.zw)(a.gamepad.unit.buttons[9].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[10].value?"pressed":""])},"Left Stick: "+(0,g.zw)(a.gamepad.unit.buttons[10].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[11].value?"pressed":""])},"Right Stick: "+(0,g.zw)(a.gamepad.unit.buttons[11].value.toFixed(2)),3)]),(0,n._)("div",null,[(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[12].value?"pressed":""])},"Forward: "+(0,g.zw)(a.gamepad.unit.buttons[12].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[13].value?"pressed":""])},"Backward: "+(0,g.zw)(a.gamepad.unit.buttons[13].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[14].value?"pressed":""])},"Left: "+(0,g.zw)(a.gamepad.unit.buttons[14].value.toFixed(2)),3),(0,n._)("span",{class:(0,g.C_)([1===a.gamepad.unit.buttons[15].value?"pressed":""])},"Right: "+(0,g.zw)(a.gamepad.unit.buttons[15].value.toFixed(2)),3)]),(0,n._)("div",null,[(0,n._)("span",null,"Left Stick X: "+(0,g.zw)(a.gamepad.unit.axes[0]?a.gamepad.unit.axes[0].toFixed(2):"missing"),1),(0,n._)("span",null,"Left Stick Y: "+(0,g.zw)(a.gamepad.unit.axes[1]?a.gamepad.unit.axes[1].toFixed(2):"missing"),1),(0,n._)("span",null,"Right Stick X: "+(0,g.zw)(a.gamepad.unit.axes[2]?a.gamepad.unit.axes[2].toFixed(2):"missing"),1),(0,n._)("span",null,"Right Stick Y: "+(0,g.zw)(a.gamepad.unit.axes[3]?a.gamepad.unit.axes[3].toFixed(2):"missing"),1)])]),(0,n._)("span",null,"Vibration Actuator: "+(0,g.zw)(a.gamepad.unit.vibrationActuator?"Available":"missing"),1)])}var _=(0,n.aZ)({name:"DiagnosticItem",props:{gamepad:{type:Object},timestamp:{type:Number}}}),w=e(89);const b=(0,w.Z)(_,[["render",v]]);var f=b,x=e(6259),k=(0,n.aZ)({name:"AppDiagnostic",mixins:[x.Z],components:{DiagnosticItem:f,NavigationList:p.Z,GamepadList:l.Z,MessageItem:m.Z}});const z=(0,w.Z)(k,[["render",d]]);var C=z,Z=(0,n.aZ)({name:"DiagnosticView",components:{AppDiagnostic:C}});const F=(0,w.Z)(Z,[["render",i]]);var D=F}}]); -//# sourceMappingURL=582.a8f6467f.js.map \ No newline at end of file diff --git a/docs/js/645.b32a0b62.js b/docs/js/645.b32a0b62.js deleted file mode 100644 index 88e9903..0000000 --- a/docs/js/645.b32a0b62.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[645],{645:function(e,t,a){a.r(t),a.d(t,{default:function(){return c}});var d=a(3396);const s=(0,d.uE)('

Wavelovers οΏ½ FAQ

FAQ

What is the purpose of this software?
Everyone decides for himself, but can be used as a gamepad vibration tester, or as a hand massager.
Can I use this software as a hand massager?
Yes of course. If you use this as a massager, then before the session I recommend consulting with a doctor.
I have a gamepad with vibration, what should I do before using it as a hand massager?
I recommend checking the device for correct operation, mechanical damage, and be sure to use an antiseptic.
I'm having problems with the app or connecting my device to the app?
Go to Troubleshooting.

Troubleshooting

If you are having difficulty detecting a gamepad by the browser, you can use the utility Wavelovers Diagnostic

The app does not see my device.
Make sure you have a chromium-based browser, then update the app and reconnect your device.
The application sees the gamepad, but writes that the vibration actuator is missing.
This problem is specific to mozilla firefox browser and d-input mode. Check the system requirements before using the software.
My question is not here.
Write me eugene.serb@gmail.com

System Requirements

Gamepad:
X-Input and vibration actuator required.
Browser:
Google Chrome or any other Chromium-based browser is recommended.
Operating System:
Windows 7 or higher recommended.
',2);function r(e,t,a,d,r,o){return s}var o=(0,d.aZ)({name:"FaqView"}),i=a(89);const n=(0,i.Z)(o,[["render",r]]);var c=n}}]); -//# sourceMappingURL=645.b32a0b62.js.map \ No newline at end of file diff --git a/docs/js/709.b171ad0f.js b/docs/js/709.b171ad0f.js deleted file mode 100644 index b709450..0000000 --- a/docs/js/709.b171ad0f.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[709],{3375:function(t,e,n){n.d(e,{Z:function(){return v}});var a=n(3396),s=n(7139);const i={class:"content-item device-list"};function r(t,e,n,r,o,c){const m=(0,a.up)("GamepadItem");return(0,a.wg)(),(0,a.iD)("div",i,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(t.gamepads,(t=>((0,a.wg)(),(0,a.j4)(m,{key:t.id,textContent:(0,s.zw)(t.unit.id)},null,8,["textContent"])))),128))])}const o={class:"list-item"};function c(t,e,n,s,i,r){return(0,a.wg)(),(0,a.iD)("div",o)}var m=(0,a.aZ)({name:"GamepadItem"}),p=n(89);const u=(0,p.Z)(m,[["render",c]]);var d=u,l=(0,a.aZ)({name:"GamepadList",props:{gamepads:{type:Array}},components:{GamepadItem:d}});const g=(0,p.Z)(l,[["render",r]]);var v=g},9808:function(t,e,n){n.d(e,{Z:function(){return m}});var a=n(3396);const s={class:"content-item message"};function i(t,e,n,i,r,o){return(0,a.wg)(),(0,a.iD)("div",s,[(0,a._)("span",null,[(0,a.WI)(t.$slots,"default")])])}var r=(0,a.aZ)({name:"MessageItem"}),o=n(89);const c=(0,o.Z)(r,[["render",i]]);var m=c},4246:function(t,e,n){n.d(e,{Z:function(){return l}});var a=n(3396);const s={class:"content-item navigation-list"},i=(0,a.Uk)("Patterns"),r=(0,a.Uk)("Custom"),o=(0,a.Uk)("Manual"),c=(0,a.Uk)("Diagnostic");function m(t,e,n,m,p,u){const d=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",s,[(0,a.Wm)(d,{to:"/",class:"navigation-list__item"},{default:(0,a.w5)((()=>[i])),_:1}),(0,a.Wm)(d,{to:"/custom",class:"navigation-list__item"},{default:(0,a.w5)((()=>[r])),_:1}),(0,a.Wm)(d,{to:"/manual",class:"navigation-list__item"},{default:(0,a.w5)((()=>[o])),_:1}),(0,a.Wm)(d,{to:"/diagnostic",class:"navigation-list__item"},{default:(0,a.w5)((()=>[c])),_:1})])}var p=(0,a.aZ)({name:"NavigationList"}),u=n(89);const d=(0,u.Z)(p,[["render",m]]);var l=d},9709:function(t,e,n){n.r(e),n.d(e,{default:function(){return N}});var a=n(3396);const s=(0,a._)("h1",{class:"visually-hidden"},"Wavelovers",-1);function i(t,e,n,i,r,o){const c=(0,a.up)("AppPatterns");return(0,a.wg)(),(0,a.iD)(a.HY,null,[s,(0,a.Wm)(c)],64)}const r={class:"app-patterns"},o=(0,a.Uk)("Loading..."),c=(0,a.Uk)("Press any gamepad button or connect a new gamepad to vibrate.");function m(t,e,n,s,i,m){const p=(0,a.up)("NavigationList"),u=(0,a.up)("PatternList"),d=(0,a.up)("MessageItem"),l=(0,a.up)("GamepadList");return(0,a.wg)(),(0,a.iD)(a.HY,null,[(0,a.Wm)(p),(0,a._)("div",r,[t.patterns.length>0?((0,a.wg)(),(0,a.j4)(u,{key:0,patterns:t.patterns,mode:t.mode,isActive:t.isActive,onChange:t.change},null,8,["patterns","mode","isActive","onChange"])):((0,a.wg)(),(0,a.j4)(d,{key:1},{default:(0,a.w5)((()=>[o])),_:1}))]),t.gamepads.length>0?((0,a.wg)(),(0,a.j4)(l,{key:0,gamepads:t.gamepads},null,8,["gamepads"])):((0,a.wg)(),(0,a.j4)(d,{key:1},{default:(0,a.w5)((()=>[c])),_:1}))],64)}var p=n(1746),u=n(4246),d=n(3375),l=n(9808);const g={class:"content-item pattern-list"};function v(t,e,n,s,i,r){const o=(0,a.up)("PatternItem");return(0,a.wg)(),(0,a.iD)("div",g,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(t.patterns,((e,n)=>((0,a.wg)(),(0,a.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))])}var f=n(7139);const w=["textContent"],_={class:"pattern-item__info-container"},Z=["textContent"],h=["textContent"];function y(t,e,n,s,i,r){return(0,a.wg)(),(0,a.iD)("div",{onClick:e[0]||(e[0]=e=>t.change(t.index)),class:(0,f.C_)(["pattern-item",t.index===t.mode&&!0===t.isActive?"pattern-item_selected":""])},[(0,a._)("span",{class:"pattern-item__icon",textContent:(0,f.zw)(t.pattern.icon)},null,8,w),(0,a._)("div",_,[(0,a._)("span",{class:"pattern-item__name",textContent:(0,f.zw)(t.pattern.name)},null,8,Z),(0,a._)("span",{class:"pattern-item__type",textContent:(0,f.zw)(t.pattern.type)},null,8,h)])],2)}var k=(0,a.aZ)({name:"PatternItem",props:{pattern:{type:Object},index:{type:Number},mode:{type:Number},isActive:{type:Boolean}},methods:{change:function(t){this.$emit("change",t)}}}),C=n(89);const A=(0,C.Z)(k,[["render",y]]);var x=A,P=(0,a.aZ)({name:"PatternList",props:{patterns:{type:Array},mode:{type:Number},isActive:{type:Boolean}},components:{PatternItem:x},methods:{change:function(t){this.$emit("change",t)}}});const D=(0,C.Z)(P,[["render",v]]);var I=D,L=(0,a.aZ)({name:"AppPatterns",components:{PatternList:I,NavigationList:u.Z,GamepadList:d.Z,MessageItem:l.Z},computed:{gamepads:function(){return p.Z.getters.gamepads},patterns:function(){return p.Z.getters.patterns},mode:function(){return p.Z.getters.mode},isActive:function(){return p.Z.getters.isActive}},methods:{change(t){p.Z.dispatch("change",t)}},mounted(){p.Z.dispatch("loadPatterns")}});const b=(0,C.Z)(L,[["render",m]]);var W=b,j=(0,a.aZ)({name:"PatternsView",components:{AppPatterns:W}});const G=(0,C.Z)(j,[["render",i]]);var N=G}}]); -//# sourceMappingURL=709.b171ad0f.js.map \ No newline at end of file diff --git a/docs/js/743.4b374804.js b/docs/js/743.4b374804.js new file mode 100644 index 0000000..7244f55 --- /dev/null +++ b/docs/js/743.4b374804.js @@ -0,0 +1,2 @@ +"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[743],{1682:function(t,e,n){n.d(e,{Z:function(){return v}});var a=n(3396),s=n(7139);const i={class:"content-item device-list"};function r(t,e,n,r,o,c){const m=(0,a.up)("GamepadItem");return(0,a.wg)(),(0,a.iD)("div",i,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(t.gamepads,(t=>((0,a.wg)(),(0,a.j4)(m,{key:t.id,textContent:(0,s.zw)(t.unit.id)},null,8,["textContent"])))),128))])}const o={class:"list-item"};function c(t,e,n,s,i,r){return(0,a.wg)(),(0,a.iD)("div",o)}var m=(0,a.aZ)({name:"GamepadItem"}),p=n(89);const u=(0,p.Z)(m,[["render",c]]);var d=u,l=(0,a.aZ)({name:"GamepadList",props:{gamepads:{type:Array}},components:{GamepadItem:d}});const g=(0,p.Z)(l,[["render",r]]);var v=g},322:function(t,e,n){n.d(e,{Z:function(){return m}});var a=n(3396);const s={class:"content-item message"};function i(t,e,n,i,r,o){return(0,a.wg)(),(0,a.iD)("div",s,[(0,a._)("span",null,[(0,a.WI)(t.$slots,"default")])])}var r=(0,a.aZ)({name:"MessageItem"}),o=n(89);const c=(0,o.Z)(r,[["render",i]]);var m=c},9100:function(t,e,n){n.d(e,{Z:function(){return l}});var a=n(3396);const s={class:"content-item navigation-list"},i=(0,a.Uk)("Patterns"),r=(0,a.Uk)("Custom"),o=(0,a.Uk)("Manual"),c=(0,a.Uk)("Diagnostic");function m(t,e,n,m,p,u){const d=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",s,[(0,a.Wm)(d,{to:"/",class:"navigation-list__item"},{default:(0,a.w5)((()=>[i])),_:1}),(0,a.Wm)(d,{to:"/custom",class:"navigation-list__item"},{default:(0,a.w5)((()=>[r])),_:1}),(0,a.Wm)(d,{to:"/manual",class:"navigation-list__item"},{default:(0,a.w5)((()=>[o])),_:1}),(0,a.Wm)(d,{to:"/diagnostic",class:"navigation-list__item"},{default:(0,a.w5)((()=>[c])),_:1})])}var p=(0,a.aZ)({name:"NavigationList"}),u=n(89);const d=(0,u.Z)(p,[["render",m]]);var l=d},2743:function(t,e,n){n.r(e),n.d(e,{default:function(){return N}});var a=n(3396);const s=(0,a._)("h1",{class:"visually-hidden"},"Wavelovers",-1);function i(t,e,n,i,r,o){const c=(0,a.up)("AppPatterns");return(0,a.wg)(),(0,a.iD)(a.HY,null,[s,(0,a.Wm)(c)],64)}const r={class:"app-patterns"},o=(0,a.Uk)("Loading..."),c=(0,a.Uk)("Press any gamepad button or connect a new gamepad to vibrate.");function m(t,e,n,s,i,m){const p=(0,a.up)("NavigationList"),u=(0,a.up)("PatternList"),d=(0,a.up)("MessageItem"),l=(0,a.up)("GamepadList");return(0,a.wg)(),(0,a.iD)(a.HY,null,[(0,a.Wm)(p),(0,a._)("div",r,[t.patterns.length>0?((0,a.wg)(),(0,a.j4)(u,{key:0,patterns:t.patterns,mode:t.mode,isActive:t.isActive,onChange:t.change},null,8,["patterns","mode","isActive","onChange"])):((0,a.wg)(),(0,a.j4)(d,{key:1},{default:(0,a.w5)((()=>[o])),_:1}))]),t.gamepads.length>0?((0,a.wg)(),(0,a.j4)(l,{key:0,gamepads:t.gamepads},null,8,["gamepads"])):((0,a.wg)(),(0,a.j4)(d,{key:1},{default:(0,a.w5)((()=>[c])),_:1}))],64)}var p=n(1746),u=n(9100),d=n(1682),l=n(322);const g={class:"content-item pattern-list"};function v(t,e,n,s,i,r){const o=(0,a.up)("PatternItem");return(0,a.wg)(),(0,a.iD)("div",g,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(t.patterns,((e,n)=>((0,a.wg)(),(0,a.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))])}var f=n(7139);const w=["textContent"],_={class:"pattern-item__info-container"},Z=["textContent"],h=["textContent"];function y(t,e,n,s,i,r){return(0,a.wg)(),(0,a.iD)("div",{onClick:e[0]||(e[0]=e=>t.change(t.index)),class:(0,f.C_)(["pattern-item",t.index===t.mode&&!0===t.isActive?"pattern-item_selected":""])},[(0,a._)("span",{class:"pattern-item__icon",textContent:(0,f.zw)(t.pattern.icon)},null,8,w),(0,a._)("div",_,[(0,a._)("span",{class:"pattern-item__name",textContent:(0,f.zw)(t.pattern.name)},null,8,Z),(0,a._)("span",{class:"pattern-item__type",textContent:(0,f.zw)(t.pattern.type)},null,8,h)])],2)}var k=(0,a.aZ)({name:"PatternItem",props:{pattern:{type:Object},index:{type:Number},mode:{type:Number},isActive:{type:Boolean}},methods:{change:function(t){this.$emit("change",t)}}}),C=n(89);const A=(0,C.Z)(k,[["render",y]]);var x=A,P=(0,a.aZ)({name:"PatternList",props:{patterns:{type:Array},mode:{type:Number},isActive:{type:Boolean}},components:{PatternItem:x},methods:{change:function(t){this.$emit("change",t)}}});const D=(0,C.Z)(P,[["render",v]]);var I=D,L=(0,a.aZ)({name:"AppPatterns",components:{PatternList:I,NavigationList:u.Z,GamepadList:d.Z,MessageItem:l.Z},computed:{gamepads:function(){return p.Z.getters.gamepads},patterns:function(){return p.Z.getters.patterns},mode:function(){return p.Z.getters.mode},isActive:function(){return p.Z.getters.isActive}},methods:{change(t){p.Z.dispatch("change",t)}},mounted(){p.Z.dispatch("loadPatterns")}});const b=(0,C.Z)(L,[["render",m]]);var W=b,j=(0,a.aZ)({name:"PatternsView",components:{AppPatterns:W}});const G=(0,C.Z)(j,[["render",i]]);var N=G}}]); +//# sourceMappingURL=743.4b374804.js.map \ No newline at end of file diff --git a/docs/js/709.b171ad0f.js.map b/docs/js/743.4b374804.js.map similarity index 93% rename from docs/js/709.b171ad0f.js.map rename to docs/js/743.4b374804.js.map index fb96d36..d58cbc9 100644 --- a/docs/js/709.b171ad0f.js.map +++ b/docs/js/743.4b374804.js.map @@ -1 +1 @@ -{"version":3,"file":"js/709.b171ad0f.js","mappings":"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","sources":["webpack://wavelovers/./src/components/GamepadList.vue?84d4","webpack://wavelovers/./src/components/GamepadItem.vue?3876","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?34b4","webpack://wavelovers/./src/components/MessageItem.vue?b787","webpack://wavelovers/./src/components/MessageItem.vue","webpack://wavelovers/./src/components/NavigationList.vue?746c","webpack://wavelovers/./src/components/NavigationList.vue?d88b","webpack://wavelovers/./src/components/NavigationList.vue","webpack://wavelovers/./src/views/PatternsView.vue?a177","webpack://wavelovers/./src/components/AppPatterns.vue?9be4","webpack://wavelovers/./src/components/PatternList.vue?5f9b","webpack://wavelovers/./src/components/PatternItem.vue?8084","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"],"sourcesContent":["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=7c902388&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=7c902388&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=b6851174&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=b6851174&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=50d3c0d7&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=50d3c0d7&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 { 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(\"Patterns\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"Custom\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"Manual\")\nconst _hoisted_5 = /*#__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: \"/\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/custom\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/manual\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/diagnostic\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_5\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=5b991a16&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=5b991a16&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 { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"h1\", { class: \"visually-hidden\" }, \"Wavelovers\", -1)\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(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(_component_AppPatterns)\n ], 64))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"app-patterns\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\"Loading...\")\nconst _hoisted_3 = /*#__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_PatternList = _resolveComponent(\"PatternList\")!\n const _component_MessageItem = _resolveComponent(\"MessageItem\")!\n const _component_GamepadList = _resolveComponent(\"GamepadList\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_NavigationList),\n _createElementVNode(\"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 (_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_3\n ]),\n _: 1\n }))\n ], 64))\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=81514550&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=81514550&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=210779ce&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=210779ce&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 PatternList from '@/components/PatternList.vue';\r\n import Vibrator from '@/models/Vibrator';\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 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 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=99e866c8&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=3768dde1&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__"],"names":["_hoisted_1","class","render","_ctx","_cache","$props","$setup","$data","$options","_component_GamepadItem","_resolveComponent","_openBlock","_createElementBlock","_Fragment","_renderList","gamepads","gamepad","_createBlock","key","id","textContent","_toDisplayString","unit","defineComponent","name","__exports__","props","type","Array","components","GamepadItem","_createElementVNode","_renderSlot","$slots","_hoisted_2","_createTextVNode","_hoisted_3","_hoisted_4","_hoisted_5","_component_router_link","_createVNode","to","default","_withCtx","_","_component_AppPatterns","_component_NavigationList","_component_PatternList","_component_MessageItem","_component_GamepadList","patterns","length","mode","isActive","onChange","change","_component_PatternItem","pattern","index","onClick","$event","_normalizeClass","icon","Object","Number","Boolean","methods","this","$emit","PatternItem","PatternList","NavigationList","GamepadList","MessageItem","computed","store","mounted","AppPatterns"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/743.4b374804.js","mappings":"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","sources":["webpack://wavelovers/./src/components/GamepadList.vue?5b9c","webpack://wavelovers/./src/components/GamepadItem.vue?0665","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?088b","webpack://wavelovers/./src/components/MessageItem.vue?b787","webpack://wavelovers/./src/components/MessageItem.vue","webpack://wavelovers/./src/components/NavigationList.vue?0746","webpack://wavelovers/./src/components/NavigationList.vue?d88b","webpack://wavelovers/./src/components/NavigationList.vue","webpack://wavelovers/./src/views/PatternsView.vue?3ec0","webpack://wavelovers/./src/components/AppPatterns.vue?6417","webpack://wavelovers/./src/components/PatternList.vue?4499","webpack://wavelovers/./src/components/PatternItem.vue?69b9","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"],"sourcesContent":["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=6958838e&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=6958838e&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=2658b144&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=2658b144&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=7e7a7193&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=7e7a7193&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 { 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(\"Patterns\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"Custom\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"Manual\")\nconst _hoisted_5 = /*#__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: \"/\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/custom\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/manual\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/diagnostic\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_5\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=c925f896&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=c925f896&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 { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"h1\", { class: \"visually-hidden\" }, \"Wavelovers\", -1)\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(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(_component_AppPatterns)\n ], 64))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"app-patterns\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\"Loading...\")\nconst _hoisted_3 = /*#__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_PatternList = _resolveComponent(\"PatternList\")!\n const _component_MessageItem = _resolveComponent(\"MessageItem\")!\n const _component_GamepadList = _resolveComponent(\"GamepadList\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_NavigationList),\n _createElementVNode(\"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 (_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_3\n ]),\n _: 1\n }))\n ], 64))\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=58c0c0f2&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=58c0c0f2&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=81ff8488&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=81ff8488&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 PatternList from '@/components/PatternList.vue';\r\n import Vibrator from '@/models/Vibrator';\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 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 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=68df592e&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=7da88b49&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__"],"names":["_hoisted_1","class","render","_ctx","_cache","$props","$setup","$data","$options","_component_GamepadItem","_resolveComponent","_openBlock","_createElementBlock","_Fragment","_renderList","gamepads","gamepad","_createBlock","key","id","textContent","_toDisplayString","unit","defineComponent","name","__exports__","props","type","Array","components","GamepadItem","_createElementVNode","_renderSlot","$slots","_hoisted_2","_createTextVNode","_hoisted_3","_hoisted_4","_hoisted_5","_component_router_link","_createVNode","to","default","_withCtx","_","_component_AppPatterns","_component_NavigationList","_component_PatternList","_component_MessageItem","_component_GamepadList","patterns","length","mode","isActive","onChange","change","_component_PatternItem","pattern","index","onClick","$event","_normalizeClass","icon","Object","Number","Boolean","methods","this","$emit","PatternItem","PatternList","NavigationList","GamepadList","MessageItem","computed","store","mounted","AppPatterns"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/531.6af13e76.js b/docs/js/784.8d118bb9.js similarity index 83% rename from docs/js/531.6af13e76.js rename to docs/js/784.8d118bb9.js index 5735879..2077f00 100644 --- a/docs/js/531.6af13e76.js +++ b/docs/js/784.8d118bb9.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[531],{4066:function(e,n,t){t.r(n),t.d(n,{default:function(){return i}});var u=t(3396);const l=(0,u._)("h1",{class:"visually-hidden"},"Wavelovers – 404",-1),a={class:"content-item"},s=(0,u._)("h2",null,"404. Page not Found.",-1);function r(e,n,t,r,o,c){const v=(0,u.up)("center");return(0,u.wg)(),(0,u.iD)(u.HY,null,[l,(0,u._)("div",a,[(0,u.Wm)(v,null,{default:(0,u.w5)((()=>[s])),_:1})])],64)}var o=(0,u.aZ)({name:"NotFoundView"}),c=t(89);const v=(0,c.Z)(o,[["render",r]]);var i=v}}]); -//# sourceMappingURL=531.6af13e76.js.map \ No newline at end of file +"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[784],{7784:function(e,n,t){t.r(n),t.d(n,{default:function(){return i}});var u=t(3396);const l=(0,u._)("h1",{class:"visually-hidden"},"Wavelovers – 404",-1),a={class:"content-item"},s=(0,u._)("h2",null,"404. Page not Found.",-1);function r(e,n,t,r,o,c){const v=(0,u.up)("center");return(0,u.wg)(),(0,u.iD)(u.HY,null,[l,(0,u._)("div",a,[(0,u.Wm)(v,null,{default:(0,u.w5)((()=>[s])),_:1})])],64)}var o=(0,u.aZ)({name:"NotFoundView"}),c=t(89);const v=(0,c.Z)(o,[["render",r]]);var i=v}}]); +//# sourceMappingURL=784.8d118bb9.js.map \ No newline at end of file diff --git a/docs/js/531.6af13e76.js.map b/docs/js/784.8d118bb9.js.map similarity index 92% rename from docs/js/531.6af13e76.js.map rename to docs/js/784.8d118bb9.js.map index d67ef90..80a011b 100644 --- a/docs/js/531.6af13e76.js.map +++ b/docs/js/784.8d118bb9.js.map @@ -1 +1 @@ -{"version":3,"file":"js/531.6af13e76.js","mappings":"8KAEA,MAAMA,GAA0BC,EAAAA,EAAAA,GAAoB,KAAM,CAAEC,MAAO,mBAAqB,oBAAqB,GACvGC,EAAa,CAAED,MAAO,gBACtBE,GAA0BH,EAAAA,EAAAA,GAAoB,KAAM,KAAM,wBAAyB,GAEnF,SAAUI,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAMC,GAAoBC,EAAAA,EAAAA,IAAkB,UAE5C,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoBC,EAAAA,GAAW,KAAM,CACzDhB,GACAC,EAAAA,EAAAA,GAAoB,MAAOE,EAAY,EACrCc,EAAAA,EAAAA,IAAaL,EAAmB,KAAM,CACpCM,SAASC,EAAAA,EAAAA,KAAS,IAAM,CACtBf,KAEFgB,EAAG,OAGN,GACJ,CCjBC,OAAeC,EAAAA,EAAAA,IAAgB,CAC7BC,KAAM,iB,QCCV,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASlB,KAEpE,O","sources":["webpack://wavelovers/./src/views/NotFoundView.vue?ba0c","webpack://wavelovers/./src/views/NotFoundView.vue?6f3f","webpack://wavelovers/./src/views/NotFoundView.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"h1\", { class: \"visually-hidden\" }, \"Wavelovers – 404\", -1)\nconst _hoisted_2 = { class: \"content-item\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"h2\", null, \"404. Page not Found.\", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_center = _resolveComponent(\"center\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_center, null, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n })\n ])\n ], 64))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'NotFoundView',\r\n });\r\n","import { render } from \"./NotFoundView.vue?vue&type=template&id=35b706e8&ts=true\"\nimport script from \"./NotFoundView.vue?vue&type=script&lang=ts\"\nexport * from \"./NotFoundView.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__"],"names":["_hoisted_1","_createElementVNode","class","_hoisted_2","_hoisted_3","render","_ctx","_cache","$props","$setup","$data","$options","_component_center","_resolveComponent","_openBlock","_createElementBlock","_Fragment","_createVNode","default","_withCtx","_","defineComponent","name","__exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/784.8d118bb9.js","mappings":"8KAEA,MAAMA,GAA0BC,EAAAA,EAAAA,GAAoB,KAAM,CAAEC,MAAO,mBAAqB,oBAAqB,GACvGC,EAAa,CAAED,MAAO,gBACtBE,GAA0BH,EAAAA,EAAAA,GAAoB,KAAM,KAAM,wBAAyB,GAEnF,SAAUI,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAMC,GAAoBC,EAAAA,EAAAA,IAAkB,UAE5C,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoBC,EAAAA,GAAW,KAAM,CACzDhB,GACAC,EAAAA,EAAAA,GAAoB,MAAOE,EAAY,EACrCc,EAAAA,EAAAA,IAAaL,EAAmB,KAAM,CACpCM,SAASC,EAAAA,EAAAA,KAAS,IAAM,CACtBf,KAEFgB,EAAG,OAGN,GACJ,CCjBC,OAAeC,EAAAA,EAAAA,IAAgB,CAC7BC,KAAM,iB,QCCV,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASlB,KAEpE,O","sources":["webpack://wavelovers/./src/views/NotFoundView.vue?9cfe","webpack://wavelovers/./src/views/NotFoundView.vue?6f3f","webpack://wavelovers/./src/views/NotFoundView.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"h1\", { class: \"visually-hidden\" }, \"Wavelovers – 404\", -1)\nconst _hoisted_2 = { class: \"content-item\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"h2\", null, \"404. Page not Found.\", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_center = _resolveComponent(\"center\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_center, null, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n })\n ])\n ], 64))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'NotFoundView',\r\n });\r\n","import { render } from \"./NotFoundView.vue?vue&type=template&id=09fda562&ts=true\"\nimport script from \"./NotFoundView.vue?vue&type=script&lang=ts\"\nexport * from \"./NotFoundView.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__"],"names":["_hoisted_1","_createElementVNode","class","_hoisted_2","_hoisted_3","render","_ctx","_cache","$props","$setup","$data","$options","_component_center","_resolveComponent","_openBlock","_createElementBlock","_Fragment","_createVNode","default","_withCtx","_","defineComponent","name","__exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/807.d54b1ac1.js b/docs/js/807.d54b1ac1.js deleted file mode 100644 index bed890d..0000000 --- a/docs/js/807.d54b1ac1.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[807],{3913:function(t,a,n){var e=n(2482);class s{constructor(t,a,n,s){(0,e.Z)(this,"startDelay",void 0),(0,e.Z)(this,"duration",void 0),(0,e.Z)(this,"weakMagnitude",void 0),(0,e.Z)(this,"strongMagnitude",void 0),this.startDelay=t,this.duration=a,this.weakMagnitude=n,this.strongMagnitude=s}}a["Z"]=s},3375:function(t,a,n){n.d(a,{Z:function(){return h}});var e=n(3396),s=n(7139);const i={class:"content-item device-list"};function o(t,a,n,o,d,u){const r=(0,e.up)("GamepadItem");return(0,e.wg)(),(0,e.iD)("div",i,[((0,e.wg)(!0),(0,e.iD)(e.HY,null,(0,e.Ko)(t.gamepads,(t=>((0,e.wg)(),(0,e.j4)(r,{key:t.id,textContent:(0,s.zw)(t.unit.id)},null,8,["textContent"])))),128))])}const d={class:"list-item"};function u(t,a,n,s,i,o){return(0,e.wg)(),(0,e.iD)("div",d)}var r=(0,e.aZ)({name:"GamepadItem"}),l=n(89);const m=(0,l.Z)(r,[["render",u]]);var p=m,c=(0,e.aZ)({name:"GamepadList",props:{gamepads:{type:Array}},components:{GamepadItem:p}});const g=(0,l.Z)(c,[["render",o]]);var h=g},9808:function(t,a,n){n.d(a,{Z:function(){return r}});var e=n(3396);const s={class:"content-item message"};function i(t,a,n,i,o,d){return(0,e.wg)(),(0,e.iD)("div",s,[(0,e._)("span",null,[(0,e.WI)(t.$slots,"default")])])}var o=(0,e.aZ)({name:"MessageItem"}),d=n(89);const u=(0,d.Z)(o,[["render",i]]);var r=u},4246:function(t,a,n){n.d(a,{Z:function(){return c}});var e=n(3396);const s={class:"content-item navigation-list"},i=(0,e.Uk)("Patterns"),o=(0,e.Uk)("Custom"),d=(0,e.Uk)("Manual"),u=(0,e.Uk)("Diagnostic");function r(t,a,n,r,l,m){const p=(0,e.up)("router-link");return(0,e.wg)(),(0,e.iD)("div",s,[(0,e.Wm)(p,{to:"/",class:"navigation-list__item"},{default:(0,e.w5)((()=>[i])),_:1}),(0,e.Wm)(p,{to:"/custom",class:"navigation-list__item"},{default:(0,e.w5)((()=>[o])),_:1}),(0,e.Wm)(p,{to:"/manual",class:"navigation-list__item"},{default:(0,e.w5)((()=>[d])),_:1}),(0,e.Wm)(p,{to:"/diagnostic",class:"navigation-list__item"},{default:(0,e.w5)((()=>[u])),_:1})])}var l=(0,e.aZ)({name:"NavigationList"}),m=n(89);const p=(0,m.Z)(l,[["render",r]]);var c=p},6259:function(t,a,n){n.d(a,{Z:function(){return d}});var e=n(3396),s=n(1746),i=(0,e.aZ)({name:"ComputedGamepads",data:()=>({timestamp:0,interval:0}),computed:{gamepads:function(){const t=this.timestamp,a=s.Z.getters.gamepads;return a.forEach((a=>{a.interval=t})),a}},methods:{updateComputed:function(){this.timestamp=Date.now()}},mounted(){this.interval=setInterval(this.updateComputed,1)},unmounted(){clearInterval(this.interval)}});const o=i;var d=o},6807:function(t,a,n){n.r(a),n.d(a,{default:function(){return C}});var e=n(3396);const s=(0,e._)("h1",{class:"visually-hidden"},"Wavelovers οΏ½ Manual",-1);function i(t,a,n,i,o,d){const u=(0,e.up)("AppManual");return(0,e.wg)(),(0,e.iD)(e.HY,null,[s,(0,e.Wm)(u)],64)}var o=n(9242);const d={class:"content-item app-manual"},u={class:"manual-form__input"},r=(0,e._)("span",null,"Weak Magnitude",-1),l={class:"manual-form__input"},m=(0,e._)("span",null,"Strong Magnitude",-1),p=(0,e.uE)('
RT – Vibrate
A – Combined Mode
X – Strong Mode
Y – Light Mode
B – Lock Intensity
',1),c=(0,e.Uk)("Press any gamepad button or connect a new gamepad to vibrate.");function g(t,a,n,s,i,g){const h=(0,e.up)("NavigationList"),v=(0,e.up)("GamepadList"),k=(0,e.up)("MessageItem");return(0,e.wg)(),(0,e.iD)(e.HY,null,[(0,e.Wm)(h),(0,e._)("div",d,[(0,e._)("label",u,[r,(0,e.wy)((0,e._)("input",{"onUpdate:modelValue":a[0]||(a[0]=a=>t.weakMagnitude=a),type:"range",required:"",disabled:"",min:"0.0",max:"1.0",step:"0.01"},null,512),[[o.nr,t.weakMagnitude]])]),(0,e._)("label",l,[m,(0,e.wy)((0,e._)("input",{"onUpdate:modelValue":a[1]||(a[1]=a=>t.strongMagnitude=a),type:"range",required:"",disabled:"",min:"0.0",max:"1.0",step:"0.01"},null,512),[[o.nr,t.strongMagnitude]])]),p]),t.gamepads.length>0?((0,e.wg)(),(0,e.j4)(v,{key:0,gamepads:t.gamepads},null,8,["gamepads"])):((0,e.wg)(),(0,e.j4)(k,{key:1},{default:(0,e.w5)((()=>[c])),_:1}))],64)}var h=n(1746),v=n(4246),k=n(3375),f=n(9808),w=n(6259),M=n(3913),Z=(0,e.aZ)({name:"AppCustom",mixins:[w.Z],components:{NavigationList:v.Z,GamepadList:k.Z,MessageItem:f.Z},data:()=>({mode:0,lock:!1,startDelay:0,duration:260,weakMagnitude:0,strongMagnitude:0}),methods:{start:function(){const t=new M.Z(this.startDelay,this.duration,this.weakMagnitude,this.strongMagnitude);h.Z.dispatch("vibrate",t)},stop:function(){h.Z.dispatch("setIsActive",!1),h.Z.dispatch("setMode",0),h.Z.dispatch("reset")},eventLoop:function(){this.updateComputed(),this.updateMode(),this.updatePattern(),this.handle()},updateMode:function(){this.gamepads.length>0&&(!0===this.gamepads[0].unit.buttons[1].pressed&&(this.lock=!this.lock),!1===this.lock&&(!0===this.gamepads[0].unit.buttons[0].pressed&&(this.mode=0),!0===this.gamepads[0].unit.buttons[2].pressed&&(this.mode=1),!0===this.gamepads[0].unit.buttons[3].pressed&&(this.mode=2)))},updatePattern:function(){this.gamepads.length>0&&!1===this.lock&&(0===this.mode&&(this.weakMagnitude=this.gamepads[0].unit.buttons[7].value,this.strongMagnitude=this.gamepads[0].unit.buttons[7].value),1===this.mode&&(this.weakMagnitude=0,this.strongMagnitude=this.gamepads[0].unit.buttons[7].value),2===this.mode&&(this.weakMagnitude=this.gamepads[0].unit.buttons[7].value,this.strongMagnitude=0))},handle:function(){this.gamepads.length>0&&this.gamepads.forEach((t=>{t.unit.buttons[7].value>0||!0===this.lock?this.start():this.stop()}))}},mounted(){this.interval=setInterval(this.eventLoop,250)}}),b=n(89);const _=(0,b.Z)(Z,[["render",g]]);var y=_,D=(0,e.aZ)({name:"ManualView",components:{AppManual:y}});const I=(0,b.Z)(D,[["render",i]]);var C=I}}]); -//# sourceMappingURL=807.d54b1ac1.js.map \ No newline at end of file diff --git a/docs/js/807.d54b1ac1.js.map b/docs/js/807.d54b1ac1.js.map deleted file mode 100644 index 9bfaf05..0000000 --- a/docs/js/807.d54b1ac1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/807.d54b1ac1.js","mappings":"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","sources":["webpack://wavelovers/./src/models/PatternUnit.ts","webpack://wavelovers/./src/components/GamepadList.vue?84d4","webpack://wavelovers/./src/components/GamepadItem.vue?3876","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?34b4","webpack://wavelovers/./src/components/MessageItem.vue?b787","webpack://wavelovers/./src/components/MessageItem.vue","webpack://wavelovers/./src/components/NavigationList.vue?746c","webpack://wavelovers/./src/components/NavigationList.vue?d88b","webpack://wavelovers/./src/components/NavigationList.vue","webpack://wavelovers/./src/mixins/ComputedGamepads.vue?fc43","webpack://wavelovers/./src/mixins/ComputedGamepads.vue","webpack://wavelovers/./src/views/ManualView.vue?6121","webpack://wavelovers/./src/components/AppManual.vue?4fee","webpack://wavelovers/./src/components/AppManual.vue?5cf9","webpack://wavelovers/./src/components/AppManual.vue","webpack://wavelovers/./src/views/ManualView.vue?67f9","webpack://wavelovers/./src/views/ManualView.vue"],"sourcesContent":["import IPatternUnit from \"@/models/IPatternUnit\";\r\n\r\nclass PatternUnit implements IPatternUnit {\r\n\r\n startDelay: number;\r\n duration: number;\r\n weakMagnitude: number;\r\n strongMagnitude: number;\r\n\r\n constructor(\r\n startDelay: number, duration: number,\r\n weakMagnitude: number, strongMagnitude: number\r\n ) {\r\n this.startDelay = startDelay;\r\n this.duration = duration;\r\n this.weakMagnitude = weakMagnitude;\r\n this.strongMagnitude = strongMagnitude;\r\n }\r\n}\r\n\r\nexport default PatternUnit;\r\n\r\n","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=7c902388&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=7c902388&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=b6851174&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=b6851174&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=50d3c0d7&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=50d3c0d7&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 { 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(\"Patterns\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"Custom\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"Manual\")\nconst _hoisted_5 = /*#__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: \"/\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/custom\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/manual\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n to: \"/diagnostic\",\n class: \"navigation-list__item\"\n }, {\n default: _withCtx(() => [\n _hoisted_5\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=5b991a16&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=5b991a16&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 Vibrator from '@/models/Vibrator';\r\n\r\n export default defineComponent({\r\n name: 'ComputedGamepads',\r\n data: () => {\r\n return {\r\n timestamp: 0 as number,\r\n interval: 0 as number,\r\n };\r\n },\r\n computed: {\r\n gamepads: function (): Vibrator[] {\r\n const timestamp: number = this.timestamp;\r\n const result: Vibrator[] = store.getters.gamepads as Vibrator[];\r\n result.forEach((item) => {\r\n item.interval = timestamp;\r\n });\r\n return result;\r\n },\r\n },\r\n methods: {\r\n updateComputed: function (): void {\r\n this.timestamp = Date.now();\r\n },\r\n },\r\n mounted() {\r\n this.interval = setInterval(this.updateComputed, 1);\r\n },\r\n unmounted() {\r\n clearInterval(this.interval);\r\n },\r\n });\r\n","import script from \"./ComputedGamepads.vue?vue&type=script&lang=ts\"\nexport * from \"./ComputedGamepads.vue?vue&type=script&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"h1\", { class: \"visually-hidden\" }, \"Wavelovers οΏ½ Manual\", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_AppManual = _resolveComponent(\"AppManual\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(_component_AppManual)\n ], 64))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createStaticVNode as _createStaticVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"content-item app-manual\" }\nconst _hoisted_2 = { class: \"manual-form__input\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Weak Magnitude\", -1)\nconst _hoisted_4 = { class: \"manual-form__input\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Strong Magnitude\", -1)\nconst _hoisted_6 = /*#__PURE__*/_createStaticVNode(\"
RT – Vibrate
A – Combined Mode
X – Strong Mode
Y – Light Mode
B – Lock Intensity
\", 1)\nconst _hoisted_7 = /*#__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_GamepadList = _resolveComponent(\"GamepadList\")!\n const _component_MessageItem = _resolveComponent(\"MessageItem\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_NavigationList),\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", _hoisted_2, [\n _hoisted_3,\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.weakMagnitude) = $event)),\n type: \"range\",\n required: \"\",\n disabled: \"\",\n min: \"0.0\",\n max: \"1.0\",\n step: \"0.01\"\n }, null, 512), [\n [_vModelText, _ctx.weakMagnitude]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_4, [\n _hoisted_5,\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.strongMagnitude) = $event)),\n type: \"range\",\n required: \"\",\n disabled: \"\",\n min: \"0.0\",\n max: \"1.0\",\n step: \"0.01\"\n }, null, 512), [\n [_vModelText, _ctx.strongMagnitude]\n ])\n ]),\n _hoisted_6\n ]),\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_7\n ]),\n _: 1\n }))\n ], 64))\n}","\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 ComputedGamepads from '@/mixins/ComputedGamepads.vue';\r\n import Vibrator from '@/models/Vibrator';\r\n import TPatternUnit from '@/models/TPatternUnit';\r\n import PatternUnit from '@/models/PatternUnit';\r\n\r\n export default defineComponent({\r\n name: 'AppCustom',\r\n mixins: [ComputedGamepads],\r\n components: {\r\n NavigationList: NavigationList,\r\n GamepadList: GamepadList,\r\n MessageItem: MessageItem,\r\n },\r\n data: () => {\r\n return {\r\n mode: 0 as number,\r\n lock: false as boolean,\r\n startDelay: 0 as number,\r\n duration: 260 as number,\r\n weakMagnitude: 0 as number,\r\n strongMagnitude: 0 as number,\r\n };\r\n },\r\n methods: {\r\n start: function (): void {\r\n const pattern: TPatternUnit = new PatternUnit(\r\n this.startDelay,\r\n this.duration,\r\n this.weakMagnitude,\r\n this.strongMagnitude,\r\n );\r\n store.dispatch('vibrate', pattern);\r\n },\r\n stop: function (): void {\r\n store.dispatch('setIsActive', false);\r\n store.dispatch('setMode', 0);\r\n store.dispatch('reset');\r\n },\r\n eventLoop: function (): void {\r\n this.updateComputed();\r\n this.updateMode();\r\n this.updatePattern();\r\n this.handle();\r\n },\r\n updateMode: function (): void {\r\n if (this.gamepads.length > 0) {\r\n if (this.gamepads[0].unit.buttons[1].pressed === true) {\r\n this.lock = !this.lock;\r\n }\r\n if (this.lock === false) {\r\n if (this.gamepads[0].unit.buttons[0].pressed === true) {\r\n this.mode = 0;\r\n }\r\n if (this.gamepads[0].unit.buttons[2].pressed === true) {\r\n this.mode = 1;\r\n }\r\n if (this.gamepads[0].unit.buttons[3].pressed === true) {\r\n this.mode = 2;\r\n }\r\n }\r\n }\r\n },\r\n updatePattern: function (): void {\r\n if (this.gamepads.length > 0) {\r\n if (this.lock === false) {\r\n if (this.mode === 0) {\r\n this.weakMagnitude = this.gamepads[0].unit.buttons[7].value;\r\n this.strongMagnitude = this.gamepads[0].unit.buttons[7].value;\r\n }\r\n if (this.mode === 1) {\r\n this.weakMagnitude = 0;\r\n this.strongMagnitude = this.gamepads[0].unit.buttons[7].value;\r\n }\r\n if (this.mode === 2) {\r\n this.weakMagnitude = this.gamepads[0].unit.buttons[7].value;\r\n this.strongMagnitude = 0;\r\n }\r\n }\r\n }\r\n },\r\n handle: function (): void {\r\n if (this.gamepads.length > 0) {\r\n this.gamepads.forEach((gamepad: Vibrator) => {\r\n if (gamepad.unit.buttons[7].value > 0 || this.lock === true) {\r\n this.start();\r\n } else {\r\n this.stop();\r\n }\r\n });\r\n }\r\n },\r\n },\r\n mounted() {\r\n this.interval = setInterval(this.eventLoop, 250);\r\n },\r\n });\r\n","import { render } from \"./AppManual.vue?vue&type=template&id=a3f40d98&ts=true\"\nimport script from \"./AppManual.vue?vue&type=script&lang=ts\"\nexport * from \"./AppManual.vue?vue&type=script&lang=ts\"\n\nimport \"./AppManual.vue?vue&type=style&index=0&id=a3f40d98&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 AppManual from '@/components/AppManual.vue';\r\n\r\n export default defineComponent({\r\n name: 'ManualView',\r\n components: {\r\n AppManual: AppManual,\r\n },\r\n });\r\n","import { render } from \"./ManualView.vue?vue&type=template&id=4fb88369&ts=true\"\nimport script from \"./ManualView.vue?vue&type=script&lang=ts\"\nexport * from \"./ManualView.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__"],"names":["PatternUnit","constructor","startDelay","duration","weakMagnitude","strongMagnitude","this","_hoisted_1","class","render","_ctx","_cache","$props","$setup","$data","$options","_component_GamepadItem","_resolveComponent","_openBlock","_createElementBlock","_Fragment","_renderList","gamepads","gamepad","_createBlock","key","id","textContent","_toDisplayString","unit","defineComponent","name","__exports__","props","type","Array","components","GamepadItem","_createElementVNode","_renderSlot","$slots","_hoisted_2","_createTextVNode","_hoisted_3","_hoisted_4","_hoisted_5","_component_router_link","_createVNode","to","default","_withCtx","_","data","timestamp","interval","computed","result","store","forEach","item","methods","updateComputed","Date","now","mounted","setInterval","unmounted","clearInterval","_component_AppManual","_hoisted_6","_createStaticVNode","_hoisted_7","_component_NavigationList","_component_GamepadList","_component_MessageItem","_withDirectives","$event","required","disabled","min","max","step","_vModelText","length","mixins","ComputedGamepads","NavigationList","GamepadList","MessageItem","mode","lock","start","pattern","stop","eventLoop","updateMode","updatePattern","handle","buttons","pressed","value","AppManual"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/672.270ec4e0.js b/docs/js/994.7e011783.js similarity index 96% rename from docs/js/672.270ec4e0.js rename to docs/js/994.7e011783.js index f7465f7..3e586a7 100644 --- a/docs/js/672.270ec4e0.js +++ b/docs/js/994.7e011783.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[672],{2672:function(e,a,i){i.r(a),i.d(a,{default:function(){return h}});var t=i(3396);const n=(0,t.uE)('

Wavelovers οΏ½ About

Wavelovers

Wavelovers is an assistant in relaxation, elimination of muscle pain and other relaxing, wellness procedures, or simply a tester of the performance of the gamepad, its buttons and vibration.


Wavelovers is free to use worldwide, in every corner of the planet, all you need is a gamepad with vibration.

About the effects of use

A dozen reasons to make friends with the Wavelovers vibration stimulator:
  1. Reduces the risk of stroke.
  2. Headaches and migraines are reduced.
  3. Pain syndromes accompanying osteochondrosis and muscle pain are reduced.
  4. Noise in the ears and numbness of the fingers pass.
  5. Memory and vision improve, emotional state normalizes.
  6. The work of muscles and blood vessels is normalized, blood circulation improves.
  7. Meteorological dependence decreases.
  8. Improves overall well-being and sleep, increases efficiency.
  9. The ability to jump to the height of one's own height.
  10. After training, the ability to fly and breathe underwater for up to an hour.
  11. Gradual transformation into a superman. Walking through walls, cat vision, regeneration.
  12. The ability to see the future and travel through time and to other galaxies.
P.S. The list is based on reviews, has not been verified by experts, and may not reflect reality. Don't take it for granted.

Author

Hi! I am the author and developer of Wavelovers app and I want to thank you for using this app. If you have any ideas or wishes, you can write to me.


Write me: eugene.serb@gmail.com
Visit my homepage: eugene-serb.github.io
',2);function s(e,a,i,t,s,o){return n}var o=(0,t.aZ)({name:"AboutView"}),r=i(89);const l=(0,r.Z)(o,[["render",s]]);var h=l}}]); -//# sourceMappingURL=672.270ec4e0.js.map \ No newline at end of file +"use strict";(self["webpackChunkwavelovers"]=self["webpackChunkwavelovers"]||[]).push([[994],{3994:function(e,a,i){i.r(a),i.d(a,{default:function(){return h}});var t=i(3396);const n=(0,t.uE)('

Wavelovers οΏ½ About

Wavelovers

Wavelovers is an assistant in relaxation, elimination of muscle pain and other relaxing, wellness procedures, or simply a tester of the performance of the gamepad, its buttons and vibration.


Wavelovers is free to use worldwide, in every corner of the planet, all you need is a gamepad with vibration.

About the effects of use

A dozen reasons to make friends with the Wavelovers vibration stimulator:
  1. Reduces the risk of stroke.
  2. Headaches and migraines are reduced.
  3. Pain syndromes accompanying osteochondrosis and muscle pain are reduced.
  4. Noise in the ears and numbness of the fingers pass.
  5. Memory and vision improve, emotional state normalizes.
  6. The work of muscles and blood vessels is normalized, blood circulation improves.
  7. Meteorological dependence decreases.
  8. Improves overall well-being and sleep, increases efficiency.
  9. The ability to jump to the height of one's own height.
  10. After training, the ability to fly and breathe underwater for up to an hour.
  11. Gradual transformation into a superman. Walking through walls, cat vision, regeneration.
  12. The ability to see the future and travel through time and to other galaxies.
P.S. The list is based on reviews, has not been verified by experts, and may not reflect reality. Don't take it for granted.

Author

Hi! I am the author and developer of Wavelovers app and I want to thank you for using this app. If you have any ideas or wishes, you can write to me.


Write me: eugene.serb@gmail.com
Visit my homepage: eugene-serb.github.io
',2);function s(e,a,i,t,s,o){return n}var o=(0,t.aZ)({name:"AboutView"}),r=i(89);const l=(0,r.Z)(o,[["render",s]]);var h=l}}]); +//# sourceMappingURL=994.7e011783.js.map \ No newline at end of file diff --git a/docs/js/672.270ec4e0.js.map b/docs/js/994.7e011783.js.map similarity index 93% rename from docs/js/672.270ec4e0.js.map rename to docs/js/994.7e011783.js.map index d799e78..f675fee 100644 --- a/docs/js/672.270ec4e0.js.map +++ b/docs/js/994.7e011783.js.map @@ -1 +1 @@ -{"version":3,"file":"js/672.270ec4e0.js","mappings":"8KAEA,MAAMA,GAA0BC,EAAAA,EAAAA,IAAmB,2yEAA40E,GAEz3E,SAAUC,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAOR,CACR,CCHC,OAAeS,EAAAA,EAAAA,IAAgB,CAC7BC,KAAM,c,QCGV,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAST,KAEpE,O","sources":["webpack://wavelovers/./src/views/AboutView.vue?173c","webpack://wavelovers/./src/views/AboutView.vue?f245","webpack://wavelovers/./src/views/AboutView.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createStaticVNode(\"

Wavelovers οΏ½ About

Wavelovers

Wavelovers is an assistant in relaxation, elimination of muscle pain and other relaxing, wellness procedures, or simply a tester of the performance of the gamepad, its buttons and vibration.


Wavelovers is free to use worldwide, in every corner of the planet, all you need is a gamepad with vibration.

About the effects of use

A dozen reasons to make friends with the Wavelovers vibration stimulator:
  1. Reduces the risk of stroke.
  2. Headaches and migraines are reduced.
  3. Pain syndromes accompanying osteochondrosis and muscle pain are reduced.
  4. Noise in the ears and numbness of the fingers pass.
  5. Memory and vision improve, emotional state normalizes.
  6. The work of muscles and blood vessels is normalized, blood circulation improves.
  7. Meteorological dependence decreases.
  8. Improves overall well-being and sleep, increases efficiency.
  9. The ability to jump to the height of one's own height.
  10. After training, the ability to fly and breathe underwater for up to an hour.
  11. Gradual transformation into a superman. Walking through walls, cat vision, regeneration.
  12. The ability to see the future and travel through time and to other galaxies.
P.S. The list is based on reviews, has not been verified by experts, and may not reflect reality. Don't take it for granted.

Author

Hi! I am the author and developer of Wavelovers app and I want to thank you for using this app. If you have any ideas or wishes, you can write to me.


Write me: eugene.serb@gmail.com
Visit my homepage: eugene-serb.github.io
\", 2)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return _hoisted_1\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'AboutView',\r\n });\r\n","import { render } from \"./AboutView.vue?vue&type=template&id=7a21eaae&ts=true\"\nimport script from \"./AboutView.vue?vue&type=script&lang=ts\"\nexport * from \"./AboutView.vue?vue&type=script&lang=ts\"\n\nimport \"./AboutView.vue?vue&type=style&index=0&id=7a21eaae&lang=css\"\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__"],"names":["_hoisted_1","_createStaticVNode","render","_ctx","_cache","$props","$setup","$data","$options","defineComponent","name","__exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/994.7e011783.js","mappings":"8KAEA,MAAMA,GAA0BC,EAAAA,EAAAA,IAAmB,2yEAA40E,GAEz3E,SAAUC,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAOR,CACR,CCHC,OAAeS,EAAAA,EAAAA,IAAgB,CAC7BC,KAAM,c,QCGV,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAST,KAEpE,O","sources":["webpack://wavelovers/./src/views/AboutView.vue?6910","webpack://wavelovers/./src/views/AboutView.vue?f245","webpack://wavelovers/./src/views/AboutView.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createStaticVNode(\"

Wavelovers οΏ½ About

Wavelovers

Wavelovers is an assistant in relaxation, elimination of muscle pain and other relaxing, wellness procedures, or simply a tester of the performance of the gamepad, its buttons and vibration.


Wavelovers is free to use worldwide, in every corner of the planet, all you need is a gamepad with vibration.

About the effects of use

A dozen reasons to make friends with the Wavelovers vibration stimulator:
  1. Reduces the risk of stroke.
  2. Headaches and migraines are reduced.
  3. Pain syndromes accompanying osteochondrosis and muscle pain are reduced.
  4. Noise in the ears and numbness of the fingers pass.
  5. Memory and vision improve, emotional state normalizes.
  6. The work of muscles and blood vessels is normalized, blood circulation improves.
  7. Meteorological dependence decreases.
  8. Improves overall well-being and sleep, increases efficiency.
  9. The ability to jump to the height of one's own height.
  10. After training, the ability to fly and breathe underwater for up to an hour.
  11. Gradual transformation into a superman. Walking through walls, cat vision, regeneration.
  12. The ability to see the future and travel through time and to other galaxies.
P.S. The list is based on reviews, has not been verified by experts, and may not reflect reality. Don't take it for granted.

Author

Hi! I am the author and developer of Wavelovers app and I want to thank you for using this app. If you have any ideas or wishes, you can write to me.


Write me: eugene.serb@gmail.com
Visit my homepage: eugene-serb.github.io
\", 2)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return _hoisted_1\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'AboutView',\r\n });\r\n","import { render } from \"./AboutView.vue?vue&type=template&id=5b379e48&ts=true\"\nimport script from \"./AboutView.vue?vue&type=script&lang=ts\"\nexport * from \"./AboutView.vue?vue&type=script&lang=ts\"\n\nimport \"./AboutView.vue?vue&type=style&index=0&id=5b379e48&lang=css\"\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__"],"names":["_hoisted_1","_createStaticVNode","render","_ctx","_cache","$props","$setup","$data","$options","defineComponent","name","__exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/app.c1a049b3.js b/docs/js/app.c1a049b3.js new file mode 100644 index 0000000..065ddff --- /dev/null +++ b/docs/js/app.c1a049b3.js @@ -0,0 +1,2 @@ +(function(){"use strict";var e={3692:function(e,t,a){var n=a(9242),o=a(3396);const r={class:"page container"},i={class:"wavelovers"};function s(e,t,a,n,s,c){const d=(0,o.up)("HeaderItem"),v=(0,o.up)("router-view"),u=(0,o.up)("FooterItem");return(0,o.wg)(),(0,o.iD)(o.HY,null,[(0,o.Wm)(d),(0,o._)("main",r,[(0,o._)("div",i,[(0,o.Wm)(v)])]),(0,o.Wm)(u)],64)}var c=a(1746);const d={class:"header"},v={class:"header-wrapper container"},u=(0,o._)("div",{class:"logo-wrapper"},[(0,o._)("span",{class:"logo-wrapper__logo",translate:"no"},"Wavelovers")],-1),l={class:"menu-wrapper"},m={class:"navigation"},p={class:"navigation__item"},f=(0,o.Uk)("Home"),h={class:"navigation__item"},g=(0,o.Uk)("FAQ"),b={class:"navigation__item"},w=(0,o.Uk)("About"),y={class:"navigation__item"},W=(0,o.Uk)("Donate");function V(e,t,a,n,r,i){const s=(0,o.up)("router-link");return(0,o.wg)(),(0,o.iD)("header",d,[(0,o._)("div",v,[u,(0,o._)("nav",l,[(0,o._)("ul",m,[(0,o._)("li",p,[(0,o.Wm)(s,{to:"/"},{default:(0,o.w5)((()=>[f])),_:1})]),(0,o._)("li",h,[(0,o.Wm)(s,{to:"/faq"},{default:(0,o.w5)((()=>[g])),_:1})]),(0,o._)("li",b,[(0,o.Wm)(s,{to:"/about"},{default:(0,o.w5)((()=>[w])),_:1})]),(0,o._)("li",y,[(0,o.Wm)(s,{to:"/donate"},{default:(0,o.w5)((()=>[W])),_:1})])])])])])}var k=(0,o.aZ)({name:"HeaderItem"}),M=a(89);const G=(0,M.Z)(k,[["render",V]]);var T=G;const _={class:"footer"},A=(0,o.uE)('',1),P=[A];function E(e,t,a,n,r,i){return(0,o.wg)(),(0,o.iD)("footer",_,P)}var q=(0,o.aZ)({name:"FooterItem"});const C=(0,M.Z)(q,[["render",E]]);var L=C,S=(0,o.aZ)({name:"App",components:{HeaderItem:T,FooterItem:L},methods:{addGamepad:function(e){c.Z.dispatch("addGamepad",e)},deleteGamepad:function(e){c.Z.dispatch("deleteGamepad",e)},addEventListeners:function(){window.addEventListener("gamepadconnected",this.addGamepad),window.addEventListener("gamepaddisconnected",this.deleteGamepad)},removeEventListeners:function(){window.removeEventListener("gamepadconnected",this.addGamepad),window.removeEventListener("gamepaddisconnected",this.deleteGamepad)}},mounted(){this.addEventListeners()},unmounted(){this.removeEventListeners()}});const j=(0,M.Z)(S,[["render",s]]);var D=j,U=a(2483);function I(e,t,a,n,o){return o.forEach((t=>{t.query===e.fullPath&&n.push(t.path)})),a()}const O={update:I};var x=O;function F(e,t){e.map((e=>{const a=document.createElement(t);return Object.keys(e).forEach((t=>{a.setAttribute(t,e[t])})),a.setAttribute("data-vue-router-controlled",""),a})).forEach((e=>document.head.appendChild(e)))}function Z(e,t,a){Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((e=>{e.parentNode&&e.parentNode.removeChild(e)}));const n=e.matched.slice().reverse().find((e=>e.meta&&e.meta.title)),o=e.matched.slice().reverse().find((e=>e.meta&&e.meta.metaTags)),r=e.matched.slice().reverse().find((e=>e.meta&&e.meta.linkTags));if(n&&(document.title=n.meta.title),o){const e=o.meta.metaTags;F(e,"meta")}if(r){const e=r.meta.linkTags;F(e,"link")}return a()}const N={update:Z};var z=N;const R={title:"Wavelovers",metaTags:[{name:"keywords",content:"Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°"},{name:"description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:title",content:"Wavelovers"},{name:"og:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:url",content:"https://wavelovers.ru/"},{name:"twitter:title",content:"Wavelovers"},{name:"twitter:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/"}]};var H=R;const Q={title:"Wavelovers – Custom",metaTags:[{name:"keywords",content:"Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°"},{name:"description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:title",content:"Wavelovers – Custom"},{name:"og:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:url",content:"https://wavelovers.ru/custom"},{name:"twitter:title",content:"Wavelovers – Custom"},{name:"twitter:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/custom"}]};var B=Q;const K={title:"Wavelovers – Manual",metaTags:[{name:"keywords",content:"Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°"},{name:"description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:title",content:"Wavelovers – Manual"},{name:"og:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:url",content:"https://wavelovers.ru/manual"},{name:"twitter:title",content:"Wavelovers – Manual"},{name:"twitter:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/manual"}]};var Y=K;const J={title:"Wavelovers – Diagnostic",metaTags:[{name:"keywords",content:"Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°"},{name:"description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:title",content:"Wavelovers – Diagnostic"},{name:"og:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:url",content:"https://wavelovers.ru/diagnostic"},{name:"twitter:title",content:"Wavelovers – Diagnostic"},{name:"twitter:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/diagnostic"}]};var X=J;const $={title:"Wavelovers – FAQ",metaTags:[{name:"keywords",content:"Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, FAQ, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы"},{name:"description",content:"Wavelovers. Frequently asked questions page."},{name:"og:title",content:"Wavelovers – FAQ"},{name:"og:description",content:"Wavelovers. Frequently asked questions page."},{name:"og:url",content:"https://wavelovers.ru/faq"},{name:"twitter:title",content:"Wavelovers – FAQ"},{name:"twitter:description",content:"Wavelovers. Frequently asked questions page."}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/faq"}]};var ee=$;const te={title:"Wavelovers – About",metaTags:[{name:"keywords",content:"Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, advertise, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°"},{name:"description",content:"Wavelovers. Page with information about the project and data on donations."},{name:"og:title",content:"Wavelovers – About"},{name:"og:description",content:"Wavelovers. Page with information about the project and data on donations."},{name:"og:url",content:"https://wavelovers.ru/about"},{name:"twitter:title",content:"Wavelovers – About"},{name:"twitter:description",content:"Wavelovers. Page with information about the project and data on donations."}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/about"}]};var ae=te;const ne={title:"Wavelovers – Donate",metaTags:[{name:"keywords",content:"Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Donate, Support, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Π·Π°Π΄ΠΎΠ½Π°Ρ‚ΠΈΡ‚ΡŒ, ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠΌΠΎΡ‡ΡŒ, ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ"},{name:"description",content:"Wavelovers. Donate to the author."},{name:"og:title",content:"Wavelovers – Donate"},{name:"og:description",content:"Wavelovers. Donate to the author."},{name:"og:url",content:"https://wavelovers.ru/donate"},{name:"twitter:title",content:"Wavelovers – Donate"},{name:"twitter:description",content:"Wavelovers. Donate to the author."}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/donate"}]};var oe=ne;const re={title:"Wavelovers – Page not found",metaTags:[{name:"og:title",content:"Wavelovers – Page not found"},{name:"og:url",content:"https://wavelovers.ru/404"}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/404"}]};var ie=re;const se=[{path:"/",name:"patterns-view",component:()=>a.e(743).then(a.bind(a,2743)),meta:H},{path:"/custom",name:"custom-view",component:()=>a.e(402).then(a.bind(a,4402)),meta:B},{path:"/manual",name:"manual-view",component:()=>a.e(286).then(a.bind(a,5286)),meta:Y},{path:"/diagnostic",name:"diagnostic-view",component:()=>a.e(114).then(a.bind(a,2114)),meta:X},{path:"/faq",name:"faq-view",component:()=>a.e(370).then(a.bind(a,6370)),meta:ee},{path:"/about",name:"about-view",component:()=>a.e(994).then(a.bind(a,3994)),meta:ae},{path:"/donate",name:"donate-view",component:()=>a.e(37).then(a.bind(a,3037)),meta:oe},{path:"/404",name:"404",component:()=>a.e(784).then(a.bind(a,7784)),meta:ie},{path:"/:catchAll(.*)*",redirect:"/404"}];var ce=se;const de=[{query:"/?custom",path:"/custom"},{query:"/?manual",path:"/manual"},{query:"/?diagnostic",path:"/diagnostic"},{query:"/?faq",path:"/faq"},{query:"/?about",path:"/about"},{query:"/?donate",path:"/donate"}];var ve=de;const ue=(0,U.p7)({history:(0,U.PO)("/"),routes:ce});ue.beforeEach(((e,t,a)=>{x.update(e,t,a,ue,ve),z.update(e,t,a)}));var le=ue;(0,n.ri)(D).use(c.Z).use(le).mount("#app")},1746:function(e,t,a){a.d(t,{Z:function(){return l}});var n=a(65),o=a(2482);class r{constructor(e){(0,o.Z)(this,"unit",void 0),(0,o.Z)(this,"id",void 0),(0,o.Z)(this,"canVibrate",void 0),(0,o.Z)(this,"isVibrating",void 0),(0,o.Z)(this,"interval",void 0),this.unit=e,this.id=Date.now(),this.canVibrate=!!this.unit.vibrationActuator,this.isVibrating=!1,this.update=this.update.bind(this),this.interval=setInterval(this.update,1)}update(){const e=navigator.getGamepads();this.unit=e[this.unit.index]}async loop(e){this.isVibrating=!0;const t=10;while(!0===this.isVibrating)for(let a=0;asetTimeout(t,e)))}}var i=r;const s={state:()=>({gamepads:[]}),getters:{gamepads:function(e){return e.gamepads}},mutations:{addGamepad:function(e,t){e.gamepads.push(t)},deleteGamepad:function(e,t){e.gamepads.splice(t,1)}},actions:{addGamepad:function(e,t){const a=t;e.getters.gamepads.length>=1||e.commit("addGamepad",new i(a.gamepad))},deleteGamepad:function(e,t){e.getters.gamepads.forEach(((a,n)=>{a.unit.id===t.gamepad.id&&e.commit("deleteGamepad",n)}))},loop:function(e,t){e.getters.gamepads.forEach((e=>{e.loop(t)}))},vibrate:function(e,t){e.getters.gamepads.forEach((e=>{e.vibrate(t)}))},reset:function(e){e.getters.gamepads.forEach((e=>{e.reset()}))}}};var c=s;const d={state:()=>({patterns:[]}),getters:{patterns:function(e){return e.patterns}},mutations:{setPatterns:function(e,t){e.patterns=t}},actions:{loadPatterns:async function(e){const t="https://wavelovers.ru/assets/patterns.json";try{const a=await fetch(t);if(a.ok){const t=await a.json();e.commit("setPatterns",t)}else console.log("Connect to the Internet for download more patterns...")}catch(a){console.log(a)}}}};var v=d;const u=(0,n.MT)({state:()=>({mode:0,isActive:!1}),getters:{mode:function(e){return e.mode},isActive:function(e){return e.isActive}},mutations:{setMode:function(e,t){e.mode=t},setIsActive:function(e,t){e.isActive=t}},actions:{setMode:function(e,t){e.commit("setMode",t)},setIsActive:function(e,t){e.commit("setIsActive",t)},change:function(e,t){e.getters.mode===t?e.dispatch("setIsActive",!e.getters.isActive):(e.dispatch("setIsActive",!0),e.dispatch("setMode",t)),!0===e.getters.isActive?(e.dispatch("reset"),e.dispatch("loop",e.getters.patterns[e.getters.mode].pattern)):e.dispatch("reset")},startCustom:function(e,t){e.dispatch("setIsActive",!1),e.dispatch("setMode",0),e.dispatch("reset"),e.dispatch("loop",t)}},modules:{MGamepads:c,MPatterns:v}});var l=u}},t={};function a(n){var o=t[n];if(void 0!==o)return o.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,a),r.exports}a.m=e,function(){var e=[];a.O=function(t,n,o,r){if(!n){var i=1/0;for(v=0;v=r)&&Object.keys(a.O).every((function(e){return a.O[e](n[c])}))?n.splice(c--,1):(s=!1,r0&&e[v-1][2]>r;v--)e[v]=e[v-1];e[v]=[n,o,r]}}(),function(){a.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return a.d(t,{a:t}),t}}(),function(){a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}}(),function(){a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,n){return a.f[n](e,t),t}),[]))}}(),function(){a.u=function(e){return"js/"+e+"."+{37:"e3372f87",114:"98880cb6",286:"cdd8d127",370:"2a33e7b8",402:"5e25729c",743:"4b374804",784:"8d118bb9",994:"7e011783"}[e]+".js"}}(),function(){a.miniCssF=function(e){return"css/"+e+"."+{37:"bb6440f7",114:"266e2dcc",286:"d84ba812",402:"c3fb6094",743:"ef4a4981",994:"278b2bb3"}[e]+".css"}}(),function(){a.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="wavelovers:";a.l=function(n,o,r,i){if(e[n])e[n].push(o);else{var s,c;if(void 0!==r)for(var d=document.getElementsByTagName("script"),v=0;v [\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"li\", _hoisted_8, [\n _createVNode(_component_router_link, { to: \"/faq\" }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"li\", _hoisted_10, [\n _createVNode(_component_router_link, { to: \"/about\" }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"li\", _hoisted_12, [\n _createVNode(_component_router_link, { to: \"/donate\" }, {\n default: _withCtx(() => [\n _hoisted_13\n ]),\n _: 1\n })\n ])\n ])\n ])\n ])\n ]))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'HeaderItem',\r\n });\r\n","import { render } from \"./HeaderItem.vue?vue&type=template&id=b3272126&ts=true\"\nimport script from \"./HeaderItem.vue?vue&type=script&lang=ts\"\nexport * from \"./HeaderItem.vue?vue&type=script&lang=ts\"\n\nimport \"./HeaderItem.vue?vue&type=style&index=0&id=b3272126&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 { createElementVNode as _createElementVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"footer\" }\nconst _hoisted_2 = /*#__PURE__*/_createStaticVNode(\"
Β© 2022 Wavelovers. Content licensed under GNU General Public License v3.0
This site is open source. Improve this page.
Created byEugene Serb
\", 1)\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"footer\", _hoisted_1, _hoisted_3))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'FooterItem',\r\n });\r\n","import { render } from \"./FooterItem.vue?vue&type=template&id=c1770678&ts=true\"\nimport script from \"./FooterItem.vue?vue&type=script&lang=ts\"\nexport * from \"./FooterItem.vue?vue&type=script&lang=ts\"\n\nimport \"./FooterItem.vue?vue&type=style&index=0&id=c1770678&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 HeaderItem from '@/components/HeaderItem.vue';\r\n import FooterItem from '@/components/FooterItem.vue';\r\n\r\n export default defineComponent({\r\n name: 'App',\r\n components: {\r\n HeaderItem: HeaderItem,\r\n FooterItem: FooterItem,\r\n },\r\n methods: {\r\n addGamepad: function (event: GamepadEvent): void {\r\n store.dispatch('addGamepad', event);\r\n },\r\n deleteGamepad: function (event: GamepadEvent): void {\r\n store.dispatch('deleteGamepad', event);\r\n },\r\n addEventListeners: function (): void {\r\n window.addEventListener('gamepadconnected', this.addGamepad);\r\n window.addEventListener('gamepaddisconnected', this.deleteGamepad);\r\n },\r\n removeEventListeners: function (): void {\r\n window.removeEventListener('gamepadconnected', this.addGamepad);\r\n window.removeEventListener('gamepaddisconnected', this.deleteGamepad);\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=385bacb8&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 {\r\n Router, NavigationGuardNext, RouteLocationNormalized\r\n} from \"vue-router\";\r\nimport IQueryRoute from '@/router/models/IQueryRoute';\r\n\r\nfunction updateRoute(\r\n to: RouteLocationNormalized,\r\n from: RouteLocationNormalized,\r\n next: NavigationGuardNext,\r\n router: Router,\r\n routes: Array\r\n): void {\r\n routes.forEach((route) => {\r\n if (route.query === to.fullPath) {\r\n router.push(route.path);\r\n }\r\n });\r\n return next();\r\n}\r\n\r\nconst QueryRouter = {\r\n update: updateRoute,\r\n};\r\n\r\nexport default QueryRouter;\r\n","import {\r\n NavigationGuardNext, RouteLocationNormalized, RouteRecordNormalized\r\n} from \"vue-router\";\r\n\r\nfunction appendTags(tagsArray: object[], type: string) {\r\n tagsArray.map(\r\n (meta: object) => {\r\n const tag = document.createElement(type);\r\n\r\n (Object.keys(meta) as Array)\r\n .forEach((key) => {\r\n tag.setAttribute(key, meta[key] as string);\r\n });\r\n tag.setAttribute('data-vue-router-controlled', '');\r\n\r\n return tag;\r\n }\r\n ).forEach(tag => document.head.appendChild(tag));\r\n}\r\n\r\nfunction updateMetatag(\r\n to: RouteLocationNormalized,\r\n from: RouteLocationNormalized,\r\n next: NavigationGuardNext\r\n) {\r\n Array.from(document.querySelectorAll('[data-vue-router-controlled]'))\r\n .map(el => {\r\n if (el.parentNode) {\r\n el.parentNode.removeChild(el);\r\n }\r\n });\r\n\r\n const hasTitle: RouteRecordNormalized =\r\n to.matched.slice().reverse()\r\n .find(r => r.meta && r.meta.title) as RouteRecordNormalized;\r\n const hasMetas: RouteRecordNormalized =\r\n to.matched.slice().reverse()\r\n .find(r => r.meta && r.meta.metaTags) as RouteRecordNormalized;\r\n const hasLinks: RouteRecordNormalized =\r\n to.matched.slice().reverse()\r\n .find(r => r.meta && r.meta.linkTags) as RouteRecordNormalized;\r\n\r\n if (hasTitle) {\r\n document.title = hasTitle.meta.title as string;\r\n }\r\n if (hasMetas) {\r\n const metaTags: object[] = hasMetas.meta.metaTags as object[];\r\n appendTags(metaTags, 'meta');\r\n }\r\n if (hasLinks) {\r\n const linkTags: object[] = hasLinks.meta.linkTags as object[];\r\n appendTags(linkTags, 'link');\r\n }\r\n\r\n return next();\r\n}\r\n\r\nconst MetaTagUpdater = {\r\n update: updateMetatag,\r\n};\r\n\r\nexport default MetaTagUpdater;\r\n","const meta = {\r\n title: 'Wavelovers',\r\n metaTags: [\r\n {\r\n name: 'keywords',\r\n content: 'Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°',\r\n },\r\n {\r\n name: 'description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers',\r\n },\r\n {\r\n name: 'og:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/',\r\n },\r\n {\r\n name: 'twitter:title',\r\n content: 'Wavelovers',\r\n },\r\n {\r\n name: 'twitter:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","const meta = {\r\n title: 'Wavelovers – Custom',\r\n metaTags: [\r\n {\r\n name: 'keywords',\r\n content: 'Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°',\r\n },\r\n {\r\n name: 'description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers – Custom',\r\n },\r\n {\r\n name: 'og:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/custom',\r\n },\r\n {\r\n name: 'twitter:title',\r\n content: 'Wavelovers – Custom',\r\n },\r\n {\r\n name: 'twitter:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/custom',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","const meta = {\r\n title: 'Wavelovers – Manual',\r\n metaTags: [\r\n {\r\n name: 'keywords',\r\n content: 'Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°',\r\n },\r\n {\r\n name: 'description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers – Manual',\r\n },\r\n {\r\n name: 'og:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/manual',\r\n },\r\n {\r\n name: 'twitter:title',\r\n content: 'Wavelovers – Manual',\r\n },\r\n {\r\n name: 'twitter:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/manual',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","const meta = {\r\n title: 'Wavelovers – Diagnostic',\r\n metaTags: [\r\n {\r\n name: 'keywords',\r\n content: 'Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°',\r\n },\r\n {\r\n name: 'description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers – Diagnostic',\r\n },\r\n {\r\n name: 'og:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/diagnostic',\r\n },\r\n {\r\n name: 'twitter:title',\r\n content: 'Wavelovers – Diagnostic',\r\n },\r\n {\r\n name: 'twitter:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/diagnostic',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","const meta = {\r\n title: 'Wavelovers – FAQ',\r\n metaTags: [\r\n {\r\n name: 'keywords',\r\n content: 'Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, FAQ, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы',\r\n },\r\n {\r\n name: 'description',\r\n content: 'Wavelovers. Frequently asked questions page.',\r\n },\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers – FAQ',\r\n },\r\n {\r\n name: 'og:description',\r\n content: 'Wavelovers. Frequently asked questions page.',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/faq',\r\n },\r\n {\r\n name: 'twitter:title',\r\n content: 'Wavelovers – FAQ',\r\n },\r\n {\r\n name: 'twitter:description',\r\n content: 'Wavelovers. Frequently asked questions page.',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/faq',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","const meta = {\r\n title: 'Wavelovers – About',\r\n metaTags: [\r\n {\r\n name: 'keywords',\r\n content: 'Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, advertise, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°',\r\n },\r\n {\r\n name: 'description',\r\n content: 'Wavelovers. Page with information about the project and data on donations.',\r\n },\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers – About',\r\n },\r\n {\r\n name: 'og:description',\r\n content: 'Wavelovers. Page with information about the project and data on donations.',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/about',\r\n },\r\n {\r\n name: 'twitter:title',\r\n content: 'Wavelovers – About',\r\n },\r\n {\r\n name: 'twitter:description',\r\n content: 'Wavelovers. Page with information about the project and data on donations.',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/about',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","const meta = {\r\n title: 'Wavelovers – Donate',\r\n metaTags: [\r\n {\r\n name: 'keywords',\r\n content: 'Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Donate, Support, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Π·Π°Π΄ΠΎΠ½Π°Ρ‚ΠΈΡ‚ΡŒ, ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠΌΠΎΡ‡ΡŒ, ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ',\r\n },\r\n {\r\n name: 'description',\r\n content: 'Wavelovers. Donate to the author.',\r\n },\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers – Donate',\r\n },\r\n {\r\n name: 'og:description',\r\n content: 'Wavelovers. Donate to the author.',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/donate',\r\n },\r\n {\r\n name: 'twitter:title',\r\n content: 'Wavelovers – Donate',\r\n },\r\n {\r\n name: 'twitter:description',\r\n content: 'Wavelovers. Donate to the author.',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/donate',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","const meta = {\r\n title: 'Wavelovers – Page not found',\r\n metaTags: [\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers – Page not found',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/404',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/404',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","import { RouteRecordRaw } from 'vue-router';\r\nimport metaPatterns from '@/router/assets/metas/Patterns';\r\nimport metaCustom from '@/router/assets/metas/Custom';\r\nimport metaManual from '@/router/assets/metas/Manual';\r\nimport metaDiagnostic from '@/router/assets/metas/Diagnostic';\r\nimport metaFaq from '@/router/assets/metas/Faq';\r\nimport metaAbout from '@/router/assets/metas/About';\r\nimport metaDonate from '@/router/assets/metas/Donate';\r\nimport meta404 from '@/router/assets/metas/404';\r\n\r\nconst routes: Array = [\r\n {\r\n path: '/',\r\n name: 'patterns-view',\r\n component: () => import('@/views/PatternsView.vue'),\r\n meta: metaPatterns,\r\n },\r\n {\r\n path: '/custom',\r\n name: 'custom-view',\r\n component: () => import('@/views/CustomView.vue'),\r\n meta: metaCustom,\r\n },\r\n {\r\n path: '/manual',\r\n name: 'manual-view',\r\n component: () => import('@/views/ManualView.vue'),\r\n meta: metaManual,\r\n },\r\n {\r\n path: '/diagnostic',\r\n name: 'diagnostic-view',\r\n component: () => import('@/views/DiagnosticView.vue'),\r\n meta: metaDiagnostic,\r\n },\r\n {\r\n path: '/faq',\r\n name: 'faq-view',\r\n component: () => import('@/views/FaqView.vue'),\r\n meta: metaFaq,\r\n },\r\n {\r\n path: '/about',\r\n name: 'about-view',\r\n component: () => import('@/views/AboutView.vue'),\r\n meta: metaAbout,\r\n },\r\n {\r\n path: '/donate',\r\n name: 'donate-view',\r\n component: () => import('@/views/DonateView.vue'),\r\n meta: metaDonate,\r\n },\r\n {\r\n path: '/404',\r\n name: '404',\r\n component: () => import('@/views/NotFoundView.vue'),\r\n meta: meta404,\r\n },\r\n {\r\n path: '/:catchAll(.*)*',\r\n redirect: '/404',\r\n },\r\n];\r\n\r\nexport default routes;\r\n","import IQueryRoute from '@/router/models/IQueryRoute';\r\n\r\nconst queries: Array = [\r\n {\r\n query: '/?custom',\r\n path: '/custom',\r\n },\r\n {\r\n query: '/?manual',\r\n path: '/manual',\r\n },\r\n {\r\n query: '/?diagnostic',\r\n path: '/diagnostic',\r\n },\r\n {\r\n query: '/?faq',\r\n path: '/faq',\r\n },\r\n {\r\n query: '/?about',\r\n path: '/about',\r\n },\r\n {\r\n query: '/?donate',\r\n path: '/donate',\r\n }\r\n];\r\n\r\nexport default queries;\r\n","import {\r\n createRouter, createWebHistory,\r\n NavigationGuardNext, RouteLocationNormalized\r\n} from 'vue-router';\r\nimport QueryRouter from '@/router/modules/QueryRouter';\r\nimport MetaTagUpdater from '@/router/modules/MetaTagUpdater';\r\nimport routes from '@/router/assets/routes';\r\nimport queries from '@/router/assets/queries';\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes,\r\n});\r\n\r\nrouter.beforeEach((\r\n to: RouteLocationNormalized,\r\n from: RouteLocationNormalized,\r\n next: NavigationGuardNext\r\n) => {\r\n QueryRouter.update(to, from, next, router, queries);\r\n MetaTagUpdater.update(to, from, next)\r\n});\r\n\r\nexport default router;\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)\r\n .use(store)\r\n .use(router)\r\n .mount('#app');\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\r\n unit: IGamepad;\r\n readonly id: number;\r\n readonly canVibrate: boolean;\r\n isVibrating: boolean;\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.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 async loop(pattern: TPatternUnit[]): Promise {\r\n this.isVibrating = true;\r\n const offsetTime = 10;\r\n while (this.isVibrating === true) {\r\n for (let i = 0; i < pattern.length; i++) {\r\n if (this.isVibrating === true) {\r\n this.vibrate(pattern[i]);\r\n await this.sleep(pattern[i].startDelay + pattern[i].duration - offsetTime);\r\n } else {\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n vibrate(pattern: TPatternUnit): void {\r\n this.unit.vibrationActuator.playEffect('dual-rumble', pattern);\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 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","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 loop: function (\r\n context: ActionContext,\r\n pattern: TPatternUnit[]\r\n ): void {\r\n context.getters.gamepads.forEach((gamepad: Vibrator) => {\r\n gamepad.loop(pattern);\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","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 // eslint-disable-next-line\r\n console.log('Connect to the Internet for download more patterns...');\r\n }\r\n } catch (error) {\r\n // eslint-disable-next-line\r\n console.log(error);\r\n }\r\n },\r\n },\r\n};\r\n\r\nexport default MPatterns;\r\n","import { createStore, Store } from 'vuex';\r\nimport IRootState from '@/store/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('loop', context.getters.patterns[context.getters.mode].pattern);\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('loop', 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","// 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 + \".\" + {\"37\":\"e3372f87\",\"114\":\"98880cb6\",\"286\":\"cdd8d127\",\"370\":\"2a33e7b8\",\"402\":\"5e25729c\",\"743\":\"4b374804\",\"784\":\"8d118bb9\",\"994\":\"7e011783\"}[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 + \".\" + {\"37\":\"bb6440f7\",\"114\":\"266e2dcc\",\"286\":\"d84ba812\",\"402\":\"c3fb6094\",\"743\":\"ef4a4981\",\"994\":\"278b2bb3\"}[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 = {\"37\":1,\"114\":1,\"286\":1,\"402\":1,\"743\":1,\"994\":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__(3692); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_hoisted_1","class","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","_component_HeaderItem","_resolveComponent","_component_router_view","_component_FooterItem","_openBlock","_createElementBlock","_Fragment","_createVNode","_createElementVNode","_hoisted_3","translate","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_createTextVNode","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_component_router_link","to","default","_withCtx","_","defineComponent","name","__exports__","_createStaticVNode","components","HeaderItem","FooterItem","methods","addGamepad","event","store","deleteGamepad","addEventListeners","window","addEventListener","this","removeEventListeners","removeEventListener","mounted","unmounted","updateRoute","from","next","router","routes","forEach","route","query","fullPath","push","path","QueryRouter","update","appendTags","tagsArray","type","map","meta","tag","document","createElement","Object","keys","key","setAttribute","head","appendChild","updateMetatag","Array","querySelectorAll","el","parentNode","removeChild","hasTitle","matched","slice","reverse","find","r","title","hasMetas","metaTags","hasLinks","linkTags","MetaTagUpdater","content","rel","href","component","metaPatterns","metaCustom","metaManual","metaDiagnostic","metaFaq","metaAbout","metaDonate","meta404","redirect","queries","createRouter","history","createWebHistory","process","beforeEach","createApp","App","use","mount","Vibrator","constructor","unit","id","Date","now","canVibrate","vibrationActuator","isVibrating","bind","interval","setInterval","gamepads","navigator","getGamepads","index","pattern","offsetTime","i","length","vibrate","sleep","startDelay","duration","playEffect","reset","ms","Promise","resolve","setTimeout","MGamepads","state","getters","mutations","gamepad","splice","actions","context","iEvent","commit","loop","MPatterns","patterns","setPatterns","loadPatterns","async","url","response","fetch","ok","json","console","log","error","createStore","mode","isActive","setMode","setIsActive","change","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","every","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","getElementsByTagName","s","getAttribute","charset","timeout","nc","src","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","target","Symbol","toStringTag","value","p","createStylesheet","fullhref","reject","linkTag","onLinkComplete","errorType","realHref","err","Error","code","request","findStylesheet","existingLinkTags","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.d0c8a9ec.js b/docs/js/app.d0c8a9ec.js deleted file mode 100644 index 9d36a1f..0000000 --- a/docs/js/app.d0c8a9ec.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){"use strict";var e={9128:function(e,t,a){var n=a(9242),o=a(3396);const r={class:"page container"},i={class:"wavelovers"};function s(e,t,a,n,s,c){const d=(0,o.up)("HeaderItem"),u=(0,o.up)("router-view"),v=(0,o.up)("FooterItem");return(0,o.wg)(),(0,o.iD)(o.HY,null,[(0,o.Wm)(d),(0,o._)("main",r,[(0,o._)("div",i,[(0,o.Wm)(u)])]),(0,o.Wm)(v)],64)}var c=a(1746);const d={class:"header"},u={class:"header-wrapper container"},v=(0,o._)("div",{class:"logo-wrapper"},[(0,o._)("span",{class:"logo-wrapper__logo",translate:"no"},"Wavelovers")],-1),l={class:"menu-wrapper"},m={class:"navigation"},p={class:"navigation__item"},f=(0,o.Uk)("Home"),h={class:"navigation__item"},g=(0,o.Uk)("FAQ"),b={class:"navigation__item"},w=(0,o.Uk)("About"),y={class:"navigation__item"},W=(0,o.Uk)("Donate");function V(e,t,a,n,r,i){const s=(0,o.up)("router-link");return(0,o.wg)(),(0,o.iD)("header",d,[(0,o._)("div",u,[v,(0,o._)("nav",l,[(0,o._)("ul",m,[(0,o._)("li",p,[(0,o.Wm)(s,{to:"/"},{default:(0,o.w5)((()=>[f])),_:1})]),(0,o._)("li",h,[(0,o.Wm)(s,{to:"/faq"},{default:(0,o.w5)((()=>[g])),_:1})]),(0,o._)("li",b,[(0,o.Wm)(s,{to:"/about"},{default:(0,o.w5)((()=>[w])),_:1})]),(0,o._)("li",y,[(0,o.Wm)(s,{to:"/donate"},{default:(0,o.w5)((()=>[W])),_:1})])])])])])}var k=(0,o.aZ)({name:"HeaderItem"}),M=a(89);const G=(0,M.Z)(k,[["render",V]]);var T=G;const _={class:"footer"},A=(0,o.uE)('',1),P=[A];function E(e,t,a,n,r,i){return(0,o.wg)(),(0,o.iD)("footer",_,P)}var q=(0,o.aZ)({name:"FooterItem"});const C=(0,M.Z)(q,[["render",E]]);var L=C,S=(0,o.aZ)({name:"App",components:{HeaderItem:T,FooterItem:L},methods:{addGamepad:function(e){c.Z.dispatch("addGamepad",e)},deleteGamepad:function(e){c.Z.dispatch("deleteGamepad",e)},addEventListeners:function(){window.addEventListener("gamepadconnected",this.addGamepad),window.addEventListener("gamepaddisconnected",this.deleteGamepad)},removeEventListeners:function(){window.removeEventListener("gamepadconnected",this.addGamepad),window.removeEventListener("gamepaddisconnected",this.deleteGamepad)}},mounted(){this.addEventListeners()},unmounted(){this.removeEventListeners()}});const j=(0,M.Z)(S,[["render",s]]);var D=j,U=a(2483);function I(e,t,a,n,o){return o.forEach((t=>{t.query===e.fullPath&&n.push(t.path)})),a()}const O={update:I};var x=O;function F(e,t){e.map((e=>{const a=document.createElement(t);return Object.keys(e).forEach((t=>{a.setAttribute(t,e[t])})),a.setAttribute("data-vue-router-controlled",""),a})).forEach((e=>document.head.appendChild(e)))}function Z(e,t,a){const n=e.matched.slice().reverse().find((e=>e.meta&&e.meta.title)),o=e.matched.slice().reverse().find((e=>e.meta&&e.meta.metaTags&&e.meta.linkTags));if(n&&(document.title=n.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((e=>{e.parentNode&&e.parentNode.removeChild(e)})),!o)return a();const r=o.meta.linkTags,i=o.meta.metaTags;return F(r,"link"),F(i,"meta"),a()}const N={update:Z};var z=N;const R={title:"Wavelovers",metaTags:[{name:"keywords",content:"Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°"},{name:"description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:title",content:"Wavelovers"},{name:"og:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:url",content:"https://wavelovers.ru/"},{name:"twitter:title",content:"Wavelovers"},{name:"twitter:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/"}]};var H=R;const Q={title:"Wavelovers – Custom",metaTags:[{name:"keywords",content:"Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°"},{name:"description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:title",content:"Wavelovers – Custom"},{name:"og:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:url",content:"https://wavelovers.ru/custom"},{name:"twitter:title",content:"Wavelovers – Custom"},{name:"twitter:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/custom"}]};var B=Q;const K={title:"Wavelovers – Manual",metaTags:[{name:"keywords",content:"Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°"},{name:"description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:title",content:"Wavelovers – Manual"},{name:"og:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:url",content:"https://wavelovers.ru/manual"},{name:"twitter:title",content:"Wavelovers – Manual"},{name:"twitter:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/manual"}]};var Y=K;const J={title:"Wavelovers – Diagnostic",metaTags:[{name:"keywords",content:"Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°"},{name:"description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:title",content:"Wavelovers – Diagnostic"},{name:"og:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."},{name:"og:url",content:"https://wavelovers.ru/diagnostic"},{name:"twitter:title",content:"Wavelovers – Diagnostic"},{name:"twitter:description",content:"Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/diagnostic"}]};var X=J;const $={title:"Wavelovers – FAQ",metaTags:[{name:"keywords",content:"Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, FAQ, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы"},{name:"description",content:"Wavelovers. Frequently asked questions page."},{name:"og:title",content:"Wavelovers – FAQ"},{name:"og:description",content:"Wavelovers. Frequently asked questions page."},{name:"og:url",content:"https://wavelovers.ru/faq"},{name:"twitter:title",content:"Wavelovers – FAQ"},{name:"twitter:description",content:"Wavelovers. Frequently asked questions page."}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/faq"}]};var ee=$;const te={title:"Wavelovers – About",metaTags:[{name:"keywords",content:"Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, advertise, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°"},{name:"description",content:"Wavelovers. Page with information about the project and data on donations."},{name:"og:title",content:"Wavelovers – About"},{name:"og:description",content:"Wavelovers. Page with information about the project and data on donations."},{name:"og:url",content:"https://wavelovers.ru/about"},{name:"twitter:title",content:"Wavelovers – About"},{name:"twitter:description",content:"Wavelovers. Page with information about the project and data on donations."}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/about"}]};var ae=te;const ne={title:"Wavelovers – Donate",metaTags:[{name:"keywords",content:"Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Donate, Support, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Π·Π°Π΄ΠΎΠ½Π°Ρ‚ΠΈΡ‚ΡŒ, ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠΌΠΎΡ‡ΡŒ, ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ"},{name:"description",content:"Wavelovers. Donate to the author."},{name:"og:title",content:"Wavelovers – Donate"},{name:"og:description",content:"Wavelovers. Donate to the author."},{name:"og:url",content:"https://wavelovers.ru/donate"},{name:"twitter:title",content:"Wavelovers – Donate"},{name:"twitter:description",content:"Wavelovers. Donate to the author."}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/donate"}]};var oe=ne;const re={title:"Wavelovers – Page not found",metaTags:[{name:"og:title",content:"Wavelovers – Page not found"},{name:"og:url",content:"https://wavelovers.ru/404"}],linkTags:[{rel:"canonical",href:"https://wavelovers.ru/404"}]};var ie=re;const se=[{path:"/",name:"patterns-view",component:()=>a.e(709).then(a.bind(a,9709)),meta:H},{path:"/custom",name:"custom-view",component:()=>a.e(219).then(a.bind(a,219)),meta:B},{path:"/manual",name:"manual-view",component:()=>a.e(807).then(a.bind(a,6807)),meta:Y},{path:"/diagnostic",name:"diagnostic-view",component:()=>a.e(582).then(a.bind(a,6582)),meta:X},{path:"/faq",name:"faq-view",component:()=>a.e(645).then(a.bind(a,645)),meta:ee},{path:"/about",name:"about-view",component:()=>a.e(672).then(a.bind(a,2672)),meta:ae},{path:"/donate",name:"donate-view",component:()=>a.e(66).then(a.bind(a,1066)),meta:oe},{path:"/404",name:"404",component:()=>a.e(531).then(a.bind(a,4066)),meta:ie},{path:"/:catchAll(.*)*",redirect:"/404"}];var ce=se;const de=[{query:"/?custom",path:"/custom"},{query:"/?manual",path:"/manual"},{query:"/?diagnostic",path:"/diagnostic"},{query:"/?faq",path:"/faq"},{query:"/?about",path:"/about"},{query:"/?donate",path:"/donate"}];var ue=de;const ve=(0,U.p7)({history:(0,U.PO)("/"),routes:ce});ve.beforeEach(((e,t,a)=>{x.update(e,t,a,ve,ue),z.update(e,t,a)}));var le=ve;(0,n.ri)(D).use(c.Z).use(le).mount("#app")},1746:function(e,t,a){a.d(t,{Z:function(){return l}});var n=a(65),o=a(2482);class r{constructor(e){(0,o.Z)(this,"unit",void 0),(0,o.Z)(this,"id",void 0),(0,o.Z)(this,"canVibrate",void 0),(0,o.Z)(this,"isVibrating",void 0),(0,o.Z)(this,"interval",void 0),this.unit=e,this.id=Date.now(),this.canVibrate=!!this.unit.vibrationActuator,this.isVibrating=!1,this.update=this.update.bind(this),this.interval=setInterval(this.update,1)}update(){const e=navigator.getGamepads();this.unit=e[this.unit.index]}async loop(e){this.isVibrating=!0;const t=10;while(!0===this.isVibrating)for(let a=0;asetTimeout(t,e)))}}var i=r;const s={state:()=>({gamepads:[]}),getters:{gamepads:function(e){return e.gamepads}},mutations:{addGamepad:function(e,t){e.gamepads.push(t)},deleteGamepad:function(e,t){e.gamepads.splice(t,1)}},actions:{addGamepad:function(e,t){const a=t;e.getters.gamepads.length>=1||e.commit("addGamepad",new i(a.gamepad))},deleteGamepad:function(e,t){e.getters.gamepads.forEach(((a,n)=>{a.unit.id===t.gamepad.id&&e.commit("deleteGamepad",n)}))},loop:function(e,t){e.getters.gamepads.forEach((e=>{e.loop(t)}))},vibrate:function(e,t){e.getters.gamepads.forEach((e=>{e.vibrate(t)}))},reset:function(e){e.getters.gamepads.forEach((e=>{e.reset()}))}}};var c=s;const d={state:()=>({patterns:[]}),getters:{patterns:function(e){return e.patterns}},mutations:{setPatterns:function(e,t){e.patterns=t}},actions:{loadPatterns:async function(e){const t="https://wavelovers.ru/assets/patterns.json";try{const a=await fetch(t);if(a.ok){const t=await a.json();e.commit("setPatterns",t)}else console.log("Connect to the Internet for download more patterns...")}catch(a){console.log(a)}}}};var u=d;const v=(0,n.MT)({state:()=>({mode:0,isActive:!1}),getters:{mode:function(e){return e.mode},isActive:function(e){return e.isActive}},mutations:{setMode:function(e,t){e.mode=t},setIsActive:function(e,t){e.isActive=t}},actions:{setMode:function(e,t){e.commit("setMode",t)},setIsActive:function(e,t){e.commit("setIsActive",t)},change:function(e,t){e.getters.mode===t?e.dispatch("setIsActive",!e.getters.isActive):(e.dispatch("setIsActive",!0),e.dispatch("setMode",t)),!0===e.getters.isActive?(e.dispatch("reset"),e.dispatch("loop",e.getters.patterns[e.getters.mode].pattern)):e.dispatch("reset")},startCustom:function(e,t){e.dispatch("setIsActive",!1),e.dispatch("setMode",0),e.dispatch("reset"),e.dispatch("loop",t)}},modules:{MGamepads:c,MPatterns:u}});var l=v}},t={};function a(n){var o=t[n];if(void 0!==o)return o.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,a),r.exports}a.m=e,function(){var e=[];a.O=function(t,n,o,r){if(!n){var i=1/0;for(u=0;u=r)&&Object.keys(a.O).every((function(e){return a.O[e](n[c])}))?n.splice(c--,1):(s=!1,r0&&e[u-1][2]>r;u--)e[u]=e[u-1];e[u]=[n,o,r]}}(),function(){a.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return a.d(t,{a:t}),t}}(),function(){a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}}(),function(){a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,n){return a.f[n](e,t),t}),[]))}}(),function(){a.u=function(e){return"js/"+e+"."+{66:"54b2ec35",219:"2a2a502d",531:"6af13e76",582:"a8f6467f",645:"b32a0b62",672:"270ec4e0",709:"b171ad0f",807:"d54b1ac1"}[e]+".js"}}(),function(){a.miniCssF=function(e){return"css/"+e+"."+{66:"bb6440f7",219:"c3fb6094",582:"266e2dcc",672:"278b2bb3",709:"ef4a4981",807:"d84ba812"}[e]+".css"}}(),function(){a.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="wavelovers:";a.l=function(n,o,r,i){if(e[n])e[n].push(o);else{var s,c;if(void 0!==r)for(var d=document.getElementsByTagName("script"),u=0;u [\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"li\", _hoisted_8, [\n _createVNode(_component_router_link, { to: \"/faq\" }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"li\", _hoisted_10, [\n _createVNode(_component_router_link, { to: \"/about\" }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"li\", _hoisted_12, [\n _createVNode(_component_router_link, { to: \"/donate\" }, {\n default: _withCtx(() => [\n _hoisted_13\n ]),\n _: 1\n })\n ])\n ])\n ])\n ])\n ]))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'HeaderItem',\r\n });\r\n","import { render } from \"./HeaderItem.vue?vue&type=template&id=27217e3d&ts=true\"\nimport script from \"./HeaderItem.vue?vue&type=script&lang=ts\"\nexport * from \"./HeaderItem.vue?vue&type=script&lang=ts\"\n\nimport \"./HeaderItem.vue?vue&type=style&index=0&id=27217e3d&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 { createElementVNode as _createElementVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"footer\" }\nconst _hoisted_2 = /*#__PURE__*/_createStaticVNode(\"
Β© 2022 Wavelovers. Content licensed under GNU General Public License v3.0
This site is open source. Improve this page.
Created byEugene Serb
\", 1)\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"footer\", _hoisted_1, _hoisted_3))\n}","\r\n import { defineComponent } from 'vue';\r\n\r\n export default defineComponent({\r\n name: 'FooterItem',\r\n });\r\n","import { render } from \"./FooterItem.vue?vue&type=template&id=494b1bc6&ts=true\"\nimport script from \"./FooterItem.vue?vue&type=script&lang=ts\"\nexport * from \"./FooterItem.vue?vue&type=script&lang=ts\"\n\nimport \"./FooterItem.vue?vue&type=style&index=0&id=494b1bc6&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 HeaderItem from '@/components/HeaderItem.vue';\r\n import FooterItem from '@/components/FooterItem.vue';\r\n\r\n export default defineComponent({\r\n name: 'App',\r\n components: {\r\n HeaderItem: HeaderItem,\r\n FooterItem: FooterItem,\r\n },\r\n methods: {\r\n addGamepad: function (event: GamepadEvent): void {\r\n store.dispatch('addGamepad', event);\r\n },\r\n deleteGamepad: function (event: GamepadEvent): void {\r\n store.dispatch('deleteGamepad', event);\r\n },\r\n addEventListeners: function (): void {\r\n window.addEventListener('gamepadconnected', this.addGamepad);\r\n window.addEventListener('gamepaddisconnected', this.deleteGamepad);\r\n },\r\n removeEventListeners: function (): void {\r\n window.removeEventListener('gamepadconnected', this.addGamepad);\r\n window.removeEventListener('gamepaddisconnected', this.deleteGamepad);\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=d319ea34&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 {\r\n Router, NavigationGuardNext, RouteLocationNormalized\r\n} from \"vue-router\";\r\nimport IQueryRoute from '@/router/models/IQueryRoute';\r\n\r\nfunction updateRoute(\r\n to: RouteLocationNormalized,\r\n from: RouteLocationNormalized,\r\n next: NavigationGuardNext,\r\n router: Router,\r\n routes: Array\r\n): void {\r\n routes.forEach((route) => {\r\n if (route.query === to.fullPath) {\r\n router.push(route.path);\r\n }\r\n });\r\n return next();\r\n}\r\n\r\nconst QueryRouter = {\r\n update: updateRoute,\r\n};\r\n\r\nexport default QueryRouter;\r\n\r\n","import {\r\n NavigationGuardNext, RouteLocationNormalized, RouteRecordNormalized\r\n} from \"vue-router\";\r\n\r\nfunction appendTags(tagsArray: object[], type: string) {\r\n tagsArray.map((meta: object) => {\r\n const tag = document.createElement(type);\r\n (Object.keys(meta) as Array)\r\n .forEach((key) => {\r\n tag.setAttribute(key, meta[key] as string);\r\n });\r\n tag.setAttribute('data-vue-router-controlled', '');\r\n return tag;\r\n }).forEach(tag => document.head.appendChild(tag));\r\n}\r\n\r\nfunction updateMetatag(\r\n to: RouteLocationNormalized,\r\n from: RouteLocationNormalized,\r\n next: NavigationGuardNext\r\n) {\r\n const nearestWithTitle: RouteRecordNormalized =\r\n to.matched.slice().reverse()\r\n .find(r => r.meta && r.meta.title) as RouteRecordNormalized;\r\n const nearestWithMeta: RouteRecordNormalized =\r\n to.matched.slice().reverse()\r\n .find(r => r.meta && r.meta.metaTags && r.meta.linkTags) as RouteRecordNormalized;\r\n if (nearestWithTitle) {\r\n document.title = nearestWithTitle.meta.title as string;\r\n }\r\n Array.from(document.querySelectorAll('[data-vue-router-controlled]'))\r\n .map(el => {\r\n if (el.parentNode) {\r\n el.parentNode.removeChild(el);\r\n }\r\n });\r\n if (!nearestWithMeta) return next();\r\n const linkTags: object[] = nearestWithMeta.meta.linkTags as object[];\r\n const metaTags: object[] = nearestWithMeta.meta.metaTags as object[];\r\n appendTags(linkTags, 'link');\r\n appendTags(metaTags, 'meta');\r\n return next();\r\n}\r\n\r\nconst MetaTagUpdater = {\r\n update: updateMetatag,\r\n};\r\n\r\nexport default MetaTagUpdater;\r\n\r\n","const meta = {\r\n title: 'Wavelovers',\r\n metaTags: [\r\n {\r\n name: 'keywords',\r\n content: 'Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°',\r\n },\r\n {\r\n name: 'description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers',\r\n },\r\n {\r\n name: 'og:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/',\r\n },\r\n {\r\n name: 'twitter:title',\r\n content: 'Wavelovers',\r\n },\r\n {\r\n name: 'twitter:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","const meta = {\r\n title: 'Wavelovers – Custom',\r\n metaTags: [\r\n {\r\n name: 'keywords',\r\n content: 'Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°',\r\n },\r\n {\r\n name: 'description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers – Custom',\r\n },\r\n {\r\n name: 'og:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/custom',\r\n },\r\n {\r\n name: 'twitter:title',\r\n content: 'Wavelovers – Custom',\r\n },\r\n {\r\n name: 'twitter:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/custom',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","const meta = {\r\n title: 'Wavelovers – Manual',\r\n metaTags: [\r\n {\r\n name: 'keywords',\r\n content: 'Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°',\r\n },\r\n {\r\n name: 'description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers – Manual',\r\n },\r\n {\r\n name: 'og:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/manual',\r\n },\r\n {\r\n name: 'twitter:title',\r\n content: 'Wavelovers – Manual',\r\n },\r\n {\r\n name: 'twitter:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/manual',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","const meta = {\r\n title: 'Wavelovers – Diagnostic',\r\n metaTags: [\r\n {\r\n name: 'keywords',\r\n content: 'Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°',\r\n },\r\n {\r\n name: 'description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers – Diagnostic',\r\n },\r\n {\r\n name: 'og:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/diagnostic',\r\n },\r\n {\r\n name: 'twitter:title',\r\n content: 'Wavelovers – Diagnostic',\r\n },\r\n {\r\n name: 'twitter:description',\r\n content: 'Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/diagnostic',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","const meta = {\r\n title: 'Wavelovers – FAQ',\r\n metaTags: [\r\n {\r\n name: 'keywords',\r\n content: 'Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, FAQ, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы',\r\n },\r\n {\r\n name: 'description',\r\n content: 'Wavelovers. Frequently asked questions page.',\r\n },\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers – FAQ',\r\n },\r\n {\r\n name: 'og:description',\r\n content: 'Wavelovers. Frequently asked questions page.',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/faq',\r\n },\r\n {\r\n name: 'twitter:title',\r\n content: 'Wavelovers – FAQ',\r\n },\r\n {\r\n name: 'twitter:description',\r\n content: 'Wavelovers. Frequently asked questions page.',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/faq',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","const meta = {\r\n title: 'Wavelovers – About',\r\n metaTags: [\r\n {\r\n name: 'keywords',\r\n content: 'Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, advertise, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°',\r\n },\r\n {\r\n name: 'description',\r\n content: 'Wavelovers. Page with information about the project and data on donations.',\r\n },\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers – About',\r\n },\r\n {\r\n name: 'og:description',\r\n content: 'Wavelovers. Page with information about the project and data on donations.',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/about',\r\n },\r\n {\r\n name: 'twitter:title',\r\n content: 'Wavelovers – About',\r\n },\r\n {\r\n name: 'twitter:description',\r\n content: 'Wavelovers. Page with information about the project and data on donations.',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/about',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","const meta = {\r\n title: 'Wavelovers – Donate',\r\n metaTags: [\r\n {\r\n name: 'keywords',\r\n content: 'Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Gamepad Massager, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, Donate, Support, Π³Π΅ΠΉΠΌΠΏΠ°Π΄, дТойстик, Π²ΠΈΠ±Ρ€Π°Ρ‚ΠΎΡ€, вибромассаТСр, Π²ΠΈΠ±Ρ€ΠΎ, вибромассаТёр ΠΈΠ· Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°, тСстСр Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Π·Π°Π΄ΠΎΠ½Π°Ρ‚ΠΈΡ‚ΡŒ, ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠΌΠΎΡ‡ΡŒ, ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ',\r\n },\r\n {\r\n name: 'description',\r\n content: 'Wavelovers. Donate to the author.',\r\n },\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers – Donate',\r\n },\r\n {\r\n name: 'og:description',\r\n content: 'Wavelovers. Donate to the author.',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/donate',\r\n },\r\n {\r\n name: 'twitter:title',\r\n content: 'Wavelovers – Donate',\r\n },\r\n {\r\n name: 'twitter:description',\r\n content: 'Wavelovers. Donate to the author.',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/donate',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","const meta = {\r\n title: 'Wavelovers – Page not found',\r\n metaTags: [\r\n {\r\n name: 'og:title',\r\n content: 'Wavelovers – Page not found',\r\n },\r\n {\r\n name: 'og:url',\r\n content: 'https://wavelovers.ru/404',\r\n },\r\n ],\r\n linkTags: [\r\n {\r\n rel: 'canonical',\r\n href: 'https://wavelovers.ru/404',\r\n },\r\n ],\r\n};\r\n\r\nexport default meta;\r\n","import { RouteRecordRaw } from 'vue-router';\r\nimport metaPatterns from '@/router/assets/metas/Patterns';\r\nimport metaCustom from '@/router/assets/metas/Custom';\r\nimport metaManual from '@/router/assets/metas/Manual';\r\nimport metaDiagnostic from '@/router/assets/metas/Diagnostic';\r\nimport metaFaq from '@/router/assets/metas/Faq';\r\nimport metaAbout from '@/router/assets/metas/About';\r\nimport metaDonate from '@/router/assets/metas/Donate';\r\nimport meta404 from '@/router/assets/metas/404';\r\n\r\nconst routes: Array = [\r\n {\r\n path: '/',\r\n name: 'patterns-view',\r\n component: () => import('@/views/PatternsView.vue'),\r\n meta: metaPatterns,\r\n },\r\n {\r\n path: '/custom',\r\n name: 'custom-view',\r\n component: () => import('@/views/CustomView.vue'),\r\n meta: metaCustom,\r\n },\r\n {\r\n path: '/manual',\r\n name: 'manual-view',\r\n component: () => import('@/views/ManualView.vue'),\r\n meta: metaManual,\r\n },\r\n {\r\n path: '/diagnostic',\r\n name: 'diagnostic-view',\r\n component: () => import('@/views/DiagnosticView.vue'),\r\n meta: metaDiagnostic,\r\n },\r\n {\r\n path: '/faq',\r\n name: 'faq-view',\r\n component: () => import('@/views/FaqView.vue'),\r\n meta: metaFaq,\r\n },\r\n {\r\n path: '/about',\r\n name: 'about-view',\r\n component: () => import('@/views/AboutView.vue'),\r\n meta: metaAbout,\r\n },\r\n {\r\n path: '/donate',\r\n name: 'donate-view',\r\n component: () => import('@/views/DonateView.vue'),\r\n meta: metaDonate,\r\n },\r\n {\r\n path: '/404',\r\n name: '404',\r\n component: () => import('@/views/NotFoundView.vue'),\r\n meta: meta404,\r\n },\r\n {\r\n path: '/:catchAll(.*)*',\r\n redirect: '/404',\r\n },\r\n];\r\n\r\nexport default routes;\r\n","import IQueryRoute from '@/router/models/IQueryRoute';\r\n\r\nconst queries: Array = [\r\n {\r\n query: '/?custom',\r\n path: '/custom',\r\n },\r\n {\r\n query: '/?manual',\r\n path: '/manual',\r\n },\r\n {\r\n query: '/?diagnostic',\r\n path: '/diagnostic',\r\n },\r\n {\r\n query: '/?faq',\r\n path: '/faq',\r\n },\r\n {\r\n query: '/?about',\r\n path: '/about',\r\n },\r\n {\r\n query: '/?donate',\r\n path: '/donate',\r\n }\r\n];\r\n\r\nexport default queries;\r\n","import {\r\n createRouter, createWebHistory,\r\n NavigationGuardNext, RouteLocationNormalized\r\n} from 'vue-router';\r\nimport QueryRouter from '@/router/modules/QueryRouter';\r\nimport MetaTagUpdater from '@/router/modules/MetaTagUpdater';\r\nimport routes from '@/router/assets/routes';\r\nimport queries from '@/router/assets/queries';\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes,\r\n});\r\n\r\nrouter.beforeEach((\r\n to: RouteLocationNormalized,\r\n from: RouteLocationNormalized,\r\n next: NavigationGuardNext\r\n) => {\r\n QueryRouter.update(to, from, next, router, queries);\r\n MetaTagUpdater.update(to, from, next)\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)\r\n .use(store)\r\n .use(router)\r\n .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\r\n unit: IGamepad;\r\n readonly id: number;\r\n readonly canVibrate: boolean;\r\n isVibrating: boolean;\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.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 async loop(pattern: TPatternUnit[]): Promise {\r\n this.isVibrating = true;\r\n const offsetTime = 10;\r\n while (this.isVibrating === true) {\r\n for (let i = 0; i < pattern.length; i++) {\r\n if (this.isVibrating === true) {\r\n this.vibrate(pattern[i]);\r\n await this.sleep(pattern[i].startDelay + pattern[i].duration - offsetTime);\r\n } else {\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n vibrate(pattern: TPatternUnit): void {\r\n this.unit.vibrationActuator.playEffect('dual-rumble', pattern);\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 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 loop: function (\r\n context: ActionContext,\r\n pattern: TPatternUnit[]\r\n ): void {\r\n context.getters.gamepads.forEach((gamepad: Vibrator) => {\r\n gamepad.loop(pattern);\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 // eslint-disable-next-line\r\n console.log('Connect to the Internet for download more patterns...');\r\n }\r\n } catch (error) {\r\n // eslint-disable-next-line\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 '@/store/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('loop', context.getters.patterns[context.getters.mode].pattern);\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('loop', 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 + \".\" + {\"66\":\"54b2ec35\",\"219\":\"2a2a502d\",\"531\":\"6af13e76\",\"582\":\"a8f6467f\",\"645\":\"b32a0b62\",\"672\":\"270ec4e0\",\"709\":\"b171ad0f\",\"807\":\"d54b1ac1\"}[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 + \".\" + {\"66\":\"bb6440f7\",\"219\":\"c3fb6094\",\"582\":\"266e2dcc\",\"672\":\"278b2bb3\",\"709\":\"ef4a4981\",\"807\":\"d84ba812\"}[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 = {\"66\":1,\"219\":1,\"582\":1,\"672\":1,\"709\":1,\"807\":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__(9128); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_hoisted_1","class","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","_component_HeaderItem","_resolveComponent","_component_router_view","_component_FooterItem","_openBlock","_createElementBlock","_Fragment","_createVNode","_createElementVNode","_hoisted_3","translate","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_createTextVNode","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_component_router_link","to","default","_withCtx","_","defineComponent","name","__exports__","_createStaticVNode","components","HeaderItem","FooterItem","methods","addGamepad","event","store","deleteGamepad","addEventListeners","window","addEventListener","this","removeEventListeners","removeEventListener","mounted","unmounted","updateRoute","from","next","router","routes","forEach","route","query","fullPath","push","path","QueryRouter","update","appendTags","tagsArray","type","map","meta","tag","document","createElement","Object","keys","key","setAttribute","head","appendChild","updateMetatag","nearestWithTitle","matched","slice","reverse","find","r","title","nearestWithMeta","metaTags","linkTags","Array","querySelectorAll","el","parentNode","removeChild","MetaTagUpdater","content","rel","href","component","metaPatterns","metaCustom","metaManual","metaDiagnostic","metaFaq","metaAbout","metaDonate","meta404","redirect","queries","createRouter","history","createWebHistory","process","beforeEach","createApp","App","use","mount","Vibrator","constructor","unit","id","Date","now","canVibrate","vibrationActuator","isVibrating","bind","interval","setInterval","gamepads","navigator","getGamepads","index","pattern","offsetTime","i","length","vibrate","sleep","startDelay","duration","playEffect","reset","ms","Promise","resolve","setTimeout","MGamepads","state","getters","mutations","gamepad","splice","actions","context","iEvent","commit","loop","MPatterns","patterns","setPatterns","loadPatterns","async","url","response","fetch","ok","json","console","log","error","createStore","mode","isActive","setMode","setIsActive","change","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","every","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","getElementsByTagName","s","getAttribute","charset","timeout","nc","src","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","target","Symbol","toStringTag","value","p","createStylesheet","fullhref","reject","linkTag","onLinkComplete","errorType","realHref","err","Error","code","request","findStylesheet","existingLinkTags","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/package-lock.json b/package-lock.json index 03860be..51d095c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "wavelovers", - "version": "1.0.17", + "version": "1.0.18", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "wavelovers", - "version": "1.0.17", + "version": "1.0.18", "license": "GNU GPL v3", "dependencies": { "core-js": "^3.8.3", diff --git a/package.json b/package.json index 22bc772..d583309 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "wavelovers", "description": "Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad.", "keywords": [ "wavelovers", "gamepad-vibrator", "gamepad-test-tool", "gamepad-vibration-test-tool" ], - "version": "1.0.17", + "version": "1.0.18", "license": "GNU GPL v3", "homepage": "https://wavelovers.ru/", "author": { diff --git a/src/App.vue b/src/App.vue index d3ad788..9d8e15c 100644 --- a/src/App.vue +++ b/src/App.vue @@ -44,4 +44,3 @@ }, }); - diff --git a/src/components/AppCustom.vue b/src/components/AppCustom.vue index 32874d9..dd30213 100644 --- a/src/components/AppCustom.vue +++ b/src/components/AppCustom.vue @@ -122,4 +122,3 @@ } } - diff --git a/src/components/AppDiagnostic.vue b/src/components/AppDiagnostic.vue index 72d0475..450dd73 100644 --- a/src/components/AppDiagnostic.vue +++ b/src/components/AppDiagnostic.vue @@ -30,4 +30,3 @@ }, }); - diff --git a/src/components/AppManual.vue b/src/components/AppManual.vue index 444d547..a9eecb6 100644 --- a/src/components/AppManual.vue +++ b/src/components/AppManual.vue @@ -179,4 +179,3 @@ } } - diff --git a/src/components/AppPatterns.vue b/src/components/AppPatterns.vue index baca22c..fd20b86 100644 --- a/src/components/AppPatterns.vue +++ b/src/components/AppPatterns.vue @@ -55,4 +55,3 @@ }, }); - diff --git a/src/components/DiagnosticItem.vue b/src/components/DiagnosticItem.vue index d9dc305..edb5f1d 100644 --- a/src/components/DiagnosticItem.vue +++ b/src/components/DiagnosticItem.vue @@ -82,4 +82,3 @@ color: var(--color-background); } - diff --git a/src/components/FooterItem.vue b/src/components/FooterItem.vue index 875fa54..788c333 100644 --- a/src/components/FooterItem.vue +++ b/src/components/FooterItem.vue @@ -51,4 +51,3 @@ font-size: 32px; } - diff --git a/src/components/GamepadItem.vue b/src/components/GamepadItem.vue index 83f5be1..5f21a59 100644 --- a/src/components/GamepadItem.vue +++ b/src/components/GamepadItem.vue @@ -31,4 +31,3 @@ color: var(--color-white); } - diff --git a/src/components/GamepadList.vue b/src/components/GamepadList.vue index f7a1487..4a8ac85 100644 --- a/src/components/GamepadList.vue +++ b/src/components/GamepadList.vue @@ -31,4 +31,3 @@ gap: 16px; } - diff --git a/src/components/HeaderItem.vue b/src/components/HeaderItem.vue index 44699ef..3b42275 100644 --- a/src/components/HeaderItem.vue +++ b/src/components/HeaderItem.vue @@ -141,4 +141,3 @@ } } - diff --git a/src/components/MessageItem.vue b/src/components/MessageItem.vue index b2068ce..377b5f5 100644 --- a/src/components/MessageItem.vue +++ b/src/components/MessageItem.vue @@ -30,4 +30,3 @@ } } - diff --git a/src/components/NavigationList.vue b/src/components/NavigationList.vue index 43084e8..6d65f71 100644 --- a/src/components/NavigationList.vue +++ b/src/components/NavigationList.vue @@ -31,4 +31,3 @@ text-decoration: none; } - diff --git a/src/components/PatternItem.vue b/src/components/PatternItem.vue index ae7892f..3c38a27 100644 --- a/src/components/PatternItem.vue +++ b/src/components/PatternItem.vue @@ -98,4 +98,3 @@ color: var(--color-pattern-text); } - diff --git a/src/components/PatternList.vue b/src/components/PatternList.vue index 5eb2dd7..e8af8e5 100644 --- a/src/components/PatternList.vue +++ b/src/components/PatternList.vue @@ -54,4 +54,3 @@ } } - diff --git a/src/main.ts b/src/main.ts index 872b817..91b4f92 100644 --- a/src/main.ts +++ b/src/main.ts @@ -7,4 +7,3 @@ createApp(App) .use(store) .use(router) .mount('#app'); - diff --git a/src/models/IGamepad.ts b/src/models/IGamepad.ts index 1637361..5dfe573 100644 --- a/src/models/IGamepad.ts +++ b/src/models/IGamepad.ts @@ -13,4 +13,3 @@ interface IGamepad { } export default IGamepad; - diff --git a/src/models/IGamepadButton.ts b/src/models/IGamepadButton.ts index de035e4..641fc08 100644 --- a/src/models/IGamepadButton.ts +++ b/src/models/IGamepadButton.ts @@ -5,4 +5,3 @@ interface IGamepadButton { } export default IGamepadButton; - diff --git a/src/models/IGamepadEvent.ts b/src/models/IGamepadEvent.ts index bb4a395..cefc8b9 100644 --- a/src/models/IGamepadEvent.ts +++ b/src/models/IGamepadEvent.ts @@ -5,4 +5,3 @@ interface IGamepadEvent { } export default IGamepadEvent; - diff --git a/src/models/IPatternUnit.ts b/src/models/IPatternUnit.ts index 5bc3bb0..0c27396 100644 --- a/src/models/IPatternUnit.ts +++ b/src/models/IPatternUnit.ts @@ -6,4 +6,3 @@ interface IPatternUnit { } export default IPatternUnit; - diff --git a/src/models/IVibrationActuator.ts b/src/models/IVibrationActuator.ts index 94ba5ad..3719ab0 100644 --- a/src/models/IVibrationActuator.ts +++ b/src/models/IVibrationActuator.ts @@ -7,4 +7,3 @@ interface IVibrationActuator { } export default IVibrationActuator; - diff --git a/src/models/IVibrator.ts b/src/models/IVibrator.ts index cdff81c..c00fe65 100644 --- a/src/models/IVibrator.ts +++ b/src/models/IVibrator.ts @@ -15,4 +15,3 @@ interface IVibrator { } export default IVibrator; - diff --git a/src/models/PatternUnit.ts b/src/models/PatternUnit.ts index 1619b40..ebee752 100644 --- a/src/models/PatternUnit.ts +++ b/src/models/PatternUnit.ts @@ -19,4 +19,3 @@ class PatternUnit implements IPatternUnit { } export default PatternUnit; - diff --git a/src/models/TPattern.ts b/src/models/TPattern.ts index ba3fdf8..b42ff66 100644 --- a/src/models/TPattern.ts +++ b/src/models/TPattern.ts @@ -8,4 +8,3 @@ type TPattern = { } export default TPattern; - diff --git a/src/models/TPatternUnit.ts b/src/models/TPatternUnit.ts index 04602db..0cd34c7 100644 --- a/src/models/TPatternUnit.ts +++ b/src/models/TPatternUnit.ts @@ -6,4 +6,3 @@ type TPatternUnit = { } export default TPatternUnit; - diff --git a/src/models/Vibrator.ts b/src/models/Vibrator.ts index bbfd16e..8882ff5 100644 --- a/src/models/Vibrator.ts +++ b/src/models/Vibrator.ts @@ -54,4 +54,3 @@ class Vibrator implements IVibrator { } export default Vibrator; - diff --git a/src/router/index.ts b/src/router/index.ts index 7a46f88..278e7cb 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -22,4 +22,3 @@ router.beforeEach(( }); export default router; - diff --git a/src/router/modules/MetaTagUpdater.ts b/src/router/modules/MetaTagUpdater.ts index 77c7636..1b36afb 100644 --- a/src/router/modules/MetaTagUpdater.ts +++ b/src/router/modules/MetaTagUpdater.ts @@ -3,15 +3,19 @@ import { } from "vue-router"; function appendTags(tagsArray: object[], type: string) { - tagsArray.map((meta: object) => { - const tag = document.createElement(type); - (Object.keys(meta) as Array) - .forEach((key) => { - tag.setAttribute(key, meta[key] as string); - }); - tag.setAttribute('data-vue-router-controlled', ''); - return tag; - }).forEach(tag => document.head.appendChild(tag)); + tagsArray.map( + (meta: object) => { + const tag = document.createElement(type); + + (Object.keys(meta) as Array) + .forEach((key) => { + tag.setAttribute(key, meta[key] as string); + }); + tag.setAttribute('data-vue-router-controlled', ''); + + return tag; + } + ).forEach(tag => document.head.appendChild(tag)); } function updateMetatag( @@ -19,26 +23,35 @@ function updateMetatag( from: RouteLocationNormalized, next: NavigationGuardNext ) { - const nearestWithTitle: RouteRecordNormalized = - to.matched.slice().reverse() - .find(r => r.meta && r.meta.title) as RouteRecordNormalized; - const nearestWithMeta: RouteRecordNormalized = - to.matched.slice().reverse() - .find(r => r.meta && r.meta.metaTags && r.meta.linkTags) as RouteRecordNormalized; - if (nearestWithTitle) { - document.title = nearestWithTitle.meta.title as string; - } Array.from(document.querySelectorAll('[data-vue-router-controlled]')) .map(el => { if (el.parentNode) { el.parentNode.removeChild(el); } }); - if (!nearestWithMeta) return next(); - const linkTags: object[] = nearestWithMeta.meta.linkTags as object[]; - const metaTags: object[] = nearestWithMeta.meta.metaTags as object[]; - appendTags(linkTags, 'link'); - appendTags(metaTags, 'meta'); + + const hasTitle: RouteRecordNormalized = + to.matched.slice().reverse() + .find(r => r.meta && r.meta.title) as RouteRecordNormalized; + const hasMetas: RouteRecordNormalized = + to.matched.slice().reverse() + .find(r => r.meta && r.meta.metaTags) as RouteRecordNormalized; + const hasLinks: RouteRecordNormalized = + to.matched.slice().reverse() + .find(r => r.meta && r.meta.linkTags) as RouteRecordNormalized; + + if (hasTitle) { + document.title = hasTitle.meta.title as string; + } + if (hasMetas) { + const metaTags: object[] = hasMetas.meta.metaTags as object[]; + appendTags(metaTags, 'meta'); + } + if (hasLinks) { + const linkTags: object[] = hasLinks.meta.linkTags as object[]; + appendTags(linkTags, 'link'); + } + return next(); } @@ -47,4 +60,3 @@ const MetaTagUpdater = { }; export default MetaTagUpdater; - diff --git a/src/router/modules/QueryRouter.ts b/src/router/modules/QueryRouter.ts index f44195e..03d853a 100644 --- a/src/router/modules/QueryRouter.ts +++ b/src/router/modules/QueryRouter.ts @@ -23,4 +23,3 @@ const QueryRouter = { }; export default QueryRouter; - diff --git a/src/shims-vue.d.ts b/src/shims-vue.d.ts index 1de65a3..b2f30d2 100644 --- a/src/shims-vue.d.ts +++ b/src/shims-vue.d.ts @@ -4,4 +4,3 @@ declare module '*.vue' { const component: DefineComponent<{}, {}, any>; export default component; }; - diff --git a/src/store/index.ts b/src/store/index.ts index 92b5d51..eeb39a5 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -60,4 +60,3 @@ const store: Store = createStore({ }); export default store; - diff --git a/src/store/models/IGamepadsState.ts b/src/store/models/IGamepadsState.ts index 2edee99..bbe127c 100644 --- a/src/store/models/IGamepadsState.ts +++ b/src/store/models/IGamepadsState.ts @@ -5,4 +5,3 @@ interface IGamepadsState { } export default IGamepadsState; - diff --git a/src/store/models/IPatternState.ts b/src/store/models/IPatternState.ts index 15a18ce..4069dd0 100644 --- a/src/store/models/IPatternState.ts +++ b/src/store/models/IPatternState.ts @@ -5,4 +5,3 @@ interface IPatternState { } export default IPatternState; - diff --git a/src/store/models/IRootState.ts b/src/store/models/IRootState.ts index 331eb36..04a441d 100644 --- a/src/store/models/IRootState.ts +++ b/src/store/models/IRootState.ts @@ -4,4 +4,3 @@ interface IRootState { } export default IRootState; - diff --git a/src/store/modules/MGamepads.ts b/src/store/modules/MGamepads.ts index 4f4083c..5a41631 100644 --- a/src/store/modules/MGamepads.ts +++ b/src/store/modules/MGamepads.ts @@ -72,4 +72,3 @@ const MGamepads: Module = { }; export default MGamepads; - diff --git a/src/store/modules/MPatterns.ts b/src/store/modules/MPatterns.ts index e2bc70a..7fb8b54 100644 --- a/src/store/modules/MPatterns.ts +++ b/src/store/modules/MPatterns.ts @@ -40,4 +40,3 @@ const MPatterns: Module = { }; export default MPatterns; - diff --git a/src/views/AboutView.vue b/src/views/AboutView.vue index a685d68..5638040 100644 --- a/src/views/AboutView.vue +++ b/src/views/AboutView.vue @@ -64,4 +64,3 @@ margin-bottom: 4px; } - diff --git a/src/views/CustomView.vue b/src/views/CustomView.vue index 59be505..c9508ea 100644 --- a/src/views/CustomView.vue +++ b/src/views/CustomView.vue @@ -14,4 +14,3 @@ }, }); - diff --git a/src/views/DiagnosticView.vue b/src/views/DiagnosticView.vue index 0c7d687..8742e59 100644 --- a/src/views/DiagnosticView.vue +++ b/src/views/DiagnosticView.vue @@ -14,4 +14,3 @@ }, }); - diff --git a/src/views/DonateView.vue b/src/views/DonateView.vue index 85956e0..a1bbd82 100644 --- a/src/views/DonateView.vue +++ b/src/views/DonateView.vue @@ -33,4 +33,3 @@ word-break: break-all; } - diff --git a/src/views/FaqView.vue b/src/views/FaqView.vue index bf83186..e354d5b 100644 --- a/src/views/FaqView.vue +++ b/src/views/FaqView.vue @@ -48,4 +48,3 @@ name: 'FaqView', }); - diff --git a/src/views/ManualView.vue b/src/views/ManualView.vue index 99dfd96..69b8136 100644 --- a/src/views/ManualView.vue +++ b/src/views/ManualView.vue @@ -14,4 +14,3 @@ }, }); - diff --git a/src/views/NotFoundView.vue b/src/views/NotFoundView.vue index 80e3433..31e09e1 100644 --- a/src/views/NotFoundView.vue +++ b/src/views/NotFoundView.vue @@ -14,4 +14,3 @@ name: 'NotFoundView', }); - diff --git a/src/views/PatternsView.vue b/src/views/PatternsView.vue index 1ad7d48..1c625f7 100644 --- a/src/views/PatternsView.vue +++ b/src/views/PatternsView.vue @@ -14,4 +14,3 @@ }, }); - diff --git a/tsconfig.json b/tsconfig.json index 52fadb9..9772821 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -38,4 +38,3 @@ "node_modules" ] } - diff --git a/vue.config.js b/vue.config.js index c26d5a6..93c1c2a 100644 --- a/vue.config.js +++ b/vue.config.js @@ -2,4 +2,3 @@ const { defineConfig } = require('@vue/cli-service'); module.exports = defineConfig({ transpileDependencies: true, }); -