├── static ├── .gitkeep ├── avatars │ └── .gitkeep └── favicon.ico ├── .eslintignore ├── src ├── common │ ├── js │ │ ├── config.js │ │ ├── user.js │ │ ├── util.js │ │ ├── jsonp.js │ │ ├── cache.js │ │ ├── http.js │ │ └── dom.js │ ├── stylus │ │ ├── index.styl │ │ ├── base.styl │ │ ├── mixin.styl │ │ ├── variable.styl │ │ ├── reset.styl │ │ └── icon.styl │ ├── image │ │ ├── default.png │ │ └── favicon.ico │ └── fonts │ │ ├── music-icon.eot │ │ ├── music-icon.ttf │ │ ├── music-icon.woff │ │ └── music-icon.svg ├── assets │ └── logo.png ├── base │ ├── loading │ │ ├── loading.gif │ │ └── loading.vue │ ├── scroll │ │ └── scroll.vue │ └── slider │ │ └── slider.vue ├── components │ ├── home │ │ ├── add@2x.png │ │ ├── add@3x.png │ │ ├── tag@2x.png │ │ ├── tag@3x.png │ │ ├── edit@2x.png │ │ ├── edit@3x.png │ │ ├── logo@2x.png │ │ ├── logo@3x.png │ │ ├── delete@2x.png │ │ ├── delete@3x.png │ │ └── home.vue │ ├── editor │ │ ├── book@2x.png │ │ ├── book@3x.png │ │ ├── data@2x.png │ │ ├── data@3x.png │ │ ├── paper@2x.png │ │ ├── paper@3x.png │ │ ├── talk@2x.png │ │ ├── talk@3x.png │ │ └── editor.vue │ ├── navigation │ │ ├── logo@2x.png │ │ ├── logo@3x.png │ │ └── navigation.vue │ ├── star │ │ ├── star24_off@2x.png │ │ ├── star24_off@3x.png │ │ ├── star24_on@2x.png │ │ ├── star24_on@3x.png │ │ ├── star36_off@2x.png │ │ ├── star36_off@3x.png │ │ ├── star36_on@2x.png │ │ ├── star36_on@3x.png │ │ ├── star48_off@2x.png │ │ ├── star48_off@3x.png │ │ ├── star48_on@2x.png │ │ ├── star48_on@3x.png │ │ ├── star24_half@2x.png │ │ ├── star24_half@3x.png │ │ ├── star36_half@2x.png │ │ ├── star36_half@3x.png │ │ ├── star48_half@2x.png │ │ ├── star48_half@3x.png │ │ └── star.vue │ ├── user │ │ ├── authentication.png │ │ └── user.vue │ ├── tab │ │ └── tab.vue │ ├── search │ │ └── search.vue │ └── creation │ │ └── creation.vue ├── store │ ├── state.js │ ├── mutation-types.js │ ├── getters.js │ ├── index.js │ ├── actions.js │ └── mutations.js ├── App.vue ├── api │ ├── user.js │ └── philosopher.js ├── main.js └── router │ └── index.js ├── config ├── prod.env.js ├── dev.env.js └── index.js ├── dist ├── static │ ├── img │ │ ├── book@3x.f2655e5.png │ │ ├── data@3x.46226f5.png │ │ ├── logo@2x.91bbab7.png │ │ ├── logo@3x.6eaf066.png │ │ ├── talk@2x.f422c40.png │ │ ├── talk@3x.b813a7c.png │ │ ├── paper@3x.7e10509.png │ │ └── music-icon.1c1933b.svg │ ├── js │ │ ├── manifest.4e9eae02e3aee9fca6db.js │ │ ├── app.744d9d6f59ac97d2c7f4.js │ │ ├── manifest.4e9eae02e3aee9fca6db.js.map │ │ └── 3.e0c7256b65cd3c34ae73.js │ └── css │ │ └── app.3a2eca7f7653faac7482aa6b921f0077.css.map └── index.html ├── .editorconfig ├── .gitignore ├── .postcssrc.js ├── .babelrc ├── index.html ├── .eslintrc.js ├── README.md ├── prod.server.js └── package.json /static/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/avatars/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | build/*.js 2 | config/*.js 3 | -------------------------------------------------------------------------------- /src/common/js/config.js: -------------------------------------------------------------------------------- 1 | export const HOST = 'http://localhost:9001' 2 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/assets/logo.png -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/static/favicon.ico -------------------------------------------------------------------------------- /src/common/stylus/index.styl: -------------------------------------------------------------------------------- 1 | @import "./reset.styl" 2 | @import "./base.styl" 3 | @import "./icon.styl" -------------------------------------------------------------------------------- /src/base/loading/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/base/loading/loading.gif -------------------------------------------------------------------------------- /src/common/image/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/common/image/default.png -------------------------------------------------------------------------------- /src/common/image/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/common/image/favicon.ico -------------------------------------------------------------------------------- /src/components/home/add@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/add@2x.png -------------------------------------------------------------------------------- /src/components/home/add@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/add@3x.png -------------------------------------------------------------------------------- /src/components/home/tag@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/tag@2x.png -------------------------------------------------------------------------------- /src/components/home/tag@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/tag@3x.png -------------------------------------------------------------------------------- /src/common/fonts/music-icon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/common/fonts/music-icon.eot -------------------------------------------------------------------------------- /src/common/fonts/music-icon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/common/fonts/music-icon.ttf -------------------------------------------------------------------------------- /src/common/fonts/music-icon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/common/fonts/music-icon.woff -------------------------------------------------------------------------------- /src/components/home/edit@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/edit@2x.png -------------------------------------------------------------------------------- /src/components/home/edit@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/edit@3x.png -------------------------------------------------------------------------------- /src/components/home/logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/logo@2x.png -------------------------------------------------------------------------------- /src/components/home/logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/logo@3x.png -------------------------------------------------------------------------------- /dist/static/img/book@3x.f2655e5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/dist/static/img/book@3x.f2655e5.png -------------------------------------------------------------------------------- /dist/static/img/data@3x.46226f5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/dist/static/img/data@3x.46226f5.png -------------------------------------------------------------------------------- /dist/static/img/logo@2x.91bbab7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/dist/static/img/logo@2x.91bbab7.png -------------------------------------------------------------------------------- /dist/static/img/logo@3x.6eaf066.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/dist/static/img/logo@3x.6eaf066.png -------------------------------------------------------------------------------- /dist/static/img/talk@2x.f422c40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/dist/static/img/talk@2x.f422c40.png -------------------------------------------------------------------------------- /dist/static/img/talk@3x.b813a7c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/dist/static/img/talk@3x.b813a7c.png -------------------------------------------------------------------------------- /src/components/editor/book@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/book@2x.png -------------------------------------------------------------------------------- /src/components/editor/book@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/book@3x.png -------------------------------------------------------------------------------- /src/components/editor/data@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/data@2x.png -------------------------------------------------------------------------------- /src/components/editor/data@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/data@3x.png -------------------------------------------------------------------------------- /src/components/editor/paper@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/paper@2x.png -------------------------------------------------------------------------------- /src/components/editor/paper@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/paper@3x.png -------------------------------------------------------------------------------- /src/components/editor/talk@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/talk@2x.png -------------------------------------------------------------------------------- /src/components/editor/talk@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/editor/talk@3x.png -------------------------------------------------------------------------------- /src/components/home/delete@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/delete@2x.png -------------------------------------------------------------------------------- /src/components/home/delete@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/home/delete@3x.png -------------------------------------------------------------------------------- /dist/static/img/paper@3x.7e10509.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/dist/static/img/paper@3x.7e10509.png -------------------------------------------------------------------------------- /src/components/navigation/logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/navigation/logo@2x.png -------------------------------------------------------------------------------- /src/components/navigation/logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/navigation/logo@3x.png -------------------------------------------------------------------------------- /src/components/star/star24_off@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star24_off@2x.png -------------------------------------------------------------------------------- /src/components/star/star24_off@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star24_off@3x.png -------------------------------------------------------------------------------- /src/components/star/star24_on@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star24_on@2x.png -------------------------------------------------------------------------------- /src/components/star/star24_on@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star24_on@3x.png -------------------------------------------------------------------------------- /src/components/star/star36_off@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star36_off@2x.png -------------------------------------------------------------------------------- /src/components/star/star36_off@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star36_off@3x.png -------------------------------------------------------------------------------- /src/components/star/star36_on@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star36_on@2x.png -------------------------------------------------------------------------------- /src/components/star/star36_on@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star36_on@3x.png -------------------------------------------------------------------------------- /src/components/star/star48_off@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star48_off@2x.png -------------------------------------------------------------------------------- /src/components/star/star48_off@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star48_off@3x.png -------------------------------------------------------------------------------- /src/components/star/star48_on@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star48_on@2x.png -------------------------------------------------------------------------------- /src/components/star/star48_on@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star48_on@3x.png -------------------------------------------------------------------------------- /src/components/star/star24_half@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star24_half@2x.png -------------------------------------------------------------------------------- /src/components/star/star24_half@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star24_half@3x.png -------------------------------------------------------------------------------- /src/components/star/star36_half@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star36_half@2x.png -------------------------------------------------------------------------------- /src/components/star/star36_half@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star36_half@3x.png -------------------------------------------------------------------------------- /src/components/star/star48_half@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star48_half@2x.png -------------------------------------------------------------------------------- /src/components/star/star48_half@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/star/star48_half@3x.png -------------------------------------------------------------------------------- /src/components/user/authentication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airingursb/sophia/HEAD/src/components/user/authentication.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 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | npm-debug.log* 4 | yarn-debug.log* 5 | yarn-error.log* 6 | 7 | # Editor directories and files 8 | .idea 9 | *.suo 10 | *.ntvs* 11 | *.njsproj 12 | *.sln 13 | 14 | static/avatars/*.png -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | // to edit target browsers: use "browserslist" field in package.json 6 | "autoprefixer": {} 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/common/stylus/base.styl: -------------------------------------------------------------------------------- 1 | @import "variable.styl" 2 | 3 | body, html 4 | line-height: 1 5 | font-family: 'PingFang SC', 'STHeitiSC-Light', 'Helvetica-Light', arial, sans-serif, 'Droid Sans Fallback' 6 | user-select: none 7 | -webkit-tap-highlight-color: transparent 8 | background: $color-background 9 | color: $color-text -------------------------------------------------------------------------------- /src/store/state.js: -------------------------------------------------------------------------------- 1 | import { loadToken, loadTimestamp, loadUid, loadUser } from 'common/js/cache' 2 | 3 | const state = { 4 | token: loadToken(), 5 | timestamp: loadTimestamp(), 6 | uid: loadUid(), 7 | user: loadUser(), 8 | philosopherList: [], 9 | philosopher: {}, 10 | listRefresh: 0 11 | } 12 | 13 | export default state 14 | -------------------------------------------------------------------------------- /src/common/js/user.js: -------------------------------------------------------------------------------- 1 | export default class User { 2 | constructor ({id, username, password, sex, school, className, phoneNumber, state}) { 3 | this.id = id 4 | this.username = username 5 | this.password = '' 6 | this.sex = sex 7 | this.school = school 8 | this.className = className 9 | this.phoneNumber = phoneNumber 10 | this.state = state 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/store/mutation-types.js: -------------------------------------------------------------------------------- 1 | export const SET_TOKEN = 'SET_TOKEN' 2 | 3 | export const SET_TIMESTAMP = 'SET_TIMESTAMP' 4 | 5 | export const SET_UID = 'SET_UID' 6 | 7 | export const SET_USER = 'SET_USER' 8 | 9 | export const SET_PHILOSOPHERLIST = 'SET_PHILOSOPHERLIST' 10 | 11 | export const SET_PHILOSOPHER = 'SET_PHILOSOPHER' 12 | 13 | export const SET_LISTREFRESH = 'SET_LISTREFRESH' 14 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false, 5 | "targets": { 6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 7 | } 8 | }], 9 | "stage-2" 10 | ], 11 | "plugins": ["transform-runtime"], 12 | "env": { 13 | "test": { 14 | "presets": ["env", "stage-2"], 15 | "plugins": ["istanbul"] 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/store/getters.js: -------------------------------------------------------------------------------- 1 | export const token = state => state.token 2 | 3 | export const timestamp = state => state.timestamp 4 | 5 | export const uid = state => state.uid 6 | 7 | export const user = state => state.user 8 | 9 | export const philosopherList = state => state.philosopherList 10 | 11 | export const philosopher = state => state.philosopher 12 | 13 | export const listRefresh = state => state.listRefresh 14 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | Sophia: 哲学知识共享社区 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 19 | 20 | 22 | -------------------------------------------------------------------------------- /src/common/stylus/mixin.styl: -------------------------------------------------------------------------------- 1 | border-1px($color) 2 | position: relative 3 | &:after 4 | display: block 5 | position: absolute 6 | left: 0 7 | bottom: 0 8 | width: 100% 9 | border-top: 1px solid $color 10 | content: ' ' 11 | 12 | border-none() 13 | &:after 14 | display: none 15 | 16 | bg-image($url) 17 | background-image: url($url + "@2x.png") 18 | @media (-webkit-min-device-pixel-ratio: 3),(min-device-pixel-ratio: 3) 19 | background-image: url($url + "@3x.png") -------------------------------------------------------------------------------- /src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | import * as actions from './actions' 4 | import * as getters from './getters' 5 | import state from './state' 6 | import mutations from './mutations' 7 | import createLogger from 'vuex/dist/logger' 8 | 9 | Vue.use(Vuex) 10 | 11 | const debug = process.env.NODE_ENV !== 'production' 12 | 13 | export default new Vuex.Store({ 14 | actions, 15 | getters, 16 | state, 17 | mutations, 18 | strict: debug, 19 | plugins: debug ? [createLogger()] : [] 20 | }) 21 | -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 | Philosopher
-------------------------------------------------------------------------------- /src/api/user.js: -------------------------------------------------------------------------------- 1 | import jsonp from 'common/js/jsonp' 2 | import {HOST} from 'common/js/config' 3 | 4 | export function login(params) { 5 | const url = HOST + '/users/login' 6 | return jsonp(url, params) 7 | } 8 | 9 | export function register(params) { 10 | const url = HOST + '/users/register' 11 | return jsonp(url, params) 12 | } 13 | 14 | export function code(params) { 15 | const url = HOST + '/util/code' 16 | return jsonp(url, params) 17 | } 18 | 19 | export function updateFace(params) { 20 | const url = HOST + '/users/update_face' 21 | return jsonp(url, params) 22 | } 23 | 24 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import 'babel-polyfill' 2 | import Vue from 'vue' 3 | import App from './App' 4 | import router from './router' 5 | import fastclick from 'fastclick' 6 | import VueLazyload from 'vue-lazyload' 7 | import store from './store' 8 | import VueSweetAlert from 'vue-sweetalert' 9 | 10 | import 'common/stylus/index.styl' 11 | 12 | fastclick.attach(document.body) 13 | 14 | Vue.use(VueLazyload, { 15 | loading: require('common/image/default.png') 16 | }) 17 | Vue.use(VueSweetAlert) 18 | 19 | /* eslint-disable no-new */ 20 | new Vue({ 21 | el: '#app', 22 | router, 23 | store, 24 | render: h => h(App) 25 | }) 26 | -------------------------------------------------------------------------------- /src/store/actions.js: -------------------------------------------------------------------------------- 1 | import * as types from './mutation-types' 2 | import {saveToken, saveTimestamp, saveUid, saveUser} from 'common/js/cache' 3 | 4 | export const saveLogin = function ({commit}, data) { 5 | commit(types.SET_TOKEN, saveToken(data.token)) 6 | commit(types.SET_TIMESTAMP, saveTimestamp(data.timestamp)) 7 | commit(types.SET_UID, saveUid(data.uid)) 8 | commit(types.SET_USER, saveUser(data.user)) 9 | } 10 | 11 | export const clearLogin = function ({commit}) { 12 | commit(types.SET_TOKEN, '') 13 | commit(types.SET_TIMESTAMP, '') 14 | commit(types.SET_UID, '') 15 | commit(types.SET_USER, {}) 16 | } 17 | -------------------------------------------------------------------------------- /src/common/stylus/variable.styl: -------------------------------------------------------------------------------- 1 | // 颜色定义规范 2 | $color-background = #222 3 | $color-background-d = rgba(0, 0, 0, 0.3) 4 | $color-highlight-background = #333 5 | $color-dialog-background = #666 6 | $color-theme = #ffcd32 7 | $color-theme-d = rgba(255, 205, 49, 0.5) 8 | $color-sub-theme = #d93f30 9 | $color-text = #333 10 | $color-text-d = rgba(66, 185, 131, 0.8) 11 | $color-text-l = rgba(66, 185, 131, 0.5) 12 | $color-text-ll = rgba(66, 185, 131, 0.3) 13 | 14 | //字体定义规范 15 | $font-size-small-s = 10px 16 | $font-size-small = 12px 17 | $font-size-medium = 14px 18 | $font-size-medium-x = 16px 19 | $font-size-large = 18px 20 | $font-size-large-x = 22px 21 | -------------------------------------------------------------------------------- /src/common/js/util.js: -------------------------------------------------------------------------------- 1 | function getRandomInt(min, max) { 2 | return Math.floor(Math.random() * (max - min + 1) + min) 3 | } 4 | 5 | export function shuffle(arr) { 6 | let _arr = arr.slice() 7 | for (let i = 0; i < _arr.length; i++) { 8 | let j = getRandomInt(0, i) 9 | let t = _arr[i] 10 | _arr[i] = _arr[j] 11 | _arr[j] = t 12 | } 13 | return _arr 14 | } 15 | 16 | export function debounce(func, delay) { 17 | let timer 18 | 19 | return function (...args) { 20 | if (timer) { 21 | clearTimeout(timer) 22 | } 23 | timer = setTimeout(() => { 24 | func.apply(this, args) 25 | }, delay) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/common/js/jsonp.js: -------------------------------------------------------------------------------- 1 | import originJsonp from 'jsonp' 2 | 3 | export default function jsonp(url, data, option) { 4 | url += (url.indexOf('?') < 0 ? '?' : '&') + param(data) 5 | 6 | return new Promise((resolve, reject) => { 7 | originJsonp(url, option, (err, data) => { 8 | if (!err) { 9 | resolve(data) 10 | } else { 11 | reject(err) 12 | } 13 | }) 14 | }) 15 | } 16 | 17 | export function param(data) { 18 | let url = '' 19 | for (let k in data) { 20 | let value = data[k] !== undefined ? data[k] : '' 21 | url += '&' + k + '=' + encodeURIComponent(value) 22 | } 23 | return url ? url.substring(1) : '' 24 | } 25 | -------------------------------------------------------------------------------- /src/base/loading/loading.vue: -------------------------------------------------------------------------------- 1 | 7 | 17 | 28 | -------------------------------------------------------------------------------- /src/store/mutations.js: -------------------------------------------------------------------------------- 1 | import * as types from './mutation-types' 2 | 3 | const mutations = { 4 | [types.SET_TOKEN](state, token) { 5 | state.token = token 6 | }, 7 | [types.SET_TIMESTAMP](state, timestamp) { 8 | state.timestamp = timestamp 9 | }, 10 | [types.SET_UID](state, uid) { 11 | state.uid = uid 12 | }, 13 | [types.SET_USER](state, user) { 14 | state.user = user 15 | }, 16 | [types.SET_PHILOSOPHERLIST](state, philosopherList) { 17 | state.philosopherList = philosopherList 18 | }, 19 | [types.SET_PHILOSOPHER](state, philosopher) { 20 | state.philosopher = philosopher 21 | }, 22 | [types.SET_LISTREFRESH](state, listRefresh) { 23 | state.listRefresh = listRefresh 24 | } 25 | } 26 | 27 | export default mutations 28 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | // http://eslint.org/docs/user-guide/configuring 2 | 3 | module.exports = { 4 | root: true, 5 | parser: 'babel-eslint', 6 | parserOptions: { 7 | sourceType: 'module' 8 | }, 9 | env: { 10 | browser: true, 11 | }, 12 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style 13 | extends: 'standard', 14 | // required to lint *.vue files 15 | plugins: [ 16 | 'html' 17 | ], 18 | // add your custom rules here 19 | 'rules': { 20 | // allow paren-less arrow functions 21 | 'arrow-parens': 0, 22 | // allow async-await 23 | 'generator-star-spacing': 0, 24 | // allow debugger during development 25 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, 26 | 'space-before-function-paren': 0 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/common/js/cache.js: -------------------------------------------------------------------------------- 1 | import storage from 'good-storage' 2 | 3 | const TOKEN_KEY = '__token__' 4 | const TIMESTAMP_KEY = '__timestamp__' 5 | const UID_KEY = '__uid__' 6 | const USER_KEY = '__user__' 7 | 8 | export function saveToken(token) { 9 | storage.set(TOKEN_KEY, token) 10 | return token 11 | } 12 | 13 | export function loadToken() { 14 | return storage.get(TOKEN_KEY, []) 15 | } 16 | 17 | export function saveTimestamp(timestamp) { 18 | storage.set(TIMESTAMP_KEY, timestamp) 19 | return timestamp 20 | } 21 | 22 | export function loadTimestamp() { 23 | return storage.get(TIMESTAMP_KEY, []) 24 | } 25 | 26 | export function saveUid(uid) { 27 | storage.set(UID_KEY, uid) 28 | return uid 29 | } 30 | 31 | export function loadUid() { 32 | return storage.get(UID_KEY, []) 33 | } 34 | 35 | export function saveUser(user) { 36 | storage.set(USER_KEY, user) 37 | return user 38 | } 39 | 40 | export function loadUser() { 41 | return storage.get(USER_KEY, []) 42 | } 43 | 44 | export function clearCache() { 45 | return storage.clear() 46 | } 47 | 48 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Router from 'vue-router' 3 | 4 | const Home = (resolve) => { 5 | import('components/home/home').then((module) => { 6 | resolve(module) 7 | }) 8 | } 9 | 10 | const User = (resolve) => { 11 | import('components/user/user').then((module) => { 12 | resolve(module) 13 | }) 14 | } 15 | 16 | const Creation = (resolve) => { 17 | import('components/creation/creation').then((module) => { 18 | resolve(module) 19 | }) 20 | } 21 | 22 | const Editor = (resolve) => { 23 | import('components/editor/editor').then((module) => { 24 | resolve(module) 25 | }) 26 | } 27 | 28 | Vue.use(Router) 29 | 30 | export default new Router({ 31 | routes: [ 32 | { 33 | path: '/', 34 | redirect: '/home' 35 | }, 36 | { 37 | path: '/home', 38 | component: Home 39 | }, 40 | { 41 | path: '/user', 42 | component: User 43 | }, 44 | { 45 | path: '/creation', 46 | component: Creation 47 | }, 48 | { 49 | path: '/editor', 50 | component: Editor 51 | } 52 | ] 53 | }) 54 | -------------------------------------------------------------------------------- /src/common/js/http.js: -------------------------------------------------------------------------------- 1 | export function get (url) { 2 | return new Promise((resolve, reject) => { 3 | fetch(url) 4 | .then(response => response.json()) 5 | .then(result => { 6 | resolve(result) 7 | }) 8 | .catch(error => { 9 | reject(error) 10 | }) 11 | }) 12 | } 13 | export function post (url, data) { 14 | return new Promise((resolve, reject) => { 15 | fetch(url, { 16 | method: 'POST', 17 | headers: { 18 | 'Accept': 'application/json', 19 | 'Content-Type': 'application/x-www-form-urlencoded' 20 | }, 21 | body: changeData(data) 22 | }) 23 | .then(response => response.json()) 24 | .then(result => { 25 | resolve(result) 26 | }) 27 | .catch(error => { 28 | reject(error) 29 | }) 30 | }) 31 | } 32 | 33 | function changeData (obj) { 34 | let prop = '' 35 | let str = '' 36 | let i = 0 37 | for (prop in obj) { 38 | if (!prop) { 39 | return 40 | } 41 | if (i === 0) { 42 | str += prop + '=' + obj[prop] 43 | } else { 44 | str += '&' + prop + '=' + obj[prop] 45 | } 46 | i++ 47 | } 48 | return str 49 | } 50 | -------------------------------------------------------------------------------- /src/components/tab/tab.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 21 | 22 | 42 | -------------------------------------------------------------------------------- /src/common/js/dom.js: -------------------------------------------------------------------------------- 1 | export function hasClass(el, className) { 2 | let reg = new RegExp('(^|\\s)' + className + '(\\s|$)') 3 | return reg.test(el.className) 4 | } 5 | 6 | export function addClass(el, className) { 7 | if (hasClass(el, className)) { 8 | return 9 | } 10 | 11 | let newClass = el.className.split(' ') 12 | newClass.push(className) 13 | el.className = newClass.join(' ') 14 | } 15 | 16 | export function getData(el, name, val) { 17 | const prefix = 'data-' 18 | if (val) { 19 | return el.setAttribute(prefix + name, val) 20 | } 21 | return el.getAttribute(prefix + name) 22 | } 23 | 24 | let elementStyle = document.createElement('div').style 25 | 26 | let vendor = (() => { 27 | let transformNames = { 28 | webkit: 'webkitTransform', 29 | Moz: 'MozTransform', 30 | O: 'OTransform', 31 | ms: 'msTransform', 32 | standard: 'transform' 33 | } 34 | 35 | for (let key in transformNames) { 36 | if (elementStyle[transformNames[key]] !== undefined) { 37 | return key 38 | } 39 | } 40 | 41 | return false 42 | })() 43 | 44 | export function prefixStyle(style) { 45 | if (vendor === false) { 46 | return false 47 | } 48 | 49 | if (vendor === 'standard') { 50 | return style 51 | } 52 | 53 | return vendor + style.charAt(0).toUpperCase() + style.substr(1) 54 | } 55 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Sophia:哲学知识共享社区 2 | 3 | > * 线上地址:[https://sopher.group](https://sopher.group) 4 | 5 | ![](http://airing.ursb.me/image/cover/sophia-shot.png) 6 | 7 | ## Platform 8 | 9 | 1. [Chrome App 下载](https://chrome.google.com/webstore/detail/sophia/fdcjoploijfcbdkbjlnnpkianblaghmi) 10 | 2. [MacOS App 下载](http://airing.ursb.me/app/Sophia%20for%20Mac.zip) 11 | 3. [Windows 应用下载](http://airing.ursb.me/app/Sophia%20for%20Win.zip) 12 | 4. [Linux App 下载](http://airing.ursb.me/app/Sophia%20for%20Linux.zip) 13 | 14 | > 注:目前暂不适配移动端。 15 | 16 | ## GitHub 17 | 18 | * 前端:[https://github.com/airingursb/sophia](https://github.com/airingursb/sophia) 19 | 20 | * 服务端:[https://github.com/airingursb/sophia-back-end](https://github.com/airingursb/sophia-back-end) 21 | 22 | ## Technology 23 | 24 | * 前端:vue-cil + vue2 + vuex + vue-router 25 | 26 | * 服务端:express + sequelize 27 | 28 | * 服务器环境:ubuntu14.04 + nginx + mysql + nodejs + pm2 29 | 30 | ## Build Setup 31 | 32 | ``` bash 33 | # install dependencies 34 | npm install 35 | 36 | # serve with hot reload at localhost:8080 37 | npm run dev 38 | 39 | # build for production with minification 40 | npm run build 41 | 42 | # build for production and view the bundle analyzer report 43 | npm run build --report 44 | ``` 45 | 46 | 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). 47 | -------------------------------------------------------------------------------- /src/common/stylus/reset.styl: -------------------------------------------------------------------------------- 1 | /** 2 | * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/) 3 | * http://cssreset.com 4 | */ 5 | html, body, div, span, applet, object, iframe, 6 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 7 | a, abbr, acronym, address, big, cite, code, 8 | del, dfn, em, img, ins, kbd, q, s, samp, 9 | small, strike, strong, sub, sup, tt, var, 10 | b, u, i, center, 11 | dl, dt, dd, ol, ul, li, 12 | fieldset, form, label, legend, 13 | table, caption, tbody, tfoot, thead, tr, th, td, 14 | article, aside, canvas, details, embed, 15 | figure, figcaption, footer, header, 16 | menu, nav, output, ruby, section, summary, 17 | time, mark, audio, video, input 18 | margin: 0 19 | padding: 0 20 | border: 0 21 | font-size: 100% 22 | font-weight: normal 23 | vertical-align: baseline 24 | 25 | /* HTML5 display-role reset for older browsers */ 26 | article, aside, details, figcaption, figure, 27 | footer, header, menu, nav, section 28 | display: block 29 | 30 | body 31 | line-height: 1 32 | 33 | blockquote, q 34 | quotes: none 35 | 36 | blockquote:before, blockquote:after, 37 | q:before, q:after 38 | content: none 39 | 40 | table 41 | border-collapse: collapse 42 | border-spacing: 0 43 | 44 | /* custom */ 45 | 46 | a 47 | color: #7e8c8d 48 | -webkit-backface-visibility: hidden 49 | text-decoration: none 50 | 51 | li 52 | list-style: none 53 | 54 | body 55 | -webkit-text-size-adjust: none 56 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0) 57 | -------------------------------------------------------------------------------- /prod.server.js: -------------------------------------------------------------------------------- 1 | var express = require('express') 2 | 3 | var app = express() 4 | var port = process.env.PORT || '9000' 5 | 6 | var apiRoutes = express.Router() 7 | var multiparty = require('multiparty') 8 | var fs = require('fs') 9 | 10 | apiRoutes.post('/upload', function (req, res, next) { 11 | var form = new multiparty.Form({uploadDir: './static/avatars/'}) 12 | form.parse(req, function (err, fields, files) { 13 | var filesTmp = JSON.stringify(files, null, 2) 14 | if (err) { 15 | console.log('parse error: ' + err) 16 | return res.json({status: 1}) 17 | } else { 18 | console.log('parse files: ' + filesTmp) 19 | console.log(files) 20 | var uploadedPath = files.img[0].path 21 | var dstPath = './static/avatars/' + fields['timestamp'][0] + '.png' 22 | fs.rename(uploadedPath, dstPath, function (err) { 23 | if (err) { 24 | console.log('rename error: ' + err) 25 | return res.json({status: 1}) 26 | } else { 27 | console.log('rename ok') 28 | } 29 | }) 30 | } 31 | // res.writeHead(200, {'content-type': 'text/plain;charset=utf-8'}); 32 | // res.write('received upload:\n\n'); 33 | // res.end(util.inspect({fields: fields, files: filesTmp})); 34 | return res.json({status: 0}) 35 | }) 36 | }) 37 | 38 | app.use('/api', apiRoutes) 39 | 40 | app.use(express.static('./dist')) 41 | 42 | module.exports = app.listen(port, function (err) { 43 | if (err) { 44 | console.log(err) 45 | return 46 | } 47 | console.log('Listening at http://localhost:' + port + '\n') 48 | }) 49 | -------------------------------------------------------------------------------- /src/api/philosopher.js: -------------------------------------------------------------------------------- 1 | import jsonp from 'common/js/jsonp' 2 | import { HOST } from 'common/js/config' 3 | 4 | export function showList (params) { 5 | const url = HOST + '/philosophers/show_list' 6 | return jsonp(url, params) 7 | } 8 | 9 | export function showTags (params) { 10 | const url = HOST + '/philosophers/show_tags' 11 | return jsonp(url, params) 12 | } 13 | 14 | export function showDetail (params) { 15 | const url = HOST + '/philosophers/show_detail' 16 | return jsonp(url, params) 17 | } 18 | 19 | export function search (params) { 20 | const url = HOST + '/philosophers/search' 21 | return jsonp(url, params) 22 | } 23 | 24 | export function addPhilosopher (params) { 25 | const url = HOST + '/philosophers/add_philosopher' 26 | return jsonp(url, params) 27 | } 28 | 29 | export function addIdea (params) { 30 | const url = HOST + '/philosophers/add_idea' 31 | return jsonp(url, params) 32 | } 33 | 34 | export function addWorks (params) { 35 | const url = HOST + '/philosophers/add_works' 36 | return jsonp(url, params) 37 | } 38 | 39 | export function addPaper (params) { 40 | const url = HOST + '/philosophers/add_paper' 41 | return jsonp(url, params) 42 | } 43 | 44 | export function addData (params) { 45 | const url = HOST + '/philosophers/add_data' 46 | return jsonp(url, params) 47 | } 48 | 49 | export function addComment (params) { 50 | const url = HOST + '/philosophers/add_comment' 51 | return jsonp(url, params) 52 | } 53 | 54 | export function addTag (params) { 55 | const url = HOST + '/philosophers/add_tag' 56 | return jsonp(url, params) 57 | } 58 | -------------------------------------------------------------------------------- /dist/static/js/manifest.4e9eae02e3aee9fca6db.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,d=0,s=[];d 2 | 11 | 12 | 13 | 39 | 40 | 76 | -------------------------------------------------------------------------------- /src/common/stylus/icon.styl: -------------------------------------------------------------------------------- 1 | @font-face 2 | font-family: 'music-icon' 3 | src: url('../fonts/music-icon.eot?2qevqt') 4 | src: url('../fonts/music-icon.eot?2qevqt#iefix') format('embedded-opentype'), 5 | url('../fonts/music-icon.ttf?2qevqt') format('truetype'), 6 | url('../fonts/music-icon.woff?2qevqt') format('woff'), 7 | url('../fonts/music-icon.svg?2qevqt#music-icon') format('svg') 8 | font-weight: normal 9 | font-style: normal 10 | 11 | [class^="icon-"], [class*=" icon-"] 12 | /* use !important to prevent issues with browser extensions that change fonts */ 13 | font-family: 'music-icon' !important 14 | speak: none 15 | font-style: normal 16 | font-weight: normal 17 | font-variant: normal 18 | text-transform: none 19 | line-height: 1 20 | 21 | /* Better Font Rendering =========== */ 22 | -webkit-font-smoothing: antialiased 23 | -moz-osx-font-smoothing: grayscale 24 | 25 | .icon-ok:before 26 | content: "\e900" 27 | 28 | .icon-close:before 29 | content: "\e901" 30 | 31 | .icon-add:before 32 | content: "\e902" 33 | 34 | .icon-play-mini:before 35 | content: "\e903" 36 | 37 | .icon-playlist:before 38 | content: "\e904" 39 | 40 | .icon-music:before 41 | content: "\e905" 42 | 43 | .icon-search:before 44 | content: "\e906" 45 | 46 | .icon-clear:before 47 | content: "\e907" 48 | 49 | .icon-delete:before 50 | content: "\e908" 51 | 52 | .icon-favorite:before 53 | content: "\e909" 54 | 55 | .icon-not-favorite:before 56 | content: "\e90a" 57 | 58 | .icon-pause:before 59 | content: "\e90b" 60 | 61 | .icon-play:before 62 | content: "\e90c" 63 | 64 | .icon-prev:before 65 | content: "\e90d" 66 | 67 | .icon-loop:before 68 | content: "\e90e" 69 | 70 | .icon-sequence:before 71 | content: "\e90f" 72 | 73 | .icon-random:before 74 | content: "\e910" 75 | 76 | .icon-back:before 77 | content: "\e911" 78 | 79 | .icon-mine:before 80 | content: "\e912" 81 | 82 | .icon-next:before 83 | content: "\e913" 84 | 85 | .icon-dismiss:before 86 | content: "\e914" 87 | 88 | .icon-pause-mini:before 89 | content: "\e915" 90 | -------------------------------------------------------------------------------- /src/components/search/search.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 63 | 64 | 92 | -------------------------------------------------------------------------------- /src/components/star/star.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 45 | 46 | 97 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "philosopher", 3 | "version": "1.0.0", 4 | "description": "philosopher", 5 | "author": "Airing ", 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 | "lint": "eslint --ext .js,.vue src" 12 | }, 13 | "dependencies": { 14 | "babel-runtime": "^6.0.0", 15 | "better-scroll": "^0.3.3", 16 | "fastclick": "^1.0.6", 17 | "good-storage": "^1.0.1", 18 | "jsonp": "^0.2.1", 19 | "multiparty": "^4.1.3", 20 | "sha1": "^1.1.1", 21 | "sweetalert2": "^6.6.6", 22 | "vue": "^2.3.3", 23 | "vue-image-crop-upload": "^1.3.14", 24 | "vue-lazyload": "^1.0.3", 25 | "vue-router": "^2.6.0", 26 | "vue-sweetalert": "^0.1.18", 27 | "vuex": "^2.3.1" 28 | }, 29 | "devDependencies": { 30 | "autoprefixer": "^6.7.2", 31 | "babel-core": "^6.22.1", 32 | "babel-eslint": "^7.1.1", 33 | "babel-loader": "^6.2.10", 34 | "babel-plugin-transform-runtime": "^6.22.0", 35 | "babel-polyfill": "^6.23.0", 36 | "babel-preset-env": "^1.3.2", 37 | "babel-preset-stage-2": "^6.22.0", 38 | "babel-register": "^6.22.0", 39 | "chalk": "^1.1.3", 40 | "connect-history-api-fallback": "^1.3.0", 41 | "copy-webpack-plugin": "^4.0.1", 42 | "css-loader": "^0.28.0", 43 | "eslint": "^3.19.0", 44 | "eslint-config-standard": "^6.2.1", 45 | "eslint-friendly-formatter": "^2.0.7", 46 | "eslint-loader": "^1.7.1", 47 | "eslint-plugin-html": "^2.0.0", 48 | "eslint-plugin-promise": "^3.4.0", 49 | "eslint-plugin-standard": "^2.0.1", 50 | "eventsource-polyfill": "^0.9.6", 51 | "express": "^4.14.1", 52 | "extract-text-webpack-plugin": "^2.0.0", 53 | "file-loader": "^0.11.1", 54 | "friendly-errors-webpack-plugin": "^1.1.3", 55 | "html-webpack-plugin": "^2.28.0", 56 | "http-proxy-middleware": "^0.17.3", 57 | "opn": "^4.0.2", 58 | "optimize-css-assets-webpack-plugin": "^1.3.0", 59 | "ora": "^1.2.0", 60 | "rimraf": "^2.6.0", 61 | "semver": "^5.3.0", 62 | "shelljs": "^0.7.6", 63 | "stylus": "^0.54.5", 64 | "stylus-loader": "^2.1.1", 65 | "url-loader": "^0.5.8", 66 | "vconsole": "^2.5.2", 67 | "vue-loader": "^11.3.4", 68 | "vue-style-loader": "^2.0.5", 69 | "vue-template-compiler": "^2.3.3", 70 | "webpack": "^2.3.3", 71 | "webpack-bundle-analyzer": "^2.2.1", 72 | "webpack-dev-middleware": "^1.10.0", 73 | "webpack-hot-middleware": "^2.18.0", 74 | "webpack-merge": "^4.1.0" 75 | }, 76 | "engines": { 77 | "node": ">= 4.0.0", 78 | "npm": ">= 3.0.0" 79 | }, 80 | "browserslist": [ 81 | "> 1%", 82 | "last 2 versions", 83 | "not ie <= 8" 84 | ] 85 | } 86 | -------------------------------------------------------------------------------- /src/base/scroll/scroll.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 109 | 110 | 113 | -------------------------------------------------------------------------------- /src/components/creation/creation.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 68 | 69 | 115 | -------------------------------------------------------------------------------- /src/components/user/user.vue: -------------------------------------------------------------------------------- 1 | 30 | 31 | 115 | 116 | 164 | -------------------------------------------------------------------------------- /src/base/slider/slider.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 151 | 152 | 194 | -------------------------------------------------------------------------------- /dist/static/css/app.3a2eca7f7653faac7482aa6b921f0077.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///./src/components/navigation/navigation.vue","webpack:///./src/common/stylus/src/common/stylus/reset.styl","webpack:///./src/common/stylus/index.styl","webpack:///./src/common/stylus/src/common/stylus/base.styl","webpack:///./src/common/stylus/src/common/stylus/icon.styl"],"names":[],"mappings":"AACA,6BACE,eACA,MACA,OACA,WACA,YACA,8BACA,YAAc,CAEhB,oCACE,gBAAkB,CAEpB,0CACE,qBACA,WACA,YACA,+CACA,0BACA,2BAA6B,CAE/B,qEACA,0CACI,8CAAqC,CACxC,CAED,0CACE,qBACA,oBACA,mBACA,eACA,WACA,0BACA,gBAAkB,CAEpB,qCACE,YACA,WACA,YACA,kBAAoB,CACrB,cCpCD,0ZAaE,SACA,UACA,SACA,eACA,gBACA,wBCiED,uED5DC,cCwED,KDrEC,cCwED,aDrEC,YCyED,oDDrEC,aC2ED,MDxEC,yBACA,iBC2ED,EDtEC,cACA,mCACA,qBCyED,GDtEC,gBCyED,KDtEC,8BACA,0CErDF,UACE,cACA,yEACA,iBACA,wCACA,gBACA,WCRF,WACE,uBACA,kCACA,wMAIA,gBACA,kBAEF,iCAEE,iCACA,WACA,kBACA,gBACA,oBACA,oBACA,cAGA,mCACA,kCAEF,gBACE,gBAEF,mBACE,gBAEF,iBACE,gBAEF,uBACE,gBAEF,sBACE,gBAEF,mBACE,gBAEF,oBACE,gBAEF,mBACE,gBAEF,oBACE,gBAEF,sBACE,gBAEF,0BACE,gBAEF,mBACE,gBAEF,kBACE,gBAEF,kBACE,gBAEF,kBACE,gBAEF,sBACE,gBAEF,oBACE,gBAEF,kBACE,gBAEF,kBACE,gBAEF,kBACE,gBAEF,qBACE,gBAEF,wBACE,gBFwID","file":"static/css/app.3a2eca7f7653faac7482aa6b921f0077.css","sourcesContent":["\n.navigation[data-v-fca0deae] {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 50px;\n background: rgba(47,47,47,0.98);\n z-index: 9996;\n}\n.navigation .title[data-v-fca0deae] {\n margin: 10px 20px;\n}\n.navigation .title .logo[data-v-fca0deae] {\n display: inline-block;\n width: 30px;\n height: 30px;\n background-image: url(\"logo@2x.png\");\n background-size: 30px 30px;\n background-repeat: no-repeat;\n}\n@media (-webkit-min-device-pixel-ratio: 3), (min-device-pixel-ratio: 3) {\n.navigation .title .logo[data-v-fca0deae] {\n background-image: url(\"logo@3x.png\");\n}\n}\n.navigation .title .name[data-v-fca0deae] {\n display: inline-block;\n margin: 6px 0 0 10px;\n vertical-align: top;\n font-size: 18px;\n color: #fff;\n font-family: \"Comic Sans MS\";\n line-height: 18px;\n}\n.navigation .avatar[data-v-fca0deae] {\n float: right;\n width: 30px;\n height: 30px;\n border-radius: 30px;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/navigation/navigation.vue","/**\n * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/)\n * http://cssreset.com\n */\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video, input\n margin: 0\n padding: 0\n border: 0\n font-size: 100%\n font-weight: normal\n vertical-align: baseline\n\n/* HTML5 display-role reset for older browsers */\narticle, aside, details, figcaption, figure,\nfooter, header, menu, nav, section\n display: block\n\nbody\n line-height: 1\n\nblockquote, q\n quotes: none\n\nblockquote:before, blockquote:after,\nq:before, q:after\n content: none\n\ntable\n border-collapse: collapse\n border-spacing: 0\n\n/* custom */\n\na\n color: #7e8c8d\n -webkit-backface-visibility: hidden\n text-decoration: none\n\nli\n list-style: none\n\nbody\n -webkit-text-size-adjust: none\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0)\n\n\n\n// WEBPACK FOOTER //\n// ./src/common/stylus/src/common/stylus/reset.styl","html,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\nb,\nu,\ni,\ncenter,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo,\ninput {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font-weight: normal;\n vertical-align: baseline;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nmenu,\nnav,\nsection {\n display: block;\n}\nbody {\n line-height: 1;\n}\nblockquote,\nq {\n quotes: none;\n}\nblockquote:before,\nblockquote:after,\nq:before,\nq:after {\n content: none;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\na {\n color: #7e8c8d;\n -webkit-backface-visibility: hidden;\n text-decoration: none;\n}\nli {\n list-style: none;\n}\nbody {\n -webkit-text-size-adjust: none;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\nbody,\nhtml {\n line-height: 1;\n font-family: 'PingFang SC', 'STHeitiSC-Light', 'Helvetica-Light', arial, sans-serif, 'Droid Sans Fallback';\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n background: #222;\n color: #333;\n}\n@font-face {\n font-family: 'music-icon';\n src: url(\"../fonts/music-icon.eot?2qevqt\");\n src: url(\"../fonts/music-icon.eot?2qevqt#iefix\") format('embedded-opentype'), url(\"../fonts/music-icon.ttf?2qevqt\") format('truetype'), url(\"../fonts/music-icon.woff?2qevqt\") format('woff'), url(\"../fonts/music-icon.svg?2qevqt#music-icon\") format('svg');\n font-weight: normal;\n font-style: normal;\n}\n[class^=\"icon-\"],\n[class*=\" icon-\"] {\n/* use !important to prevent issues with browser extensions that change fonts */\n font-family: 'music-icon' !important;\n speak: none;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n/* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.icon-ok:before {\n content: \"\\e900\";\n}\n.icon-close:before {\n content: \"\\e901\";\n}\n.icon-add:before {\n content: \"\\e902\";\n}\n.icon-play-mini:before {\n content: \"\\e903\";\n}\n.icon-playlist:before {\n content: \"\\e904\";\n}\n.icon-music:before {\n content: \"\\e905\";\n}\n.icon-search:before {\n content: \"\\e906\";\n}\n.icon-clear:before {\n content: \"\\e907\";\n}\n.icon-delete:before {\n content: \"\\e908\";\n}\n.icon-favorite:before {\n content: \"\\e909\";\n}\n.icon-not-favorite:before {\n content: \"\\e90a\";\n}\n.icon-pause:before {\n content: \"\\e90b\";\n}\n.icon-play:before {\n content: \"\\e90c\";\n}\n.icon-prev:before {\n content: \"\\e90d\";\n}\n.icon-loop:before {\n content: \"\\e90e\";\n}\n.icon-sequence:before {\n content: \"\\e90f\";\n}\n.icon-random:before {\n content: \"\\e910\";\n}\n.icon-back:before {\n content: \"\\e911\";\n}\n.icon-mine:before {\n content: \"\\e912\";\n}\n.icon-next:before {\n content: \"\\e913\";\n}\n.icon-dismiss:before {\n content: \"\\e914\";\n}\n.icon-pause-mini:before {\n content: \"\\e915\";\n}\n/*# sourceMappingURL=src/common/stylus/index.css.map */\n\n\n// WEBPACK FOOTER //\n// ./src/common/stylus/index.styl","@import \"variable.styl\"\n\nbody, html\n line-height: 1\n font-family: 'PingFang SC', 'STHeitiSC-Light', 'Helvetica-Light', arial, sans-serif, 'Droid Sans Fallback'\n user-select: none\n -webkit-tap-highlight-color: transparent\n background: $color-background\n color: $color-text\n\n\n// WEBPACK FOOTER //\n// ./src/common/stylus/src/common/stylus/base.styl","@font-face\n font-family: 'music-icon'\n src: url('../fonts/music-icon.eot?2qevqt')\n src: url('../fonts/music-icon.eot?2qevqt#iefix') format('embedded-opentype'),\n url('../fonts/music-icon.ttf?2qevqt') format('truetype'),\n url('../fonts/music-icon.woff?2qevqt') format('woff'),\n url('../fonts/music-icon.svg?2qevqt#music-icon') format('svg')\n font-weight: normal\n font-style: normal\n\n[class^=\"icon-\"], [class*=\" icon-\"]\n /* use !important to prevent issues with browser extensions that change fonts */\n font-family: 'music-icon' !important\n speak: none\n font-style: normal\n font-weight: normal\n font-variant: normal\n text-transform: none\n line-height: 1\n\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased\n -moz-osx-font-smoothing: grayscale\n\n.icon-ok:before\n content: \"\\e900\"\n\n.icon-close:before\n content: \"\\e901\"\n\n.icon-add:before\n content: \"\\e902\"\n\n.icon-play-mini:before\n content: \"\\e903\"\n\n.icon-playlist:before\n content: \"\\e904\"\n\n.icon-music:before\n content: \"\\e905\"\n\n.icon-search:before\n content: \"\\e906\"\n\n.icon-clear:before\n content: \"\\e907\"\n\n.icon-delete:before\n content: \"\\e908\"\n\n.icon-favorite:before\n content: \"\\e909\"\n\n.icon-not-favorite:before\n content: \"\\e90a\"\n\n.icon-pause:before\n content: \"\\e90b\"\n\n.icon-play:before\n content: \"\\e90c\"\n\n.icon-prev:before\n content: \"\\e90d\"\n\n.icon-loop:before\n content: \"\\e90e\"\n\n.icon-sequence:before\n content: \"\\e90f\"\n\n.icon-random:before\n content: \"\\e910\"\n\n.icon-back:before\n content: \"\\e911\"\n\n.icon-mine:before\n content: \"\\e912\"\n\n.icon-next:before\n content: \"\\e913\"\n\n.icon-dismiss:before\n content: \"\\e914\"\n\n.icon-pause-mini:before\n content: \"\\e915\"\n\n\n\n// WEBPACK FOOTER //\n// ./src/common/stylus/src/common/stylus/icon.styl"],"sourceRoot":""} -------------------------------------------------------------------------------- /src/components/editor/editor.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 226 | 227 | 304 | -------------------------------------------------------------------------------- /dist/static/js/app.744d9d6f59ac97d2c7f4.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([5],{100:function(n,t,e){"use strict";e.d(t,"a",function(){return o}),e.d(t,"b",function(){return i}),e.d(t,"c",function(){return r}),e.d(t,"d",function(){return u}),e.d(t,"e",function(){return s}),e.d(t,"f",function(){return A});var o="SET_TOKEN",i="SET_TIMESTAMP",r="SET_UID",u="SET_USER",s="SET_PHILOSOPHERLIST",A="SET_PHILOSOPHER"},130:function(n,t,e){"use strict";var o=e(60),i=e(365),r=function(n){e.e(0).then(e.bind(null,372)).then(function(t){n(t)})},u=function(n){e.e(1).then(e.bind(null,373)).then(function(t){n(t)})},s=function(n){e.e(3).then(e.bind(null,370)).then(function(t){n(t)})},A=function(n){e.e(2).then(e.bind(null,371)).then(function(t){n(t)})};o.a.use(i.a),t.a=new i.a({routes:[{path:"/",redirect:"/home"},{path:"/home",component:r},{path:"/user",component:u},{path:"/creation",component:s},{path:"/editor",component:A}]})},131:function(n,t,e){"use strict";var o=e(60),i=e(96),r=e(162),u=e(163),s=e(165),A=e(164),c=e(367);e.n(c);o.a.use(i.b);t.a=new i.b.Store({actions:r,getters:u,state:s.a,mutations:A.a,strict:!1,plugins:[]})},133:function(n,t){},135:function(n,t){n.exports="data:image/png;base64,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"},137:function(n,t,e){e(358);var o=e(95)(e(166),e(363),"data-v-344543de",null);n.exports=o.exports},161:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=e(132),i=(e.n(o),e(60)),r=e(137),u=e.n(r),s=e(130),A=e(134),c=e.n(A),a=e(136),f=e.n(a),d=e(131),p=e(138),h=e.n(p),g=e(133);e.n(g);c.a.attach(document.body),i.a.use(f.a,{loading:e(135)}),i.a.use(h.a),new i.a({el:"#app",router:s.a,store:d.a,render:function(n){return n(u.a)}})},162:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),e.d(t,"saveLogin",function(){return r});var o=e(100),i=e(99),r=function(n,t){var r=n.commit;r(o.a,e.i(i.e)(t.token)),r(o.b,e.i(i.f)(t.timestamp)),r(o.c,e.i(i.g)(t.uid)),r(o.d,e.i(i.h)(t.user))}},163:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),e.d(t,"token",function(){return o}),e.d(t,"timestamp",function(){return i}),e.d(t,"uid",function(){return r}),e.d(t,"user",function(){return u}),e.d(t,"philosopherList",function(){return s}),e.d(t,"philosopher",function(){return A});var o=function(n){return n.token},i=function(n){return n.timestamp},r=function(n){return n.uid},u=function(n){return n.user},s=function(n){return n.philosopherList},A=function(n){return n.philosopher}},164:function(n,t,e){"use strict";var o,i=e(169),r=e.n(i),u=e(100),s=(o={},r()(o,u.a,function(n,t){n.token=t}),r()(o,u.b,function(n,t){n.timestamp=t}),r()(o,u.c,function(n,t){n.uid=t}),r()(o,u.d,function(n,t){n.user=t}),r()(o,u.e,function(n,t){n.philosopherList=t}),r()(o,u.f,function(n,t){n.philosopher=t}),o);t.a=s},165:function(n,t,e){"use strict";var o=e(99),i={token:e.i(o.a)(),timestamp:e.i(o.b)(),uid:e.i(o.c)(),user:e.i(o.d)(),philosopherList:[],philosopher:{}};t.a=i},166:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=e(362),i=e.n(o);t.default={components:{Navigation:i.a}}},167:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=e(150),i=e.n(o),r=e(96);t.default={computed:i()({},e.i(r.a)(["token","user"])),methods:{selectUser:function(){0!==this.token.length&&this.$router.push({path:"/user"})},selectHome:function(){this.$router.push({path:"/home"})}}}},358:function(n,t){},359:function(n,t){},362:function(n,t,e){e(359);var o=e(95)(e(167),e(364),"data-v-fca0deae",null);n.exports=o.exports},363:function(n,t){n.exports={render:function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{attrs:{id:"app"},on:{touchmove:function(n){n.preventDefault()}}},[e("navigation"),n._v(" "),e("keep-alive",[e("router-view")],1)],1)},staticRenderFns:[]}},364:function(n,t){n.exports={render:function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"navigation"},[e("div",{staticClass:"title"},[e("span",{staticClass:"logo",on:{click:n.selectHome}}),n._v(" "),e("h1",{staticClass:"name",on:{click:n.selectHome}},[n._v("Philosopher")]),n._v(" "),e("img",{staticClass:"avatar",attrs:{src:this.user.face?this.user.face:"http://airing.ursb.me/image/cover/philosopherlogo.png"},on:{click:n.selectUser}})])])},staticRenderFns:[]}},99:function(n,t,e){"use strict";function o(n){return d.a.set(p,n),n}function i(){return d.a.get(p,[])}function r(n){return d.a.set(h,n),n}function u(){return d.a.get(h,[])}function s(n){return d.a.set(g,n),n}function A(){return d.a.get(g,[])}function c(n){return d.a.set(l,n),n}function a(){return d.a.get(l,[])}t.e=o,t.a=i,t.f=r,t.b=u,t.g=s,t.c=A,t.h=c,t.d=a;var f=e(360),d=e.n(f),p="__token__",h="__timestamp__",g="__uid__",l="__user__"}},[161]); 2 | //# sourceMappingURL=app.744d9d6f59ac97d2c7f4.js.map -------------------------------------------------------------------------------- /dist/static/js/manifest.4e9eae02e3aee9fca6db.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///static/js/manifest.4e9eae02e3aee9fca6db.js","webpack:///webpack/bootstrap 6d728a5f6ba5e1815b1b"],"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","6","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","2","3","4","5","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,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,wBAAkK3C,GAAA,KAC1O,IAAAkB,GAAA0B,WAAA/B,EAAA,KAgBA,OAfAC,GAAAC,QAAAD,EAAAE,OAAAH,EAaAc,EAAAkB,YAAA/B,GAEAW,GAIAtC,EAAA2D,EAAA5D,EAGAC,EAAA4D,EAAA1D,EAGAF,EAAAK,EAAA,SAAAwD,GAA2C,MAAAA,IAG3C7D,EAAA8D,EAAA,SAAA3D,EAAA4D,EAAAC,GACAhE,EAAAiE,EAAA9D,EAAA4D,IACA5C,OAAA+C,eAAA/D,EAAA4D,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAhE,EAAAsE,EAAA,SAAAlE,GACA,GAAA4D,GAAA5D,KAAAmE,WACA,WAA2B,MAAAnE,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAJ,GAAA8D,EAAAE,EAAA,IAAAA,GACAA,GAIAhE,EAAAiE,EAAA,SAAAO,EAAAC,GAAsD,MAAAtD,QAAAC,UAAAC,eAAAd,KAAAiE,EAAAC,IAGtDzE,EAAAkD,EAAA,IAGAlD,EAAA0E,GAAA,SAAAC,GAA8D,KAApBC,SAAAC,MAAAF,GAAoBA","file":"static/js/manifest.4e9eae02e3aee9fca6db.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\t6: 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\":\"1df99d4dc9159fc89686\",\"1\":\"5cce9b65d007edcdad47\",\"2\":\"1b2ff7728b78ef15c317\",\"3\":\"e0c7256b65cd3c34ae73\",\"4\":\"9e860e10a2289eea7f2b\",\"5\":\"744d9d6f59ac97d2c7f4\"}[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.4e9eae02e3aee9fca6db.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\t6: 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\":\"1df99d4dc9159fc89686\",\"1\":\"5cce9b65d007edcdad47\",\"2\":\"1b2ff7728b78ef15c317\",\"3\":\"e0c7256b65cd3c34ae73\",\"4\":\"9e860e10a2289eea7f2b\",\"5\":\"744d9d6f59ac97d2c7f4\"}[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 6d728a5f6ba5e1815b1b"],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/static/js/3.e0c7256b65cd3c34ae73.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([3],{370:function(e,t,n){n(467);var r=n(95)(n(424),n(519),"data-v-d70a5e6e",null);e.exports=r.exports},374:function(e,t,n){var r=n(152)("wks"),o=n(149),i=n(61).Symbol,a="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=r},375:function(e,t){e.exports={}},376:function(e,t,n){var r=n(92).f,o=n(141),i=n(374)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},377:function(e,t){e.exports=!0},378:function(e,t,n){var r=n(142),o=n(374)("toStringTag"),i="Arguments"==r(function(){return arguments}()),a=function(e,t){try{return e[t]}catch(e){}};e.exports=function(e){var t,n,s;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=a(t=Object(e),o))?n:i?r(t):"Object"==(s=r(t))&&"function"==typeof t.callee?"Arguments":s}},379:function(e,t,n){e.exports=n(61).document&&document.documentElement},380:function(e,t,n){"use strict";var r=n(377),o=n(93),i=n(386),a=n(140),s=n(141),c=n(375),u=n(397),f=n(376),l=n(402),p=n(374)("iterator"),d=!([].keys&&"next"in[].keys()),h=function(){return this};e.exports=function(e,t,n,v,A,m,g){u(n,t,v);var y,x,w,b=function(e){if(!d&&e in k)return k[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},C=t+" Iterator",B="values"==A,_=!1,k=e.prototype,E=k[p]||k["@@iterator"]||A&&k[A],T=E||b(A),S=A?B?b("entries"):T:void 0,j="Array"==t?k.entries||E:E;if(j&&(w=l(j.call(new e)))!==Object.prototype&&(f(w,C,!0),r||s(w,p)||a(w,p,h)),B&&E&&"values"!==E.name&&(_=!0,T=function(){return E.call(this)}),r&&!g||!d&&!_&&k[p]||a(k,p,T),c[t]=T,c[C]=h,A)if(y={values:B?T:b("values"),keys:m?T:b("keys"),entries:S},g)for(x in y)x in k||i(k,x,y[x]);else o(o.P+o.F*(d||_),t,y);return y}},381:function(e,t,n){var r,o,i,a=n(143),s=n(394),c=n(379),u=n(145),f=n(61),l=f.process,p=f.setImmediate,d=f.clearImmediate,h=f.MessageChannel,v=0,A={},m=function(){var e=+this;if(A.hasOwnProperty(e)){var t=A[e];delete A[e],t()}},g=function(e){m.call(e.data)};p&&d||(p=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return A[++v]=function(){s("function"==typeof e?e:Function(e),t)},r(v),v},d=function(e){delete A[e]},"process"==n(142)(l)?r=function(e){l.nextTick(a(m,e,1))}:h?(o=new h,i=o.port2,o.port1.onmessage=g,r=a(i.postMessage,i,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(r=function(e){f.postMessage(e+"","*")},f.addEventListener("message",g,!1)):r="onreadystatechange"in u("script")?function(e){c.appendChild(u("script")).onreadystatechange=function(){c.removeChild(this),m.call(e)}}:function(e){setTimeout(a(m,e,1),0)}),e.exports={set:p,clear:d}},382:function(e,t,n){"use strict";n.d(t,"a",function(){return r});var r="http://localhost:9001"},383:function(e,t,n){"use strict";function r(e,t,n){return e+=(e.indexOf("?")<0?"?":"&")+o(t),new a.a(function(t,r){c()(e,n,function(e,n){e?r(e):t(n)})})}function o(e){var t="";for(var n in e){var r=void 0!==e[n]?e[n]:"";t+="&"+n+"="+encodeURIComponent(r)}return t?t.substring(1):""}t.a=r;var i=n(384),a=n.n(i),s=n(412),c=n.n(s)},384:function(e,t,n){e.exports={default:n(390),__esModule:!0}},385:function(e,t,n){var r=n(139),o=n(401),i=n(151),a=n(147)("IE_PROTO"),s=function(){},c=function(){var e,t=n(145)("iframe"),r=i.length;for(t.style.display="none",n(379).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write(" 466 | 467 | 820 | --------------------------------------------------------------------------------