├── config ├── prod.env.js ├── dev.env.js └── index.js ├── static ├── img │ ├── bg.jpg │ └── icons │ │ ├── favicon.ico │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── mstile-150x150.png │ │ ├── apple-touch-icon.png │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon-60x60.png │ │ ├── apple-touch-icon-76x76.png │ │ ├── apple-touch-icon-120x120.png │ │ ├── apple-touch-icon-152x152.png │ │ ├── apple-touch-icon-180x180.png │ │ └── msapplication-icon-144x144.png ├── manifest.json └── playlist │ └── playlist.json ├── templates └── icon.psd ├── .gitignore ├── dist ├── static │ ├── img │ │ ├── bg.jpg │ │ └── icons │ │ │ ├── favicon.ico │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── mstile-150x150.png │ │ │ ├── apple-touch-icon.png │ │ │ ├── android-chrome-192x192.png │ │ │ ├── android-chrome-512x512.png │ │ │ ├── apple-touch-icon-60x60.png │ │ │ ├── apple-touch-icon-76x76.png │ │ │ ├── apple-touch-icon-120x120.png │ │ │ ├── apple-touch-icon-152x152.png │ │ │ ├── apple-touch-icon-180x180.png │ │ │ └── msapplication-icon-144x144.png │ ├── manifest.json │ ├── js │ │ ├── manifest.4f9c4297b7a335d6b21a.js │ │ ├── app.f5a8eb19f15e6604aaf6.js │ │ ├── manifest.4f9c4297b7a335d6b21a.js.map │ │ └── app.f5a8eb19f15e6604aaf6.js.map │ ├── css │ │ ├── app.cbcb5ef0781580126b54c108e435c632.css │ │ └── app.cbcb5ef0781580126b54c108e435c632.css.map │ └── playlist │ │ └── playlist.json ├── package.json ├── server.js ├── service-worker.js └── index.html ├── src ├── services │ ├── dataService.js │ └── themeService.js ├── stores │ ├── mutation-types.js │ ├── store.js │ └── helpers │ │ └── dataviewhelper.js ├── App.vue ├── router │ └── index.js ├── themes │ └── modern │ │ ├── views │ │ ├── PlayList.html │ │ ├── AudioPlayer.html │ │ └── Player.html │ │ └── css │ │ └── style.scss ├── main.js └── components │ ├── PlayList.vue │ ├── AudioPlayer.vue │ └── Player.vue ├── .editorconfig ├── .postcssrc.js ├── .babelrc ├── README.md ├── package.json └── index.html /config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /static/img/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/static/img/bg.jpg -------------------------------------------------------------------------------- /templates/icon.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/templates/icon.psd -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | npm-debug.log* 4 | yarn-debug.log* 5 | yarn-error.log* 6 | -------------------------------------------------------------------------------- /dist/static/img/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/dist/static/img/bg.jpg -------------------------------------------------------------------------------- /static/img/icons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/static/img/icons/favicon.ico -------------------------------------------------------------------------------- /src/services/dataService.js: -------------------------------------------------------------------------------- 1 | export default{ 2 | fetchData(dataUrl){ 3 | return fetch(dataUrl); 4 | } 5 | } -------------------------------------------------------------------------------- /dist/static/img/icons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/dist/static/img/icons/favicon.ico -------------------------------------------------------------------------------- /static/img/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/static/img/icons/favicon-16x16.png -------------------------------------------------------------------------------- /static/img/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/static/img/icons/favicon-32x32.png -------------------------------------------------------------------------------- /static/img/icons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/static/img/icons/mstile-150x150.png -------------------------------------------------------------------------------- /dist/static/img/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/dist/static/img/icons/favicon-16x16.png -------------------------------------------------------------------------------- /dist/static/img/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/dist/static/img/icons/favicon-32x32.png -------------------------------------------------------------------------------- /static/img/icons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/static/img/icons/apple-touch-icon.png -------------------------------------------------------------------------------- /dist/static/img/icons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/dist/static/img/icons/mstile-150x150.png -------------------------------------------------------------------------------- /dist/static/img/icons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/dist/static/img/icons/apple-touch-icon.png -------------------------------------------------------------------------------- /static/img/icons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/static/img/icons/android-chrome-192x192.png -------------------------------------------------------------------------------- /static/img/icons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/static/img/icons/android-chrome-512x512.png -------------------------------------------------------------------------------- /static/img/icons/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/static/img/icons/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /static/img/icons/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/static/img/icons/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /static/img/icons/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/static/img/icons/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /static/img/icons/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/static/img/icons/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /static/img/icons/apple-touch-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/static/img/icons/apple-touch-icon-180x180.png -------------------------------------------------------------------------------- /dist/static/img/icons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/dist/static/img/icons/android-chrome-192x192.png -------------------------------------------------------------------------------- /dist/static/img/icons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/dist/static/img/icons/android-chrome-512x512.png -------------------------------------------------------------------------------- /dist/static/img/icons/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/dist/static/img/icons/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /dist/static/img/icons/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/dist/static/img/icons/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /static/img/icons/msapplication-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/static/img/icons/msapplication-icon-144x144.png -------------------------------------------------------------------------------- /dist/static/img/icons/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/dist/static/img/icons/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /dist/static/img/icons/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/dist/static/img/icons/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /dist/static/img/icons/apple-touch-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/dist/static/img/icons/apple-touch-icon-180x180.png -------------------------------------------------------------------------------- /dist/static/img/icons/msapplication-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apoStyLEE/vueaudioplayer/HEAD/dist/static/img/icons/msapplication-icon-144x144.png -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"' 6 | }) 7 | -------------------------------------------------------------------------------- /src/stores/mutation-types.js: -------------------------------------------------------------------------------- 1 | export const FETCH_PLAYLIST = 'FETCH_PLAYLIST' 2 | export const GET_CURRENT_LIST = 'GET_CURRENT_LIST' 3 | export const PLAYER_STARTSTOP_TRACK = 'PLAYER_STARTSTOP_TRACK' -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | // to edit target browsers: use "browserlist" field in package.json 6 | "autoprefixer": {} 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /dist/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vueaudioplayer", 3 | "version": "1.0.0", 4 | "description": "vue audio player", 5 | "author": "Abdullah Ugraskan", 6 | "private": true, 7 | "scripts": { 8 | "postinstall": "npm install express" 9 | } 10 | } -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { "modules": false }], 4 | "stage-2" 5 | ], 6 | "plugins": ["transform-runtime"], 7 | "comments": false, 8 | "env": { 9 | "test": { 10 | "presets": ["env", "stage-2"], 11 | "plugins": [ "istanbul" ] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | -------------------------------------------------------------------------------- /src/services/themeService.js: -------------------------------------------------------------------------------- 1 | const loadTheme = function(fileName){ 2 | return customRequire(`views/${fileName}`) 3 | } 4 | 5 | const loadStyle = function(){ 6 | return customRequire("css/style.scss"); 7 | } 8 | 9 | const customRequire = function(path){ 10 | return require(`@/themes/${appOptions.theme}/${path}`); 11 | } 12 | 13 | export { loadTheme, loadStyle } -------------------------------------------------------------------------------- /dist/server.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var path = require('path'); 3 | var serveStatic = require('serve-static'); 4 | 5 | app = express(); 6 | 7 | app.use(serveStatic(__dirname)); 8 | 9 | app.all('/*', function(req, res) { 10 | res.sendfile('index.html'); 11 | }); 12 | 13 | var port = process.env.PORT || 5000; 14 | app.listen(port); 15 | console.log('server started '+ port); -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Router from 'vue-router' 3 | import AudioPlayer from '@/components/AudioPlayer' 4 | 5 | Vue.use(Router) 6 | 7 | var router = new Router({ 8 | mode: 'history', 9 | routes: [ 10 | { 11 | path: '/:id?', 12 | name: 'AudioPlayer', 13 | component: AudioPlayer 14 | } 15 | ] 16 | }) 17 | 18 | export default router; -------------------------------------------------------------------------------- /src/themes/modern/views/PlayList.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 10 | 11 |
-------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | // The Vue build version to load with the `import` command 2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias. 3 | import Vue from 'vue' 4 | import App from './App' 5 | import router from './router' 6 | import store from './stores/store.js' 7 | 8 | Vue.config.productionTip = false 9 | /* eslint-disable no-new */ 10 | new Vue({ 11 | el: '#app', 12 | router, 13 | template: '', 14 | components: { App }, 15 | store 16 | }) 17 | -------------------------------------------------------------------------------- /src/themes/modern/views/AudioPlayer.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | 11 | 16 |
-------------------------------------------------------------------------------- /static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Vue Audio Player", 3 | "short_name": "APlayer", 4 | "icons": [ 5 | { 6 | "src": "/static/img/icons/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/static/img/icons/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "/index.html", 17 | "display": "standalone", 18 | "background_color": "#000000", 19 | "theme_color": "#4DBA87" 20 | } 21 | -------------------------------------------------------------------------------- /dist/static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Vue Audio Player", 3 | "short_name": "APlayer", 4 | "icons": [ 5 | { 6 | "src": "/static/img/icons/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/static/img/icons/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "/index.html", 17 | "display": "standalone", 18 | "background_color": "#000000", 19 | "theme_color": "#4DBA87" 20 | } 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vue Audio Player 2 | 3 | > A Vue.js project 4 | 5 | ## Build Setup 6 | 7 | ``` bash 8 | # install dependencies 9 | npm install 10 | 11 | # serve with hot reload at localhost:8080 12 | npm run dev 13 | 14 | # build for production with minification 15 | npm run build 16 | 17 | # deploy for heroku with dist 18 | npm run deploy 19 | 20 | # build for production and view the bundle analyzer report 21 | npm run build --report 22 | ``` 23 | 24 | For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). -------------------------------------------------------------------------------- /src/components/PlayList.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/AudioPlayer.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/themes/modern/views/Player.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 | || 6 | ▶︎ 7 | 8 | 11 |
12 | 13 |

{{currentList.title}}

14 |
15 | 16 |
17 |

