├── 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 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/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 |
4 | -
5 |
6 | {{ index+1 }} {{item.title}}
7 |
8 |
9 |
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 |
10 |
11 |
12 | {{playList.title}}
13 |
14 |
15 |
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 |
22 |
23 |
24 |
{{currentList.recorddateformatted}}
25 |
x
26 |
27 |
30 |
31 |
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 {{playList.title}}
\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
\n
{{currentList.recorddateformatted}}\n
x\n
\n
\n
\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":"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","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 {{playList.title}}
\\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/***/ 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 \n \n \n\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 {{playList.title}}
\\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// 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":""}
--------------------------------------------------------------------------------