Base game & server skeleton
No files matched your search
@@ -11,6 +11,7 @@
|
|||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: #2c3e50;
|
color: #2c3e50;
|
||||||
|
background-color: #475b6e;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
@@ -13,14 +13,26 @@ export default {
|
|||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
player: {
|
player: {
|
||||||
x: 0,
|
x: 100,
|
||||||
y: 0,
|
y: 100,
|
||||||
direction: 0,
|
angle: 0,
|
||||||
walls: []
|
targetAngle: 0,
|
||||||
|
walls: [],
|
||||||
|
lastWall: 0,
|
||||||
|
color: 'red'
|
||||||
},
|
},
|
||||||
|
players: [],
|
||||||
mouse: {
|
mouse: {
|
||||||
x: 0,
|
x: 0,
|
||||||
y: 0
|
y: 0
|
||||||
|
},
|
||||||
|
settings: {
|
||||||
|
playerSize: 10,
|
||||||
|
playerSpeed: 2,
|
||||||
|
playerTurnSpeed: 10,
|
||||||
|
wallSize: 8,
|
||||||
|
wallUpdate: 5,
|
||||||
|
arenaSize: 1000
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -35,30 +47,177 @@ export default {
|
|||||||
mounted () {
|
mounted () {
|
||||||
this.canvas.width = window.innerWidth
|
this.canvas.width = window.innerWidth
|
||||||
this.canvas.height = window.innerHeight
|
this.canvas.height = window.innerHeight
|
||||||
this.context.fillStyle = 'rgb(200, 0, 0)'
|
this.canvas.addEventListener('mousemove', this.mouseEvent)
|
||||||
this.context.fillRect(10, 10, 50, 50)
|
// setInterval(this.render, 1000 / 60)
|
||||||
|
|
||||||
this.context.fillStyle = 'rgba(0, 0, 200, 0.5)'
|
|
||||||
this.context.fillRect(30, 30, 50, 50)
|
|
||||||
setInterval(this.render, 1000 / 60)
|
setInterval(this.render, 1000 / 60)
|
||||||
|
setInterval(this.movePlayer, 100)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
render () {
|
render () {
|
||||||
this.renderBorders(this.player.x, this.player.y)
|
this.context.clearRect(0, 0, this.canvas.width, this.canvas.height)
|
||||||
this.renderPlayer()
|
this.renderBorders()
|
||||||
|
this.renderPlayer(this.player)
|
||||||
|
this.renderWalls(this.player.walls, this.player.color)
|
||||||
|
|
||||||
|
this.players.forEach(player => {
|
||||||
|
this.renderPlayer(player)
|
||||||
|
this.renderWalls(player.walls, player.color)
|
||||||
|
})
|
||||||
|
|
||||||
|
this.renderDebug()
|
||||||
|
|
||||||
|
this.checkPlayerColision()
|
||||||
|
this.updatePlayer()
|
||||||
},
|
},
|
||||||
renderBorders (x, y) {
|
renderBorders () {
|
||||||
this.context.strokeStyle = 'black'
|
this.context.strokeStyle = 'black'
|
||||||
this.context.lineWidth = 1
|
this.context.lineWidth = 1
|
||||||
this.context.strokeRect(this.canvas.width / 2 - x, this.canvas.height / 2 - y, 3000, 3000)
|
this.context.strokeRect(this.canvas.width / 2 - this.player.x, this.canvas.height / 2 - this.player.y, this.settings.arenaSize, this.settings.arenaSize)
|
||||||
},
|
},
|
||||||
renderPlayer () {
|
renderPlayer (player) {
|
||||||
this.context.strokeStyle = 'black'
|
this.context.save()
|
||||||
this.context.lineWidth = 3
|
|
||||||
this.context.strokeRect(this.player.x - 50, this.player.y - 50, this.player.x + 50, this.player.y + 50)
|
const canvasX = this.canvas.width / 2 + player.x - this.player.x
|
||||||
|
const canvasY = this.canvas.height / 2 + player.y - this.player.y
|
||||||
|
|
||||||
|
this.context.translate(canvasX, canvasY)
|
||||||
|
this.context.rotate(player.angle)
|
||||||
|
this.context.fillStyle = player.color
|
||||||
|
this.context.fillRect(-this.settings.playerSize, -this.settings.playerSize, this.settings.playerSize * 2, this.settings.playerSize * 2)
|
||||||
|
this.context.translate(0, 0)
|
||||||
|
|
||||||
|
this.context.restore()
|
||||||
|
},
|
||||||
|
renderWalls (walls, color) {
|
||||||
|
this.context.beginPath()
|
||||||
|
this.context.lineWidth = this.settings.wallSize
|
||||||
|
this.context.strokeStyle = color
|
||||||
|
walls.forEach(wall => {
|
||||||
|
const canvasX = this.canvas.width / 2 + wall.x - this.player.x
|
||||||
|
const canvasY = this.canvas.height / 2 + wall.y - this.player.y
|
||||||
|
this.context.lineTo(canvasX, canvasY)
|
||||||
|
})
|
||||||
|
this.context.lineTo(this.canvas.width / 2, this.canvas.height / 2)
|
||||||
|
this.context.stroke()
|
||||||
|
},
|
||||||
|
renderDebug () {
|
||||||
|
this.context.beginPath()
|
||||||
|
const canvasX = this.canvas.width / 2
|
||||||
|
const canvasY = this.canvas.height / 2
|
||||||
|
this.context.lineTo(canvasX, canvasY)
|
||||||
|
this.context.lineTo(this.mouse.x, this.mouse.y)
|
||||||
|
this.context.lineWidth = 1
|
||||||
|
this.context.strokeStyle = 'blue'
|
||||||
|
this.context.stroke()
|
||||||
|
|
||||||
|
const x = canvasX + 30 * Math.cos(this.player.angle) * 2
|
||||||
|
const y = canvasY + 30 * Math.sin(this.player.angle) * 2
|
||||||
|
this.context.beginPath()
|
||||||
|
this.context.lineTo(canvasX, canvasY)
|
||||||
|
this.context.lineTo(x, y)
|
||||||
|
this.context.lineWidth = 1
|
||||||
|
this.context.strokeStyle = 'yellow'
|
||||||
|
this.context.stroke()
|
||||||
|
|
||||||
|
this.context.beginPath()
|
||||||
|
this.context.arc(this.mouse.x, this.mouse.y, 25, 0, 2 * Math.PI, false)
|
||||||
|
this.context.lineWidth = 1
|
||||||
|
this.context.strokeStyle = 'yellow'
|
||||||
|
this.context.stroke()
|
||||||
|
|
||||||
|
const canvasX2 = this.canvas.width / 2
|
||||||
|
const canvasY2 = this.canvas.height / 2
|
||||||
|
this.context.beginPath()
|
||||||
|
this.context.arc(canvasX2, canvasY2, this.settings.playerSize, 0, 2 * Math.PI, false)
|
||||||
|
this.context.lineWidth = 1
|
||||||
|
this.context.strokeStyle = 'purple'
|
||||||
|
this.context.stroke()
|
||||||
|
|
||||||
|
this.context.fillText('player x: ' + this.player.x + ' y:' + this.player.y, 10, 10)
|
||||||
|
this.context.fillText('a:' + this.player.angle + ' a_t' + this.player.targetAngle, 10, 20)
|
||||||
|
this.context.fillText('canvasX: ' + canvasX + ' canvasY:' + canvasY, 10, 30)
|
||||||
|
this.context.fillText('walls: ' + this.player.walls.length, 10, 40)
|
||||||
},
|
},
|
||||||
mouseEvent (event) {
|
mouseEvent (event) {
|
||||||
|
var rect = this.canvas.getBoundingClientRect()
|
||||||
|
this.mouse.x = event.clientX - rect.left
|
||||||
|
this.mouse.y = event.clientY - rect.top
|
||||||
|
|
||||||
|
var dx = this.mouse.x - this.canvas.width / 2
|
||||||
|
var dy = this.mouse.y - this.canvas.height / 2
|
||||||
|
|
||||||
|
this.player.targetAngle = Math.atan2(dy, dx)
|
||||||
|
},
|
||||||
|
updatePlayer () {
|
||||||
|
this.player.lastWall++
|
||||||
|
if (this.player.lastWall > this.settings.wallUpdate) {
|
||||||
|
this.player.walls.push({ x: this.player.x, y: this.player.y })
|
||||||
|
this.player.lastWall = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
this.player.x += this.settings.playerSpeed * Math.cos(this.player.angle)
|
||||||
|
this.player.y += this.settings.playerSpeed * Math.sin(this.player.angle)
|
||||||
|
|
||||||
|
this.player.angle = this.player.targetAngle
|
||||||
|
// angle lag
|
||||||
|
/*
|
||||||
|
if (this.player.targetAngle !== this.player.angle) {
|
||||||
|
const delta = this.player.targetAngle - this.player.angle
|
||||||
|
if (delta < 0) this.player.angle += delta / this.settings.playerTurnSpeed
|
||||||
|
if (delta > 0) this.player.angle += delta / this.settings.playerTurnSpeed
|
||||||
|
if (delta <= 0.1 && delta >= -0.1) this.player.angle = this.player.targetAngle
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
},
|
||||||
|
checkPlayerColision () {
|
||||||
|
const playerX = this.player.x
|
||||||
|
const playerY = this.player.y
|
||||||
|
// BORDERS
|
||||||
|
if (playerX - this.settings.playerSize < 0 ||
|
||||||
|
playerX + this.settings.playerSize > this.settings.arenaSize ||
|
||||||
|
playerY - this.settings.playerSize < 0 ||
|
||||||
|
playerY + this.settings.playerSize > this.settings.arenaSize
|
||||||
|
) {
|
||||||
|
this.context.fillText('DED BORDER', this.canvas.width / 2, this.canvas.height / 2)
|
||||||
|
}
|
||||||
|
|
||||||
|
// WALLS
|
||||||
|
for (var i = 0; i < this.player.walls.length - 2; i++) {
|
||||||
|
const wallA = this.player.walls[i]
|
||||||
|
const wallB = this.player.walls[i + 1]
|
||||||
|
if (this.isCloseToWall(wallA.x, wallA.y, wallB.x, wallB.y, playerX, playerY, this.settings.playerSize)) {
|
||||||
|
if (this.isCrossingLine(wallA.x, wallA.y, wallB.x, wallB.y, playerX, playerY, this.settings.playerSize)) {
|
||||||
|
this.context.fillText('DED WALL OWN', this.canvas.width / 2, this.canvas.height / 2)
|
||||||
|
this.context.beginPath()
|
||||||
|
const canvasX = this.canvas.width / 2 + wallA.x - this.player.x
|
||||||
|
const canvasY = this.canvas.height / 2 + wallA.y - this.player.y
|
||||||
|
this.context.lineTo(canvasX, canvasY)
|
||||||
|
const canvasX2 = this.canvas.width / 2 + wallB.x - this.player.x
|
||||||
|
const canvasY2 = this.canvas.height / 2 + wallB.y - this.player.y
|
||||||
|
this.context.lineTo(canvasX2, canvasY2)
|
||||||
|
this.context.lineWidth = this.settings.wallSize
|
||||||
|
this.context.strokeStyle = 'purple'
|
||||||
|
this.context.stroke()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
isCloseToWall (xa, ya, xb, yb, xc, yc, radius) {
|
||||||
|
var xar = Math.min(xa, xb) - radius
|
||||||
|
var yar = Math.min(ya, yb) - radius
|
||||||
|
var xbr = Math.max(xa, xb) + radius
|
||||||
|
var ybr = Math.max(ya, yb) + radius
|
||||||
|
|
||||||
|
return ((xc >= xar && xc <= xbr) && (yc >= yar && yc <= ybr))
|
||||||
|
},
|
||||||
|
isCrossingLine (xa, ya, xb, yb, xc, yc, radius) {
|
||||||
|
var a = xc - xa
|
||||||
|
var b = xb - xa
|
||||||
|
var c = yc - ya
|
||||||
|
var d = yb - ya
|
||||||
|
var result = (a * d - b * c) / Math.sqrt(Math.pow(xa - xb, 2) + Math.pow(ya - yb, 2))
|
||||||
|
|
||||||
|
return result < radius
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" path="target/generated-sources/annotations">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
|
<attribute name="m2e-apt" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
|
<attribute name="m2e-apt" value="true"/>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="output" path="target/classes"/>
|
||||||
|
</classpath>
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<factorypath>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-web/2.3.1.RELEASE/spring-boot-starter-web-2.3.1.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter/2.3.1.RELEASE/spring-boot-starter-2.3.1.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot/2.3.1.RELEASE/spring-boot-2.3.1.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-autoconfigure/2.3.1.RELEASE/spring-boot-autoconfigure-2.3.1.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-logging/2.3.1.RELEASE/spring-boot-starter-logging-2.3.1.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/logging/log4j/log4j-to-slf4j/2.13.3/log4j-to-slf4j-2.13.3.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/yaml/snakeyaml/1.26/snakeyaml-1.26.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-json/2.3.1.RELEASE/spring-boot-starter-json-2.3.1.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/core/jackson-databind/2.11.0/jackson-databind-2.11.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/core/jackson-annotations/2.11.0/jackson-annotations-2.11.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/core/jackson-core/2.11.0/jackson-core-2.11.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.0/jackson-datatype-jdk8-2.11.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.0/jackson-datatype-jsr310-2.11.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.0/jackson-module-parameter-names-2.11.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-tomcat/2.3.1.RELEASE/spring-boot-starter-tomcat-2.3.1.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/tomcat/embed/tomcat-embed-core/9.0.36/tomcat-embed-core-9.0.36.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/glassfish/jakarta.el/3.0.3/jakarta.el-3.0.3.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.36/tomcat-embed-websocket-9.0.36.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-web/5.2.7.RELEASE/spring-web-5.2.7.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-beans/5.2.7.RELEASE/spring-beans-5.2.7.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-webmvc/5.2.7.RELEASE/spring-webmvc-5.2.7.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-aop/5.2.7.RELEASE/spring-aop-5.2.7.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-context/5.2.7.RELEASE/spring-context-5.2.7.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-expression/5.2.7.RELEASE/spring-expression-5.2.7.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-websocket/2.3.1.RELEASE/spring-boot-starter-websocket-2.3.1.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-messaging/5.2.7.RELEASE/spring-messaging-5.2.7.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-websocket/5.2.7.RELEASE/spring-websocket-5.2.7.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/projectlombok/lombok/1.18.12/lombok-1.18.12.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-core/5.2.7.RELEASE/spring-core-5.2.7.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/spring-jcl/5.2.7.RELEASE/spring-jcl-5.2.7.RELEASE.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/json/json/20200518/json-20200518.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
</factorypath>
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>tronio</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
encoding//src/main/java=UTF-8
|
||||||
|
encoding//src/main/resources=UTF-8
|
||||||
|
encoding//src/test/java=UTF-8
|
||||||
|
encoding/<project>=UTF-8
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.apt.aptEnabled=true
|
||||||
|
org.eclipse.jdt.apt.genSrcDir=target/generated-sources/annotations
|
||||||
|
org.eclipse.jdt.apt.genTestSrcDir=target/generated-test-sources/test-annotations
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=11
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||||
|
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||||
|
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
|
||||||
|
org.eclipse.jdt.core.compiler.processAnnotations=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.release=disabled
|
||||||
|
org.eclipse.jdt.core.compiler.source=11
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
activeProfiles=
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
resolveWorkspaceProjects=true
|
||||||
|
version=1
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package gltronic.tronio.business;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.springframework.web.socket.WebSocketSession;
|
||||||
|
|
||||||
|
import gltronic.tronio.model.Player;
|
||||||
|
|
||||||
|
public class GameManager implements IGameManager {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void login(WebSocketSession session) throws InterruptedException, IOException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void leave(WebSocketSession session) throws InterruptedException, IOException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(WebSocketSession session, Player player) throws InterruptedException, IOException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package gltronic.tronio.business;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.springframework.web.socket.WebSocketSession;
|
||||||
|
|
||||||
|
import gltronic.tronio.model.Player;
|
||||||
|
|
||||||
|
public interface IGameManager {
|
||||||
|
void login(WebSocketSession session) throws InterruptedException, IOException;
|
||||||
|
void leave(WebSocketSession session) throws InterruptedException, IOException;
|
||||||
|
void update(WebSocketSession session, Player player) throws InterruptedException, IOException;
|
||||||
|
}
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
package gltronic.tronio.business;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import org.springframework.web.socket.TextMessage;
|
|
||||||
import org.springframework.web.socket.WebSocketSession;
|
|
||||||
|
|
||||||
public interface IRoomManager {
|
|
||||||
public void login(WebSocketSession session, String name) throws InterruptedException, IOException;
|
|
||||||
public void leave(WebSocketSession session);
|
|
||||||
public void createRoom(WebSocketSession session) throws InterruptedException, IOException;
|
|
||||||
public void connectRoom(WebSocketSession session, String roomName) throws InterruptedException, IOException;
|
|
||||||
public void followRTC(WebSocketSession session, TextMessage message) throws InterruptedException, IOException;
|
|
||||||
public void sendMessage(WebSocketSession session, String type, String message) throws InterruptedException, IOException;
|
|
||||||
public void sendServerInfos(WebSocketSession session) throws InterruptedException, IOException;
|
|
||||||
}
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
package gltronic.tronio.business;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import org.json.JSONObject;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.web.socket.TextMessage;
|
|
||||||
import org.springframework.web.socket.WebSocketSession;
|
|
||||||
|
|
||||||
import gltronic.tronio.model.BiMap;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class RoomManager implements IRoomManager{
|
|
||||||
private volatile BiMap<String, WebSocketSession> users = new BiMap<String, WebSocketSession>();
|
|
||||||
private volatile BiMap<String, String> rooms = new BiMap<String, String>();
|
|
||||||
|
|
||||||
public void login(WebSocketSession session, String name) throws InterruptedException, IOException {
|
|
||||||
if (name == null) {
|
|
||||||
sendMessage(session, "error", "bad command command");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (users.containsKey(name)) {
|
|
||||||
sendMessage(session, "login", "false");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
users.put(name, session);
|
|
||||||
sendMessage(session, "login", "true");
|
|
||||||
sendServerInfos(session);
|
|
||||||
|
|
||||||
System.err.println("[ROOM] Logged "+name);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void leave(WebSocketSession session) {
|
|
||||||
String name = users.getKey(session);
|
|
||||||
users.removeValue(session);
|
|
||||||
if(rooms.containsValue(name)) rooms.removeValue(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void createRoom(WebSocketSession session) throws InterruptedException, IOException {
|
|
||||||
if (!users.containsValue(session)) {
|
|
||||||
sendMessage(session, "error", "need login");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
String userName = users.getKey(session);
|
|
||||||
if (rooms.containsKey(userName)) {
|
|
||||||
sendMessage(session, "error", "no multiple room");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Random random = new Random();
|
|
||||||
String roomName = Integer.toString(random.nextInt(9999));
|
|
||||||
|
|
||||||
while (roomName.length() < 4) roomName += 0 + roomName;
|
|
||||||
|
|
||||||
rooms.put(roomName, userName);
|
|
||||||
sendMessage(session, "createRoom", roomName);
|
|
||||||
|
|
||||||
System.err.println("[ROOM] Created room "+roomName+" by "+userName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void connectRoom(WebSocketSession session, String roomName) throws InterruptedException, IOException {
|
|
||||||
if (roomName == null) {
|
|
||||||
sendMessage(session, "error", "bad command command");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!users.containsValue(session)) {
|
|
||||||
sendMessage(session, "error", "need login");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!rooms.containsKey(roomName)) {
|
|
||||||
sendMessage(session, "error", "no room");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String roomAdmin = rooms.get(roomName);
|
|
||||||
sendMessage(session, "connectRoom", roomAdmin);
|
|
||||||
|
|
||||||
String userName = users.getKey(session);
|
|
||||||
System.err.println("[ROOM] Connection to room "+roomName+" ("+roomAdmin+") by "+userName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void followRTC(WebSocketSession session, TextMessage message) throws InterruptedException, IOException {
|
|
||||||
String payload = message.getPayload();
|
|
||||||
JSONObject jsonObject = new JSONObject(payload);
|
|
||||||
String target = (String) jsonObject.get("target");
|
|
||||||
|
|
||||||
if (target == null) {
|
|
||||||
sendMessage(session, "error", "no target");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
WebSocketSession targetSession = users.get(target);
|
|
||||||
|
|
||||||
if (targetSession == null) {
|
|
||||||
sendMessage(session, "error", "unknow target");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
System.err.println("[ROOM] Foward RTC message");
|
|
||||||
followMessage(targetSession, message);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void followMessage (WebSocketSession session, TextMessage message) throws IOException {
|
|
||||||
session.sendMessage(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendMessage(WebSocketSession session, String type, String message) throws InterruptedException, IOException {
|
|
||||||
session.sendMessage(new TextMessage("{\"type\":\""+type+"\",\"message\":\""+message+"\"}"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendServerInfos(WebSocketSession session) throws InterruptedException, IOException {
|
|
||||||
session.sendMessage(new TextMessage("{\"type\":\"serverInfos\",\"userCount\":\""+users.size()+"\",\"roomCount\":\""+rooms.size()+"\"}"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package gltronic.tronio.business;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.json.JSONObject;
|
||||||
|
import org.springframework.web.socket.TextMessage;
|
||||||
|
import org.springframework.web.socket.WebSocketSession;
|
||||||
|
|
||||||
|
import gltronic.tronio.model.Game;
|
||||||
|
|
||||||
|
public class SocketUtils {
|
||||||
|
public static void sendMessage(WebSocketSession session, String type, String message) {
|
||||||
|
try {
|
||||||
|
session.sendMessage(new TextMessage("{\"type\":\"" + type + "\",\"message\": \"" + message.toString() + "\" }"));
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void forwardMessage(WebSocketSession session, String type, JSONObject message) {
|
||||||
|
try {
|
||||||
|
session.sendMessage(new TextMessage("{\"type\":\"" + type + "\",\"message\": " + message.toString() + " }"));
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void broadcast(Game game, String type, JSONObject message) {
|
||||||
|
game.getSessions().forEach((id, session) -> {
|
||||||
|
forwardMessage(session, type, message);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package gltronic.tronio.model;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.springframework.web.socket.WebSocketSession;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Game {
|
||||||
|
private Map<String, Player> players;
|
||||||
|
private Map<String, WebSocketSession> sessions;
|
||||||
|
private GameSettings settings;
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package gltronic.tronio.model;
|
||||||
|
|
||||||
|
public abstract class GameEntity {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package gltronic.tronio.model;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class GameSettings {
|
||||||
|
private double playerSize;
|
||||||
|
private double playerSpeed;
|
||||||
|
private double playerTurnSpeed;
|
||||||
|
private double wallSize;
|
||||||
|
private double wallUpdate;
|
||||||
|
private double arenaSize;
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package gltronic.tronio.model;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Player {
|
||||||
|
private String id;
|
||||||
|
private double x;
|
||||||
|
private double y;
|
||||||
|
private double angle;
|
||||||
|
private double targetAngle;
|
||||||
|
private ArrayList<Wall> walls;
|
||||||
|
private int lastWall;
|
||||||
|
private String color;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package gltronic.tronio.model;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Wall {
|
||||||
|
private double x;
|
||||||
|
private double y;
|
||||||
|
}
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
package gltronic.tronio.web;
|
package gltronic.tronio.web;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -12,17 +10,19 @@ import org.springframework.web.socket.TextMessage;
|
|||||||
import org.springframework.web.socket.WebSocketSession;
|
import org.springframework.web.socket.WebSocketSession;
|
||||||
import org.springframework.web.socket.handler.TextWebSocketHandler;
|
import org.springframework.web.socket.handler.TextWebSocketHandler;
|
||||||
|
|
||||||
import gltronic.tronio.business.IRoomManager;
|
import gltronic.tronio.business.IGameManager;
|
||||||
|
import gltronic.tronio.business.SocketUtils;
|
||||||
|
import gltronic.tronio.model.Player;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class SocketHandler extends TextWebSocketHandler {
|
public class SocketHandler extends TextWebSocketHandler {
|
||||||
private volatile List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
IRoomManager roomManager;
|
IGameManager gameManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleTextMessage(WebSocketSession session, TextMessage message) throws InterruptedException, IOException {
|
public void handleTextMessage(WebSocketSession session, TextMessage message)
|
||||||
|
throws InterruptedException, IOException {
|
||||||
System.err.println("[WS] message :" + message.getPayload());
|
System.err.println("[WS] message :" + message.getPayload());
|
||||||
|
|
||||||
String payload = message.getPayload();
|
String payload = message.getPayload();
|
||||||
@@ -30,45 +30,29 @@ public class SocketHandler extends TextWebSocketHandler {
|
|||||||
|
|
||||||
String type = (String) jsonObject.get("type");
|
String type = (String) jsonObject.get("type");
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case "serverInfos":
|
|
||||||
roomManager.sendServerInfos(session);
|
|
||||||
break;
|
|
||||||
case "login":
|
|
||||||
roomManager.login(session, (String) jsonObject.get("name"));
|
|
||||||
break;
|
|
||||||
case "createRoom":
|
|
||||||
roomManager.createRoom(session);
|
|
||||||
break;
|
|
||||||
case "connectRoom":
|
|
||||||
roomManager.connectRoom(session, (String) jsonObject.get("name"));
|
|
||||||
break;
|
|
||||||
case "leave":
|
|
||||||
roomManager.leave(session);
|
|
||||||
break;
|
|
||||||
case "offer":
|
|
||||||
case "answer":
|
|
||||||
case "candidate":
|
|
||||||
roomManager.followRTC(session, message);
|
|
||||||
break;
|
|
||||||
case "search":
|
|
||||||
break;
|
|
||||||
case "alive":
|
case "alive":
|
||||||
break;
|
break;
|
||||||
|
case "update":
|
||||||
|
gameManager.update(session, (Player) jsonObject.get("update"));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
roomManager.sendMessage(session, "error", "unknow command");
|
SocketUtils.sendMessage(session, "error", "unknow command");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
|
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
|
||||||
System.err.println("[WS] new connection " + this);
|
System.err.println("[WS] new connection " + this);
|
||||||
sessions.add(session);
|
gameManager.login(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) {
|
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) {
|
||||||
System.err.println("[WS] connection closed");
|
System.err.println("[WS] connection closed");
|
||||||
sessions.remove(session);
|
try {
|
||||||
roomManager.leave(session);
|
gameManager.leave(session);
|
||||||
|
} catch (InterruptedException | IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic&display=swap);.error[data-v-5b3c3365]{font-weight:700;color:red}.home{text-align:center;color:#2c3e50;margin:20px 15px 0 15px}
|
|
||||||
|
|
||||||
/*! bulma.io v0.7.5 | MIT License | github.com/jgthms/bulma */@-webkit-keyframes spinAround{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes spinAround{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.b-checkbox.checkbox,.b-radio.radio,.breadcrumb,.button,.carousel,.carousel-list,.delete,.file,.is-unselectable,.modal-close,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.switch,.tabs{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless):after,.select:not(.is-multiple):not(.is-loading):after{border:3px solid transparent;border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:.625em;margin-top:-.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:.625em}.block:not(:last-child),.box:not(:last-child),.breadcrumb:not(:last-child),.content:not(:last-child),.highlight:not(:last-child),.level:not(:last-child),.list:not(:last-child),.message:not(:last-child),.notification:not(:last-child),.progress:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.tabs:not(:last-child),.title:not(:last-child){margin-bottom:1.5rem}.delete,.modal-close{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,.2);border:none;border-radius:290486px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.delete:after,.delete:before,.modal-close:after,.modal-close:before{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.delete:before,.modal-close:before{height:2px;width:50%}.delete:after,.modal-close:after{height:50%;width:2px}.delete:focus,.delete:hover,.modal-close:focus,.modal-close:hover{background-color:rgba(10,10,10,.3)}.delete:active,.modal-close:active{background-color:rgba(10,10,10,.4)}.is-small.delete,.is-small.modal-close{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.delete,.is-medium.modal-close{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.delete,.is-large.modal-close{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.button.is-loading:after,.control.is-loading:after,.loader,.select.is-loading:after{-webkit-animation:spinAround .5s linear infinite;animation:spinAround .5s linear infinite;border:2px solid #dbdee0;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.hero-video,.image.is-1by1 .has-ratio,.image.is-1by1 img,.image.is-1by2 .has-ratio,.image.is-1by2 img,.image.is-1by3 .has-ratio,.image.is-1by3 img,.image.is-2by1 .has-ratio,.image.is-2by1 img,.image.is-2by3 .has-ratio,.image.is-2by3 img,.image.is-3by1 .has-ratio,.image.is-3by1 img,.image.is-3by2 .has-ratio,.image.is-3by2 img,.image.is-3by4 .has-ratio,.image.is-3by4 img,.image.is-3by5 .has-ratio,.image.is-3by5 img,.image.is-4by3 .has-ratio,.image.is-4by3 img,.image.is-4by5 .has-ratio,.image.is-4by5 img,.image.is-5by3 .has-ratio,.image.is-5by3 img,.image.is-5by4 .has-ratio,.image.is-5by4 img,.image.is-9by16 .has-ratio,.image.is-9by16 img,.image.is-16by9 .has-ratio,.image.is-16by9 img,.image.is-square .has-ratio,.image.is-square img,.is-overlay,.modal,.modal-background{bottom:0;left:0;position:absolute;right:0;top:0}.button,.file-cta,.file-name,.input,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.select select,.taginput .taginput-container.is-focusable,.textarea{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:15px;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(.375em - 1px);padding-left:calc(.625em - 1px);padding-right:calc(.625em - 1px);padding-top:calc(.375em - 1px);position:relative;vertical-align:top}.button:active,.button:focus,.file-cta:active,.file-cta:focus,.file-name:active,.file-name:focus,.input:active,.input:focus,.is-active.button,.is-active.file-cta,.is-active.file-name,.is-active.input,.is-active.pagination-ellipsis,.is-active.pagination-link,.is-active.pagination-next,.is-active.pagination-previous,.is-active.textarea,.is-focused.button,.is-focused.file-cta,.is-focused.file-name,.is-focused.input,.is-focused.pagination-ellipsis,.is-focused.pagination-link,.is-focused.pagination-next,.is-focused.pagination-previous,.is-focused.textarea,.pagination-ellipsis:active,.pagination-ellipsis:focus,.pagination-link:active,.pagination-link:focus,.pagination-next:active,.pagination-next:focus,.paLine truncated
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
.invite{text-align:center}.actionButton{margin-left:10px}.controls{text-align:center;max-width:500px}.playerButton{margin-left:10px}.playerVolume{margin-left:30px;margin-right:30px;max-width:150px}.player,.time{text-align:center}.room{margin-top:20px}.roomTitle{padding-bottom:30px;padding-left:25px}
|
|
||||||
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 748 B |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
@@ -1,21 +0,0 @@
|
|||||||
<?xml version="1.0" standalone="no"?>
|
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
|
||||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
|
||||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="332.000000pt" height="332.000000pt" viewBox="0 0 332.000000 332.000000"
|
|
||||||
preserveAspectRatio="xMidYMid meet">
|
|
||||||
<metadata>
|
|
||||||
Created by potrace 1.11, written by Peter Selinger 2001-2013
|
|
||||||
</metadata>
|
|
||||||
<g transform="translate(0.000000,332.000000) scale(0.100000,-0.100000)"
|
|
||||||
fill="#000000" stroke="none">
|
|
||||||
<path d="M1477 3309 c-380 -44 -716 -207 -988 -478 -229 -230 -375 -492 -447
|
|
||||||
-806 -189 -821 288 -1670 1087 -1935 505 -168 1019 -98 1462 198 399 267 662
|
|
||||||
705 719 1197 69 603 -220 1216 -735 1559 -314 209 -725 309 -1098 265z m-3
|
|
||||||
-1261 c49 -277 95 -543 104 -591 8 -48 19 -84 23 -80 6 6 322 700 356 781 4 9
|
|
||||||
-29 12 -146 12 -83 0 -151 3 -151 8 0 4 25 87 57 185 l57 177 504 0 c399 0
|
|
||||||
503 -3 500 -12 -3 -7 -141 -372 -308 -810 l-304 -798 -208 0 -208 0 0 -27 c0
|
|
||||||
-27 35 -320 45 -375 l5 -28 -360 0 -360 0 -5 22 c-12 53 -395 2014 -395 2025
|
|
||||||
0 10 77 13 353 13 l353 0 88 -502z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 26 KiB |
@@ -1 +0,0 @@
|
|||||||
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=stylesheet href=//cdn.materialdesignicons.com/5.4.55/css/materialdesignicons.min.css><!--[if IE]><link rel="icon" href="/favicon.ico"><![endif]--><title>voozik</title><link href=/css/chunk-3fba1bf2.8f336ede.css rel=prefetch><link href=/js/chunk-3fba1bf2.6996f5b8.js rel=prefetch><link href=/css/app.cd6b43b0.css rel=preload as=style><link href=/js/app.2e968650.js rel=preload as=script><link href=/js/chunk-vendors.5317c68e.js rel=preload as=script><link href=/css/app.cd6b43b0.css rel=stylesheet><link rel=icon type=image/png sizes=32x32 href=/img/icons/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/img/icons/favicon-16x16.png><link rel=manifest href=/manifest.json><meta name=theme-color content=#1f2424><meta name=apple-mobile-web-app-capable content=yes><meta name=apple-mobile-web-app-status-bar-style content=black><meta name=apple-mobile-web-app-title content=Voozik><link rel=apple-touch-icon href=/img/icons/apple-touch-icon-152x152.png><link rel=mask-icon href=/img/icons/safari-pinned-tab.svg color=#1f2424><meta name=msapplication-TileImage content=/img/icons/msapplication-icon-144x144.png><meta name=msapplication-TileColor content=#1f2424></head><body><noscript><strong>We're sorry but voozik doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=/js/chunk-vendors.5317c68e.js></script><script src=/js/app.2e968650.js></script></body></html>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
(function(e){function t(t){for(var o,r,i=t[0],c=t[1],u=t[2],l=0,m=[];l<i.length;l++)r=i[l],Object.prototype.hasOwnProperty.call(a,r)&&a[r]&&m.push(a[r][0]),a[r]=0;for(o in c)Object.prototype.hasOwnProperty.call(c,o)&&(e[o]=c[o]);f&&f(t);while(m.length)m.shift()();return s.push.apply(s,u||[]),n()}function n(){for(var e,t=0;t<s.length;t++){for(var n=s[t],o=!0,r=1;r<n.length;r++){var i=n[r];0!==a[i]&&(o=!1)}o&&(s.splice(t--,1),e=c(c.s=n[0]))}return e}var o={},r={app:0},a={app:0},s=[];function i(e){return c.p+"js/"+({}[e]||e)+"."+{"chunk-3fba1bf2":"6996f5b8"}[e]+".js"}function c(t){if(o[t])return o[t].exports;var n=o[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,c),n.l=!0,n.exports}c.e=function(e){var t=[],n={"chunk-3fba1bf2":1};r[e]?t.push(r[e]):0!==r[e]&&n[e]&&t.push(r[e]=new Promise((function(t,n){for(var o="css/"+({}[e]||e)+"."+{"chunk-3fba1bf2":"8f336ede"}[e]+".css",a=c.p+o,s=document.getElementsByTagName("link"),i=0;i<s.length;i++){var u=s[i],l=u.getAttribute("data-href")||u.getAttribute("href");if("stylesheet"===u.rel&&(l===o||l===a))return t()}var m=document.getElementsByTagName("style");for(i=0;i<m.length;i++){u=m[i],l=u.getAttribute("data-href");if(l===o||l===a)return t()}var f=document.createElement("link");f.rel="stylesheet",f.type="text/css",f.onload=t,f.onerror=function(t){var o=t&&t.target&&t.target.src||a,s=new Error("Loading CSS chunk "+e+" failed.\n("+o+")");s.code="CSS_CHUNK_LOAD_FAILED",s.request=o,delete r[e],f.parentNode.removeChild(f),n(s)},f.href=a;var d=document.getElementsByTagName("head")[0];d.appendChild(f)})).then((function(){r[e]=0})));var o=a[e];if(0!==o)if(o)t.push(o[2]);else{var s=new Promise((function(t,n){o=a[e]=[t,n]}));t.push(o[2]=s);var u,l=document.createElement("script");l.charset="utf-8",l.timeout=120,c.nc&&l.setAttribute("nonce",c.nc),l.src=i(e);var m=new Error;u=function(t){l.onerror=l.onload=null,clearTimeout(f);var n=a[e];if(0!==n){if(n){var o=t&&("load"===t.type?"missing":t.type),r=t&&t.target&&t.target.src;m.message="Loading chunk "+e+" failed.\n("+o+": "+r+")",m.name="ChunkLoadError",m.type=o,m.request=r,n[1](m)}a[e]=void 0}};var f=setTimeout((function(){u({type:"timeout",target:l})}),12e4);l.onerror=l.onload=u,document.head.appendChild(l)}return Promise.all(t)},c.m=e,c.c=o,c.d=function(e,t,n){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},c.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(c.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)c.d(n,o,function(t){return e[t]}.bind(null,o));return n},c.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="/",c.oe=function(e){throw console.error(e),e};var u=window["webpackJsonp"]=window["webpackJsonp"]||[],l=u.push.bind(u);u.push=t,u=u.slice();for(var m=0;m<u.length;m++)t(u[m]);var f=l;s.push([0,"chunk-vendors"]),n()})({0:function(e,t,n){e.exports=n("56d7")},"3a80":function(e,t,n){},"56d7":function(e,t,n){"use strict";n.r(t);n("e260"),n("e6cf"),n("cca6"),n("a79d");var o=n("2b0e"),r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("router-view")],1)},a=[],s=n("2877"),i={},c=Object(s["a"])(i,r,a,!1,null,null,null),u=c.exports,l=n("9483");Object(l["a"])("".concat("/","service-worker.js"),{ready:function(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered:function(){console.log("Service worker has been registered.")},cached:function(){console.log("Content has been cached for offline use.")},updatefound:function(){console.log("New content is downloading.")},updated:function(){console.log("New content is available; please refresh."),window.location.reload(!0)},offline:function(){console.log("No internet connection found. App is running in offline mode.")},error:function(e){console.error("Error during service worker registration:",e)}});n("d3b7");var m=n("8c4f"),f=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"home"},[o("img",{attrs:{src:n("cf05"),alt:"voozik logo"}}),e.serverConnected?o("div",[o("h1",{staticClass:"title is-1 has-text-success"},[e._v("Server online")]),e.isLoggedIn?o("div",[o("h1",{staticClass:"title is-4"},[e._v(e._s(e.serverStatus.userCount)+" users | "+e._s(e.serverStatus.roomCount)+" rooms")]),o("h1",{staticClass:"subtitle is-6"},[e._v("Connected as "+e._s(e.userName))]),o("hr"),o("b-field",{attrs:{position:"is-centered"}},[o("b-button",{attrs:{type:"is-primary",size:"is-large"},on:{click:e.connectToRoomPrompt}},[e._v("Join a room")])],1),o("b-field",{attrs:{position:"is-centered"}},[oLine truncated
|
|
||||||
//# sourceMappingURL=app.2e968650.js.map
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?3fbe","webpack:///./src/App.vue","webpack:///./src/registerServiceWorker.js","webpack:///./src/views/Home.vue?8612","webpack:///./src/store/signalPlugin.js","webpack:///./src/components/QRReader.vue?30d5","webpack:///src/components/QRReader.vue","webpack:///./src/components/QRReader.vue?4c8e","webpack:///./src/components/QRReader.vue","webpack:///src/views/Home.vue","webpack:///./src/views/Home.vue?493c","webpack:///./src/views/Home.vue?c853","webpack:///./src/router/index.js","webpack:///./src/store/rtcModule.js","webpack:///./src/store/roomModule.js","webpack:///./src/store/appModule.js","webpack:///./src/store/index.js","webpack:///./src/main.js","webpack:///./src/components/QRReader.vue?d62a","webpack:///./src/views/Home.vue?f453","webpack:///./src/assets/logo.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","attrs","staticRenderFns","component","register","process","ready","log","registered","cached","updatefound","updated","location","reload","offline","staticClass","_v","_s","serverStatus","userCount","roomCount","userName","on","connectToRoomPrompt","$event","isQRModalActive","makeRoomPrompt","changeName","connectToRoom","_e","connection","WebSocket","createSignalPlugin","store","onopen","dispatch","onmessage","JSON","parse","offer","senderName","answer","candidate","send","stringify","onDecode","onInit","components","QrcodeStream","methods","$emit","showAlert","$buefy","dialog","alert","title","hasIcon","icon","iconPack","ariaRole","ariaModal","QRReader","computed","$store","state","app","serverConnected","signalServerConnected","isLoggedIn","loginSuccess","rtc","watch","success","toast","open","loginPrompt","prompt","trapFocus","canCancel","inputAttrs","placeholder","minlength","maxlength","confirmText","onConfirm","localStorage","setItem","login","cancelText","makeRoom","removeItem","Vue","use","VueRouter","lastPeer","routes","path","Home","router","configuration","iceServers","urls","peers","getters","displayName","actions","setName","commit","makeOffer","targetName","leave","kick","broadcast","mutations","SET_NAME","CREATE_PEER_CONNECTION","peer","RTCPeerConnection","dataChannel","onicecandidate","onnegotiationneeded","handleNegotiationNeededEvent","onsignalingstatechange","handleSignalingStateChangeEvent","oniceconnectionstatechange","handleICEConnectionStateChangeEvent","onicegatheringstatechange","handleICEGatheringStateChangeEvent","OFFER","find","createDataChannel","handleDataChannelMessage","handleDataChannelStateChangeEvent","onclose","createOffer","setLocalDescription","ANSWER","ondatachannel","handleDataChannelCallback","setRemoteDescription","RTCSessionDescription","createAnswer","FINALIZE","CANDIDATE","addIceCandidate","RTCIceCandidate","LEAVE","forEach","close","KICK","index","indexOf","BROADCAST","iceConnectionState","iceGatheringState","signalingState","channel","room","roomStatus","admin","link","linkID","isPositive","voterName","roomSettings","userControl","namespaced","roomName","roomCode","player","timeCode","timeLength","playing","current","votes","voters","playlist","userLink","localSettings","playLink","externalSearch","lastUserCommand","setRoomCode","setRoomName","setRoomStatus","setUserCommand","command","setRoomSettings","root","setLocalSettings","setAdmin","setTimeCode","vote","removePlay","setCurrent","playerStatus","SET_ROOMCODE","SET_ROOMNAME","SET_ROOMSTATUS","SET_ROOMSETTINGS","SET_LOCALSETTINGS","SET_ADMIN","SET_TIMECODE","SET_TIMELENGTH","SET_CURRENTTITLE","SET_USERCOMMAND","ADD_VOTE","play","sort","a","b","REMOVE_VOTE","REMOVE_PLAY","CURRENT_END","CURRENT_PAUSE","CURRENT_PLAY","displayError","displayUserList","userList","displayLoginStatus","displayServerStatus","siLine truncated
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
(function(e){function t(t){for(var o,r,s=t[0],c=t[1],u=t[2],l=0,m=[];l<s.length;l++)r=s[l],Object.prototype.hasOwnProperty.call(a,r)&&a[r]&&m.push(a[r][0]),a[r]=0;for(o in c)Object.prototype.hasOwnProperty.call(c,o)&&(e[o]=c[o]);f&&f(t);while(m.length)m.shift()();return i.push.apply(i,u||[]),n()}function n(){for(var e,t=0;t<i.length;t++){for(var n=i[t],o=!0,r=1;r<n.length;r++){var s=n[r];0!==a[s]&&(o=!1)}o&&(i.splice(t--,1),e=c(c.s=n[0]))}return e}var o={},r={app:0},a={app:0},i=[];function s(e){return c.p+"js/"+({}[e]||e)+"."+{"chunk-3fba1bf2":"bc112002"}[e]+".js"}function c(t){if(o[t])return o[t].exports;var n=o[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,c),n.l=!0,n.exports}c.e=function(e){var t=[],n={"chunk-3fba1bf2":1};r[e]?t.push(r[e]):0!==r[e]&&n[e]&&t.push(r[e]=new Promise((function(t,n){for(var o="css/"+({}[e]||e)+"."+{"chunk-3fba1bf2":"8f336ede"}[e]+".css",a=c.p+o,i=document.getElementsByTagName("link"),s=0;s<i.length;s++){var u=i[s],l=u.getAttribute("data-href")||u.getAttribute("href");if("stylesheet"===u.rel&&(l===o||l===a))return t()}var m=document.getElementsByTagName("style");for(s=0;s<m.length;s++){u=m[s],l=u.getAttribute("data-href");if(l===o||l===a)return t()}var f=document.createElement("link");f.rel="stylesheet",f.type="text/css",f.onload=t,f.onerror=function(t){var o=t&&t.target&&t.target.src||a,i=new Error("Loading CSS chunk "+e+" failed.\n("+o+")");i.code="CSS_CHUNK_LOAD_FAILED",i.request=o,delete r[e],f.parentNode.removeChild(f),n(i)},f.href=a;var d=document.getElementsByTagName("head")[0];d.appendChild(f)})).then((function(){r[e]=0})));var o=a[e];if(0!==o)if(o)t.push(o[2]);else{var i=new Promise((function(t,n){o=a[e]=[t,n]}));t.push(o[2]=i);var u,l=document.createElement("script");l.charset="utf-8",l.timeout=120,c.nc&&l.setAttribute("nonce",c.nc),l.src=s(e);var m=new Error;u=function(t){l.onerror=l.onload=null,clearTimeout(f);var n=a[e];if(0!==n){if(n){var o=t&&("load"===t.type?"missing":t.type),r=t&&t.target&&t.target.src;m.message="Loading chunk "+e+" failed.\n("+o+": "+r+")",m.name="ChunkLoadError",m.type=o,m.request=r,n[1](m)}a[e]=void 0}};var f=setTimeout((function(){u({type:"timeout",target:l})}),12e4);l.onerror=l.onload=u,document.head.appendChild(l)}return Promise.all(t)},c.m=e,c.c=o,c.d=function(e,t,n){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},c.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(c.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)c.d(n,o,function(t){return e[t]}.bind(null,o));return n},c.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="/",c.oe=function(e){throw console.error(e),e};var u=window["webpackJsonp"]=window["webpackJsonp"]||[],l=u.push.bind(u);u.push=t,u=u.slice();for(var m=0;m<u.length;m++)t(u[m]);var f=l;i.push([0,"chunk-vendors"]),n()})({0:function(e,t,n){e.exports=n("56d7")},"3a80":function(e,t,n){},"56d7":function(e,t,n){"use strict";n.r(t);n("e260"),n("e6cf"),n("cca6"),n("a79d");var o=n("2b0e"),r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("router-view")],1)},a=[],i=n("2877"),s={},c=Object(i["a"])(s,r,a,!1,null,null,null),u=c.exports,l=n("9483");Object(l["a"])("".concat("/","service-worker.js"),{ready:function(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered:function(){console.log("Service worker has been registered.")},cached:function(){console.log("Content has been cached for offline use.")},updatefound:function(){console.log("New content is downloading.")},updated:function(){console.log("New content is available; please refresh."),window.location.reload(!0)},offline:function(){console.log("No internet connection found. App is running in offline mode.")},error:function(e){console.error("Error during service worker registration:",e)}});n("d3b7");var m=n("8c4f"),f=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"home"},[o("img",{attrs:{src:n("cf05"),alt:"voozik logo"}}),e.serverConnected?o("div",[o("h1",{staticClass:"title is-1 has-text-success"},[e._v("Server online")]),e.isLoggedIn?o("div",[o("h1",{staticClass:"title is-4"},[e._v(e._s(e.serverStatus.userCount)+" users | "+e._s(e.serverStatus.roomCount)+" rooms")]),o("h1",{staticClass:"subtitle is-6"},[e._v("Connected as "+e._s(e.userName))]),o("hr"),o("b-field",{attrs:{position:"is-centered"}},[o("b-button",{attrs:{type:"is-primary",size:"is-large"},on:{click:e.connectToRoomPrompt}},[e._v("Join a room")])],1),o("b-field",{attrs:{position:"is-centered"}},[oLine truncated
|
|
||||||
//# sourceMappingURL=app.f782d107.js.map
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?3fbe","webpack:///./src/App.vue","webpack:///./src/registerServiceWorker.js","webpack:///./src/views/Home.vue?c7c9","webpack:///./src/store/signalPlugin.js","webpack:///./src/components/QRReader.vue?30d5","webpack:///src/components/QRReader.vue","webpack:///./src/components/QRReader.vue?4c8e","webpack:///./src/components/QRReader.vue","webpack:///src/views/Home.vue","webpack:///./src/views/Home.vue?493c","webpack:///./src/views/Home.vue?c853","webpack:///./src/router/index.js","webpack:///./src/store/rtcModule.js","webpack:///./src/store/roomModule.js","webpack:///./src/store/appModule.js","webpack:///./src/store/index.js","webpack:///./src/main.js","webpack:///./src/components/QRReader.vue?d62a","webpack:///./src/views/Home.vue?f453","webpack:///./src/assets/logo.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","attrs","staticRenderFns","component","register","process","ready","log","registered","cached","updatefound","updated","location","reload","offline","staticClass","_v","_s","serverStatus","userCount","roomCount","userName","on","connectToRoomPrompt","$event","isQRModalActive","makeRoomPrompt","changeName","connectToRoom","_e","connection","WebSocket","createSignalPlugin","store","onopen","dispatch","onmessage","JSON","parse","offer","senderName","answer","candidate","send","stringify","onDecode","onInit","components","QrcodeStream","methods","$emit","showAlert","$buefy","dialog","alert","title","hasIcon","icon","iconPack","ariaRole","ariaModal","QRReader","computed","$store","state","app","serverConnected","signalServerConnected","isLoggedIn","loginSuccess","rtc","watch","success","toast","open","loginPrompt","prompt","trapFocus","canCancel","inputAttrs","placeholder","minlength","maxlength","confirmText","onConfirm","localStorage","setItem","login","cancelText","makeRoom","removeItem","Vue","use","VueRouter","lastPeer","routes","path","Home","router","configuration","iceServers","urls","peers","getters","displayName","actions","setName","commit","makeOffer","targetName","leave","kick","broadcast","mutations","SET_NAME","CREATE_PEER_CONNECTION","peer","RTCPeerConnection","dataChannel","onicecandidate","onnegotiationneeded","handleNegotiationNeededEvent","onsignalingstatechange","handleSignalingStateChangeEvent","oniceconnectionstatechange","handleICEConnectionStateChangeEvent","onicegatheringstatechange","handleICEGatheringStateChangeEvent","OFFER","find","createDataChannel","handleDataChannelMessage","handleDataChannelStateChangeEvent","onclose","createOffer","setLocalDescription","ANSWER","ondatachannel","handleDataChannelCallback","setRemoteDescription","RTCSessionDescription","createAnswer","FINALIZE","CANDIDATE","addIceCandidate","RTCIceCandidate","LEAVE","forEach","close","KICK","index","indexOf","BROADCAST","iceConnectionState","iceGatheringState","signalingState","channel","room","roomStatus","admin","roomSettings","userControl","link","linkID","isPositive","voterName","namespaced","roomName","roomCode","player","timeCode","timeLength","playing","current","votes","voters","playlist","userLink","localSettings","playLink","externalSearch","setRoomCode","setRoomName","setRoomStatus","setRoomSettings","root","setLocalSettings","setAdmin","setTimeCode","vote","removePlay","setCurrent","playerStatus","SET_ROOMCODE","SET_ROOMNAME","SET_ROOMSTATUS","SET_ROOMSETTINGS","SET_LOCALSETTINGS","SET_ADMIN","SET_TIMECODE","SET_TIMELENGTH","SET_CURRENTTITLE","ADD_VOTE","play","sort","a","b","REMOVE_VOTE","REMOVE_PLAY","CURRENT_END","CURRENT_PAUSE","CURRENT_PLAY","displayError","displayUserList","userList","displayLoginStatus","displayServerStatus","signalConnected","signalError","resetLogin","createRoom","connectLine truncated
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-3fba1bf2"],{"1b09":function(t,e,r){"use strict";var n=r("a70e"),o=r.n(n);o.a},2532:function(t,e,r){"use strict";var n=r("23e7"),o=r("5a34"),i=r("1d80"),a=r("ab13");n({target:"String",proto:!0,forced:!a("includes")},{includes:function(t){return!!~String(i(this)).indexOf(o(t),arguments.length>1?arguments[1]:void 0)}})},"3ab1":function(t,e,r){"use strict";r.r(e);var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"room container"},[r("div",{staticClass:"roomTitle"},[r("h1",{staticClass:"title is-1"},[t._v(t._s(t.roomStatus.roomName))]),r("h2",{staticClass:"subtitle"},[t._v(t._s(t.roomStatus.current.title))])]),r("b-tabs",{attrs:{type:"is-boxed",expanded:""}},[r("b-tab-item",{attrs:{label:"Playlist",icon:"playlist-play"}},[r("Playlist")],1),r("b-tab-item",{attrs:{label:"Player",icon:"youtube",visible:t.localSettings.playLink}},[r("Player")],1),r("b-tab-item",{attrs:{label:"Peers",icon:"lan",visible:t.isAdmin}},[r("Admin")],1),r("b-tab-item",{attrs:{label:"Invite",icon:"qrcode"}},[r("Invite",{attrs:{roomCode:t.roomStatus.roomCode}})],1),r("b-tab-item",{attrs:{label:"Settings",icon:"cog"}},[r("Settings")],1)],1),r("b-loading",{attrs:{"is-full-page":"",active:t.isRoomLoading},on:{"update:active":function(e){t.isRoomLoading=e}}})],1)},o=[],i=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"invite"},[r("h1",{staticClass:"subtitle"},[t._v(t._s(t.roomCode))]),r("qrcode",{attrs:{value:t.roomCode,options:{width:200}}})],1)},a=[],s=r("b2e5"),u=r.n(s),f={name:"Invite",components:{qrcode:u.a},props:{roomCode:{type:String,default:"abc"}}},l=f,c=(r("1b09"),r("2877")),h=Object(c["a"])(l,i,a,!1,null,null,null),p=h.exports,d=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",[r("b-button",{attrs:{"icon-left":"sync"},on:{click:t.broadcastStatus}},[t._v("Force status update")]),r("hr"),r("b-table",{attrs:{data:t.usersList,striped:"",hoverable:""},scopedSlots:t._u([{key:"default",fn:function(e){return[r("b-table-column",{attrs:{field:"name",label:"Name"}},[t._v(" "+t._s(e.row.name)+" ")]),r("b-table-column",{attrs:{field:"connection",label:"Connection"}},[t._v(" "+t._s(e.row.connection.signalingState)+" ")]),r("b-table-column",{attrs:{field:"data",label:"DataChannel"}},[t._v(" "+t._s(e.row.dataChannel.readyState)+" ")]),r("b-table-column",[r("b-button",{attrs:{"icon-left":"karate",type:"is-dark"},on:{click:function(r){return t.kickUser(e.row.name)}}})],1)]}}])})],1)},g=[],m={name:"Admin",computed:{usersList:function(){return this.$store.state.rtc.peers}},methods:{broadcastStatus:function(){this.$store.dispatch("rtc/broadcast",{message:this.$store.state.room.roomStatus,type:"status"})},kickUser:function(t){this.$store.dispatch("rtc/kick",t)}}},y=m,v=Object(c["a"])(y,d,g,!1,null,null,null),b=v.exports,w=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",[t.roomSettings.userLink?r("b-button",{attrs:{"icon-left":"plus",size:"is-medium"},on:{click:t.addLinkPrompt}},[t._v("Add link")]):t._e(),r("hr"),r("b-table",{attrs:{data:t.roomStatus.playlist,striped:"",hoverable:"","default-sort":"vote"},scopedSlots:t._u([{key:"default",fn:function(e){return[r("b-table-column",{attrs:{field:"title",label:"Title"}},[t._v(" "+t._s(e.row.title)+" ")]),r("b-table-column",{attrs:{field:"link",label:"Link"}},[t._v(" "+t._s(e.row.link)+" ")]),r("b-table-column",{attrs:{field:"vote",label:"Votes"}},[t._v(" "+t._s(e.row.votes)+" ")]),r("b-table-column",{attrs:{field:"voters",label:"Voters",visible:t.isAdmin}},[t._v(" "+t._s(e.row.voters)+" ")]),r("b-table-column",[t.hasVoted(e.row)?r("b-button",{attrs:{"icon-left":"arrow-down-bold-outline",type:"is-primary",size:"is-medium"},on:{click:function(r){t.vote(e.row.title,e.row.link,e.row.linkID,!1)}}}):r("b-button",{attrs:{"icon-left":"arrow-up-bold-outline",type:"is-primary",size:"is-medium"},on:{click:function(r){t.vote(e.row.title,e.row.link,e.row.linkID,!0)}}}),t.isAdmin?r("b-button",{staticClass:"actionButton",attrs:{"icon-left":"delete-forever",type:"is-danger",size:"is-medium"},on:{click:function(r){t.removePlay(e.row.linkID)}}}):t._e()],1)]}}])})],1)},E=[],A=(r("caad"),r("b0c0"),r("d3b7"),r("2532"),r("96cf"),r("1da1")),S={name:"Playlist",computed:{isAdmin:function(){return this.$store.state.room.admin},roomStatus:function(){return this.$store.state.room.roomStatus},roomSettings:function(){return this.$store.state.room.roomSettings}},methods:{addLinkPrompt:function(){var t=this;this.$buefy.dialog.prompt({message:"Add a youtube link",trapFocus:!0,inputAttrs:{placeholder:"https://www.youtube.com/watch?v=YItIK09bpKk"},cancelText:"Nah",confirmText:"Add",onConfirm:function(e){return t.addLink(e)}})},addLink:function(t){var e=this;return Object(A["a"])(regeneratorRuntime.mark((function r(){var n,o;return regeneratorRuntime.wrap((function(r){while(1)switch(r.prev=r.next){case 0:if(n=e.$youtube.getIdFromUrl(t),null!==n){r.next=4;breLine truncated
|
|
||||||
/*!
|
|
||||||
* vue-qrcode v1.0.2
|
|
||||||
* https://fengyuanchen.github.io/vue-qrcode
|
|
||||||
*
|
|
||||||
* Copyright 2018-present Chen Fengyuan
|
|
||||||
* Released under the MIT license
|
|
||||||
*
|
|
||||||
* Date: 2020-01-18T06:04:33.222Z
|
|
||||||
*/
|
|
||||||
(function(e,r){t.exports=r()})(0,(function(){"use strict";function t(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}function e(t,e){return e={exports:{}},t(e,e.exports),e.exports}var r=e((function(e,r){(function(t){e.exports=t()})((function(){return function(){function e(r,n,o){function i(s,u){if(!n[s]){if(!r[s]){var f="function"==typeof t&&t;if(!u&&f)return f(s,!0);if(a)return a(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[s]={exports:{}};r[s][0].call(c.exports,(function(t){var e=r[s][1][t];return i(e||t)}),c,c.exports,e,r,n,o)}return n[s].exports}for(var a="function"==typeof t&&t,s=0;s<o.length;s++)i(o[s]);return i}return e}()({1:[function(t,e,r){e.exports=function(){return"function"===typeof Promise&&Promise.prototype&&Promise.prototype.then}},{}],2:[function(t,e,r){var n=t("./utils").getSymbolSize;r.getRowColCoords=function(t){if(1===t)return[];for(var e=Math.floor(t/7)+2,r=n(t),o=145===r?26:2*Math.ceil((r-13)/(2*e-2)),i=[r-7],a=1;a<e-1;a++)i[a]=i[a-1]-o;return i.push(6),i.reverse()},r.getPositions=function(t){for(var e=[],n=r.getRowColCoords(t),o=n.length,i=0;i<o;i++)for(var a=0;a<o;a++)0===i&&0===a||0===i&&a===o-1||i===o-1&&0===a||e.push([n[i],n[a]]);return e}},{"./utils":21}],3:[function(t,e,r){var n=t("./mode"),o=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function i(t){this.mode=n.ALPHANUMERIC,this.data=t}i.getBitsLength=function(t){return 11*Math.floor(t/2)+t%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(t){var e;for(e=0;e+2<=this.data.length;e+=2){var r=45*o.indexOf(this.data[e]);r+=o.indexOf(this.data[e+1]),t.put(r,11)}this.data.length%2&&t.put(o.indexOf(this.data[e]),6)},e.exports=i},{"./mode":14}],4:[function(t,e,r){function n(){this.buffer=[],this.length=0}n.prototype={get:function(t){var e=Math.floor(t/8);return 1===(this.buffer[e]>>>7-t%8&1)},put:function(t,e){for(var r=0;r<e;r++)this.putBit(1===(t>>>e-r-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}},e.exports=n},{}],5:[function(t,e,r){var n=t("../utils/buffer");function o(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=n.alloc(t*t),this.reservedBit=n.alloc(t*t)}o.prototype.set=function(t,e,r,n){var o=t*this.size+e;this.data[o]=r,n&&(this.reservedBit[o]=!0)},o.prototype.get=function(t,e){return this.data[t*this.size+e]},o.prototype.xor=function(t,e,r){this.data[t*this.size+e]^=r},o.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]},e.exports=o},{"../utils/buffer":28}],6:[function(t,e,r){var n=t("../utils/buffer"),o=t("./mode");function i(t){this.mode=o.BYTE,this.data=n.from(t)}i.getBitsLength=function(t){return 8*t},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(t){for(var e=0,r=this.data.length;e<r;e++)t.put(this.data[e],8)},e.exports=i},{"../utils/buffer":28,"./mode":14}],7:[function(t,e,r){var n=t("./error-correction-level"),o=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],i=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];r.getBlocksCount=function(t,e){switch(e){case n.L:return o[4*(t-1)+0];case n.M:return o[4*(t-1)+1];case n.Q:return o[4*(t-1)+2];case n.H:return o[4*(t-1)+3];default:return}},r.getTotalCodewordsCount=function(t,e){switch(e){case n.L:return i[4*(t-1)+0];case n.M:return i[4*(t-1)+1];case n.Q:return i[4*(t-1)+2];case n.H:return i[4*(t-1)+3];default:return}}},{"./error-correction-level":8}],8:[function(t,e,r){function n(t){if("string"!==typeof t)throw new Error("Param iLine truncated
|
|
||||||
//# sourceMappingURL=chunk-3fba1bf2.6996f5b8.js.map
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":3,"sources":["webpack:///./src/components/Invite.vue?1e53","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./src/views/Room.vue?4c16","webpack:///./src/components/Invite.vue?50c2","webpack:///src/components/Invite.vue","webpack:///./src/components/Invite.vue?b625","webpack:///./src/components/Invite.vue","webpack:///./src/components/Admin.vue?d2f4","webpack:///src/components/Admin.vue","webpack:///./src/components/Admin.vue?b9b0","webpack:///./src/components/Admin.vue","webpack:///./src/components/Playlist.vue?ca24","webpack:///src/components/Playlist.vue","webpack:///./src/components/Playlist.vue?75f0","webpack:///./src/components/Playlist.vue","webpack:///./src/components/Player.vue?3902","webpack:///src/components/Player.vue","webpack:///./src/components/Player.vue?c370","webpack:///./src/components/Player.vue","webpack:///./src/components/Settings.vue?3f42","webpack:///src/components/Settings.vue","webpack:///./src/components/Settings.vue?32cf","webpack:///./src/components/Settings.vue","webpack:///src/views/Room.vue","webpack:///./src/views/Room.vue?4f58","webpack:///./src/views/Room.vue?43d2","webpack:///./src/components/Playlist.vue?0a1e","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./src/views/Room.vue?ed5d","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/@chenfengyuan/vue-qrcode/dist/vue-qrcode.js","webpack:///./src/components/Player.vue?fef7","webpack:///./node_modules/core-js/modules/es.array.includes.js"],"names":["$","notARegExp","requireObjectCoercible","correctIsRegExpLogic","target","proto","forced","includes","searchString","String","this","indexOf","arguments","length","undefined","render","_vm","_h","$createElement","_c","_self","staticClass","_v","_s","roomStatus","roomName","current","title","attrs","localSettings","playLink","isAdmin","roomCode","isRoomLoading","on","$event","staticRenderFns","width","name","components","qrcode","props","type","default","component","broadcastStatus","usersList","scopedSlots","_u","key","fn","row","connection","signalingState","dataChannel","readyState","kickUser","computed","$store","state","rtc","peers","methods","dispatch","roomSettings","addLinkPrompt","_e","playlist","link","votes","voters","hasVoted","vote","linkID","removePlay","room","admin","$buefy","dialog","prompt","message","trapFocus","inputAttrs","placeholder","cancelText","confirmText","onConfirm","sendVote","isPositive","voterName","play","ref","playerVars","player","playing","userControl","mute","skip","volume","timeLength","timeCode","value","convertTimeCode","seek","$refs","youtube","autoplay","controls","disablekb","modestbranding","rel","adminVars","userVars","lastUserCommand","mounted","addEventListener","playerStateChange","setInterval","updateTimeCode","watch","seekTo","status","playVideo","pauseVideo","command","argument","setVolume","commit","time","minutes","Math","round","seconds","setLocalSettings","model","callback","$$v","$set","expression","setRoomSettings","leave","data","$router","push","Invite","Admin","Playlist","Player","Settings","isLoggedIn","app","loginSuccess","isObject","classof","wellKnownSymbol","MATCH","module","exports","it","isRegExp","TypeError","METHOD_NAME","regexp","e","f","global","factory","commonjsRequire","Error","createCommonjsModule","r","n","t","o","i","c","u","a","code","p","call","1","require","Promise","prototype","then","2","getSymbolSize","getRowColCoords","version","posCount","floor","size","intervals","ceil","positions","reverse","getPositions","coords","pos","posLength","j","3","Mode","ALPHA_NUM_CHARS","AlphanumericData","mode","ALPHANUMERIC","getBitsLength","getLength","write","bitBuffer","put","4","BitBuffer","buffer","get","index","bufIndex","num","putBit","getLengthInBits","bit","5","BufferUtil","BitMatrix","alloc","reservedBit","set","col","reserved","xor","isReserved","6","ByteData","BYTE","from","l","7","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","L","M","Q","H","getTotalCodewordsCount","8","fromString","string","lcStr","toLowerCase","isValid","level","defaultValue","9","FINDER_PATTERN_SIZE","10","Utils","G15","G15_MASK","G15_BCH","getBCHDigit","getEncodedBits","mask","d","11","EXP_TABLE","LOG_TABLE","x","log","exp","mul","y","12","KanjiData","KANJI","toSJIS","13","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PenaltyScores","N1","N2","N3","N4","getMaskAt","maskPattern","isNaN","parseInt","getPenaltyN1","points","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","last","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","k","abs","applyMask","pattern","getBestMask","setupFormatFunc","numPatterns","Object","keys","bestPattern","lowerPenalty","Infinity","penalty","14","VersionCheck","Regex","NUMERIC","id"Line truncated
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-3fba1bf2"],{"1b09":function(t,e,r){"use strict";var n=r("a70e"),o=r.n(n);o.a},2532:function(t,e,r){"use strict";var n=r("23e7"),o=r("5a34"),i=r("1d80"),a=r("ab13");n({target:"String",proto:!0,forced:!a("includes")},{includes:function(t){return!!~String(i(this)).indexOf(o(t),arguments.length>1?arguments[1]:void 0)}})},"3ab1":function(t,e,r){"use strict";r.r(e);var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"room container"},[r("div",{staticClass:"roomTitle"},[r("h1",{staticClass:"title is-1"},[t._v(t._s(t.roomStatus.roomName))]),r("h2",{staticClass:"subtitle"},[t._v(t._s(t.roomStatus.current.title))])]),r("b-tabs",{attrs:{type:"is-boxed",expanded:""}},[r("b-tab-item",{attrs:{label:"Playlist",icon:"playlist-play"}},[r("Playlist")],1),r("b-tab-item",{attrs:{label:"Player",icon:"youtube",visible:t.localSettings.playLink}},[r("Player")],1),r("b-tab-item",{attrs:{label:"Peers",icon:"lan",visible:t.isAdmin}},[r("Admin")],1),r("b-tab-item",{attrs:{label:"Invite",icon:"qrcode"}},[r("Invite",{attrs:{roomCode:t.roomStatus.roomCode}})],1),r("b-tab-item",{attrs:{label:"Settings",icon:"cog"}},[r("Settings")],1)],1),r("b-loading",{attrs:{"is-full-page":"",active:t.isRoomLoading},on:{"update:active":function(e){t.isRoomLoading=e}}})],1)},o=[],i=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"invite"},[r("h1",{staticClass:"subtitle"},[t._v(t._s(t.roomCode))]),r("qrcode",{attrs:{value:t.roomCode,options:{width:200}}})],1)},a=[],s=r("b2e5"),u=r.n(s),f={name:"Invite",components:{qrcode:u.a},props:{roomCode:{type:String,default:"abc"}}},l=f,c=(r("1b09"),r("2877")),h=Object(c["a"])(l,i,a,!1,null,null,null),p=h.exports,d=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",[r("b-button",{attrs:{"icon-left":"sync"},on:{click:t.broadcastStatus}},[t._v("Force status update")]),r("hr"),r("b-table",{attrs:{data:t.usersList,striped:"",hoverable:""},scopedSlots:t._u([{key:"default",fn:function(e){return[r("b-table-column",{attrs:{field:"name",label:"Name"}},[t._v(" "+t._s(e.row.name)+" ")]),r("b-table-column",{attrs:{field:"connection",label:"Connection"}},[t._v(" "+t._s(e.row.connection.signalingState)+" ")]),r("b-table-column",{attrs:{field:"data",label:"DataChannel"}},[t._v(" "+t._s(e.row.dataChannel.readyState)+" ")]),r("b-table-column",[r("b-button",{attrs:{"icon-left":"karate",type:"is-dark"},on:{click:function(r){return t.kickUser(e.row.name)}}})],1)]}}])})],1)},g=[],m={name:"Admin",computed:{usersList:function(){return this.$store.state.rtc.peers}},methods:{broadcastStatus:function(){this.$store.dispatch("rtc/broadcast",{message:this.$store.state.room.roomStatus,type:"status"})},kickUser:function(t){this.$store.dispatch("rtc/kick",t)}}},y=m,v=Object(c["a"])(y,d,g,!1,null,null,null),b=v.exports,w=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",[t.roomSettings.userLink?r("b-button",{attrs:{"icon-left":"plus",size:"is-medium"},on:{click:t.addLinkPrompt}},[t._v("Add link")]):t._e(),r("hr"),r("b-table",{attrs:{data:t.roomStatus.playlist,striped:"",hoverable:"","default-sort":"vote"},scopedSlots:t._u([{key:"default",fn:function(e){return[r("b-table-column",{attrs:{field:"title",label:"Title"}},[t._v(" "+t._s(e.row.title)+" ")]),r("b-table-column",{attrs:{field:"link",label:"Link"}},[t._v(" "+t._s(e.row.link)+" ")]),r("b-table-column",{attrs:{field:"vote",label:"Votes"}},[t._v(" "+t._s(e.row.votes)+" ")]),r("b-table-column",{attrs:{field:"voters",label:"Voters",visible:t.isAdmin}},[t._v(" "+t._s(e.row.voters)+" ")]),r("b-table-column",[t.hasVoted(e.row)?r("b-button",{attrs:{"icon-left":"arrow-down-bold-outline",type:"is-primary",size:"is-medium"},on:{click:function(r){t.vote(e.row.title,e.row.link,e.row.linkID,!1)}}}):r("b-button",{attrs:{"icon-left":"arrow-up-bold-outline",type:"is-primary",size:"is-medium"},on:{click:function(r){t.vote(e.row.title,e.row.link,e.row.linkID,!0)}}}),t.isAdmin?r("b-button",{staticClass:"actionButton",attrs:{"icon-left":"delete-forever",type:"is-danger",size:"is-medium"},on:{click:function(r){t.removePlay(e.row.linkID)}}}):t._e()],1)]}}])})],1)},E=[],A=(r("caad"),r("b0c0"),r("d3b7"),r("2532"),r("96cf"),r("1da1")),S={name:"Playlist",computed:{isAdmin:function(){return this.$store.state.room.admin},roomStatus:function(){return this.$store.state.room.roomStatus},roomSettings:function(){return this.$store.state.room.roomSettings}},methods:{addLinkPrompt:function(){var t=this;this.$buefy.dialog.prompt({message:"Add a youtube link",trapFocus:!0,inputAttrs:{placeholder:"https://www.youtube.com/watch?v=YItIK09bpKk"},cancelText:"Nah",confirmText:"Add",onConfirm:function(e){return t.addLink(e)}})},addLink:function(t){var e=this;return Object(A["a"])(regeneratorRuntime.mark((function r(){var n,o;return regeneratorRuntime.wrap((function(r){while(1)switch(r.prev=r.next){case 0:if(n=e.$youtube.getIdFromUrl(t),null!==n){r.next=4;breLine truncated
|
|
||||||
/*!
|
|
||||||
* vue-qrcode v1.0.2
|
|
||||||
* https://fengyuanchen.github.io/vue-qrcode
|
|
||||||
*
|
|
||||||
* Copyright 2018-present Chen Fengyuan
|
|
||||||
* Released under the MIT license
|
|
||||||
*
|
|
||||||
* Date: 2020-01-18T06:04:33.222Z
|
|
||||||
*/
|
|
||||||
(function(e,r){t.exports=r()})(0,(function(){"use strict";function t(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}function e(t,e){return e={exports:{}},t(e,e.exports),e.exports}var r=e((function(e,r){(function(t){e.exports=t()})((function(){return function(){function e(r,n,o){function i(s,u){if(!n[s]){if(!r[s]){var f="function"==typeof t&&t;if(!u&&f)return f(s,!0);if(a)return a(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[s]={exports:{}};r[s][0].call(c.exports,(function(t){var e=r[s][1][t];return i(e||t)}),c,c.exports,e,r,n,o)}return n[s].exports}for(var a="function"==typeof t&&t,s=0;s<o.length;s++)i(o[s]);return i}return e}()({1:[function(t,e,r){e.exports=function(){return"function"===typeof Promise&&Promise.prototype&&Promise.prototype.then}},{}],2:[function(t,e,r){var n=t("./utils").getSymbolSize;r.getRowColCoords=function(t){if(1===t)return[];for(var e=Math.floor(t/7)+2,r=n(t),o=145===r?26:2*Math.ceil((r-13)/(2*e-2)),i=[r-7],a=1;a<e-1;a++)i[a]=i[a-1]-o;return i.push(6),i.reverse()},r.getPositions=function(t){for(var e=[],n=r.getRowColCoords(t),o=n.length,i=0;i<o;i++)for(var a=0;a<o;a++)0===i&&0===a||0===i&&a===o-1||i===o-1&&0===a||e.push([n[i],n[a]]);return e}},{"./utils":21}],3:[function(t,e,r){var n=t("./mode"),o=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function i(t){this.mode=n.ALPHANUMERIC,this.data=t}i.getBitsLength=function(t){return 11*Math.floor(t/2)+t%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(t){var e;for(e=0;e+2<=this.data.length;e+=2){var r=45*o.indexOf(this.data[e]);r+=o.indexOf(this.data[e+1]),t.put(r,11)}this.data.length%2&&t.put(o.indexOf(this.data[e]),6)},e.exports=i},{"./mode":14}],4:[function(t,e,r){function n(){this.buffer=[],this.length=0}n.prototype={get:function(t){var e=Math.floor(t/8);return 1===(this.buffer[e]>>>7-t%8&1)},put:function(t,e){for(var r=0;r<e;r++)this.putBit(1===(t>>>e-r-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}},e.exports=n},{}],5:[function(t,e,r){var n=t("../utils/buffer");function o(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=n.alloc(t*t),this.reservedBit=n.alloc(t*t)}o.prototype.set=function(t,e,r,n){var o=t*this.size+e;this.data[o]=r,n&&(this.reservedBit[o]=!0)},o.prototype.get=function(t,e){return this.data[t*this.size+e]},o.prototype.xor=function(t,e,r){this.data[t*this.size+e]^=r},o.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]},e.exports=o},{"../utils/buffer":28}],6:[function(t,e,r){var n=t("../utils/buffer"),o=t("./mode");function i(t){this.mode=o.BYTE,this.data=n.from(t)}i.getBitsLength=function(t){return 8*t},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(t){for(var e=0,r=this.data.length;e<r;e++)t.put(this.data[e],8)},e.exports=i},{"../utils/buffer":28,"./mode":14}],7:[function(t,e,r){var n=t("./error-correction-level"),o=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],i=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];r.getBlocksCount=function(t,e){switch(e){case n.L:return o[4*(t-1)+0];case n.M:return o[4*(t-1)+1];case n.Q:return o[4*(t-1)+2];case n.H:return o[4*(t-1)+3];default:return}},r.getTotalCodewordsCount=function(t,e){switch(e){case n.L:return i[4*(t-1)+0];case n.M:return i[4*(t-1)+1];case n.Q:return i[4*(t-1)+2];case n.H:return i[4*(t-1)+3];default:return}}},{"./error-correction-level":8}],8:[function(t,e,r){function n(t){if("string"!==typeof t)throw new Error("Param iLine truncated
|
|
||||||
//# sourceMappingURL=chunk-3fba1bf2.bc112002.js.map
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":3,"sources":["webpack:///./src/components/Invite.vue?1e53","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./src/views/Room.vue?4c16","webpack:///./src/components/Invite.vue?50c2","webpack:///src/components/Invite.vue","webpack:///./src/components/Invite.vue?b625","webpack:///./src/components/Invite.vue","webpack:///./src/components/Admin.vue?d2f4","webpack:///src/components/Admin.vue","webpack:///./src/components/Admin.vue?b9b0","webpack:///./src/components/Admin.vue","webpack:///./src/components/Playlist.vue?ca24","webpack:///src/components/Playlist.vue","webpack:///./src/components/Playlist.vue?75f0","webpack:///./src/components/Playlist.vue","webpack:///./src/components/Player.vue?c149","webpack:///src/components/Player.vue","webpack:///./src/components/Player.vue?c370","webpack:///./src/components/Player.vue","webpack:///./src/components/Settings.vue?3f42","webpack:///src/components/Settings.vue","webpack:///./src/components/Settings.vue?32cf","webpack:///./src/components/Settings.vue","webpack:///src/views/Room.vue","webpack:///./src/views/Room.vue?4f58","webpack:///./src/views/Room.vue?43d2","webpack:///./src/components/Playlist.vue?0a1e","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./src/views/Room.vue?ed5d","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/@chenfengyuan/vue-qrcode/dist/vue-qrcode.js","webpack:///./src/components/Player.vue?fef7","webpack:///./node_modules/core-js/modules/es.array.includes.js"],"names":["$","notARegExp","requireObjectCoercible","correctIsRegExpLogic","target","proto","forced","includes","searchString","String","this","indexOf","arguments","length","undefined","render","_vm","_h","$createElement","_c","_self","staticClass","_v","_s","roomStatus","roomName","current","title","attrs","localSettings","playLink","isAdmin","roomCode","isRoomLoading","on","$event","staticRenderFns","width","name","components","qrcode","props","type","default","component","broadcastStatus","usersList","scopedSlots","_u","key","fn","row","connection","signalingState","dataChannel","readyState","kickUser","computed","$store","state","rtc","peers","methods","dispatch","roomSettings","addLinkPrompt","_e","playlist","link","votes","voters","hasVoted","vote","linkID","removePlay","room","admin","$buefy","dialog","prompt","message","trapFocus","inputAttrs","placeholder","cancelText","confirmText","onConfirm","sendVote","isPositive","voterName","play","ref","playerVars","player","playing","userControl","mute","skip","volume","timeLength","timeCode","value","convertTimeCode","seek","$refs","youtube","autoplay","controls","disablekb","modestbranding","rel","adminVars","userVars","mounted","addEventListener","playerStateChange","watch","seekTo","status","playVideo","pauseVideo","setVolume","commit","time","minutes","Math","round","seconds","setLocalSettings","model","callback","$$v","$set","expression","setRoomSettings","leave","data","$router","push","Invite","Admin","Playlist","Player","Settings","isLoggedIn","app","loginSuccess","isObject","classof","wellKnownSymbol","MATCH","module","exports","it","isRegExp","TypeError","METHOD_NAME","regexp","e","f","global","factory","commonjsRequire","Error","createCommonjsModule","r","n","t","o","i","c","u","a","code","p","call","1","require","Promise","prototype","then","2","getSymbolSize","getRowColCoords","version","posCount","floor","size","intervals","ceil","positions","reverse","getPositions","coords","pos","posLength","j","3","Mode","ALPHA_NUM_CHARS","AlphanumericData","mode","ALPHANUMERIC","getBitsLength","getLength","write","bitBuffer","put","4","BitBuffer","buffer","get","index","bufIndex","num","putBit","getLengthInBits","bit","5","BufferUtil","BitMatrix","alloc","reservedBit","set","col","reserved","xor","isReserved","6","ByteData","BYTE","from","l","7","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","L","M","Q","H","getTotalCodewordsCount","8","fromString","string","lcStr","toLowerCase","isValid","level","defaultValue","9","FINDER_PATTERN_SIZE","10","Utils","G15","G15_MASK","G15_BCH","getBCHDigit","getEncodedBits","mask","d","11","EXP_TABLE","LOG_TABLE","x","log","exp","mul","y","12","KanjiData","KANJI","toSJIS","13","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PenaltyScores","N1","N2","N3","N4","getMaskAt","maskPattern","isNaN","parseInt","getPenaltyN1","points","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","last","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","k","abs","applyMask","pattern","getBestMask","setupFormatFunc","numPatterns","Object","keys","bestPattern","lowerPenalty","Infinity","penalty","14","VersionCheck","Regex","NUMERIC","id","ccBits","MIXED","getCharCountIndicator","getBestModeForData","dataStLine truncated
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{"00ee":function(t,e,n){var i=n("b622"),r=i("toStringTag"),o={};o[r]="z",t.exports="[object z]"===String(o)},"0366":function(t,e,n){var i=n("1c0b");t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,r){return t.call(e,n,i,r)}}return function(){return t.apply(e,arguments)}}},"06cf":function(t,e,n){var i=n("83ab"),r=n("d1e7"),o=n("5c6c"),a=n("fc6a"),s=n("c04e"),c=n("5135"),u=n("0cfb"),l=Object.getOwnPropertyDescriptor;e.f=i?l:function(t,e){if(t=a(t),e=s(e,!0),u)try{return l(t,e)}catch(n){}if(c(t,e))return o(!r.f.call(t,e),t[e])}},"0cfb":function(t,e,n){var i=n("83ab"),r=n("d039"),o=n("cc12");t.exports=!i&&!r((function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},"0fe3":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r=n("3041"),o=l(r),a=n("308c"),s=l(a),c=n("dc91"),u=l(c);function l(t){return t&&t.__esModule?t:{default:t}}var d=void 0;e.default=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=(0,o.default)();if(d||(d=(0,s.default)(r)),e.events)throw new Error("Event handlers cannot be overwritten.");if("string"===typeof t&&!document.getElementById(t))throw new Error('Element "'+t+'" does not exist.');e.events=u.default.proxyEvents(r);var a=new Promise((function(n){if("object"===("undefined"===typeof t?"undefined":i(t))&&t.playVideo instanceof Function){var o=t;n(o)}else d.then((function(i){var o=new i.Player(t,e);return r.on("ready",(function(){n(o)})),null}))})),c=u.default.promisifyPlayer(a,n);return c.on=r.on,c.off=r.off,c},t.exports=e["default"]},"11f5":function(t,e,n){"use strict";n.d(e,"a",(function(){return v}));var i=n("e084"),r=n("8807"),o=n("2674"),a=n("5f62"),s={name:"BModal",directives:{trapFocus:a["a"]},props:{active:Boolean,component:[Object,Function],content:String,programmatic:Boolean,props:Object,events:Object,width:{type:[String,Number],default:960},hasModalCard:Boolean,animation:{type:String,default:"zoom-out"},canCancel:{type:[Array,Boolean],default:function(){return r["c"].defaultModalCanCancel}},onCancel:{type:Function,default:function(){}},scroll:{type:String,default:function(){return r["c"].defaultModalScroll?r["c"].defaultModalScroll:"clip"},validator:function(t){return["clip","keep"].indexOf(t)>=0}},fullScreen:Boolean,trapFocus:{type:Boolean,default:function(){return r["c"].defaultTrapFocus}},customClass:String,ariaRole:{type:String,validator:function(t){return["dialog","alertdialog"].indexOf(t)>=0}},ariaModal:Boolean,destroyOnHide:{type:Boolean,default:!0}},data:function(){return{isActive:this.active||!1,savedScrollTop:null,newWidth:"number"===typeof this.width?this.width+"px":this.width,animating:!0,destroyed:!this.active}},computed:{cancelOptions:function(){return"boolean"===typeof this.canCancel?this.canCancel?r["c"].defaultModalCanCancel:[]:this.canCancel},showX:function(){return this.cancelOptions.indexOf("x")>=0},customStyle:function(){return this.fullScreen?null:{maxWidth:this.newWidth}}},watch:{active:function(t){this.isActive=t},isActive:function(t){var e=this;t&&(this.destroyed=!1),this.handleScroll(),this.$nextTick((function(){t&&e.$el&&e.$el.focus&&e.$el.focus()}))}},methods:{handleScroll:function(){"undefined"!==typeof window&&("clip"!==this.scroll?(this.savedScrollTop=this.savedScrollTop?this.savedScrollTop:document.documentElement.scrollTop,this.isActive?document.body.classList.add("is-noscroll"):document.body.classList.remove("is-noscroll"),this.isActive?document.body.style.top="-".concat(this.savedScrollTop,"px"):(document.documentElement.scrollTop=this.savedScrollTop,document.body.style.top=null,this.savedScrollTop=null)):this.isActive?document.documentElement.classList.add("is-clipped"):document.documentElement.classList.remove("is-clipped"))},cancel:function(t){this.cancelOptions.indexOf(t)<0||(this.onCancel.apply(null,arguments),this.close())},close:function(){var t=this;this.$emit("close"),this.$emit("update:active",!1),this.programmatic&&(this.isActive=!1,setTimeout((function(){t.$destroy(),Object(i["g"])(t.$el)}),150))},keyPress:function(t){this.isActive&&27===t.keyCode&&this.cancel("escape")},afterEnter:function(){this.animating=!1},beforeLeave:function(){this.animating=!0},afterLeave:function(){this.destroyOnHide&&(this.destroyed=!0)}},created:function(){"undefined"!==typeof window&&document.addEventListener("keyup",this.keyPress)},beforeMount:function(){this.programmatic&&document.body.appendChild(this.$el)},mounted:function(){this.programmatic?thiLine truncated
|
|
||||||
/*!
|
|
||||||
* Vue.js v2.6.11
|
|
||||||
* (c) 2014-2019 Evan You
|
|
||||||
* Released under the MIT License.
|
|
||||||
*/
|
|
||||||
var n=Object.freeze({});function i(t){return void 0===t||null===t}function r(t){return void 0!==t&&null!==t}function o(t){return!0===t}function a(t){return!1===t}function s(t){return"string"===typeof t||"number"===typeof t||"symbol"===typeof t||"boolean"===typeof t}function c(t){return null!==t&&"object"===typeof t}var u=Object.prototype.toString;function l(t){return"[object Object]"===u.call(t)}function d(t){return"[object RegExp]"===u.call(t)}function f(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function h(t){return r(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function p(t){return null==t?"":Array.isArray(t)||l(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function m(t,e){for(var n=Object.create(null),i=t.split(","),r=0;r<i.length;r++)n[i[r]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}m("slot,component",!0);var g=m("key,ref,slot,slot-scope,is");function b(t,e){if(t.length){var n=t.indexOf(e);if(n>-1)return t.splice(n,1)}}var y=Object.prototype.hasOwnProperty;function w(t,e){return y.call(t,e)}function k(t){var e=Object.create(null);return function(n){var i=e[n];return i||(e[n]=t(n))}}var S=/-(\w)/g,x=k((function(t){return t.replace(S,(function(t,e){return e?e.toUpperCase():""}))})),_=k((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),C=/\B([A-Z])/g,O=k((function(t){return t.replace(C,"-$1").toLowerCase()}));function D(t,e){function n(n){var i=arguments.length;return i?i>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function A(t,e){return t.bind(e)}var $=Function.prototype.bind?A:D;function j(t,e){e=e||0;var n=t.length-e,i=new Array(n);while(n--)i[n]=t[n+e];return i}function P(t,e){for(var n in e)t[n]=e[n];return t}function E(t){for(var e={},n=0;n<t.length;n++)t[n]&&P(e,t[n]);return e}function T(t,e,n){}var M=function(t,e,n){return!1},I=function(t){return t};function R(t,e){if(t===e)return!0;var n=c(t),i=c(e);if(!n||!i)return!n&&!i&&String(t)===String(e);try{var r=Array.isArray(t),o=Array.isArray(e);if(r&&o)return t.length===e.length&&t.every((function(t,n){return R(t,e[n])}));if(t instanceof Date&&e instanceof Date)return t.getTime()===e.getTime();if(r||o)return!1;var a=Object.keys(t),s=Object.keys(e);return a.length===s.length&&a.every((function(n){return R(t[n],e[n])}))}catch(u){return!1}}function B(t,e){for(var n=0;n<t.length;n++)if(R(t[n],e))return n;return-1}function F(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}}var L="data-server-rendered",N=["component","directive","filter"],V=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured","serverPrefetch"],z={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:M,isReservedAttr:M,isUnknownElement:M,getTagNamespace:T,parsePlatformTagName:I,mustUseProp:M,async:!0,_lifecycleHooks:V},H=/a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;function U(t){var e=(t+"").charCodeAt(0);return 36===e||95===e}function Y(t,e,n,i){Object.defineProperty(t,e,{value:n,enumerable:!!i,writable:!0,configurable:!0})}var q=new RegExp("[^"+H.source+".$_\\d]");function W(t){if(!q.test(t)){var e=t.split(".");return function(t){for(var n=0;n<e.length;n++){if(!t)return;t=t[e[n]]}return t}}}var G,K="__proto__"in{},X="undefined"!==typeof window,J="undefined"!==typeof WXEnvironment&&!!WXEnvironment.platform,Q=J&&WXEnvironment.platform.toLowerCase(),Z=X&&window.navigator.userAgent.toLowerCase(),tt=Z&&/msie|trident/.test(Z),et=Z&&Z.indexOf("msie 9.0")>0,nt=Z&&Z.indexOf("edge/")>0,it=(Z&&Z.indexOf("android"),Z&&/iphone|ipad|ipod|ios/.test(Z)||"ios"===Q),rt=(Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z),Z&&Z.match(/firefox\/(\d+)/)),ot={}.watch,at=!1;if(X)try{var st={};Object.defineProperty(st,"passive",{get:function(){at=!0}}),window.addEventListener("test-passive",null,st)}catch(xa){}var ct=function(){return void 0===G&&(G=!X&&!J&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),G},ut=X&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function lt(t){return"function"===typeof t&&/native code/.test(t.toString())}var dt,ft="undefined"!==typeof Symbol&<(Symbol)&&"undefined"!==typeof Reflect&<(Reflect.ownKeys);dt="undefined"!==typeof Set&<(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ht=T,pt=0,vt=function(){this.id=pt++,this.subs=[]};vt.prototype.addSub=function(t){this.subs.push(t)},vt.prototype.removeSub=function(t){b(this.subs,t)},vt.prototype.depend=funcLine truncated
|
|
||||||
/*!
|
|
||||||
* vuex v3.5.1
|
|
||||||
* (c) 2020 Evan You
|
|
||||||
* @license MIT
|
|
||||||
*/
|
|
||||||
function n(t){var e=Number(t.version.split(".")[0]);if(e>=2)t.mixin({beforeCreate:i});else{var n=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[i].concat(t.init):i,n.call(this,t)}}function i(){var t=this.$options;t.store?this.$store="function"===typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}}var i="undefined"!==typeof window?window:"undefined"!==typeof t?t:{},r=i.__VUE_DEVTOOLS_GLOBAL_HOOK__;function o(t){r&&(t._devtoolHook=r,r.emit("vuex:init",t),r.on("vuex:travel-to-state",(function(e){t.replaceState(e)})),t.subscribe((function(t,e){r.emit("vuex:mutation",t,e)}),{prepend:!0}),t.subscribeAction((function(t,e){r.emit("vuex:action",t,e)}),{prepend:!0}))}function a(t,e){return t.filter(e)[0]}function s(t,e){if(void 0===e&&(e=[]),null===t||"object"!==typeof t)return t;var n=a(e,(function(e){return e.original===t}));if(n)return n.copy;var i=Array.isArray(t)?[]:{};return e.push({original:t,copy:i}),Object.keys(t).forEach((function(n){i[n]=s(t[n],e)})),i}function c(t,e){Object.keys(t).forEach((function(n){return e(t[n],n)}))}function u(t){return null!==t&&"object"===typeof t}function l(t){return t&&"function"===typeof t.then}function d(t,e){return function(){return t(e)}}var f=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"===typeof n?n():n)||{}},h={namespaced:{configurable:!0}};h.namespaced.get=function(){return!!this._rawModule.namespaced},f.prototype.addChild=function(t,e){this._children[t]=e},f.prototype.removeChild=function(t){delete this._children[t]},f.prototype.getChild=function(t){return this._children[t]},f.prototype.hasChild=function(t){return t in this._children},f.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},f.prototype.forEachChild=function(t){c(this._children,t)},f.prototype.forEachGetter=function(t){this._rawModule.getters&&c(this._rawModule.getters,t)},f.prototype.forEachAction=function(t){this._rawModule.actions&&c(this._rawModule.actions,t)},f.prototype.forEachMutation=function(t){this._rawModule.mutations&&c(this._rawModule.mutations,t)},Object.defineProperties(f.prototype,h);var p=function(t){this.register([],t,!1)};function v(t,e,n){if(e.update(n),n.modules)for(var i in n.modules){if(!e.getChild(i))return void 0;v(t.concat(i),e.getChild(i),n.modules[i])}}p.prototype.get=function(t){return t.reduce((function(t,e){return t.getChild(e)}),this.root)},p.prototype.getNamespace=function(t){var e=this.root;return t.reduce((function(t,n){return e=e.getChild(n),t+(e.namespaced?n+"/":"")}),"")},p.prototype.update=function(t){v([],this.root,t)},p.prototype.register=function(t,e,n){var i=this;void 0===n&&(n=!0);var r=new f(e,n);if(0===t.length)this.root=r;else{var o=this.get(t.slice(0,-1));o.addChild(t[t.length-1],r)}e.modules&&c(e.modules,(function(e,r){i.register(t.concat(r),e,n)}))},p.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1],i=e.getChild(n);i&&i.runtime&&e.removeChild(n)},p.prototype.isRegistered=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];return e.hasChild(n)};var m;var g=function(t){var e=this;void 0===t&&(t={}),!m&&"undefined"!==typeof window&&window.Vue&&P(window.Vue);var n=t.plugins;void 0===n&&(n=[]);var i=t.strict;void 0===i&&(i=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new p(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new m,this._makeLocalGettersCache=Object.create(null);var r=this,a=this,s=a.dispatch,c=a.commit;this.dispatch=function(t,e){return s.call(r,t,e)},this.commit=function(t,e,n){return c.call(r,t,e,n)},this.strict=i;var u=this._modules.root.state;S(this,u,[],this._modules.root),k(this,u),n.forEach((function(t){return t(e)}));var l=void 0!==t.devtools?t.devtools:m.config.devtools;l&&o(this)},b={state:{configurable:!0}};function y(t,e,n){return e.indexOf(t)<0&&(n&&n.prepend?e.unshift(t):e.push(t)),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function w(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;S(t,n,[],t._modules.root,!0),k(t,n,e)}function k(t,e,n){var i=t._vm;t.getters={},t._makeLocalGettersCache=Object.create(null);var r=t._wrappedGetters,o={};c(r,(function(e,n){o[n]=d(e,t),Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})}));var a=m.config.silent;m.config.silent=!0,t._vm=new m({data:{$$state:e},computed:o}),m.config.silent=a,t.strict&&A(t),i&&(n&&t._withCommit((function(){i._data.$$state=null})),m.nextTick((function(){return i.$destroy()})))}function S(t,e,n,i,r){var o=!n.length,a=t._Line truncated
|
|
||||||
/**
|
|
||||||
* @link https://github.com/gajus/sister for the canonical source repository
|
|
||||||
* @license https://github.com/gajus/sister/blob/master/LICENSE BSD 3-Clause
|
|
||||||
*/i=function(){var t={},e={};return t.on=function(t,n){var i={name:t,handler:n};return e[t]=e[t]||[],e[t].unshift(i),i},t.off=function(t){var n=e[t.name].indexOf(t);-1!==n&&e[t.name].splice(n,1)},t.trigger=function(t,n){var i,r=e[t];if(r){i=r.length;while(i--)r[i].handler(n)}},t},t.exports=i},"308c":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n("32e6"),r=o(i);function o(t){return t&&t.__esModule?t:{default:t}}e.default=function(t){var e=new Promise((function(e){if(window.YT&&window.YT.Player&&window.YT.Player instanceof Function)e(window.YT);else{var n="http:"===window.location.protocol?"http:":"https:";(0,r.default)(n+"//www.youtube.com/iframe_api",(function(e){e&&t.trigger("error",e)}));var i=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=function(){i&&i(),e(window.YT)}}}));return e},t.exports=e["default"]},"32e6":function(t,e){function n(t,e){for(var n in e)t.setAttribute(n,e[n])}function i(t,e){t.onload=function(){this.onerror=this.onload=null,e(null,t)},t.onerror=function(){this.onerror=this.onload=null,e(new Error("Failed to load "+this.src),t)}}function r(t,e){t.onreadystatechange=function(){"complete"!=this.readyState&&"loaded"!=this.readyState||(this.onreadystatechange=null,e(null,t))}}t.exports=function(t,e,o){var a=document.head||document.getElementsByTagName("head")[0],s=document.createElement("script");"function"===typeof e&&(o=e,e={}),e=e||{},o=o||function(){},s.type=e.type||"text/javascript",s.charset=e.charset||"utf8",s.async=!("async"in e)||!!e.async,s.src=t,e.attrs&&n(s,e.attrs),e.text&&(s.text=""+e.text);var c="onload"in s?i:r;c(s,o),s.onload||i(s,o),a.appendChild(s)}},"342f":function(t,e,n){var i=n("d066");t.exports=i("navigator","userAgent")||""},"35a1":function(t,e,n){var i=n("f5df"),r=n("3f8c"),o=n("b622"),a=o("iterator");t.exports=function(t){if(void 0!=t)return t[a]||t["@@iterator"]||r[i(t)]}},"37e8":function(t,e,n){var i=n("83ab"),r=n("9bf2"),o=n("825a"),a=n("df75");t.exports=i?Object.defineProperties:function(t,e){o(t);var n,i=a(e),s=i.length,c=0;while(s>c)r.f(t,n=i[c++],e[n]);return t}},"39ea":function(t,e,n){"use strict";n.d(e,"a",(function(){return k}));var i=n("6d6f"),r=n("e084"),o=n("8807"),a=n("749d"),s=n("2674"),c=n("5f62"),u=n("11f5"),l={name:"BDialog",components:Object(i["a"])({},a["a"].name,a["a"]),directives:{trapFocus:c["a"]},extends:u["a"],props:{title:String,message:String,icon:String,iconPack:String,hasIcon:Boolean,type:{type:String,default:"is-primary"},size:String,confirmText:{type:String,default:function(){return o["c"].defaultDialogConfirmText?o["c"].defaultDialogConfirmText:"OK"}},cancelText:{type:String,default:function(){return o["c"].defaultDialogCancelText?o["c"].defaultDialogCancelText:"Cancel"}},hasInput:Boolean,inputAttrs:{type:Object,default:function(){return{}}},onConfirm:{type:Function,default:function(){}},closeOnConfirm:{type:Boolean,default:!0},container:{type:String,default:function(){return o["c"].defaultContainerElement}},focusOn:{type:String,default:"confirm"},trapFocus:{type:Boolean,default:function(){return o["c"].defaultTrapFocus}},ariaRole:{type:String,validator:function(t){return["dialog","alertdialog"].indexOf(t)>=0}},ariaModal:Boolean},data:function(){var t=this.hasInput&&this.inputAttrs.value||"";return{prompt:t,isActive:!1,validationMessage:""}},computed:{dialogClass:function(){return[this.size,{"has-custom-container":null!==this.container}]},iconByType:function(){switch(this.type){case"is-info":return"information";case"is-success":return"check-circle";case"is-warning":return"alert";case"is-danger":return"alert-circle";default:return null}},showCancel:function(){return this.cancelOptions.indexOf("button")>=0}},methods:{confirm:function(){var t=this;if(void 0!==this.$refs.input&&!this.$refs.input.checkValidity())return this.validationMessage=this.$refs.input.validationMessage,void this.$nextTick((function(){return t.$refs.input.select()}));this.onConfirm(this.prompt,this),this.closeOnConfirm&&this.close()},close:function(){var t=this;this.isActive=!1,setTimeout((function(){t.$destroy(),Object(r["g"])(t.$el)}),150)}},beforeMount:function(){var t=this;"undefined"!==typeof window&&this.$nextTick((function(){var e=document.querySelector(t.container)||document.body;e.appendChild(t.$el)}))},mounted:function(){var t=this;this.isActive=!0,"undefined"===typeof this.inputAttrs.required&&this.$set(this.inputAttrs,"required",!0),this.$nextTick((function(){t.hasInput?t.$refs.input.focus():"cancel"===t.focusOn&&t.showCancel?t.$refs.cancelButton.focus():t.$refs.confirmButton.focus()}))}};const d=l;var f=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("transition",{attrs:{name:t.animation}},[t.isActive?n("div",{directives:[{name:"trap-focus",rawName:"v-trap-focus",value:t.trapFocus,expression:"trapFocus"}],staticClass:"dialog modal is-active",class:t.dialogClass,attrs:{role:t.ariaRole,"aria-modal":t.ariaModal}},[n("div",{staticClass:"modal-background",on:{click:function(e){t.cancLine truncated
|
|
||||||
/*!
|
|
||||||
* vue-router v3.3.4
|
|
||||||
* (c) 2020 Evan You
|
|
||||||
* @license MIT
|
|
||||||
*/function i(t,e){0}function r(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function o(t,e){return r(t)&&t._isRouter&&(null==e||t.type===e)}function a(t,e){for(var n in e)t[n]=e[n];return t}var s={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,i=e.children,r=e.parent,o=e.data;o.routerView=!0;var s=r.$createElement,u=n.name,l=r.$route,d=r._routerViewCache||(r._routerViewCache={}),f=0,h=!1;while(r&&r._routerRoot!==r){var p=r.$vnode?r.$vnode.data:{};p.routerView&&f++,p.keepAlive&&r._directInactive&&r._inactive&&(h=!0),r=r.$parent}if(o.routerViewDepth=f,h){var v=d[u],m=v&&v.component;return m?(v.configProps&&c(m,o,v.route,v.configProps),s(m,o,i)):s()}var g=l.matched[f],b=g&&g.components[u];if(!g||!b)return d[u]=null,s();d[u]={component:b},o.registerRouteInstance=function(t,e){var n=g.instances[u];(e&&n!==t||!e&&n===t)&&(g.instances[u]=e)},(o.hook||(o.hook={})).prepatch=function(t,e){g.instances[u]=e.componentInstance},o.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==g.instances[u]&&(g.instances[u]=t.componentInstance)};var y=g.props&&g.props[u];return y&&(a(d[u],{route:l,configProps:y}),c(b,o,l,y)),s(b,o,i)}};function c(t,e,n,i){var r=e.props=u(n,i);if(r){r=e.props=a({},r);var o=e.attrs=e.attrs||{};for(var s in r)t.props&&s in t.props||(o[s]=r[s],delete r[s])}}function u(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}var l=/[!'()*]/g,d=function(t){return"%"+t.charCodeAt(0).toString(16)},f=/%2C/g,h=function(t){return encodeURIComponent(t).replace(l,d).replace(f,",")},p=decodeURIComponent;function v(t,e,n){void 0===e&&(e={});var i,r=n||m;try{i=r(t||"")}catch(a){i={}}for(var o in e)i[o]=e[o];return i}function m(t){var e={};return t=t.trim().replace(/^(\?|#|&)/,""),t?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),i=p(n.shift()),r=n.length>0?p(n.join("=")):null;void 0===e[i]?e[i]=r:Array.isArray(e[i])?e[i].push(r):e[i]=[e[i],r]})),e):e}function g(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return h(e);if(Array.isArray(n)){var i=[];return n.forEach((function(t){void 0!==t&&(null===t?i.push(h(e)):i.push(h(e)+"="+h(t)))})),i.join("&")}return h(e)+"="+h(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var b=/\/?$/;function y(t,e,n,i){var r=i&&i.options.stringifyQuery,o=e.query||{};try{o=w(o)}catch(s){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:o,params:e.params||{},fullPath:x(e,r),matched:t?S(t):[]};return n&&(a.redirectedFrom=x(n,r)),Object.freeze(a)}function w(t){if(Array.isArray(t))return t.map(w);if(t&&"object"===typeof t){var e={};for(var n in t)e[n]=w(t[n]);return e}return t}var k=y(null,{path:"/"});function S(t){var e=[];while(t)e.unshift(t),t=t.parent;return e}function x(t,e){var n=t.path,i=t.query;void 0===i&&(i={});var r=t.hash;void 0===r&&(r="");var o=e||g;return(n||"/")+o(i)+r}function _(t,e){return e===k?t===e:!!e&&(t.path&&e.path?t.path.replace(b,"")===e.path.replace(b,"")&&t.hash===e.hash&&C(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&C(t.query,e.query)&&C(t.params,e.params)))}function C(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),i=Object.keys(e);return n.length===i.length&&n.every((function(n){var i=t[n],r=e[n];return"object"===typeof i&&"object"===typeof r?C(i,r):String(i)===String(r)}))}function O(t,e){return 0===t.path.replace(b,"/").indexOf(e.path.replace(b,"/"))&&(!e.hash||t.hash===e.hash)&&D(t.query,e.query)}function D(t,e){for(var n in e)if(!(n in t))return!1;return!0}function A(t,e,n){var i=t.charAt(0);if("/"===i)return t;if("?"===i||"#"===i)return e+t;var r=e.split("/");n&&r[r.length-1]||r.pop();for(var o=t.replace(/^\//,"").split("/"),a=0;a<o.length;a++){var s=o[a];".."===s?r.pop():"."!==s&&r.push(s)}return""!==r[0]&&r.unshift(""),r.join("/")}function $(t){var e="",n="",i=t.indexOf("#");i>=0&&(e=t.slice(i),t=t.slice(0,i));var r=t.indexOf("?");return r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),{path:t,query:n,hash:e}}function j(t){return t.replace(/\/\//g,"/")}var P=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},E=J,T=F,M=L,I=z,R=X,B=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function F(t,e){var n,i=[],r=0,o=0,a="",s=e&&e.delimiter||"/";while(null!=(n=B.exec(t))){var c=n[0],u=n[1],l=n.index;if(a+=t.slice(o,l),o=l+c.length,u)a+=u[1];else{var d=t[o],f=n[2],h=n[3],p=n[4],v=n[5],m=n[6],g=n[7];a&&(i.push(a),a="");var b=null!=f&&null!=d&&d!==f,y="+"===m||"*"===m,w="?"===m||"*"===m,k=n[2]||s,S=p||v;i.push({name:h||r++,prefix:f||"",delimiter:k,optional:w,repeat:y,partial:b,asterisk:!!g,pattern:S?U(S):g?".*":"[^"+H(k)+"]+?"})}}return o<t.lengLine truncated
|
|
||||||
/*!
|
|
||||||
* vue-youtube v1.4.0
|
|
||||||
* (c) 2019 Antério Vieira
|
|
||||||
* Released under the MIT License.
|
|
||||||
*/
|
|
||||||
(function(t,n){n(e)})(0,(function(e){"use strict";"undefined"!==typeof window?window:"undefined"!==typeof t||"undefined"!==typeof self&&self;function i(t,e){return e={exports:{}},t(e,e.exports),e.exports}var r=i((function(t,e){(function(e,n){t.exports=n()})(0,(function(t){return function(t,e){if(void 0==e&&(e={fuzzy:!0}),/youtu\.?be/.test(t)){var n,i=[/youtu\.be\/([^#\&\?]{11})/,/\?v=([^#\&\?]{11})/,/\&v=([^#\&\?]{11})/,/embed\/([^#\&\?]{11})/,/\/v\/([^#\&\?]{11})/];for(n=0;n<i.length;++n)if(i[n].test(t))return i[n].exec(t)[1];if(e.fuzzy){var r=t.split(/[\/\&\?=#\.\s]/g);for(n=0;n<r.length;++n)if(/^[^#\&\?]{11}$/.test(r[n]))return r[n]}}return null}}))})),o=n("0fe3"),a=-1,s=0,c=1,u=2,l=3,d=5,f={name:"Youtube",props:{videoId:String,playerVars:{type:Object,default:function(){return{}}},height:{type:[Number,String],default:360},width:{type:[Number,String],default:640},resize:{type:Boolean,default:!1},resizeDelay:{type:Number,default:100},nocookie:{type:Boolean,default:!1},fitParent:{type:Boolean,default:!1}},data:function(){return{player:{},events:(t={},t[a]="unstarted",t[c]="playing",t[u]="paused",t[s]="ended",t[l]="buffering",t[d]="cued",t),resizeTimeout:null};var t},computed:{aspectRatio:function(){return this.width/this.height}},methods:{playerReady:function(t){this.$emit("ready",t.target)},playerStateChange:function(t){null!==t.data&&t.data!==a&&this.$emit(this.events[t.data],t.target)},playerError:function(t){this.$emit("error",t.target)},updatePlayer:function(t){t?1!==this.playerVars.autoplay?this.player.cueVideoById({videoId:t}):this.player.loadVideoById({videoId:t}):this.player.stopVideo()},resizeProportionally:function(){var t=this;this.player.getIframe().then((function(e){var n=t.fitParent?e.parentElement.offsetWidth:e.offsetWidth,i=n/t.aspectRatio;t.player.setSize(n,i)}))},onResize:function(){clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(this.resizeProportionally,this.resizeDelay)}},watch:{videoId:"updatePlayer",resize:function(t){t?(window.addEventListener("resize",this.onResize),this.resizeProportionally()):(window.removeEventListener("resize",this.onResize),this.player.setSize(this.width,this.height))},width:function(t){this.player.setSize(t,this.height)},height:function(t){this.player.setSize(this.width,t)}},beforeDestroy:function(){null!==this.player&&this.player.destroy&&(this.player.destroy(),delete this.player),this.resize&&window.removeEventListener("resize",this.onResize)},mounted:function(){window.YTConfig={host:"https://www.youtube.com/iframe_api"};var t=this.nocookie?"https://www.youtube-nocookie.com":"https://www.youtube.com";this.player=o(this.$el,{host:t,width:this.width,height:this.height,videoId:this.videoId,playerVars:this.playerVars}),this.player.on("ready",this.playerReady),this.player.on("stateChange",this.playerStateChange),this.player.on("error",this.playerError),this.resize&&window.addEventListener("resize",this.onResize),this.fitParent&&this.resizeProportionally()},render:function(t){return t("div")}};function h(t){t.prototype.$youtube={getIdFromUrl:r},t.component("youtube",f)}"undefined"!==typeof window&&window.Vue&&window.Vue.use(h);var p="1.4.0";e["default"]=h,e.Youtube=f,e.getIdFromUrl=r,e.version=p,Object.defineProperty(e,"__esModule",{value:!0})}))}).call(this,n("c8ba"))},e163:function(t,e,n){var i=n("5135"),r=n("7b0b"),o=n("f772"),a=n("e177"),s=o("IE_PROTO"),c=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=r(t),i(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?c:null}},e177:function(t,e,n){var i=n("d039");t.exports=!i((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},e18f:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n("bbab"),r=o(i);function o(t){return t&&t.__esModule?t:{default:t}}e.default={pauseVideo:{acceptableStates:[r.default.ENDED,r.default.PAUSED],stateChangeRequired:!1},playVideo:{acceptableStates:[r.default.ENDED,r.default.PLAYING],stateChangeRequired:!1},seekTo:{acceptableStates:[r.default.ENDED,r.default.PLAYING,r.default.PAUSED],stateChangeRequired:!0,timeout:3e3}},t.exports=e["default"]},e260:function(t,e,n){"use strict";var i=n("fc6a"),r=n("44d2"),o=n("3f8c"),a=n("69f3"),s=n("7dd0"),c="Array Iterator",u=a.set,l=a.getterFor(c);t.exports=s(Array,"Array",(function(t,e){u(this,{type:c,target:i(t),index:0,kind:e})}),(function(){var t=l(this),e=t.target,n=t.kind,i=t.index++;return!e||i>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:i,done:!1}:"values"==n?{value:e[i],done:!1}:{value:[i,e[i]],done:!1}}),"values"),o.Arguments=o.Array,r("keys"),r("values"),r("entries")},e2a0:function(t,e,n){var i;function r(t){var n,i=0;for(n in t)i=(i<<5)-i+t.charCodeAt(n),i|=0;return e.colors[Math.abs(i)%e.colors.length]}function o(t){function n(){if(n.enabled){var t=n,r=+new Date,o=r-(i||r);t.diff=o,t.prev=i,t.curr=r,i=r;for(var a=new Array(argumentLine truncated
|
|
||||||
//# sourceMappingURL=chunk-vendors.5317c68e.js.map
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":3,"sources":["webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/youtube-player/dist/index.js","webpack:///./node_modules/buefy/dist/esm/chunk-0cb0546b.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/youtube-player/node_modules/ms/index.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/engine-is-ios.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/iterate.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/buefy/dist/esm/chunk-cca88db8.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/buefy/dist/esm/chunk-d0a313ea.js","webpack:///./node_modules/buefy/dist/esm/chunk-d1591eb8.js","webpack:///./node_modules/buefy/dist/esm/chunk-3fcea532.js","webpack:///./node_modules/buefy/dist/esm/autocomplete.js","webpack:///./node_modules/buefy/dist/esm/button.js","webpack:///./node_modules/buefy/dist/esm/carousel.js","webpack:///./node_modules/buefy/dist/esm/chunk-2793447b.js","webpack:///./node_modules/buefy/dist/esm/chunk-7bdbd626.js","webpack:///./node_modules/buefy/dist/esm/checkbox.js","webpack:///./node_modules/buefy/dist/esm/collapse.js","webpack:///./node_modules/buefy/dist/esm/chunk-1196ee55.js","webpack:///./node_modules/buefy/dist/esm/chunk-4d76806f.js","webpack:///./node_modules/buefy/dist/esm/chunk-eb60b35a.js","webpack:///./node_modules/buefy/dist/esm/clockpicker.js","webpack:///./node_modules/buefy/dist/esm/chunk-77ffdf8b.js","webpack:///./node_modules/buefy/dist/esm/chunk-66a4ceca.js","webpack:///./node_modules/buefy/dist/esm/datepicker.js","webpack:///./node_modules/buefy/dist/esm/chunk-a684d1f3.js","webpack:///./node_modules/buefy/dist/esm/datetimepicker.js","webpack:///./node_modules/buefy/dist/esm/dropdown.js","webpack:///./node_modules/buefy/dist/esm/field.js","webpack:///./node_modules/buefy/dist/esm/icon.js","webpack:///./node_modules/buefy/dist/esm/input.js","webpack:///./node_modules/buefy/dist/esm/chunk-b9bdb0e4.js","webpack:///./node_modules/buefy/dist/esm/loading.js","webpack:///./node_modules/buefy/dist/esm/menu.js","webpack:///./node_modules/buefy/dist/esm/chunk-0e26d208.js","webpack:///./node_modules/buefy/dist/esm/message.js","webpack:///./node_modules/buefy/dist/esm/modal.js","webpack:///./node_modules/buefy/dist/esm/chunk-53640c15.js","webpack:///./node_modules/buefy/dist/esm/notification.js","webpack:///./node_modules/buefy/dist/esm/navbar.js","webpack:///./node_modules/buefy/dist/esm/numberinput.js","webpack:///./node_modules/buefy/dist/esm/chunk-bd608559.js","webpack:///./node_modules/buefy/dist/esm/pagination.js","webpack:///./node_modules/buefy/dist/esm/progress.js","webpack:///./node_modules/buefy/dist/esm/radio.js","webpack:///./node_modules/buefy/dist/esm/rate.js","webpack:///./node_modules/buefy/dist/esm/select.js","webpack:///./node_modules/buefy/dist/esm/skeleton.js","webpack:///./node_modules/buefy/dist/esm/sidebar.js","webpack:///./node_modules/buefy/dist/esm/chunk-9ec85033.js","webpack:///./node_modules/buefy/dist/esm/slider.js","webpack:///./node_modules/buefy/dist/esm/snackbar.js","webpack:///./node_modules/buefy/dist/esm/steps.js","webpack:///./node_modules/buefy/dist/esm/chunk-0e3f4fb5.js","webpack:///./node_modules/buefy/dist/esm/switch.js","webpack:///./node_modules/buefy/dist/esm/table.js","webpack:///./node_modules/buefy/dist/esm/tabs.js","webpack:///./node_modules/buefy/dist/esm/chunk-7292bea2.js","webpack:///./node_modules/buefy/dist/esm/tag.js","webpack:///./node_modules/buefy/dist/esm/taginput.js","webpack:///./node_modules/buefy/dist/esm/timepicker.js","webpack:///./node_modules/buefy/dist/esm/toast.js","webpack:///./node_modules/buefy/dist/esm/tooltip.js","webpack:///./node_modules/buefy/dist/esm/upload.js","webpack:///./node_modules/buefy/dist/esm/index.js","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///./node_modules/core-js/internals/task.js","webpack:///./node_modules/core-js/inLine truncated
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"name":"Voozik","short_name":"Voozik","theme_color":"#1f2424","icons":[{"src":"./img/icons/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"./img/icons/android-chrome-512x512.png","sizes":"512x512","type":"image/png"},{"src":"./img/icons/android-chrome-maskable-192x192.png","sizes":"192x192","type":"image/png","purpose":"maskable"},{"src":"./img/icons/android-chrome-maskable-512x512.png","sizes":"512x512","type":"image/png","purpose":"maskable"}],"start_url":".","display":"standalone","background_color":"#000000"}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
self.__precacheManifest = (self.__precacheManifest || []).concat([
|
|
||||||
{
|
|
||||||
"revision": "b04d5f8101dd5cbd687c",
|
|
||||||
"url": "/css/app.c867eb2f.css"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "2d42950f1a3f0d9089ef",
|
|
||||||
"url": "/css/chunk-3fba1bf2.8f336ede.css"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "c5833b37f54a60b621af207ee1748141",
|
|
||||||
"url": "/fonts/Gravity-Regular.c5833b37.otf"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "59e2a4e2813216bfa7e65a1615b868d8",
|
|
||||||
"url": "/img/logo.59e2a4e2.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "aabceb7bf90373a57d5c4a4e34ed28dc",
|
|
||||||
"url": "/index.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "b04d5f8101dd5cbd687c",
|
|
||||||
"url": "/js/app.f782d107.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "2d42950f1a3f0d9089ef",
|
|
||||||
"url": "/js/chunk-3fba1bf2.bc112002.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "fc77e62f9c3581249601",
|
|
||||||
"url": "/js/chunk-vendors.5317c68e.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "99cb3114213fb04825926e478109ed6c",
|
|
||||||
"url": "/manifest.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "b6216d61c03e6ce0c9aea6ca7808f7ca",
|
|
||||||
"url": "/robots.txt"
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
self.__precacheManifest = (self.__precacheManifest || []).concat([
|
|
||||||
{
|
|
||||||
"revision": "8b875ef860aa2e2e76e2",
|
|
||||||
"url": "/css/app.cd6b43b0.css"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "f90e093aa485d8cf4f19",
|
|
||||||
"url": "/css/chunk-3fba1bf2.8f336ede.css"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "c5833b37f54a60b621af207ee1748141",
|
|
||||||
"url": "/fonts/Gravity-Regular.c5833b37.otf"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "59e2a4e2813216bfa7e65a1615b868d8",
|
|
||||||
"url": "/img/logo.59e2a4e2.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "6e7bdfe12e1b8ed59a5a67417653202d",
|
|
||||||
"url": "/index.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "8b875ef860aa2e2e76e2",
|
|
||||||
"url": "/js/app.2e968650.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "f90e093aa485d8cf4f19",
|
|
||||||
"url": "/js/chunk-3fba1bf2.6996f5b8.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "fc77e62f9c3581249601",
|
|
||||||
"url": "/js/chunk-vendors.5317c68e.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "776ab44c1e1c56cad70865f9cce04c7d",
|
|
||||||
"url": "/manifest.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"revision": "b6216d61c03e6ce0c9aea6ca7808f7ca",
|
|
||||||
"url": "/robots.txt"
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
User-agent: *
|
|
||||||
Disallow:
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
/**
|
|
||||||
* Welcome to your Workbox-powered service worker!
|
|
||||||
*
|
|
||||||
* You'll need to register this file in your web app and you should
|
|
||||||
* disable HTTP caching for this file too.
|
|
||||||
* See https://goo.gl/nhQhGp
|
|
||||||
*
|
|
||||||
* The rest of the code is auto-generated. Please don't update this file
|
|
||||||
* directly; instead, make changes to your Workbox build configuration
|
|
||||||
* and re-run your build process.
|
|
||||||
* See https://goo.gl/2aRDsh
|
|
||||||
*/
|
|
||||||
|
|
||||||
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
|
|
||||||
|
|
||||||
importScripts(
|
|
||||||
"/precache-manifest.e77e5c0fa4b0dafa58227bf0df9fd607.js"
|
|
||||||
);
|
|
||||||
|
|
||||||
workbox.core.setCacheNameDetails({prefix: "voozik"});
|
|
||||||
|
|
||||||
workbox.core.skipWaiting();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The workboxSW.precacheAndRoute() method efficiently caches and responds to
|
|
||||||
* requests for URLs in the manifest.
|
|
||||||
* See https://goo.gl/S9QRab
|
|
||||||
*/
|
|
||||||
self.__precacheManifest = [].concat(self.__precacheManifest || []);
|
|
||||||
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});
|
|
||||||