18 |
19 | 20 | 21 | 32 | 33 |
-------------------------------------------------------------------------------- /src/stores/store.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | import * as mtypes from './mutation-types.js'; 4 | import { toViewModel } from './helpers/dataviewhelper.js' 5 | import dataService from '@/services/dataService.js' 6 | 7 | Vue.use(Vuex); 8 | 9 | var state = { 10 | playList:[], 11 | currentList:{}, 12 | changeTrack: false, 13 | startStopTrack: false, 14 | isPlaying: false, 15 | loading:true 16 | } 17 | 18 | var mutations = { 19 | 20 | [mtypes.FETCH_PLAYLIST](state, payload){ 21 | const {id, data} = payload; 22 | var viewData = toViewModel(data); 23 | state.playList = viewData; 24 | state.currentList = viewData.list[id]; 25 | state.loading = false; 26 | }, 27 | [mtypes.GET_CURRENT_LIST](state, id){ 28 | state.currentList = state.playList.list[id]; 29 | }, 30 | [mtypes.PLAYER_STARTSTOP_TRACK](state, status){ 31 | state.startStopTrack = status 32 | } 33 | } 34 | 35 | var actions = { 36 | [mtypes.FETCH_PLAYLIST](context, [dataUrl, id]){ 37 | dataService.fetchData(dataUrl) 38 | .then((res) => { return res.json(); }) 39 | .then((res) => { 40 | context.commit(mtypes.FETCH_PLAYLIST, { 41 | id: id, 42 | data: res 43 | }); 44 | }); 45 | } 46 | } 47 | 48 | export default new Vuex.Store({ 49 | state, 50 | mutations, 51 | actions 52 | }); -------------------------------------------------------------------------------- /dist/static/js/manifest.4f9c4297b7a335d6b21a.js: -------------------------------------------------------------------------------- 1 | !function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var i,u,f,s=0,l=[];s 2 | import { loadTheme } from '@/services/themeService'; 3 | import * as mtypes from '@/stores/mutation-types'; 4 | 5 | export default { 6 | name: "Player", 7 | template:loadTheme("Player.html"), 8 | props:{ 9 | currentList:{ 10 | type: Object, 11 | required: true 12 | } 13 | }, 14 | data(){ 15 | return{ 16 | id : parseInt(this.$route.params.id), 17 | isPlaying: false 18 | } 19 | }, 20 | computed:{ 21 | getModalClassList(){ 22 | return document.querySelector(".modal-wrapper").classList; 23 | }, 24 | getAudioPlayer(){ 25 | return this.$refs.player; 26 | }, 27 | startStopTrack(){ 28 | return this.$store.state.startStopTrack; 29 | } 30 | }, 31 | watch:{ 32 | currentList(){ 33 | this.loadTrack(); 34 | }, 35 | startStopTrack(){ 36 | this.playerChange(); 37 | }, 38 | isPlaying(){ 39 | this.$store.state.isPlaying = this.isPlaying; 40 | } 41 | }, 42 | methods:{ 43 | playerChange(){ 44 | const player = this.getAudioPlayer; 45 | 46 | const isPlaying = player.currentTime > 0 && !player.paused && !player.ended && player.readyState > 2 47 | 48 | if(isPlaying){ 49 | player.pause(); 50 | this.isPlaying = false 51 | } 52 | else{ 53 | player.play(); 54 | this.isPlaying = true 55 | } 56 | }, 57 | openModal(){ 58 | this.getModalClassList.add("open"); 59 | }, 60 | closeModal(){ 61 | this.getModalClassList.remove("open"); 62 | }, 63 | loadTrack(){ 64 | const player = this.getAudioPlayer; 65 | player.load(); 66 | this.playerChange(); 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/stores/helpers/dataviewhelper.js: -------------------------------------------------------------------------------- 1 | const toViewModel = function(data){ 2 | var self = this; 3 | var options = data.options; 4 | var list = data.list; 5 | 6 | list.forEach(function(item, index) { 7 | item.image = options.imageroot + item.image; 8 | 9 | if (item.type == "mp3") { 10 | item.soundfile.mp3 = options.soundfileroot + item.soundfile.mp3; 11 | } 12 | else if(item.type=="youtube") 13 | { 14 | item.videoEmbedUrl = "http://www.youtube.com/embed/"+item.videoId; 15 | } 16 | item.description = linkify(item.description); 17 | item.detailsUrl = "/"+index; 18 | item.recorddateformatted = formatDateString(item.recorddate); 19 | }); 20 | 21 | return data; 22 | } 23 | 24 | const formatDateString = function(dateTimeString){ 25 | var date = new Date(dateTimeString).toISOString().slice(0,10); 26 | var dateParse = date.split("-"); 27 | return `${dateParse[2]}-${dateParse[1]}-${dateParse[0]}`; 28 | } 29 | 30 | const linkify = function(inputText){ 31 | //http://stackoverflow.com/questions/37684/how-to-replace-plain-urls-with-links 32 | 33 | var replacedText, replacePattern1, replacePattern2, replacePattern3; 34 | 35 | //URLs starting with http://, https://, or ftp:// 36 | replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim; 37 | replacedText = inputText.replace(replacePattern1, '$1'); 38 | 39 | //URLs starting with "www." (without // before it, or it'd re-link the ones done above). 40 | replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim; 41 | replacedText = replacedText.replace(replacePattern2, '$1$2'); 42 | 43 | //Change email addresses to mailto:: links. 44 | replacePattern3 = /(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim; 45 | replacedText = replacedText.replace(replacePattern3, '$1'); 46 | 47 | return replacedText; 48 | } 49 | 50 | export { toViewModel }; -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vueaudioplayer", 3 | "version": "1.0.0", 4 | "description": "vue audio player", 5 | "author": "Abdullah Ugraskan ", 6 | "private": true, 7 | "scripts": { 8 | "dev": "node build/dev-server.js", 9 | "start": "node build/dev-server.js", 10 | "build": "node build/build.js", 11 | "deploy": "git subtree push --prefix dist heroku master" 12 | }, 13 | "dependencies": { 14 | "vue": "^2.3.3", 15 | "vue-router": "^2.3.1", 16 | "vuex": "^2.3.1" 17 | }, 18 | "devDependencies": { 19 | "autoprefixer": "^6.7.2", 20 | "babel-core": "^6.22.1", 21 | "babel-loader": "^6.2.10", 22 | "babel-plugin-transform-runtime": "^6.22.0", 23 | "babel-preset-env": "^1.3.2", 24 | "babel-preset-stage-2": "^6.22.0", 25 | "babel-register": "^6.22.0", 26 | "chalk": "^1.1.3", 27 | "connect-history-api-fallback": "^1.3.0", 28 | "copy-webpack-plugin": "^4.0.1", 29 | "css-loader": "^0.28.0", 30 | "eventsource-polyfill": "^0.9.6", 31 | "express": "^4.14.1", 32 | "extract-text-webpack-plugin": "^2.0.0", 33 | "file-loader": "^0.11.1", 34 | "friendly-errors-webpack-plugin": "^1.1.3", 35 | "html-loader": "^0.4.5", 36 | "html-webpack-plugin": "^2.28.0", 37 | "http-proxy-middleware": "^0.17.3", 38 | "node-sass": "^4.5.3", 39 | "opn": "^4.0.2", 40 | "optimize-css-assets-webpack-plugin": "^1.3.0", 41 | "ora": "^1.2.0", 42 | "rimraf": "^2.6.0", 43 | "sass-loader": "^6.0.6", 44 | "semver": "^5.3.0", 45 | "shelljs": "^0.7.6", 46 | "sw-precache-webpack-plugin": "^0.9.1", 47 | "url-loader": "^0.5.8", 48 | "vue-loader": "^12.1.0", 49 | "vue-style-loader": "^3.0.1", 50 | "vue-template-compiler": "^2.3.3", 51 | "webpack": "^2.6.1", 52 | "webpack-bundle-analyzer": "^2.2.1", 53 | "webpack-dev-middleware": "^1.10.0", 54 | "webpack-hot-middleware": "^2.18.0", 55 | "webpack-merge": "^4.1.0" 56 | }, 57 | "engines": { 58 | "node": ">= 4.0.0", 59 | "npm": ">= 3.0.0" 60 | }, 61 | "browserslist": [ 62 | "> 1%", 63 | "last 2 versions", 64 | "not ie <= 8" 65 | ] 66 | } 67 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | <% for (var chunk of webpack.chunks) { 24 | for (var file of chunk.files) { 25 | if (file.match(/\.(js|css)$/)) { %> 26 | 27 | <% }}} %> 28 | 29 | 35 | 36 | 37 | 38 |
39 | 42 | 43 | 44 | <%= htmlWebpackPlugin.options.serviceWorkerLoader %> 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /dist/service-worker.js: -------------------------------------------------------------------------------- 1 | "use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}var precacheConfig=[["index.html","43a7538e680c2c064abbc910102182a3"],["package.json","1d26293f0ab6479a6fb98a2ff1d2000e"],["server.js","a91307313eb1f01b10383a7c35da2f8c"],["static/css/app.cbcb5ef0781580126b54c108e435c632.css","84f2fbb82d4c2a5c8b61c2351a55018b"],["static/js/app.f5a8eb19f15e6604aaf6.js","e6557d05be09a90297b66d377c1285d7"],["static/js/manifest.4f9c4297b7a335d6b21a.js","73c289e8c047fcfc9aa3d5b0364e1515"],["static/js/vendor.6dbd63f359c0b1d8c28b.js","c67a7e39235b94505dea0f00cc447761"],["static/manifest.json","49785fdee6e1b8567c34ea868bfa37a9"],["static/playlist/playlist.json","cdd6a3471e8e4ff553ac2ec95c43fc53"]],cacheName="sw-precache-v3-my-vue-app-"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var n=new URL(e);return"/"===n.pathname.slice(-1)&&(n.pathname+=t),n.toString()},cleanResponse=function(e){return e.redirected?("body"in e?Promise.resolve(e.body):e.blob()).then(function(t){return new Response(t,{headers:e.headers,status:e.status,statusText:e.statusText})}):Promise.resolve(e)},createCacheKey=function(e,t,n,r){var a=new URL(e);return r&&a.pathname.match(r)||(a.search+=(a.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(n)),a.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var n=new URL(t).pathname;return e.some(function(e){return n.match(e)})},stripIgnoredUrlParameters=function(e,t){var n=new URL(e);return n.hash="",n.search=n.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),n.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],n=e[1],r=new URL(t,self.location),a=createCacheKey(r,hashParamName,n,!1);return[r.toString(),a]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(n){if(!t.has(n)){var r=new Request(n,{credentials:"same-origin"});return fetch(r).then(function(t){if(!t.ok)throw new Error("Request for "+n+" returned a response with status "+t.status);return cleanResponse(t).then(function(t){return e.put(n,t)})})}}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(n){return Promise.all(n.map(function(n){if(!t.has(n.url))return e.delete(n)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,n=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(n);t||(n=addDirectoryIndex(n,"index.html"),t=urlsToCacheKeys.has(n));t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(n)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}); -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /dist/static/css/app.cbcb5ef0781580126b54c108e435c632.css: -------------------------------------------------------------------------------- 1 | body,html{height:100%;margin:0;padding:0}body{font-family:Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;margin:3% 0 10px;background-size:cover;background-image:url(/static/img/bg.jpg);background-attachment:fixed}a{color:inherit;text-decoration:none}.audio-player-container{margin:0 auto 30px;max-width:400px;border-radius:3px;box-shadow:0 0 20px 0 rgba(0,0,0,.62)}.audio-player-container .main-title{text-align:center;font-size:25px;color:#fff;margin:15px 0 0;padding:15px;background:#170b0d}.audio-player-container .player{text-align:center;position:relative;height:380px;overflow:hidden}.audio-player-container .player .custom-audio-player{width:80%;margin:15px auto;padding-right:8px;display:flex;align-items:center;background:rgba(0,0,0,.3);border-radius:5px;z-index:2;position:relative}.audio-player-container .player .custom-audio-player:hover{background:rgba(0,0,0,.5)}.audio-player-container .player .custom-audio-player .btn-play{color:#fff;display:inline-block;width:32px;padding:4px;font-weight:700}.audio-player-container .player .custom-audio-player audio{position:relative;left:15px;z-index:1;flex-grow:1}.audio-player-container .player .custom-audio-player audio::-webkit-media-controls-panel{background:transparent}.audio-player-container .player .custom-audio-player audio::-webkit-media-controls-current-time-display,.audio-player-container .player .custom-audio-player audio::-webkit-media-controls-time-remaining-display{color:#fff}.audio-player-container .player .custom-audio-player audio::-webkit-media-controls-timeline{background-color:#fff}.audio-player-container .player .custom-audio-player audio::-webkit-media-controls-mute-button,.audio-player-container .player .custom-audio-player audio::-webkit-media-controls-volume-slider{display:none!important;-webkit-appearance:none}.audio-player-container .player .custom-audio-player audio::-webkit-media-controls-play-button{display:none}.audio-player-container .player .title{color:#fff;margin:5px 0;font-size:18px}.audio-player-container .player .cover-avatar{width:100px;margin:30px auto}.audio-player-container .player .cover-avatar img{border:3px solid #fff;width:100%}.audio-player-container .player .description{color:#fff;padding:5px 10px 10px;height:100px;overflow:hidden;cursor:pointer}.audio-player-container .player .description:hover{color:#ededed}.audio-player-container .player .cover-image{height:100%;overflow:hidden;position:absolute;top:0;right:0;left:0;background-repeat:no-repeat;background-position:50%;-webkit-filter:blur(10px);-moz-filter:blur(10px);-o-filter:blur(10px);-ms-filter:blur(10px);filter:blur(10px);z-index:-1}.audio-player-container .list{padding:20px;background-color:#f9f9f9}.audio-player-container .list .list-items{list-style:none;margin:0;padding:0}.audio-player-container .list .list-items li{line-height:50px;font-size:18px}.audio-player-container .list .list-items li a{display:flex;align-items:center}.audio-player-container .list .list-items li a .number{width:30px;display:block;font-weight:700}.audio-player-container .list .list-items li a .number em{font-style:normal}.audio-player-container .list .list-items li a .title{display:block;flex-grow:1;margin-left:20px;color:#757575;border-bottom:1px solid #e0e0e0}.audio-player-container .list .list-items li a:hover .title{border-color:silver}.audio-player-container .list .list-items li a.router-link-active .number em{display:none}.audio-player-container .list .list-items li a.router-link-active .number:before{content:"\25B6\FE0E";color:#e96465}.audio-player-container .list .list-items li a.router-link-active .number.playing:before{content:"||"}.audio-player-container .list .list-items li a.router-link-active .title{color:#e96465}.spinner{margin:100px auto;padding:50px;width:50px;height:40px;text-align:center;font-size:10px}.spinner>div{background-color:#333;height:100%;width:6px;display:inline-block;-webkit-animation:sk-stretchdelay 1.2s infinite ease-in-out;animation:sk-stretchdelay 1.2s infinite ease-in-out}.spinner .rect2{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.spinner .rect3{-webkit-animation-delay:-1s;animation-delay:-1s}.spinner .rect4{-webkit-animation-delay:-.9s;animation-delay:-.9s}.spinner .rect5{-webkit-animation-delay:-.8s;animation-delay:-.8s}@-webkit-keyframes sk-stretchdelay{0%,40%,to{-webkit-transform:scaleY(.4)}20%{-webkit-transform:scaleY(1)}}@keyframes sk-stretchdelay{0%,40%,to{transform:scaleY(.4);-webkit-transform:scaleY(.4)}20%{transform:scaleY(1);-webkit-transform:scaleY(1)}}.modal-wrapper{width:100%;height:100%;position:fixed;top:0;left:0;background:rgba(41,171,164,.8);visibility:hidden;opacity:0;transition:all .25s ease-in-out}.modal-wrapper.open{opacity:1;visibility:visible}.modal{width:600px;height:400px;display:block;margin:50% 0 0 -300px;position:relative;top:50%;left:50%;background:#fff;opacity:0;transition:all .5s ease-in-out}.modal .head{width:90%;height:32px;padding:12px 30px;overflow:hidden;background:#e2525c}.modal .head span{display:inline-block;float:left;margin-top:10px;color:#fff}.modal .btn-close{font-size:28px;display:block;float:right;color:#fff}.modal .content{padding:8%}.modal .modal-description{text-align:center;line-height:20px}.modal .modal-description a{color:#e2525c}.modal .modal-description a:hover{text-decoration:underline}.modal-wrapper.open .modal{margin-top:-200px;opacity:1}@media (max-width:480px){body{margin:0;background-image:none;overflow:auto}.audio-player-container{max-width:100%!important;margin:0}.audio-player-container .main-title{margin-top:0!important}.audio-player-container .list{height:auto!important;overflow:inherit!important}.modal{width:auto!important;left:0!important;right:0!important;height:auto!important;margin:0!important;top:60px!important}} -------------------------------------------------------------------------------- /dist/static/js/app.f5a8eb19f15e6604aaf6.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([1],{31:function(t,e,n){"use strict";var i=n(12),r=n(83),a=n(79),s=n.n(a);i.a.use(r.a);var o=new r.a({mode:"history",routes:[{path:"/:id?",name:"AudioPlayer",component:s.a}]});e.a=o},32:function(t,e,n){"use strict";var i,r=n(45),a=n.n(r),s=n(44),o=n.n(s),l=n(12),c=n(85),u=n(7),d=n(40),p=n(39);l.a.use(c.a);var f={playList:[],currentList:{},changeTrack:!1,startStopTrack:!1,isPlaying:!1,loading:!0},m=(i={},o()(i,u.a,function(t,e){var i=e.id,r=e.data,a=n.i(d.a)(r);t.playList=a,t.currentList=a.list[i],t.loading=!1}),o()(i,u.b,function(t,e){t.currentList=t.playList.list[e]}),o()(i,u.c,function(t,e){t.startStopTrack=e}),i),v=o()({},u.a,function(t,e){var n=a()(e,2),i=n[0],r=n[1];p.a.fetchData(i).then(function(t){return t.json()}).then(function(e){t.commit(u.a,{id:r,data:e})})});e.a=new c.a.Store({state:f,mutations:m,actions:v})},33:function(t,e,n){var i=n(11)(n(34),n(82),null,null,null);t.exports=i.exports},34:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),n(6).loadStyle(),e.default={name:"app"}},35:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(80),r=n.n(i),a=n(81),s=n.n(a),o=n(7),l=n(6);e.default={name:"AudioPlayer",template:n.i(l.loadTheme)("AudioPlayer.html"),components:{PlayList:r.a,Player:s.a},created:function(){var t=this.$route.params.id||"0";this.$store.dispatch(o.a,[appOptions.playListSourceUrl,t])},computed:{playList:function(){var t=this.$store.state.playList;return document.title=t.title,t},currentList:function(){return this.$store.state.currentList},loading:function(){return this.$store.state.loading}}}},36:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(6),r=n(7);e.default={template:n.i(i.loadTheme)("PlayList.html"),name:"PlayList",props:["playList"],methods:{playerControl:function(t){this.$store.state.currentList.id==t?this.$store.commit(r.c,!this.$store.state.startStopTrack):(this.$store.commit(r.c,!0),this.$store.commit(r.b,this.$route.params.id))}},computed:{isPlaying:function(){return this.$store.state.isPlaying}}}},37:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(6);n(7);e.default={name:"Player",template:n.i(i.loadTheme)("Player.html"),props:{currentList:{type:Object,required:!0}},data:function(){return{id:parseInt(this.$route.params.id),isPlaying:!1}},computed:{getModalClassList:function(){return document.querySelector(".modal-wrapper").classList},getAudioPlayer:function(){return this.$refs.player},startStopTrack:function(){return this.$store.state.startStopTrack}},watch:{currentList:function(){this.loadTrack()},startStopTrack:function(){this.playerChange()},isPlaying:function(){this.$store.state.isPlaying=this.isPlaying}},methods:{playerChange:function(){var t=this.getAudioPlayer;t.currentTime>0&&!t.paused&&!t.ended&&t.readyState>2?(t.pause(),this.isPlaying=!1):(t.play(),this.isPlaying=!0)},openModal:function(){this.getModalClassList.add("open")},closeModal:function(){this.getModalClassList.remove("open")},loadTrack:function(){this.getAudioPlayer.load(),this.playerChange()}}}},38:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(12),r=n(33),a=n.n(r),s=n(31),o=n(32);i.a.config.productionTip=!1,new i.a({el:"#app",router:s.a,template:"",components:{App:a.a},store:o.a})},39:function(t,e,n){"use strict";e.a={fetchData:function(t){return fetch(t)}}},40:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var i=function(t){var e=t.options;return t.list.forEach(function(t,n){t.image=e.imageroot+t.image,"mp3"==t.type?t.soundfile.mp3=e.soundfileroot+t.soundfile.mp3:"youtube"==t.type&&(t.videoEmbedUrl="http://www.youtube.com/embed/"+t.videoId),t.description=a(t.description),t.detailsUrl="/"+n,t.recorddateformatted=r(t.recorddate)}),t},r=function(t){var e=new Date(t).toISOString().slice(0,10),n=e.split("-");return n[2]+"-"+n[1]+"-"+n[0]},a=function(t){var e,n,i,r;return n=/(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim,e=t.replace(n,'$1'),i=/(^|[^\/])(www\.[\S]+(\b|$))/gim,e=e.replace(i,'$1$2'),r=/(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim,e=e.replace(r,'$1')}},6:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),n.d(e,"loadTheme",function(){return i}),n.d(e,"loadStyle",function(){return r});var i=function(t){return a("views/"+t)},r=function(){return a("css/style.scss")},a=function(t){return n(87)("./"+appOptions.theme+"/"+t)}},7:function(t,e,n){"use strict";n.d(e,"a",function(){return i}),n.d(e,"b",function(){return r}),n.d(e,"c",function(){return a});var i="FETCH_PLAYLIST",r="GET_CURRENT_LIST",a="PLAYER_STARTSTOP_TRACK"},75:function(t,e){},76:function(t,e){t.exports='
\n\n
\n
\n
\n
\n
\n
\n
\n\n \n
'},77:function(t,e){t.exports='
\n\n
    \n
  • \n \n {{ index+1 }} {{item.title}}\n \n
  • \n
\n\n
'},78:function(t,e){t.exports='
\n\n
\n \n ||\n ▶︎\n \n \n
\n\n

{{currentList.title}}

\n
\n \n
\n

\n
\n\n \x3c!-- Modal: https://codepen.io/rauldronca/pen/QEraba --\x3e\n \n\n
'},79:function(t,e,n){var i=n(11)(n(35),null,null,null,null);t.exports=i.exports},80:function(t,e,n){var i=n(11)(n(36),null,null,null,null);t.exports=i.exports},81:function(t,e,n){var i=n(11)(n(37),null,null,null,null);t.exports=i.exports},82:function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{attrs:{id:"app"}},[n("main",{staticClass:"container"},[n("router-view")],1)])},staticRenderFns:[]}},87:function(t,e,n){function i(t){return n(r(t))}function r(t){var e=a[t];if(!(e+1))throw new Error("Cannot find module '"+t+"'.");return e}var a={"./modern/css/style.scss":75,"./modern/views/AudioPlayer.html":76,"./modern/views/PlayList.html":77,"./modern/views/Player.html":78};i.keys=function(){return Object.keys(a)},i.resolve=r,t.exports=i,i.id=87}},[38]); 2 | //# sourceMappingURL=app.f5a8eb19f15e6604aaf6.js.map -------------------------------------------------------------------------------- /static/playlist/playlist.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Bu masalda peri yok - podCast", 3 | "description": "", 4 | "coverImage": "", 5 | "options":{ 6 | "imageroot" : "http://podcast.apostylee.com/podcasts", 7 | "soundfileroot" : "http://apostylee.com/podcast/bolums" 8 | }, 9 | "list": [ 10 | { 11 | "type": "mp3", 12 | "id": "bolum1", 13 | "title": "Bölüm 1", 14 | "description": "Fehmi Can SağlamCikolatali Akan Kek 5. Bolum
https://soundcloud.com/fehmi-can-saglam

10 Mart 2011 Etohum Toplantısı - Eren Bali - udemy.com http://vimeo.com/20993420

Webrazzi Ofisi’nin bu haftaki konuğu Wallit Kurucusu Veysel Berk oldu http://webrazzi.com/2013/04/15/girisimler-webrazzi-ofisinde-veysel-berk-wallit/

Jstanbul Meetup #003: The Happy Programmer, Nickel.rs on Rust http://www.meetup.com/jstanbul/events/199754192/", 15 | "duration": "2614187", 16 | "image": "/bolum1.jpg", 17 | "recorddate": "2014/09/05 18:34:56 +0000", 18 | "soundfile": { 19 | "mp3": "/bolum1.mp3" 20 | } 21 | }, 22 | { 23 | "type": "mp3", 24 | "id": "bolum2", 25 | "title": "Bölüm 2", 26 | "description": "Cikolatali Akan Kek 0. Bolum https://soundcloud.com/fehmi-can-saglam/cikolatali-akan-kek-0-bolum", 27 | "duration": "3055359", 28 | "image": "/bolum2.jpg", 29 | "recorddate": "2014/09/12 18:20:08 +0000", 30 | "soundfile": 31 | { 32 | "mp3": "/bolum2.mp3" 33 | } 34 | 35 | }, 36 | { 37 | "type": "mp3", 38 | "id": "bolum3", 39 | "title": "Bölüm 3", 40 | "description": "Debugging - http://en.wikipedia.org/wiki/Debugging

JavaScript - http://en.wikipedia.org/wiki/JavaScript

A component-based, event-driven JavaScript framework from Twitter
http://flightjs.github.io/

AngularJS, Emberjs, Backbonejs, KnockoutJs

Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web. http://getbootstrap.com/

https://soundcloud.com/fehmi-can-saglam/cikolatali-akan-kek-7-bolum", 41 | "duration": "2395235", 42 | "image": "/bolum3.jpg", 43 | "recorddate": "2014/09/20 20:14:17 +0000", 44 | "soundfile": 45 | { 46 | "mp3": "/bolum3.mp3" 47 | } 48 | 49 | }, 50 | { 51 | "type": "mp3", 52 | "id": "bolum4", 53 | "title": "Bölüm 4", 54 | "description": "Hazelcast the Leading Open Source In-Memory Data Grid http://hazelcast.com

http://www.alibaba.com/", 55 | "duration": "2926955", 56 | "image": "/bolum4.jpg", 57 | "recorddate": "2014/09/28 11:00:09 +0000", 58 | "soundfile": 59 | { 60 | "mp3": "/bolum4.mp3" 61 | } 62 | 63 | }, 64 | { 65 | "type": "mp3", 66 | "id": "bolum5", 67 | "title": "Bölüm 5", 68 | "description": "Unicrow — Unique Solutions http://www.unicrow.com/\r
Fatih Turan https://twitter.com/fatihturan\r
Emre Efendioğlu https://twitter.com/emreefendioglu\r
Ümit Dincel - https://twitter.com/ktumit (Müller)", 69 | "duration": "4609790", 70 | "image": "/bolum5.jpg", 71 | "recorddate": "2014/10/12 16:34:41 +0000", 72 | "soundfile": 73 | { 74 | "mp3": "/bolum5.mp3" 75 | } 76 | 77 | }, 78 | { 79 | "type": "mp3", 80 | "id": "bolum6", 81 | "title": "Bölüm 6.2", 82 | "description": "Yunus Emre Çavuşoğlu ile yazılım ağırlıklı sohbet ettik.
https://twitter.com/c_emreyns", 83 | "duration": "2217167", 84 | "image": "/bolum6.2.jpg", 85 | "recorddate": "2014/10/26 18:37:08 +0000", 86 | "soundfile": 87 | { 88 | "mp3": "/bolum6.2.mp3" 89 | } 90 | 91 | }, 92 | { 93 | "type": "mp3", 94 | "id": "bolum7", 95 | "title": "Bölüm 7", 96 | "description": "Halit Alptekin ile sohbet etmeye çalıştık :) https://github.com/halitalptekin
https://twitter.com/halitalptekin
http://halitalptekin.com/

https://asciinema.org/a/11128
http://www.gizemiskenderoglu.com/
http://octosec.net/
http://dojo.octosec.net/", 97 | "duration": "2729816", 98 | "image": "/bolum7.jpg", 99 | "recorddate": "2014/10/31 08:42:41 +0000", 100 | "soundfile": 101 | { 102 | "mp3": "/bolum7.mp3" 103 | } 104 | 105 | }, 106 | { 107 | "type": "mp3", 108 | "id": "bolum8", 109 | "title": "Bölüm 8", 110 | "description": "KTÜ Elektrik Elektronik Kulübü - Kariyer Gelişim Günleri 15 de Trabzon HackerSpace olarak bir şeyler anlattık ve çaktırmadan bunu kayda aldık :D", 111 | "duration": "2729816", 112 | "image": "/bolum8.jpg", 113 | "recorddate": "2015/03/20 10:10:00 +0000", 114 | "soundfile": 115 | { 116 | "mp3": "/bolum8.mp3" 117 | }, 118 | "speakers" : [ 119 | { 120 | "displayName" : "Emre Efendioğlu", 121 | "description" : "Unicrow Co-Founder" 122 | }, 123 | { 124 | "displayName" : "Gürkan Yarar", 125 | "description" : "Robilab Co-Founder" 126 | } 127 | ] 128 | }, 129 | { 130 | "type": "mp3", 131 | "id": "bolum9", 132 | "title": "Bölüm 9", 133 | "description": "Gökhan ile çeşitli teknolojik şeyler üzerine tatildeyken yaptığımız muhabbet.", 134 | "duration": "2729816", 135 | "image": "/bolum9.jpg", 136 | "recorddate": "2015/09/24 20:24:00 +0000", 137 | "soundfile": 138 | { 139 | "mp3": "/bolum9.mp3" 140 | }, 141 | "speakers" : [ 142 | { 143 | "displayName" : "M. Gökhan Elbir", 144 | "description" : "" 145 | } 146 | ] 147 | }, 148 | { 149 | "type": "mp3", 150 | "id": "bolum10", 151 | "title": "Bölüm 10", 152 | "description": "ilker Aksu ile geliştirme dünyası ile ilgili yaptığımız sohbet.", 153 | "duration": "2729816", 154 | "image": "/bolum10.jpg", 155 | "recorddate": "2016/02/15 22:24:00 +0000", 156 | "soundfile": 157 | { 158 | "mp3": "/bolum10.mp3" 159 | }, 160 | "speakers" : [ 161 | { 162 | "displayName" : "ilker Aksu", 163 | "description" : "SiberUzay Teknolojileri" 164 | } 165 | ] 166 | }, 167 | { 168 | "type": "mp3", 169 | "id": "bolum11", 170 | "title": "Bölüm 11", 171 | "description": "Halil İbrahim Nuroğlu ile tasarım, etkinlik ve hikayesini konuştuk.", 172 | "duration": "2729816", 173 | "image": "/bolum11.jpg", 174 | "recorddate": "2016/02/03 18:59:00 +0000", 175 | "soundfile": 176 | { 177 | "mp3": "/bolum11.mp3" 178 | }, 179 | "speakers" : [ 180 | { 181 | "displayName" : "Halil İbrahim Nuroğlu", 182 | "description" : "Ui Designer & Developer at www. Working at @unicrow and Founder at @Booksayingcom and love and joke, it's over." 183 | } 184 | ] 185 | }, 186 | { 187 | "type": "mp3", 188 | "id": "bolum12", 189 | "title": "Bölüm 12", 190 | "description": "Fehmi Can Sağlam ile Berlin (Zalando) Macerasını konuştuk.", 191 | "duration": "2729816", 192 | "image": "/bolum12.jpg", 193 | "recorddate": "2017/08/16 23:00:00 +0000", 194 | "cssclass" : "middle", 195 | "soundfile": 196 | { 197 | "mp3": "/bolum12.mp3" 198 | }, 199 | "speakers" : [ 200 | { 201 | "displayName" : "Fehmi Can Sağlam", 202 | "description" : "Coder. Backend Engineer" 203 | } 204 | ] 205 | } 206 | ] 207 | } -------------------------------------------------------------------------------- /dist/static/playlist/playlist.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Bu masalda peri yok - podCast", 3 | "description": "", 4 | "coverImage": "", 5 | "options":{ 6 | "imageroot" : "http://podcast.apostylee.com/podcasts", 7 | "soundfileroot" : "http://apostylee.com/podcast/bolums" 8 | }, 9 | "list": [ 10 | { 11 | "type": "mp3", 12 | "id": "bolum1", 13 | "title": "Bölüm 1", 14 | "description": "Fehmi Can SağlamCikolatali Akan Kek 5. Bolum
https://soundcloud.com/fehmi-can-saglam

10 Mart 2011 Etohum Toplantısı - Eren Bali - udemy.com http://vimeo.com/20993420

Webrazzi Ofisi’nin bu haftaki konuğu Wallit Kurucusu Veysel Berk oldu http://webrazzi.com/2013/04/15/girisimler-webrazzi-ofisinde-veysel-berk-wallit/

Jstanbul Meetup #003: The Happy Programmer, Nickel.rs on Rust http://www.meetup.com/jstanbul/events/199754192/", 15 | "duration": "2614187", 16 | "image": "/bolum1.jpg", 17 | "recorddate": "2014/09/05 18:34:56 +0000", 18 | "soundfile": { 19 | "mp3": "/bolum1.mp3" 20 | } 21 | }, 22 | { 23 | "type": "mp3", 24 | "id": "bolum2", 25 | "title": "Bölüm 2", 26 | "description": "Cikolatali Akan Kek 0. Bolum https://soundcloud.com/fehmi-can-saglam/cikolatali-akan-kek-0-bolum", 27 | "duration": "3055359", 28 | "image": "/bolum2.jpg", 29 | "recorddate": "2014/09/12 18:20:08 +0000", 30 | "soundfile": 31 | { 32 | "mp3": "/bolum2.mp3" 33 | } 34 | 35 | }, 36 | { 37 | "type": "mp3", 38 | "id": "bolum3", 39 | "title": "Bölüm 3", 40 | "description": "Debugging - http://en.wikipedia.org/wiki/Debugging

JavaScript - http://en.wikipedia.org/wiki/JavaScript

A component-based, event-driven JavaScript framework from Twitter
http://flightjs.github.io/

AngularJS, Emberjs, Backbonejs, KnockoutJs

Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web. http://getbootstrap.com/

https://soundcloud.com/fehmi-can-saglam/cikolatali-akan-kek-7-bolum", 41 | "duration": "2395235", 42 | "image": "/bolum3.jpg", 43 | "recorddate": "2014/09/20 20:14:17 +0000", 44 | "soundfile": 45 | { 46 | "mp3": "/bolum3.mp3" 47 | } 48 | 49 | }, 50 | { 51 | "type": "mp3", 52 | "id": "bolum4", 53 | "title": "Bölüm 4", 54 | "description": "Hazelcast the Leading Open Source In-Memory Data Grid http://hazelcast.com

http://www.alibaba.com/", 55 | "duration": "2926955", 56 | "image": "/bolum4.jpg", 57 | "recorddate": "2014/09/28 11:00:09 +0000", 58 | "soundfile": 59 | { 60 | "mp3": "/bolum4.mp3" 61 | } 62 | 63 | }, 64 | { 65 | "type": "mp3", 66 | "id": "bolum5", 67 | "title": "Bölüm 5", 68 | "description": "Unicrow — Unique Solutions http://www.unicrow.com/\r
Fatih Turan https://twitter.com/fatihturan\r
Emre Efendioğlu https://twitter.com/emreefendioglu\r
Ümit Dincel - https://twitter.com/ktumit (Müller)", 69 | "duration": "4609790", 70 | "image": "/bolum5.jpg", 71 | "recorddate": "2014/10/12 16:34:41 +0000", 72 | "soundfile": 73 | { 74 | "mp3": "/bolum5.mp3" 75 | } 76 | 77 | }, 78 | { 79 | "type": "mp3", 80 | "id": "bolum6", 81 | "title": "Bölüm 6.2", 82 | "description": "Yunus Emre Çavuşoğlu ile yazılım ağırlıklı sohbet ettik.
https://twitter.com/c_emreyns", 83 | "duration": "2217167", 84 | "image": "/bolum6.2.jpg", 85 | "recorddate": "2014/10/26 18:37:08 +0000", 86 | "soundfile": 87 | { 88 | "mp3": "/bolum6.2.mp3" 89 | } 90 | 91 | }, 92 | { 93 | "type": "mp3", 94 | "id": "bolum7", 95 | "title": "Bölüm 7", 96 | "description": "Halit Alptekin ile sohbet etmeye çalıştık :) https://github.com/halitalptekin
https://twitter.com/halitalptekin
http://halitalptekin.com/

https://asciinema.org/a/11128
http://www.gizemiskenderoglu.com/
http://octosec.net/
http://dojo.octosec.net/", 97 | "duration": "2729816", 98 | "image": "/bolum7.jpg", 99 | "recorddate": "2014/10/31 08:42:41 +0000", 100 | "soundfile": 101 | { 102 | "mp3": "/bolum7.mp3" 103 | } 104 | 105 | }, 106 | { 107 | "type": "mp3", 108 | "id": "bolum8", 109 | "title": "Bölüm 8", 110 | "description": "KTÜ Elektrik Elektronik Kulübü - Kariyer Gelişim Günleri 15 de Trabzon HackerSpace olarak bir şeyler anlattık ve çaktırmadan bunu kayda aldık :D", 111 | "duration": "2729816", 112 | "image": "/bolum8.jpg", 113 | "recorddate": "2015/03/20 10:10:00 +0000", 114 | "soundfile": 115 | { 116 | "mp3": "/bolum8.mp3" 117 | }, 118 | "speakers" : [ 119 | { 120 | "displayName" : "Emre Efendioğlu", 121 | "description" : "Unicrow Co-Founder" 122 | }, 123 | { 124 | "displayName" : "Gürkan Yarar", 125 | "description" : "Robilab Co-Founder" 126 | } 127 | ] 128 | }, 129 | { 130 | "type": "mp3", 131 | "id": "bolum9", 132 | "title": "Bölüm 9", 133 | "description": "Gökhan ile çeşitli teknolojik şeyler üzerine tatildeyken yaptığımız muhabbet.", 134 | "duration": "2729816", 135 | "image": "/bolum9.jpg", 136 | "recorddate": "2015/09/24 20:24:00 +0000", 137 | "soundfile": 138 | { 139 | "mp3": "/bolum9.mp3" 140 | }, 141 | "speakers" : [ 142 | { 143 | "displayName" : "M. Gökhan Elbir", 144 | "description" : "" 145 | } 146 | ] 147 | }, 148 | { 149 | "type": "mp3", 150 | "id": "bolum10", 151 | "title": "Bölüm 10", 152 | "description": "ilker Aksu ile geliştirme dünyası ile ilgili yaptığımız sohbet.", 153 | "duration": "2729816", 154 | "image": "/bolum10.jpg", 155 | "recorddate": "2016/02/15 22:24:00 +0000", 156 | "soundfile": 157 | { 158 | "mp3": "/bolum10.mp3" 159 | }, 160 | "speakers" : [ 161 | { 162 | "displayName" : "ilker Aksu", 163 | "description" : "SiberUzay Teknolojileri" 164 | } 165 | ] 166 | }, 167 | { 168 | "type": "mp3", 169 | "id": "bolum11", 170 | "title": "Bölüm 11", 171 | "description": "Halil İbrahim Nuroğlu ile tasarım, etkinlik ve hikayesini konuştuk.", 172 | "duration": "2729816", 173 | "image": "/bolum11.jpg", 174 | "recorddate": "2016/02/03 18:59:00 +0000", 175 | "soundfile": 176 | { 177 | "mp3": "/bolum11.mp3" 178 | }, 179 | "speakers" : [ 180 | { 181 | "displayName" : "Halil İbrahim Nuroğlu", 182 | "description" : "Ui Designer & Developer at www. Working at @unicrow and Founder at @Booksayingcom and love and joke, it's over." 183 | } 184 | ] 185 | }, 186 | { 187 | "type": "mp3", 188 | "id": "bolum12", 189 | "title": "Bölüm 12", 190 | "description": "Fehmi Can Sağlam ile Berlin (Zalando) Macerasını konuştuk.", 191 | "duration": "2729816", 192 | "image": "/bolum12.jpg", 193 | "recorddate": "2017/08/16 23:00:00 +0000", 194 | "cssclass" : "middle", 195 | "soundfile": 196 | { 197 | "mp3": "/bolum12.mp3" 198 | }, 199 | "speakers" : [ 200 | { 201 | "displayName" : "Fehmi Can Sağlam", 202 | "description" : "Coder. Backend Engineer" 203 | } 204 | ] 205 | } 206 | ] 207 | } -------------------------------------------------------------------------------- /src/themes/modern/css/style.scss: -------------------------------------------------------------------------------- 1 | $globalblur:10px; 2 | $playerColor:white; 3 | $vueColor: #4cba87; 4 | 5 | body, html { 6 | height: 100%; 7 | margin: 0; 8 | padding: 0; 9 | } 10 | 11 | body { 12 | font-family: Helvetica, Arial, sans-serif; 13 | -webkit-font-smoothing: antialiased; 14 | -moz-osx-font-smoothing: grayscale; 15 | color: #333; 16 | margin: 3% 0 10px; 17 | 18 | background-size: cover; 19 | background-image: url('/static/img/bg.jpg'); 20 | background-attachment: fixed; 21 | } 22 | 23 | a { 24 | color: inherit; 25 | text-decoration: none; 26 | } 27 | 28 | .audio-player-container { 29 | margin: 0 auto 30px; 30 | max-width: 400px; 31 | border-radius: 3px; 32 | box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.62); 33 | 34 | .main-title{ 35 | text-align: center; 36 | font-size: 25px; 37 | color: white; 38 | margin: 15px 0 0 0; 39 | padding: 15px; 40 | background: #170b0d; 41 | } 42 | 43 | .player { 44 | text-align: center; 45 | position: relative; 46 | height: 380px; 47 | overflow: hidden; 48 | 49 | .custom-audio-player{ 50 | width: 80%; 51 | margin: 15px auto; 52 | padding-right: 8px; 53 | display: flex; 54 | align-items: center; 55 | background: rgba(0, 0, 0, 0.3); 56 | border-radius: 5px; 57 | z-index: 2; 58 | position: relative; 59 | 60 | &:hover{ 61 | background: rgba(0, 0, 0, 0.5); 62 | } 63 | 64 | .btn-play{ 65 | color:$playerColor; 66 | display: inline-block; 67 | width: 32px; 68 | padding: 4px; 69 | font-weight: bold; 70 | } 71 | 72 | audio { 73 | position: relative; 74 | left: 15px; 75 | z-index: 1; 76 | flex-grow: 1; 77 | } 78 | 79 | audio::-webkit-media-controls-panel { 80 | background: transparent; 81 | } 82 | 83 | audio::-webkit-media-controls-current-time-display, 84 | audio::-webkit-media-controls-time-remaining-display { 85 | color: $playerColor; 86 | } 87 | 88 | audio::-webkit-media-controls-timeline { 89 | background-color: $playerColor; 90 | } 91 | 92 | audio::-webkit-media-controls-volume-slider, 93 | audio::-webkit-media-controls-mute-button { 94 | display: none!important; 95 | -webkit-appearance: none; 96 | } 97 | 98 | audio::-webkit-media-controls-play-button{ 99 | display: none; 100 | } 101 | } 102 | 103 | .title { 104 | color: $playerColor; 105 | margin: 5px 0; 106 | font-size: 18px; 107 | } 108 | 109 | .cover-avatar { 110 | width: 100px; 111 | margin: 30px auto; 112 | 113 | img { 114 | border: 3px solid $playerColor; 115 | width: 100%; 116 | } 117 | } 118 | 119 | .description { 120 | color: $playerColor; 121 | padding: 5px 10px 10px 10px; 122 | height: 100px; 123 | overflow: hidden; 124 | cursor: pointer; 125 | 126 | &:hover { 127 | color: #ededed; 128 | } 129 | } 130 | 131 | .cover-image { 132 | height: 100%; 133 | overflow: hidden; 134 | position: absolute; 135 | top: 0; 136 | right: 0; 137 | left: 0; 138 | background-repeat: no-repeat; 139 | background-position: center; 140 | -webkit-filter: blur($globalblur); 141 | -moz-filter: blur($globalblur); 142 | -o-filter: blur($globalblur); 143 | -ms-filter: blur($globalblur); 144 | filter: blur($globalblur); 145 | z-index: -1; 146 | } 147 | } 148 | 149 | .list { 150 | padding: 20px; 151 | background-color: #f9f9f9; 152 | 153 | .list-items { 154 | list-style: none; 155 | margin: 0; 156 | padding: 0; 157 | 158 | li { 159 | line-height: 50px; 160 | font-size: 18px; 161 | 162 | a { 163 | display: flex; 164 | align-items: center; 165 | 166 | .number { 167 | width: 30px; 168 | display: block; 169 | font-weight: bold; 170 | 171 | em{ 172 | font-style: normal; 173 | } 174 | } 175 | 176 | .title { 177 | display: block; 178 | flex-grow: 1; 179 | margin-left: 20px; 180 | color: #757575; 181 | border-bottom: 1px solid #e0e0e0; 182 | } 183 | 184 | &:hover { 185 | 186 | .title { 187 | border-color: #c0c0c0; 188 | } 189 | } 190 | 191 | &.router-link-active { 192 | 193 | .number{ 194 | 195 | em{ 196 | display: none; 197 | } 198 | 199 | &::before{ 200 | content: '▶︎'; 201 | color: #e96465; 202 | } 203 | 204 | &.playing{ 205 | &::before{ 206 | content: '||'; 207 | } 208 | } 209 | } 210 | 211 | .title { 212 | color: #e96465; 213 | } 214 | } 215 | } 216 | } 217 | } 218 | } 219 | } 220 | 221 | .spinner { 222 | margin: 100px auto; 223 | padding: 50px; 224 | width: 50px; 225 | height: 40px; 226 | text-align: center; 227 | font-size: 10px; 228 | } 229 | 230 | .spinner>div { 231 | background-color: #333; 232 | height: 100%; 233 | width: 6px; 234 | display: inline-block; 235 | -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out; 236 | animation: sk-stretchdelay 1.2s infinite ease-in-out; 237 | } 238 | 239 | .spinner .rect2 { 240 | -webkit-animation-delay: -1.1s; 241 | animation-delay: -1.1s; 242 | } 243 | 244 | .spinner .rect3 { 245 | -webkit-animation-delay: -1.0s; 246 | animation-delay: -1.0s; 247 | } 248 | 249 | .spinner .rect4 { 250 | -webkit-animation-delay: -0.9s; 251 | animation-delay: -0.9s; 252 | } 253 | 254 | .spinner .rect5 { 255 | -webkit-animation-delay: -0.8s; 256 | animation-delay: -0.8s; 257 | } 258 | 259 | @-webkit-keyframes sk-stretchdelay { 260 | 0%, 261 | 40%, 262 | 100% { 263 | -webkit-transform: scaleY(0.4) 264 | } 265 | 20% { 266 | -webkit-transform: scaleY(1.0) 267 | } 268 | } 269 | 270 | @keyframes sk-stretchdelay { 271 | 0%, 272 | 40%, 273 | 100% { 274 | transform: scaleY(0.4); 275 | -webkit-transform: scaleY(0.4); 276 | } 277 | 20% { 278 | transform: scaleY(1.0); 279 | -webkit-transform: scaleY(1.0); 280 | } 281 | } 282 | 283 | .modal-wrapper { 284 | width: 100%; 285 | height: 100%; 286 | position: fixed; 287 | top: 0; 288 | left: 0; 289 | background: rgba(41, 171, 164, 0.8); 290 | visibility: hidden; 291 | opacity: 0; 292 | transition: all 0.25s ease-in-out; 293 | &.open { 294 | opacity: 1; 295 | visibility: visible; 296 | } 297 | } 298 | 299 | .modal { 300 | width: 600px; 301 | height: 400px; 302 | display: block; 303 | margin: 50% 0 0 -300px; 304 | position: relative; 305 | top: 50%; 306 | left: 50%; 307 | background: #fff; 308 | opacity: 0; 309 | transition: all 0.5s ease-in-out; 310 | .head { 311 | width: 90%; 312 | height: 32px; 313 | padding: 12px 30px; 314 | overflow: hidden; 315 | background: #e2525c; 316 | 317 | span{ 318 | display: inline-block; 319 | float: left; 320 | margin-top: 10px; 321 | color: white; 322 | } 323 | } 324 | .btn-close { 325 | font-size: 28px; 326 | display: block; 327 | float: right; 328 | color: #fff; 329 | } 330 | .content { 331 | padding: 8%; 332 | } 333 | .modal-description { 334 | text-align: center; 335 | line-height: 20px; 336 | a { 337 | color: #e2525c; 338 | &:hover { 339 | text-decoration: underline; 340 | } 341 | } 342 | } 343 | } 344 | 345 | .modal-wrapper.open .modal { 346 | margin-top: -200px; 347 | opacity: 1; 348 | } 349 | 350 | @media (max-width:480px) { 351 | body { 352 | margin: 0; 353 | background-image: none; 354 | overflow: auto; 355 | } 356 | .audio-player-container { 357 | max-width: 100%!important; 358 | margin: 0; 359 | 360 | .main-title{ 361 | margin-top: 0!important; 362 | } 363 | 364 | .list{ 365 | height: auto!important; 366 | overflow: inherit!important; 367 | } 368 | } 369 | 370 | .modal{ 371 | width: auto!important; 372 | left: 0!important; 373 | right: 0!important; 374 | height: auto!important; 375 | margin: 0!important; 376 | top: 60px!important; 377 | } 378 | } -------------------------------------------------------------------------------- /dist/static/css/app.cbcb5ef0781580126b54c108e435c632.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///./src/themes/modern/css/src/themes/modern/css/style.scss"],"names":[],"mappings":"AAIA,UACE,YACA,SACA,SAAU,CAGZ,KACE,uCACA,mCACA,kCACA,WACA,iBAEA,sBACA,2CACA,2BAA4B,CAG9B,EACE,cACA,oBAAqB,CAGvB,wBACE,mBACA,gBACA,kBACA,qCAAgD,CA2LjD,oCAxLG,kBACA,eACA,WACA,gBACA,aACA,kBAAmB,CACpB,gCAGC,kBACA,kBACA,aACA,eAAgB,CAoGjB,qDAjGK,UACA,iBACA,kBACA,aACA,mBACA,0BACA,kBACA,UACA,iBAAkB,CA2CrB,2DAxCK,yBAA8B,CAC/B,+DAGC,WACA,qBACA,WACA,YACA,eAAiB,CAClB,2DAGC,kBACA,UACA,UACA,WAAY,CACb,yFAGC,sBAAuB,CACxB,kNAIC,UAnFQ,CAoFT,4FAGC,qBAvFQ,CAwFT,gMAIC,uBACA,uBAAwB,CACzB,+FAGC,YAAa,CACd,uCAIH,WACA,aACA,cAAe,CAChB,8CAGC,YACA,gBAAiB,CAMlB,kDAHG,sBACA,UAAW,CACZ,6CAID,WACA,sBACA,aACA,gBACA,cAAe,CAKhB,mDAFG,aAAc,CACf,6CAID,YACA,gBACA,kBACA,MACA,QACA,OACA,4BACA,wBACA,0BACA,uBACA,qBACA,sBACA,kBACA,UAAW,CACZ,8BAID,aACA,wBAAyB,CAmE1B,0CAhEG,gBACA,SACA,SAAU,CA6DX,6CA1DG,iBACA,cAAe,CAwDhB,+CArDG,aACA,kBAAmB,CAmDpB,uDAhDG,WACA,cACA,eAAiB,CAKlB,0DAFG,iBAAkB,CACnB,sDAID,cACA,YACA,iBACA,cACA,+BAAgC,CACjC,4DAKG,mBAAqB,CACtB,6EAQG,YAAa,CACd,iFAGC,qBACA,aAAc,CACf,yFAIG,YAAa,CACd,yEAKH,aAAc,CAS5B,SACE,kBACA,aACA,WACA,YACA,kBACA,cAAe,CAGjB,aACE,sBACA,YACA,UACA,qBACA,4DACA,mDAAoD,CAGtD,gBACE,8BACA,qBAAsB,CAGxB,gBACE,4BACA,mBAAsB,CAGxB,gBACE,6BACA,oBAAsB,CAGxB,gBACE,6BACA,oBAAsB,CAGxB,mCACE,UAGE,4BAA8B,CAEhC,IACE,2BAA8B,EAIlC,2BACE,UAGE,qBACA,4BAA8B,CAEhC,IACE,oBACA,2BAA8B,EAIlC,eACE,WACA,YACA,eACA,MACA,OACA,+BACA,kBACA,UACA,+BAAiC,CAKlC,oBAHG,UACA,kBAAmB,CAIvB,OACE,YACA,aACA,cACA,sBACA,kBACA,QACA,SACA,gBACA,UACA,8BAAgC,CAkCjC,aAhCG,UACA,YACA,kBACA,gBACA,kBAAmB,CAQpB,kBALG,qBACA,WACA,gBACA,UAAY,CACb,kBAGD,eACA,cACA,YACA,UAAW,CACZ,gBAEC,UAAW,CACZ,0BAEC,kBACA,gBAAiB,CAOlB,4BALG,aAAc,CAIf,kCAFG,yBAA0B,CAMlC,2BACE,kBACA,SAAU,CAGZ,yBACE,KACE,SACA,sBACA,aAAc,CAEhB,wBACE,yBACA,QAAS,CAUV,oCAPG,sBAAuB,CACxB,8BAGC,sBACA,0BAA2B,CAI/B,OACE,qBACA,iBACA,kBACA,sBACA,mBACA,kBAAmB,CACpB","file":"static/css/app.cbcb5ef0781580126b54c108e435c632.css","sourcesContent":["$globalblur:10px;\n$playerColor:white;\n$vueColor: #4cba87;\n\nbody, html {\n height: 100%;\n margin: 0;\n padding: 0;\n}\n\nbody {\n font-family: Helvetica, Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n color: #333;\n margin: 3% 0 10px;\n\n background-size: cover;\n background-image: url('/static/img/bg.jpg');\n background-attachment: fixed; \n}\n\na {\n color: inherit;\n text-decoration: none;\n}\n\n.audio-player-container {\n margin: 0 auto 30px;\n max-width: 400px;\n border-radius: 3px; \n box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.62);\n \n .main-title{\n text-align: center;\n font-size: 25px;\n color: white;\n margin: 15px 0 0 0;\n padding: 15px;\n background: #170b0d;\n }\n\n .player {\n text-align: center;\n position: relative;\n height: 380px;\n overflow: hidden;\n\n .custom-audio-player{\n width: 80%;\n margin: 15px auto;\n padding-right: 8px;\n display: flex;\n align-items: center;\n background: rgba(0, 0, 0, 0.3);\n border-radius: 5px;\n z-index: 2;\n position: relative;\n\n &:hover{\n background: rgba(0, 0, 0, 0.5);\n }\n\n .btn-play{\n color:$playerColor;\n display: inline-block;\n width: 32px;\n padding: 4px;\n font-weight: bold;\n }\n\n audio {\n position: relative;\n left: 15px;\n z-index: 1;\n flex-grow: 1;\n }\n\n audio::-webkit-media-controls-panel {\n background: transparent;\n }\n\n audio::-webkit-media-controls-current-time-display,\n audio::-webkit-media-controls-time-remaining-display {\n color: $playerColor;\n }\n\n audio::-webkit-media-controls-timeline {\n background-color: $playerColor;\n }\n\n audio::-webkit-media-controls-volume-slider,\n audio::-webkit-media-controls-mute-button {\n display: none!important;\n -webkit-appearance: none;\n }\n\n audio::-webkit-media-controls-play-button{\n display: none;\n }\n }\n \n .title {\n color: $playerColor;\n margin: 5px 0;\n font-size: 18px;\n }\n\n .cover-avatar {\n width: 100px;\n margin: 30px auto;\n \n img {\n border: 3px solid $playerColor;\n width: 100%;\n }\n }\n\n .description {\n color: $playerColor;\n padding: 5px 10px 10px 10px;\n height: 100px;\n overflow: hidden;\n cursor: pointer;\n\n &:hover {\n color: #ededed;\n }\n }\n\n .cover-image {\n height: 100%;\n overflow: hidden;\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n background-repeat: no-repeat;\n background-position: center;\n -webkit-filter: blur($globalblur);\n -moz-filter: blur($globalblur);\n -o-filter: blur($globalblur);\n -ms-filter: blur($globalblur);\n filter: blur($globalblur);\n z-index: -1;\n }\n }\n\n .list {\n padding: 20px;\n background-color: #f9f9f9;\n\n .list-items {\n list-style: none;\n margin: 0;\n padding: 0;\n\n li {\n line-height: 50px;\n font-size: 18px;\n\n a {\n display: flex;\n align-items: center;\n\n .number {\n width: 30px;\n display: block;\n font-weight: bold;\n\n em{\n font-style: normal;\n }\n }\n\n .title {\n display: block;\n flex-grow: 1;\n margin-left: 20px;\n color: #757575;\n border-bottom: 1px solid #e0e0e0;\n }\n\n &:hover {\n\n .title {\n border-color: #c0c0c0;\n }\n }\n\n &.router-link-active {\n \n .number{\n\n em{\n display: none;\n }\n\n &::before{\n content: '▶︎';\n color: #e96465;\n }\n\n &.playing{\n &::before{\n content: '||';\n } \n }\n }\n \n .title {\n color: #e96465;\n }\n }\n }\n }\n }\n }\n}\n\n.spinner {\n margin: 100px auto;\n padding: 50px;\n width: 50px;\n height: 40px;\n text-align: center;\n font-size: 10px;\n}\n\n.spinner>div {\n background-color: #333;\n height: 100%;\n width: 6px;\n display: inline-block;\n -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;\n animation: sk-stretchdelay 1.2s infinite ease-in-out;\n}\n\n.spinner .rect2 {\n -webkit-animation-delay: -1.1s;\n animation-delay: -1.1s;\n}\n\n.spinner .rect3 {\n -webkit-animation-delay: -1.0s;\n animation-delay: -1.0s;\n}\n\n.spinner .rect4 {\n -webkit-animation-delay: -0.9s;\n animation-delay: -0.9s;\n}\n\n.spinner .rect5 {\n -webkit-animation-delay: -0.8s;\n animation-delay: -0.8s;\n}\n\n@-webkit-keyframes sk-stretchdelay {\n 0%,\n 40%,\n 100% {\n -webkit-transform: scaleY(0.4)\n }\n 20% {\n -webkit-transform: scaleY(1.0)\n }\n}\n\n@keyframes sk-stretchdelay {\n 0%,\n 40%,\n 100% {\n transform: scaleY(0.4);\n -webkit-transform: scaleY(0.4);\n }\n 20% {\n transform: scaleY(1.0);\n -webkit-transform: scaleY(1.0);\n }\n}\n\n.modal-wrapper {\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0;\n left: 0;\n background: rgba(41, 171, 164, 0.8);\n visibility: hidden;\n opacity: 0;\n transition: all 0.25s ease-in-out;\n &.open {\n opacity: 1;\n visibility: visible;\n }\n}\n\n.modal {\n width: 600px;\n height: 400px;\n display: block;\n margin: 50% 0 0 -300px;\n position: relative;\n top: 50%;\n left: 50%;\n background: #fff;\n opacity: 0;\n transition: all 0.5s ease-in-out;\n .head {\n width: 90%;\n height: 32px;\n padding: 12px 30px;\n overflow: hidden;\n background: #e2525c;\n\n span{\n display: inline-block;\n float: left;\n margin-top: 10px;\n color: white;\n }\n }\n .btn-close {\n font-size: 28px;\n display: block;\n float: right;\n color: #fff;\n }\n .content {\n padding: 8%;\n }\n .modal-description {\n text-align: center;\n line-height: 20px;\n a {\n color: #e2525c;\n &:hover {\n text-decoration: underline;\n }\n }\n }\n}\n\n.modal-wrapper.open .modal {\n margin-top: -200px;\n opacity: 1;\n}\n\n@media (max-width:480px) {\n body {\n margin: 0;\n background-image: none;\n overflow: auto;\n }\n .audio-player-container {\n max-width: 100%!important;\n margin: 0;\n\n .main-title{\n margin-top: 0!important;\n }\n\n .list{\n height: auto!important;\n overflow: inherit!important;\n }\n }\n\n .modal{\n width: auto!important;\n left: 0!important;\n right: 0!important;\n height: auto!important;\n margin: 0!important;\n top: 60px!important;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/themes/modern/css/src/themes/modern/css/style.scss"],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/static/js/manifest.4f9c4297b7a335d6b21a.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///static/js/manifest.4f9c4297b7a335d6b21a.js","webpack:///webpack/bootstrap c922071eafc1d57a3254"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","parentJsonpFunction","window","chunkIds","moreModules","executeModules","chunkId","result","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","s","2","e","onScriptComplete","script","onerror","onload","clearTimeout","timeout","chunk","Error","undefined","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","createElement","type","charset","async","nc","setAttribute","src","p","0","1","setTimeout","appendChild","m","c","value","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error"],"mappings":"CAAS,SAAUA,GCuCnB,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAI,EAAAJ,EACAK,GAAA,EACAH,WAUA,OANAJ,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,GAAA,EAGAF,EAAAD,QA1DA,GAAAK,GAAAC,OAAA,YACAA,QAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,GAAAX,GAAAY,EAAAC,EAAAT,EAAA,EAAAU,KACQV,EAAAK,EAAAM,OAAoBX,IAC5BQ,EAAAH,EAAAL,GACAY,EAAAJ,IACAE,EAAAG,KAAAD,EAAAJ,GAAA,IAEAI,EAAAJ,GAAA,CAEA,KAAAZ,IAAAU,GACAQ,OAAAC,UAAAC,eAAAd,KAAAI,EAAAV,KACAF,EAAAE,GAAAU,EAAAV,GAIA,KADAO,KAAAE,EAAAC,EAAAC,GACAG,EAAAC,QACAD,EAAAO,SAEA,IAAAV,EACA,IAAAP,EAAA,EAAYA,EAAAO,EAAAI,OAA2BX,IACvCS,EAAAd,IAAAuB,EAAAX,EAAAP,GAGA,OAAAS,GAIA,IAAAZ,MAGAe,GACAO,EAAA,EA6BAxB,GAAAyB,EAAA,SAAAZ,GA+BA,QAAAa,KAEAC,EAAAC,QAAAD,EAAAE,OAAA,KACAC,aAAAC,EACA,IAAAC,GAAAf,EAAAJ,EACA,KAAAmB,IACAA,GACAA,EAAA,MAAAC,OAAA,iBAAApB,EAAA,aAEAI,EAAAJ,OAAAqB,IAvCA,GAAAC,GAAAlB,EAAAJ,EACA,QAAAsB,EACA,UAAAC,SAAA,SAAAC,GAA0CA,KAI1C,IAAAF,EACA,MAAAA,GAAA,EAIA,IAAAG,GAAA,GAAAF,SAAA,SAAAC,EAAAE,GACAJ,EAAAlB,EAAAJ,IAAAwB,EAAAE,IAEAJ,GAAA,GAAAG,CAGA,IAAAE,GAAAC,SAAAC,qBAAA,WACAf,EAAAc,SAAAE,cAAA,SACAhB,GAAAiB,KAAA,kBACAjB,EAAAkB,QAAA,QACAlB,EAAAmB,OAAA,EACAnB,EAAAI,QAAA,KAEA/B,EAAA+C,IACApB,EAAAqB,aAAA,QAAAhD,EAAA+C,IAEApB,EAAAsB,IAAAjD,EAAAkD,EAAA,aAAArC,EAAA,KAAwEsC,EAAA,uBAAAC,EAAA,wBAAsDvC,GAAA,KAC9H,IAAAkB,GAAAsB,WAAA3B,EAAA,KAgBA,OAfAC,GAAAC,QAAAD,EAAAE,OAAAH,EAaAc,EAAAc,YAAA3B,GAEAW,GAIAtC,EAAAuD,EAAAxD,EAGAC,EAAAwD,EAAAtD,EAGAF,EAAAK,EAAA,SAAAoD,GAA2C,MAAAA,IAG3CzD,EAAA0D,EAAA,SAAAvD,EAAAwD,EAAAC,GACA5D,EAAA6D,EAAA1D,EAAAwD,IACAxC,OAAA2C,eAAA3D,EAAAwD,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMA5D,EAAAkE,EAAA,SAAA9D,GACA,GAAAwD,GAAAxD,KAAA+D,WACA,WAA2B,MAAA/D,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAJ,GAAA0D,EAAAE,EAAA,IAAAA,GACAA,GAIA5D,EAAA6D,EAAA,SAAAO,EAAAC,GAAsD,MAAAlD,QAAAC,UAAAC,eAAAd,KAAA6D,EAAAC,IAGtDrE,EAAAkD,EAAA,IAGAlD,EAAAsE,GAAA,SAAAC,GAA8D,KAApBC,SAAAC,MAAAF,GAAoBA","file":"static/js/manifest.4f9c4297b7a335d6b21a.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId]) {\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t}\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length) {\n/******/ \t\t\tresolves.shift()();\n/******/ \t\t}\n/******/ \t\tif(executeModules) {\n/******/ \t\t\tfor(i=0; i < executeModules.length; i++) {\n/******/ \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\treturn result;\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t2: 0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId) {\n/******/ \t\tvar installedChunkData = installedChunks[chunkId];\n/******/ \t\tif(installedChunkData === 0) {\n/******/ \t\t\treturn new Promise(function(resolve) { resolve(); });\n/******/ \t\t}\n/******/\n/******/ \t\t// a Promise means \"currently loading\".\n/******/ \t\tif(installedChunkData) {\n/******/ \t\t\treturn installedChunkData[2];\n/******/ \t\t}\n/******/\n/******/ \t\t// setup Promise in chunk cache\n/******/ \t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n/******/ \t\t});\n/******/ \t\tinstalledChunkData[2] = promise;\n/******/\n/******/ \t\t// start chunk loading\n/******/ \t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\tvar script = document.createElement('script');\n/******/ \t\tscript.type = 'text/javascript';\n/******/ \t\tscript.charset = 'utf-8';\n/******/ \t\tscript.async = true;\n/******/ \t\tscript.timeout = 120000;\n/******/\n/******/ \t\tif (__webpack_require__.nc) {\n/******/ \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n/******/ \t\t}\n/******/ \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"6dbd63f359c0b1d8c28b\",\"1\":\"f5a8eb19f15e6604aaf6\"}[chunkId] + \".js\";\n/******/ \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n/******/ \t\tscript.onerror = script.onload = onScriptComplete;\n/******/ \t\tfunction onScriptComplete() {\n/******/ \t\t\t// avoid mem leaks in IE.\n/******/ \t\t\tscript.onerror = script.onload = null;\n/******/ \t\t\tclearTimeout(timeout);\n/******/ \t\t\tvar chunk = installedChunks[chunkId];\n/******/ \t\t\tif(chunk !== 0) {\n/******/ \t\t\t\tif(chunk) {\n/******/ \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = undefined;\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\thead.appendChild(script);\n/******/\n/******/ \t\treturn promise;\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/ \t// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/ })\n/************************************************************************/\n/******/ ([]);\n\n\n// WEBPACK FOOTER //\n// static/js/manifest.4f9c4297b7a335d6b21a.js"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"6dbd63f359c0b1d8c28b\",\"1\":\"f5a8eb19f15e6604aaf6\"}[chunkId] + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap c922071eafc1d57a3254"],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/static/js/app.f5a8eb19f15e6604aaf6.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///static/js/app.f5a8eb19f15e6604aaf6.js","webpack:///./src/router/index.js","webpack:///./src/stores/store.js","webpack:///./src/App.vue","webpack:///App.vue","webpack:///AudioPlayer.vue","webpack:///PlayList.vue","webpack:///Player.vue","webpack:///./src/main.js","webpack:///./src/services/dataService.js","webpack:///./src/stores/helpers/dataviewhelper.js","webpack:///./src/services/themeService.js","webpack:///./src/stores/mutation-types.js","webpack:///./src/themes/modern/views/AudioPlayer.html","webpack:///./src/themes/modern/views/PlayList.html","webpack:///./src/themes/modern/views/Player.html","webpack:///./src/components/AudioPlayer.vue","webpack:///./src/components/PlayList.vue","webpack:///./src/components/Player.vue","webpack:///./src/App.vue?7c7a","webpack:///./src/themes ^\\.\\/.*$"],"names":["webpackJsonp","31","module","__webpack_exports__","__webpack_require__","__WEBPACK_IMPORTED_MODULE_0_vue__","__WEBPACK_IMPORTED_MODULE_1_vue_router__","__WEBPACK_IMPORTED_MODULE_2__components_AudioPlayer__","__WEBPACK_IMPORTED_MODULE_2__components_AudioPlayer___default","n","use","router","mode","routes","path","name","component","a","32","_mutations","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_slicedToArray__","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_slicedToArray___default","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_defineProperty__","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_defineProperty___default","__WEBPACK_IMPORTED_MODULE_2_vue__","__WEBPACK_IMPORTED_MODULE_3_vuex__","__WEBPACK_IMPORTED_MODULE_4__mutation_types_js__","__WEBPACK_IMPORTED_MODULE_5__helpers_dataviewhelper_js__","__WEBPACK_IMPORTED_MODULE_6__services_dataService_js__","state","playList","currentList","changeTrack","startStopTrack","isPlaying","loading","mutations","payload","id","data","viewData","i","list","status","actions","context","_ref","_ref2","dataUrl","fetchData","then","res","json","commit","Store","33","exports","Component","34","Object","defineProperty","value","loadStyle","35","__WEBPACK_IMPORTED_MODULE_0__components_PlayList__","__WEBPACK_IMPORTED_MODULE_0__components_PlayList___default","__WEBPACK_IMPORTED_MODULE_1__components_Player__","__WEBPACK_IMPORTED_MODULE_1__components_Player___default","__WEBPACK_IMPORTED_MODULE_2__stores_mutation_types__","__WEBPACK_IMPORTED_MODULE_3__services_themeService__","template","components","PlayList","Player","created","this","$route","params","$store","dispatch","appOptions","playListSourceUrl","computed","plist","document","title","36","__WEBPACK_IMPORTED_MODULE_0__services_themeService__","__WEBPACK_IMPORTED_MODULE_1__stores_mutation_types__","props","methods","playerControl","index","37","type","required","parseInt","getModalClassList","querySelector","classList","getAudioPlayer","$refs","player","watch","loadTrack","playerChange","currentTime","paused","ended","readyState","pause","play","openModal","add","closeModal","remove","load","38","__WEBPACK_IMPORTED_MODULE_1__App__","__WEBPACK_IMPORTED_MODULE_1__App___default","__WEBPACK_IMPORTED_MODULE_2__router__","__WEBPACK_IMPORTED_MODULE_3__stores_store_js__","config","productionTip","el","App","store","39","fetch","40","d","toViewModel","options","forEach","item","image","imageroot","soundfile","mp3","soundfileroot","videoEmbedUrl","videoId","description","linkify","detailsUrl","recorddateformatted","formatDateString","recorddate","dateTimeString","date","Date","toISOString","slice","dateParse","split","inputText","replacedText","replacePattern1","replacePattern2","replacePattern3","replace","6","loadTheme","fileName","customRequire","theme","7","FETCH_PLAYLIST","GET_CURRENT_LIST","PLAYER_STARTSTOP_TRACK","75","76","77","78","79","80","81","82","render","_vm","_h","$createElement","_c","_self","attrs","staticClass","staticRenderFns","87","webpackContext","req","webpackContextResolve","map","Error","./modern/css/style.scss","./modern/views/AudioPlayer.html","./modern/views/PlayList.html","./modern/views/Player.html","keys","resolve"],"mappings":"AAAAA,cAAc,IAERC,GACA,SAAUC,EAAQC,EAAqBC,GAE7C,YACqB,IAAIC,GAAoCD,EAAoB,IACxDE,EAA2CF,EAAoB,IAC/DG,EAAwDH,EAAoB,IAC5EI,EAAgEJ,EAAoBK,EAAEF,ECL/GF,GAAA,EAAIK,IAAIJ,EAAA,EAER,IAAIK,GAAS,GAAIL,GAAA,GACfM,KAAM,UACNC,SAEIC,KAAM,QACNC,KAAM,cACNC,UAAWR,EAAAS,KAKjBd,GAAA,KDYMe,GACA,SAAUhB,EAAQC,EAAqBC,GAE7C,YACqB,IAYjBe,GAZqBC,EAAoEhB,EAAoB,IACxFiB,EAA4EjB,EAAoBK,EAAEW,GAClGE,EAAqElB,EAAoB,IACzFmB,EAA6EnB,EAAoBK,EAAEa,GACnGE,EAAoCpB,EAAoB,IACxDqB,EAAqCrB,EAAoB,IACzDsB,EAAmDtB,EAAoB,GACvEuB,EAA2DvB,EAAoB,IAC/EwB,EAAyDxB,EAAoB,GEnCtGoB,GAAA,EAAId,IAAIe,EAAA,EAER,IAAII,IACAC,YACAC,eACAC,aAAa,EACbC,gBAAgB,EAChBC,WAAW,EACXC,SAAQ,GAGRC,QAAAb,IAAAa,EAECV,EAAA,EAFD,SAEwBG,EAAOQ,GAAQ,GAC5BC,GAAYD,EAAZC,GAAIC,EAAQF,EAARE,KACPC,EAAWpC,EAAAqC,EAAAd,EAAA,GAAYY,EAC3BV,GAAMC,SAAWU,EACjBX,EAAME,YAAcS,EAASE,KAAKJ,GAClCT,EAAMM,SAAU,IAPpBZ,IAAAJ,EASCO,EAAA,EATD,SAS0BG,EAAOS,GAC7BT,EAAME,YAAcF,EAAMC,SAASY,KAAKJ,KAV5Cf,IAAAJ,EAYCO,EAAA,EAZD,SAYgCG,EAAOc,GACnCd,EAAMI,eAAiBU,IAb3BxB,GAiBAyB,EAAArB,OACCG,EAAA,EADD,SACwBmB,EADxBC,GAC+C,GAAAC,GAAA1B,IAAAyB,EAAA,GAAbE,EAAaD,EAAA,GAAJT,EAAIS,EAAA,EAC3CnB,GAAA,EAAYqB,UAAUD,GACjBE,KAAK,SAACC,GAAU,MAAOA,GAAIC,SAC3BF,KAAK,SAACC,GACHN,EAAQQ,OAAO3B,EAAA,GACXY,GAAIA,EACJC,KAAMY,OAM1BhD,GAAA,KAAmBsB,GAAA,EAAK6B,OACpBzB,QACAO,YACAQ,aFmDEW,GACA,SAAUrD,EAAQsD,EAASpD,GGtGjC,GAAAqD,GAAArD,EAAA,IAEAA,EAAA,IAEAA,EAAA,IAEA,KAEA,KAEA,KAGAF,GAAAsD,QAAAC,EAAAD,SH6GME,GACA,SAAUxD,EAAQC,EAAqBC,GAE7C,YACAuD,QAAOC,eAAezD,EAAqB,cAAgB0D,OAAO,II7HlEzD,EAAA,GAAA0D,YAEA3D,EAAA,SJgIEY,KI9HF,QJmIMgD,GACA,SAAU7D,EAAQC,EAAqBC,GAE7C,YACAuD,QAAOC,eAAezD,EAAqB,cAAgB0D,OAAO,GAC7C,IAAIG,GAAqD5D,EAAoB,IACzE6D,EAA6D7D,EAAoBK,EAAEuD,GACnFE,EAAmD9D,EAAoB,IACvE+D,EAA2D/D,EAAoBK,EAAEyD,GACjFE,EAAuDhE,EAAoB,GAC3EiE,EAAuDjE,EAAoB,EAOvED,GAA6B,SACxDY,KKlJF,cLmJEuD,SAAUlE,EAAoBqC,EAAE4B,EAAgE,WKlJlG,oBLmJEE,YKjJFC,SAAAP,EAAAhD,EAEAwD,OAAAN,EAAAlD,GLmJEyD,QAAS,WACP,GAAIpC,GAAKqC,KAAKC,OAAOC,OAAOvC,IKlJhC,GLmJIqC,MAAKG,OAAOC,SAASX,EAA6E,GAAIY,WAAWC,kBKlJrH3C,KLqJE4C,UACEpD,SAAU,WACR,GAAIqD,GAAQR,KAAKG,OAAOjD,MKnJ9BC,QLqJM,OADAsD,UAASC,MAAQF,EKnJvBE,MACAF,GLqJIpD,YAAa,WACX,MAAO4C,MAAKG,OAAOjD,MKnJzBE,aLqJII,QAAS,WACP,MAAOwC,MAAKG,OAAOjD,MKnJzBM,YL0JMmD,GACA,SAAUpF,EAAQC,EAAqBC,GAE7C,YACAuD,QAAOC,eAAezD,EAAqB,cAAgB0D,OAAO,GAC7C,IAAI0B,GAAuDnF,EAAoB,GAC3EoF,EAAuDpF,EAAoB,EMxLpGD,GAAA,SN8LImE,SAAUlE,EAAoBqC,EAAE8C,EAAgE,WM5LpG,iBN6LIxE,KM5LJ,WN6LI0E,OM5LJ,YN6LIC,SACIC,cAAe,SAAuBC,GAC9BjB,KAAKG,OAAOjD,MAAME,YAAYO,IAAMsD,EACpCjB,KAAKG,OAAOzB,OAAOmC,EAAqF,GAAIb,KAAKG,OAAOjD,MM3LxII,iBN6LgB0C,KAAKG,OAAOzB,OAAOmC,EAAqF,GM1LxH,GN2LgBb,KAAKG,OAAOzB,OAAOmC,EAA+E,EAAGb,KAAKC,OAAOC,OM1LjIvC,ON8LI4C,UACIhD,UAAW,WACP,MAAOyC,MAAKG,OAAOjD,MM1L/BK,cNiMM2D,GACA,SAAU3F,EAAQC,EAAqBC,GAE7C,YACAuD,QAAOC,eAAezD,EAAqB,cAAgB0D,OAAO,GAC7C,IAAI0B,GAAuDnF,EAAoB,EACpBA,GAAoB,EO1NpGD,GAAA,SPgOIY,KO9NJ,SP+NIuD,SAAUlE,EAAoBqC,EAAE8C,EAAgE,WO9NpG,eP+NIE,OACI1D,aACI+D,KO9NZnC,OP+NYoC,UO5NZ,IP+NIxD,KAAM,WACF,OACID,GAAI0D,SAASrB,KAAKC,OAAOC,OO9NrCvC,IP+NYJ,WO7NZ,IPiOIgD,UACIe,kBAAmB,WACf,MAAOb,UAASc,cAAc,kBO/N1CC,WPiOQC,eAAgB,WACZ,MAAOzB,MAAK0B,MO/NxBC,QPiOQrE,eAAgB,WACZ,MAAO0C,MAAKG,OAAOjD,MO/N/BI,iBPkOIsE,OACIxE,YAAa,WACT4C,KO/NZ6B,aPiOQvE,eAAgB,WACZ0C,KO/NZ8B,gBPiOQvE,UAAW,WACPyC,KAAKG,OAAOjD,MAAMK,UAAYyC,KO/N1CzC,YPkOIwD,SACIe,aAAc,WACV,GAAIH,GAAS3B,KO9NzByB,cPgO4BE,GAAOI,YAAc,IAAMJ,EAAOK,SAAWL,EAAOM,OAASN,EAAOO,WO9NhG,GPiOgBP,EO/NhBQ,QPgOgBnC,KAAKzC,WO/NrB,IPiOgBoE,EO9NhBS,OP+NgBpC,KAAKzC,WO9NrB,IPiOQ8E,UAAW,WACPrC,KAAKsB,kBAAkBgB,IO9NnC,SPgOQC,WAAY,WACRvC,KAAKsB,kBAAkBkB,OO9NnC,SPgOQX,UAAW,WACM7B,KO9NzByB,eACAgB,OP+NYzC,KO9NZ8B,mBPqOMY,GACA,SAAUnH,EAAQC,EAAqBC,GAE7C,YACAuD,QAAOC,eAAezD,EAAqB,cAAgB0D,OAAO,GAC7C,IAAIxD,GAAoCD,EAAoB,IACxDkH,EAAqClH,EAAoB,IACzDmH,EAA6CnH,EAAoBK,EAAE6G,GACnEE,EAAwCpH,EAAoB,IAC5DqH,EAAiDrH,EAAoB,GQzS9FC,GAAA,EAAIqH,OAAOC,eAAgB,EAE3B,GAAItH,GAAA,GACFuH,GAAI,OACJjH,OAAA6G,EAAA,EACAlD,SAAU,UACVC,YAAcsD,IAAAN,EAAAtG,GACd6G,MAAAL,EAAA,KRqTIM,GACA,SAAU7H,EAAQC,EAAqBC,GAE7C,YStUAD,GAAA,GACI8C,UADU,SACAD,GACN,MAAOgF,OAAMhF,MT6UfiF,GACA,SAAU/H,EAAQC,EAAqBC,GAE7C,YUlVAA,GAAA8H,EAAA/H,EAAA,qBAAAgI,IAAA,IAAMA,GAAc,SAAS5F,GACzB,GACI6F,GAAU7F,EAAK6F,OAkBnB,OAjBW7F,GAAKG,KAEX2F,QAAQ,SAASC,EAAM1C,GACxB0C,EAAKC,MAAQH,EAAQI,UAAYF,EAAKC,MAErB,OAAbD,EAAKxC,KACLwC,EAAKG,UAAUC,IAAMN,EAAQO,cAAgBL,EAAKG,UAAUC,IAE7C,WAAXJ,EAAKxC,OAETwC,EAAKM,cAAgB,gCAAgCN,EAAKO,SAE9DP,EAAKQ,YAAcC,EAAQT,EAAKQ,aAChCR,EAAKU,WAAa,IAAIpD,EACtB0C,EAAKW,oBAAsBC,EAAiBZ,EAAKa,cAG9C5G,GAGL2G,EAAmB,SAASE,GAC9B,GAAIC,GAAO,GAAIC,MAAKF,GAAgBG,cAAcC,MAAM,EAAE,IACtDC,EAAYJ,EAAKK,MAAM,IAC3B,OAAUD,GAAU,GAApB,IAA0BA,EAAU,GAApC,IAA0CA,EAAU,IAGlDV,EAAU,SAASY,GAGrB,GAAIC,GAAcC,EAAiBC,EAAiBC,CAcpD,OAXAF,GAAkB,0EAClBD,EAAeD,EAAUK,QAAQH,EAAiB,sDAGlDC,EAAkB,iCAClBF,EAAeA,EAAaI,QAAQF,EAAiB,+DAGrDC,EAAkB,2DAClBH,EAAeA,EAAaI,QAAQD,EAAiB,gCVuVnDE,EACA,SAAU/J,EAAQC,EAAqBC,GAE7C,YACAuD,QAAOC,eAAezD,EAAqB,cAAgB0D,OAAO,IACnCzD,EAAoB8H,EAAE/H,EAAqB,YAAa,WAAa,MAAO+J,KWxY3G9J,EAAA8H,EAAA/H,EAAA,6BAAA2D,IAAA,IAAMoG,GAAY,SAASC,GACvB,MAAOC,YAAuBD,IAG5BrG,EAAY,WACd,MAAOsG,GAAc,mBAGnBA,EAAgB,SAAStJ,GAC3B,MAAOV,GAAA,SAAoB4E,WAAWqF,MAA/B,IAAwCvJ,KXiZ7CwJ,EACA,SAAUpK,EAAQC,EAAqBC,GAE7C,YAC+BA,GAAoB8H,EAAE/H,EAAqB,IAAK,WAAa,MAAOoK,KACpEnK,EAAoB8H,EAAE/H,EAAqB,IAAK,WAAa,MAAOqK,KACpEpK,EAAoB8H,EAAE/H,EAAqB,IAAK,WAAa,MAAOsK,IYha5F,IAAMF,GAAiB,iBACjBC,EAAmB,mBACnBC,EAAyB,0BZqahCC,GACA,SAAUxK,EAAQsD,KAMlBmH,GACA,SAAUzK,EAAQsD,Ga/axBtD,EAAAsD,QAAA,6bbqbMoH,GACA,SAAU1K,EAAQsD,GctbxBtD,EAAAsD,QAAA,gad4bMqH,GACA,SAAU3K,EAAQsD,Ge7bxBtD,EAAAsD,QAAA,guCfmcMsH,GACA,SAAU5K,EAAQsD,EAASpD,GgBpcjC,GAAAqD,GAAArD,EAAA,IAEAA,EAAA,IAEA,KAEA,KAEA,KAEA,KAGAF,GAAAsD,QAAAC,EAAAD,ShB2cMuH,GACA,SAAU7K,EAAQsD,EAASpD,GiBzdjC,GAAAqD,GAAArD,EAAA,IAEAA,EAAA,IAEA,KAEA,KAEA,KAEA,KAGAF,GAAAsD,QAAAC,EAAAD,SjBgeMwH,GACA,SAAU9K,EAAQsD,EAASpD,GkB9ejC,GAAAqD,GAAArD,EAAA,IAEAA,EAAA,IAEA,KAEA,KAEA,KAEA,KAGAF,GAAAsD,QAAAC,EAAAD,SlBqfMyH,GACA,SAAU/K,EAAQsD,GmBngBxBtD,EAAAsD,SAAgB0H,OAAA,WAAmB,GAAAC,GAAAxG,KAAayG,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,CAC1E,OAAAE,GAAA,OACAE,OACAlJ,GAAA,SAEGgJ,EAAA,QACHG,YAAA,cACGH,EAAA,sBACFI,qBnBygBKC,GACA,SAAUzL,EAAQsD,EAASpD,GoB5gBjC,QAAAwL,GAAAC,GACA,MAAAzL,GAAA0L,EAAAD,IAEA,QAAAC,GAAAD,GACA,GAAAvJ,GAAAyJ,EAAAF,EACA,MAAAvJ,EAAA,GACA,SAAA0J,OAAA,uBAAAH,EAAA,KACA,OAAAvJ,GAbA,GAAAyJ,IACAE,0BAAA,GACAC,kCAAA,GACAC,+BAAA,GACAC,6BAAA,GAWAR,GAAAS,KAAA,WACA,MAAA1I,QAAA0I,KAAAN,IAEAH,EAAAU,QAAAR,EACA5L,EAAAsD,QAAAoI,EACAA,EAAAtJ,GAAA,MpBwhBG","file":"static/js/app.f5a8eb19f15e6604aaf6.js","sourcesContent":["webpackJsonp([1],{\n\n/***/ 31:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_router__ = __webpack_require__(83);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__components_AudioPlayer__ = __webpack_require__(79);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__components_AudioPlayer___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__components_AudioPlayer__);\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_0_vue__[\"a\" /* default */].use(__WEBPACK_IMPORTED_MODULE_1_vue_router__[\"a\" /* default */]);\n\nvar router = new __WEBPACK_IMPORTED_MODULE_1_vue_router__[\"a\" /* default */]({\n mode: 'history',\n routes: [{\n path: '/:id?',\n name: 'AudioPlayer',\n component: __WEBPACK_IMPORTED_MODULE_2__components_AudioPlayer___default.a\n }]\n});\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (router);\n\n/***/ }),\n\n/***/ 32:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_slicedToArray__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_slicedToArray___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_slicedToArray__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_defineProperty__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_defineProperty___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_defineProperty__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_vuex__ = __webpack_require__(85);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mutation_types_js__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__helpers_dataviewhelper_js__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__services_dataService_js__ = __webpack_require__(39);\n\n\n\nvar _mutations;\n\n\n\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_2_vue__[\"a\" /* default */].use(__WEBPACK_IMPORTED_MODULE_3_vuex__[\"a\" /* default */]);\n\nvar state = {\n playList: [],\n currentList: {},\n changeTrack: false,\n startStopTrack: false,\n isPlaying: false,\n loading: true\n};\n\nvar mutations = (_mutations = {}, __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_defineProperty___default()(_mutations, __WEBPACK_IMPORTED_MODULE_4__mutation_types_js__[\"a\" /* FETCH_PLAYLIST */], function (state, payload) {\n var id = payload.id,\n data = payload.data;\n\n var viewData = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__helpers_dataviewhelper_js__[\"a\" /* toViewModel */])(data);\n state.playList = viewData;\n state.currentList = viewData.list[id];\n state.loading = false;\n}), __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_defineProperty___default()(_mutations, __WEBPACK_IMPORTED_MODULE_4__mutation_types_js__[\"b\" /* GET_CURRENT_LIST */], function (state, id) {\n state.currentList = state.playList.list[id];\n}), __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_defineProperty___default()(_mutations, __WEBPACK_IMPORTED_MODULE_4__mutation_types_js__[\"c\" /* PLAYER_STARTSTOP_TRACK */], function (state, status) {\n state.startStopTrack = status;\n}), _mutations);\n\nvar actions = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_defineProperty___default()({}, __WEBPACK_IMPORTED_MODULE_4__mutation_types_js__[\"a\" /* FETCH_PLAYLIST */], function (context, _ref) {\n var _ref2 = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_slicedToArray___default()(_ref, 2),\n dataUrl = _ref2[0],\n id = _ref2[1];\n\n __WEBPACK_IMPORTED_MODULE_6__services_dataService_js__[\"a\" /* default */].fetchData(dataUrl).then(function (res) {\n return res.json();\n }).then(function (res) {\n context.commit(__WEBPACK_IMPORTED_MODULE_4__mutation_types_js__[\"a\" /* FETCH_PLAYLIST */], {\n id: id,\n data: res\n });\n });\n});\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (new __WEBPACK_IMPORTED_MODULE_3_vuex__[\"a\" /* default */].Store({\n state: state,\n mutations: mutations,\n actions: actions\n}));\n\n/***/ }),\n\n/***/ 33:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Component = __webpack_require__(11)(\n /* script */\n __webpack_require__(34),\n /* template */\n __webpack_require__(82),\n /* styles */\n null,\n /* scopeId */\n null,\n /* moduleIdentifier (server only) */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n\n/***/ 34:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n__webpack_require__(6).loadStyle();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'app'\n});\n\n/***/ }),\n\n/***/ 35:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_PlayList__ = __webpack_require__(80);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_PlayList___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__components_PlayList__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_Player__ = __webpack_require__(81);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_Player___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__components_Player__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__stores_mutation_types__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__services_themeService__ = __webpack_require__(6);\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'AudioPlayer',\n template: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__services_themeService__[\"loadTheme\"])(\"AudioPlayer.html\"),\n components: {\n PlayList: __WEBPACK_IMPORTED_MODULE_0__components_PlayList___default.a,\n Player: __WEBPACK_IMPORTED_MODULE_1__components_Player___default.a\n },\n created: function created() {\n var id = this.$route.params.id || \"0\";\n this.$store.dispatch(__WEBPACK_IMPORTED_MODULE_2__stores_mutation_types__[\"a\" /* FETCH_PLAYLIST */], [appOptions.playListSourceUrl, id]);\n },\n\n computed: {\n playList: function playList() {\n var plist = this.$store.state.playList;\n document.title = plist.title;\n return plist;\n },\n currentList: function currentList() {\n return this.$store.state.currentList;\n },\n loading: function loading() {\n return this.$store.state.loading;\n }\n }\n});\n\n/***/ }),\n\n/***/ 36:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__services_themeService__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stores_mutation_types__ = __webpack_require__(7);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n template: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__services_themeService__[\"loadTheme\"])(\"PlayList.html\"),\n name: \"PlayList\",\n props: [\"playList\"],\n methods: {\n playerControl: function playerControl(index) {\n if (this.$store.state.currentList.id == index) {\n this.$store.commit(__WEBPACK_IMPORTED_MODULE_1__stores_mutation_types__[\"c\" /* PLAYER_STARTSTOP_TRACK */], !this.$store.state.startStopTrack);\n } else {\n this.$store.commit(__WEBPACK_IMPORTED_MODULE_1__stores_mutation_types__[\"c\" /* PLAYER_STARTSTOP_TRACK */], true);\n this.$store.commit(__WEBPACK_IMPORTED_MODULE_1__stores_mutation_types__[\"b\" /* GET_CURRENT_LIST */], this.$route.params.id);\n }\n }\n },\n computed: {\n isPlaying: function isPlaying() {\n return this.$store.state.isPlaying;\n }\n }\n});\n\n/***/ }),\n\n/***/ 37:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__services_themeService__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stores_mutation_types__ = __webpack_require__(7);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"Player\",\n template: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__services_themeService__[\"loadTheme\"])(\"Player.html\"),\n props: {\n currentList: {\n type: Object,\n required: true\n }\n },\n data: function data() {\n return {\n id: parseInt(this.$route.params.id),\n isPlaying: false\n };\n },\n\n computed: {\n getModalClassList: function getModalClassList() {\n return document.querySelector(\".modal-wrapper\").classList;\n },\n getAudioPlayer: function getAudioPlayer() {\n return this.$refs.player;\n },\n startStopTrack: function startStopTrack() {\n return this.$store.state.startStopTrack;\n }\n },\n watch: {\n currentList: function currentList() {\n this.loadTrack();\n },\n startStopTrack: function startStopTrack() {\n this.playerChange();\n },\n isPlaying: function isPlaying() {\n this.$store.state.isPlaying = this.isPlaying;\n }\n },\n methods: {\n playerChange: function playerChange() {\n var player = this.getAudioPlayer;\n\n var isPlaying = player.currentTime > 0 && !player.paused && !player.ended && player.readyState > 2;\n\n if (isPlaying) {\n player.pause();\n this.isPlaying = false;\n } else {\n player.play();\n this.isPlaying = true;\n }\n },\n openModal: function openModal() {\n this.getModalClassList.add(\"open\");\n },\n closeModal: function closeModal() {\n this.getModalClassList.remove(\"open\");\n },\n loadTrack: function loadTrack() {\n var player = this.getAudioPlayer;\n player.load();\n this.playerChange();\n }\n }\n});\n\n/***/ }),\n\n/***/ 38:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__App__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__App___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__App__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__router__ = __webpack_require__(31);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__stores_store_js__ = __webpack_require__(32);\n\n\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_0_vue__[\"a\" /* default */].config.productionTip = false;\n\nnew __WEBPACK_IMPORTED_MODULE_0_vue__[\"a\" /* default */]({\n el: '#app',\n router: __WEBPACK_IMPORTED_MODULE_2__router__[\"a\" /* default */],\n template: '',\n components: { App: __WEBPACK_IMPORTED_MODULE_1__App___default.a },\n store: __WEBPACK_IMPORTED_MODULE_3__stores_store_js__[\"a\" /* default */]\n});\n\n/***/ }),\n\n/***/ 39:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n fetchData: function fetchData(dataUrl) {\n return fetch(dataUrl);\n }\n});\n\n/***/ }),\n\n/***/ 40:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return toViewModel; });\nvar toViewModel = function toViewModel(data) {\n var self = this;\n var options = data.options;\n var list = data.list;\n\n list.forEach(function (item, index) {\n item.image = options.imageroot + item.image;\n\n if (item.type == \"mp3\") {\n item.soundfile.mp3 = options.soundfileroot + item.soundfile.mp3;\n } else if (item.type == \"youtube\") {\n item.videoEmbedUrl = \"http://www.youtube.com/embed/\" + item.videoId;\n }\n item.description = linkify(item.description);\n item.detailsUrl = \"/\" + index;\n item.recorddateformatted = formatDateString(item.recorddate);\n });\n\n return data;\n};\n\nvar formatDateString = function formatDateString(dateTimeString) {\n var date = new Date(dateTimeString).toISOString().slice(0, 10);\n var dateParse = date.split(\"-\");\n return dateParse[2] + \"-\" + dateParse[1] + \"-\" + dateParse[0];\n};\n\nvar linkify = function linkify(inputText) {\n\n var replacedText, replacePattern1, replacePattern2, replacePattern3;\n\n replacePattern1 = /(\\b(https?|ftp):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|])/gim;\n replacedText = inputText.replace(replacePattern1, '$1');\n\n replacePattern2 = /(^|[^\\/])(www\\.[\\S]+(\\b|$))/gim;\n replacedText = replacedText.replace(replacePattern2, '$1$2');\n\n replacePattern3 = /(([a-zA-Z0-9\\-\\_\\.])+@[a-zA-Z\\_]+?(\\.[a-zA-Z]{2,6})+)/gim;\n replacedText = replacedText.replace(replacePattern3, '$1');\n\n return replacedText;\n};\n\n\n\n/***/ }),\n\n/***/ 6:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadTheme\", function() { return loadTheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadStyle\", function() { return loadStyle; });\nvar loadTheme = function loadTheme(fileName) {\n return customRequire(\"views/\" + fileName);\n};\n\nvar loadStyle = function loadStyle() {\n return customRequire(\"css/style.scss\");\n};\n\nvar customRequire = function customRequire(path) {\n return __webpack_require__(87)(\"./\" + appOptions.theme + \"/\" + path);\n};\n\n\n\n/***/ }),\n\n/***/ 7:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FETCH_PLAYLIST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return GET_CURRENT_LIST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return PLAYER_STARTSTOP_TRACK; });\nvar FETCH_PLAYLIST = 'FETCH_PLAYLIST';\nvar GET_CURRENT_LIST = 'GET_CURRENT_LIST';\nvar PLAYER_STARTSTOP_TRACK = 'PLAYER_STARTSTOP_TRACK';\n\n/***/ }),\n\n/***/ 75:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 76:\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n \\n
\";\n\n/***/ }),\n\n/***/ 77:\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n\\n
    \\n
  • \\n \\n {{ index+1 }} {{item.title}}\\n \\n
  • \\n
\\n\\n
\";\n\n/***/ }),\n\n/***/ 78:\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n\\n
\\n \\n ||\\n ▶︎\\n \\n \\n
\\n\\n

{{currentList.title}}

\\n
\\n \\n
\\n

\\n
\\n\\n \\n
\\n
\\n
\\n {{currentList.recorddateformatted}}\\n x\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\";\n\n/***/ }),\n\n/***/ 79:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Component = __webpack_require__(11)(\n /* script */\n __webpack_require__(35),\n /* template */\n null,\n /* styles */\n null,\n /* scopeId */\n null,\n /* moduleIdentifier (server only) */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n\n/***/ 80:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Component = __webpack_require__(11)(\n /* script */\n __webpack_require__(36),\n /* template */\n null,\n /* styles */\n null,\n /* scopeId */\n null,\n /* moduleIdentifier (server only) */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n\n/***/ 81:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Component = __webpack_require__(11)(\n /* script */\n __webpack_require__(37),\n /* template */\n null,\n /* styles */\n null,\n /* scopeId */\n null,\n /* moduleIdentifier (server only) */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n\n/***/ 82:\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n attrs: {\n \"id\": \"app\"\n }\n }, [_c('main', {\n staticClass: \"container\"\n }, [_c('router-view')], 1)])\n},staticRenderFns: []}\n\n/***/ }),\n\n/***/ 87:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar map = {\n\t\"./modern/css/style.scss\": 75,\n\t\"./modern/views/AudioPlayer.html\": 76,\n\t\"./modern/views/PlayList.html\": 77,\n\t\"./modern/views/Player.html\": 78\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 87;\n\n/***/ })\n\n},[38]);\n\n\n// WEBPACK FOOTER //\n// static/js/app.f5a8eb19f15e6604aaf6.js","import Vue from 'vue'\nimport Router from 'vue-router'\nimport AudioPlayer from '@/components/AudioPlayer'\n\nVue.use(Router)\n\nvar router = new Router({\n mode: 'history',\n routes: [\n {\n path: '/:id?',\n name: 'AudioPlayer',\n component: AudioPlayer\n }\n ]\n})\n\nexport default router;\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","import Vue from 'vue';\nimport Vuex from 'vuex';\nimport * as mtypes from './mutation-types.js';\nimport { toViewModel } from './helpers/dataviewhelper.js'\nimport dataService from '@/services/dataService.js'\n\nVue.use(Vuex);\n\nvar state = {\n playList:[],\n currentList:{},\n changeTrack: false,\n startStopTrack: false,\n isPlaying: false,\n loading:true\n}\n\nvar mutations = {\n\n [mtypes.FETCH_PLAYLIST](state, payload){\n const {id, data} = payload;\n var viewData = toViewModel(data);\n state.playList = viewData;\n state.currentList = viewData.list[id];\n state.loading = false;\n },\n [mtypes.GET_CURRENT_LIST](state, id){\n state.currentList = state.playList.list[id];\n },\n [mtypes.PLAYER_STARTSTOP_TRACK](state, status){\n state.startStopTrack = status\n }\n}\n\nvar actions = {\n [mtypes.FETCH_PLAYLIST](context, [dataUrl, id]){\n dataService.fetchData(dataUrl)\n .then((res) => { return res.json(); })\n .then((res) => {\n context.commit(mtypes.FETCH_PLAYLIST, { \n id: id,\n data: res\n });\n });\n }\n}\n\nexport default new Vuex.Store({\n state,\n mutations,\n actions\n});\n\n\n// WEBPACK FOOTER //\n// ./src/stores/store.js","var Component = require(\"!../node_modules/vue-loader/lib/component-normalizer\")(\n /* script */\n require(\"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"),\n /* template */\n require(\"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-777e3b46\\\"}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"),\n /* styles */\n null,\n /* scopeId */\n null,\n /* moduleIdentifier (server only) */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = 33\n// module chunks = 1","\n\n\n\n\n// WEBPACK FOOTER //\n// App.vue?6f4f1951","\n\n\n// WEBPACK FOOTER //\n// AudioPlayer.vue?247f44be","\n\n\n// WEBPACK FOOTER //\n// PlayList.vue?0d5dc7db","\n\n\n// WEBPACK FOOTER //\n// Player.vue?31ac8bc9","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\nimport App from './App'\nimport router from './router'\nimport store from './stores/store.js'\n\nVue.config.productionTip = false\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n router,\n template: '',\n components: { App },\n store\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","export default{\n fetchData(dataUrl){\n return fetch(dataUrl);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/services/dataService.js","const toViewModel = function(data){\n var self = this;\n var options = data.options;\n var list = data.list;\n\n list.forEach(function(item, index) {\n item.image = options.imageroot + item.image;\n\n if (item.type == \"mp3\") {\n item.soundfile.mp3 = options.soundfileroot + item.soundfile.mp3;\n }\n else if(item.type==\"youtube\")\n {\n item.videoEmbedUrl = \"http://www.youtube.com/embed/\"+item.videoId; \n }\n item.description = linkify(item.description);\n item.detailsUrl = \"/\"+index;\n item.recorddateformatted = formatDateString(item.recorddate);\n });\n\n return data;\n}\n\nconst formatDateString = function(dateTimeString){\n var date = new Date(dateTimeString).toISOString().slice(0,10);\n var dateParse = date.split(\"-\");\n return `${dateParse[2]}-${dateParse[1]}-${dateParse[0]}`;\n}\n\nconst linkify = function(inputText){\n //http://stackoverflow.com/questions/37684/how-to-replace-plain-urls-with-links\n \n var replacedText, replacePattern1, replacePattern2, replacePattern3;\n\n //URLs starting with http://, https://, or ftp://\n replacePattern1 = /(\\b(https?|ftp):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|])/gim;\n replacedText = inputText.replace(replacePattern1, '$1');\n\n //URLs starting with \"www.\" (without // before it, or it'd re-link the ones done above).\n replacePattern2 = /(^|[^\\/])(www\\.[\\S]+(\\b|$))/gim;\n replacedText = replacedText.replace(replacePattern2, '$1$2');\n\n //Change email addresses to mailto:: links.\n replacePattern3 = /(([a-zA-Z0-9\\-\\_\\.])+@[a-zA-Z\\_]+?(\\.[a-zA-Z]{2,6})+)/gim;\n replacedText = replacedText.replace(replacePattern3, '$1');\n\n return replacedText;\n}\n\nexport { toViewModel };\n\n\n// WEBPACK FOOTER //\n// ./src/stores/helpers/dataviewhelper.js","const loadTheme = function(fileName){\n return customRequire(`views/${fileName}`)\n}\n\nconst loadStyle = function(){\n return customRequire(\"css/style.scss\");\n}\n\nconst customRequire = function(path){\n return require(`@/themes/${appOptions.theme}/${path}`);\n}\n\nexport { loadTheme, loadStyle }\n\n\n// WEBPACK FOOTER //\n// ./src/services/themeService.js","export const FETCH_PLAYLIST = 'FETCH_PLAYLIST'\nexport const GET_CURRENT_LIST = 'GET_CURRENT_LIST'\nexport const PLAYER_STARTSTOP_TRACK = 'PLAYER_STARTSTOP_TRACK'\n\n\n// WEBPACK FOOTER //\n// ./src/stores/mutation-types.js","module.exports = \"
\\n\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n \\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/themes/modern/views/AudioPlayer.html\n// module id = 76\n// module chunks = 1","module.exports = \"
\\n\\n
    \\n
  • \\n \\n {{ index+1 }} {{item.title}}\\n \\n
  • \\n
\\n\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/themes/modern/views/PlayList.html\n// module id = 77\n// module chunks = 1","module.exports = \"
\\n\\n
\\n \\n ||\\n ▶︎\\n \\n \\n
\\n\\n

{{currentList.title}}

\\n
\\n \\n
\\n

\\n
\\n\\n \\n
\\n
\\n
\\n {{currentList.recorddateformatted}}\\n x\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/themes/modern/views/Player.html\n// module id = 78\n// module chunks = 1","var Component = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")(\n /* script */\n require(\"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AudioPlayer.vue\"),\n /* template */\n null,\n /* styles */\n null,\n /* scopeId */\n null,\n /* moduleIdentifier (server only) */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/AudioPlayer.vue\n// module id = 79\n// module chunks = 1","var Component = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")(\n /* script */\n require(\"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayList.vue\"),\n /* template */\n null,\n /* styles */\n null,\n /* scopeId */\n null,\n /* moduleIdentifier (server only) */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/PlayList.vue\n// module id = 80\n// module chunks = 1","var Component = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")(\n /* script */\n require(\"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Player.vue\"),\n /* template */\n null,\n /* styles */\n null,\n /* scopeId */\n null,\n /* moduleIdentifier (server only) */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Player.vue\n// module id = 81\n// module chunks = 1","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n attrs: {\n \"id\": \"app\"\n }\n }, [_c('main', {\n staticClass: \"container\"\n }, [_c('router-view')], 1)])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-777e3b46\"}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = 82\n// module chunks = 1","var map = {\n\t\"./modern/css/style.scss\": 75,\n\t\"./modern/views/AudioPlayer.html\": 76,\n\t\"./modern/views/PlayList.html\": 77,\n\t\"./modern/views/Player.html\": 78\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 87;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/themes ^\\.\\/.*$\n// module id = 87\n// module chunks = 1"],"sourceRoot":""} --------------------------------------------------------------------------------