Move to angular cli
This commit is contained in:
parent
908f6e5e38
commit
63c4db6d71
|
@ -0,0 +1,66 @@
|
|||
{
|
||||
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
||||
"project": {
|
||||
"name": "PeerTube"
|
||||
},
|
||||
"apps": [
|
||||
{
|
||||
"root": "src",
|
||||
"outDir": "dist",
|
||||
"deployUrl": "client/",
|
||||
"assets": [
|
||||
"assets"
|
||||
],
|
||||
"index": "index.html",
|
||||
"main": "main.ts",
|
||||
"polyfills": "polyfills.ts",
|
||||
"test": "test.ts",
|
||||
"tsconfig": "tsconfig.app.json",
|
||||
"testTsconfig": "tsconfig.spec.json",
|
||||
"prefix": "app",
|
||||
"styles": [
|
||||
"sass/application.scss"
|
||||
],
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"sass/include"
|
||||
]
|
||||
},
|
||||
"scripts": [],
|
||||
"environmentSource": "environments/environment.ts",
|
||||
"environments": {
|
||||
"dev": "environments/environment.ts",
|
||||
"prod": "environments/environment.prod.ts"
|
||||
}
|
||||
}
|
||||
],
|
||||
"e2e": {
|
||||
"protractor": {
|
||||
"config": "./protractor.conf.js"
|
||||
}
|
||||
},
|
||||
"lint": [
|
||||
{
|
||||
"project": "src/tsconfig.app.json",
|
||||
"exclude": "**/node_modules/**"
|
||||
},
|
||||
{
|
||||
"project": "src/tsconfig.spec.json",
|
||||
"exclude": "**/node_modules/**"
|
||||
},
|
||||
{
|
||||
"project": "e2e/tsconfig.e2e.json",
|
||||
"exclude": "**/node_modules/**"
|
||||
}
|
||||
],
|
||||
"test": {
|
||||
"karma": {
|
||||
"config": "./karma.conf.js"
|
||||
}
|
||||
},
|
||||
"defaults": {
|
||||
"styleExt": "scss",
|
||||
"component": {
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,125 +0,0 @@
|
|||
---
|
||||
# Output debugging info
|
||||
# loglevel: debug
|
||||
|
||||
# Major version of Bootstrap: 3 or 4
|
||||
bootstrapVersion: 3
|
||||
|
||||
# If Bootstrap version 3 is used - turn on/off custom icon font path
|
||||
useCustomIconFontPath: true
|
||||
|
||||
# Webpack loaders, order matters
|
||||
styleLoaders:
|
||||
- style-loader
|
||||
- css-loader
|
||||
- sass-loader
|
||||
|
||||
# Extract styles to stand-alone css file
|
||||
# Different settings for different environments can be used,
|
||||
# It depends on value of NODE_ENV environment variable
|
||||
# This param can also be set in webpack config:
|
||||
# entry: 'bootstrap-loader/extractStyles'
|
||||
# extractStyles: false
|
||||
env:
|
||||
development:
|
||||
extractStyles: false
|
||||
production:
|
||||
extractStyles: true
|
||||
|
||||
# Customize Bootstrap variables that get imported before the original Bootstrap variables.
|
||||
# Thus original Bootstrap variables can depend on values from here. All the bootstrap
|
||||
# variables are configured with !default, and thus, if you define the variable here, then
|
||||
# that value is used, rather than the default. However, many bootstrap variables are derived
|
||||
# from other bootstrap variables, and thus, you want to set this up before we load the
|
||||
# official bootstrap versions.
|
||||
# For example, _variables.scss contains:
|
||||
# $input-color: $gray !default;
|
||||
# This means you can define $input-color before we load _variables.scss
|
||||
preBootstrapCustomizations: ./src/sass/pre-customizations.scss
|
||||
|
||||
# This gets loaded after bootstrap/variables is loaded and before bootstrap is loaded.
|
||||
# A good example of this is when you want to override a bootstrap variable to be based
|
||||
# on the default value of bootstrap. This is pretty specialized case. Thus, you normally
|
||||
# just override bootrap variables in preBootstrapCustomizations so that derived
|
||||
# variables will use your definition.
|
||||
#
|
||||
# For example, in _variables.scss:
|
||||
# $input-height: (($font-size-base * $line-height) + ($input-padding-y * 2) + ($border-width * 2)) !default;
|
||||
# This means that you could define this yourself in preBootstrapCustomizations. Or you can do
|
||||
# this in bootstrapCustomizations to make the input height 10% bigger than the default calculation.
|
||||
# Thus you can leverage the default calculations.
|
||||
# $input-height: $input-height * 1.10;
|
||||
# bootstrapCustomizations: ./app/styles/bootstrap/customizations.scss
|
||||
|
||||
# Import your custom styles here. You have access to all the bootstrap variables. If you require
|
||||
# your sass files separately, you will not have access to the bootstrap variables, mixins, clases, etc.
|
||||
# Usually this endpoint-file contains list of @imports of your application styles.
|
||||
appStyles: ./src/sass/application.scss
|
||||
|
||||
### Bootstrap styles
|
||||
styles:
|
||||
|
||||
# Mixins
|
||||
mixins: true
|
||||
|
||||
# Reset and dependencies
|
||||
normalize: true
|
||||
print: true
|
||||
glyphicons: true
|
||||
|
||||
# Core CSS
|
||||
scaffolding: true
|
||||
type: true
|
||||
code: false
|
||||
grid: true
|
||||
tables: true
|
||||
forms: true
|
||||
buttons: true
|
||||
|
||||
# Components
|
||||
component-animations: false
|
||||
dropdowns: true
|
||||
button-groups: true
|
||||
input-groups: true
|
||||
navs: true
|
||||
navbar: false
|
||||
breadcrumbs: false
|
||||
pagination: false
|
||||
pager: false
|
||||
labels: false
|
||||
badges: false
|
||||
jumbotron: false
|
||||
thumbnails: false
|
||||
alerts: true
|
||||
progress-bars: false
|
||||
media: true
|
||||
list-group: false
|
||||
panels: true
|
||||
wells: false
|
||||
responsive-embed: false
|
||||
close: true
|
||||
|
||||
# Components w/ JavaScript
|
||||
modals: true
|
||||
tooltip: false
|
||||
popovers: false
|
||||
carousel: false
|
||||
|
||||
# Utility classes
|
||||
utilities: true
|
||||
responsive-utilities: true
|
||||
|
||||
### Bootstrap scripts
|
||||
scripts:
|
||||
transition: false
|
||||
alert: false
|
||||
button: false
|
||||
carousel: false
|
||||
collapse: false
|
||||
dropdown: false
|
||||
modal: false
|
||||
tooltip: false
|
||||
popover: false
|
||||
scrollspy: false
|
||||
tab: false
|
||||
affix: false
|
|
@ -5,7 +5,7 @@
|
|||
"licence": "GPLv3",
|
||||
"author": {
|
||||
"name": "Florian Bigard",
|
||||
"email": "florian.bigard@gmail.com",
|
||||
"email": "me@florianbigard.com",
|
||||
"url": "http://github.com/Chocobozzz"
|
||||
},
|
||||
"repository": {
|
||||
|
@ -15,19 +15,21 @@
|
|||
"scripts": {
|
||||
"lint": "standard && tslint --type-check --project ./tsconfig.json -c ./tslint.json 'src/app/**/*.ts'",
|
||||
"webpack": "webpack",
|
||||
"webpack-dev-server": "webpack-dev-server",
|
||||
"webpack-dev-server<": "webpack-dev-server",
|
||||
"postinstall": "npm rebuild node-sass"
|
||||
},
|
||||
"license": "GPLv3",
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"@angular/animations": "~4.4.0",
|
||||
"@angular/cli": "^1.6.0",
|
||||
"@angular/common": "~4.4.0",
|
||||
"@angular/compiler": "~4.4.0",
|
||||
"@angular/compiler-cli": "~4.4.0",
|
||||
"@angular/core": "~4.4.0",
|
||||
"@angular/forms": "~4.4.0",
|
||||
"@angular/http": "~4.4.0",
|
||||
"@angular/language-service": "^5.1.0",
|
||||
"@angular/platform-browser": "~4.4.0",
|
||||
"@angular/platform-browser-dynamic": "~4.4.0",
|
||||
"@angular/router": "~4.4.0",
|
||||
|
@ -50,9 +52,7 @@
|
|||
"babel-core": "^6.25.0",
|
||||
"babel-loader": "^7.1.0",
|
||||
"babel-preset-env": "^1.5.2",
|
||||
"bootstrap": "^3.3.6",
|
||||
"bootstrap-loader": "2.2.0",
|
||||
"bootstrap-sass": "^3.3.6",
|
||||
"bootstrap-sass": "^3.3.7",
|
||||
"codelyzer": "^3.0.0-beta.4",
|
||||
"copy-webpack-plugin": "^4.0.0",
|
||||
"core-js": "^2.4.1",
|
||||
|
@ -76,6 +76,7 @@
|
|||
"ngx-pipes": "^2.0.5",
|
||||
"node-sass": "^4.1.1",
|
||||
"normalize.css": "^7.0.0",
|
||||
"npm-font-source-sans-pro": "^1.0.2",
|
||||
"optimize-js-plugin": "0.0.4",
|
||||
"primeng": "^4.2.0",
|
||||
"purify-css": "^1.2.5",
|
||||
|
@ -88,7 +89,6 @@
|
|||
"sass-resources-loader": "^1.2.1",
|
||||
"script-ext-html-webpack-plugin": "^1.3.2",
|
||||
"source-map-loader": "^0.2.1",
|
||||
"source-sans-pro": "^2.0.10",
|
||||
"standard": "^10.0.0",
|
||||
"string-replace-loader": "^1.0.3",
|
||||
"style-loader": "^0.19.0",
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
textarea {
|
||||
height: 250px;
|
||||
}
|
||||
|
@ -6,4 +9,3 @@ input[type=submit] {
|
|||
@include peertube-button;
|
||||
@include orange-button;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
import { Injectable } from '@angular/core'
|
||||
import { HttpClient, HttpParams } from '@angular/common/http'
|
||||
import { Observable } from 'rxjs/Observable'
|
||||
import { Injectable } from '@angular/core'
|
||||
import { SortMeta } from 'primeng/primeng'
|
||||
import 'rxjs/add/operator/catch'
|
||||
import 'rxjs/add/operator/map'
|
||||
|
||||
import { SortMeta } from 'primeng/primeng'
|
||||
|
||||
import { RestExtractor, RestPagination, RestService } from '../../../shared'
|
||||
import { Observable } from 'rxjs/Observable'
|
||||
import { AccountFollow, ResultList } from '../../../../../../shared'
|
||||
import { environment } from '../../../../environments/environment'
|
||||
import { RestExtractor, RestPagination, RestService } from '../../../shared'
|
||||
|
||||
@Injectable()
|
||||
export class FollowService {
|
||||
private static BASE_APPLICATION_URL = API_URL + '/api/v1/server'
|
||||
private static BASE_APPLICATION_URL = environment.apiUrl + '/api/v1/server'
|
||||
|
||||
constructor (
|
||||
private authHttp: HttpClient,
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
export * from './admin.module'
|
|
@ -1,9 +1,6 @@
|
|||
import { Routes } from '@angular/router'
|
||||
|
||||
import { UserRightGuard } from '../../core'
|
||||
import { FollowingAddComponent } from './following-add'
|
||||
import { UserRight } from '../../../../../shared'
|
||||
import { FollowingListComponent } from './following-list/following-list.component'
|
||||
import { UserRightGuard } from '../../core'
|
||||
import { JobsComponent } from './job.component'
|
||||
import { JobsListComponent } from './jobs-list/jobs-list.component'
|
||||
|
||||
|
|
|
@ -6,12 +6,12 @@ import 'rxjs/add/operator/map'
|
|||
import { Observable } from 'rxjs/Observable'
|
||||
import { ResultList } from '../../../../../../shared'
|
||||
import { Job } from '../../../../../../shared/models/job.model'
|
||||
|
||||
import { environment } from '../../../../environments/environment'
|
||||
import { RestExtractor, RestPagination, RestService } from '../../../shared'
|
||||
|
||||
@Injectable()
|
||||
export class JobService {
|
||||
private static BASE_JOB_URL = API_URL + '/api/v1/jobs'
|
||||
private static BASE_JOB_URL = environment.apiUrl + '/api/v1/jobs'
|
||||
|
||||
constructor (
|
||||
private authHttp: HttpClient,
|
||||
|
|
|
@ -6,11 +6,12 @@ import 'rxjs/add/operator/catch'
|
|||
import 'rxjs/add/operator/map'
|
||||
import { Observable } from 'rxjs/Observable'
|
||||
import { ResultList, UserCreate, UserUpdate } from '../../../../../../shared'
|
||||
import { environment } from '../../../../environments/environment'
|
||||
import { RestExtractor, RestPagination, RestService, User } from '../../../shared'
|
||||
|
||||
@Injectable()
|
||||
export class UserService {
|
||||
private static BASE_USERS_URL = API_URL + '/api/v1/users/'
|
||||
private static BASE_USERS_URL = environment.apiUrl + '/api/v1/users/'
|
||||
private bytesPipe = new BytesPipe()
|
||||
|
||||
constructor (
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
.admin-sub-title {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
.add-button {
|
||||
@include peertube-button-link;
|
||||
@include orange-button;
|
||||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
.icon.icon-add {
|
||||
@include icon(22px);
|
||||
.add-button {
|
||||
@include peertube-button-link;
|
||||
@include orange-button;
|
||||
|
||||
margin-right: 3px;
|
||||
background-image: url('../../../../assets/images/admin/add.svg');
|
||||
}
|
||||
.icon.icon-add {
|
||||
@include icon(22px);
|
||||
|
||||
margin-right: 3px;
|
||||
background-image: url('../../../../assets/images/admin/add.svg');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
input[type=password] {
|
||||
@include peertube-input-text(340px);
|
||||
display: block;
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
label {
|
||||
font-size: 15px;
|
||||
font-weight: $font-regular;
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
.user {
|
||||
display: flex;
|
||||
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
.action-selection-mode {
|
||||
width: 174px;
|
||||
display: flex;
|
||||
|
|
|
@ -5,7 +5,6 @@ import { AccountChangePasswordComponent } from './account-settings/account-chang
|
|||
import { AccountDetailsComponent } from './account-settings/account-details/account-details.component'
|
||||
import { AccountSettingsComponent } from './account-settings/account-settings.component'
|
||||
import { AccountComponent } from './account.component'
|
||||
import { AccountService } from './account.service'
|
||||
import { AccountVideosComponent } from './account-videos/account-videos.component'
|
||||
|
||||
@NgModule({
|
||||
|
|
|
@ -11,7 +11,7 @@ const routes: Routes = [
|
|||
},
|
||||
{
|
||||
path: 'admin',
|
||||
loadChildren: './+admin#AdminModule'
|
||||
loadChildren: './+admin/admin.module#AdminModule'
|
||||
}
|
||||
]
|
||||
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
.main-row {
|
||||
min-height: calc(100vh - #{$header-height} - #{$footer-height} - #{$footer-margin});
|
||||
}
|
||||
|
|
|
@ -1,18 +1,10 @@
|
|||
import { ApplicationRef, NgModule } from '@angular/core'
|
||||
import { NgModule } from '@angular/core'
|
||||
import { BrowserModule } from '@angular/platform-browser'
|
||||
import {
|
||||
removeNgStyles,
|
||||
createNewHosts,
|
||||
createInputTransfer
|
||||
} from '@angularclass/hmr'
|
||||
|
||||
import { MetaModule, MetaLoader, MetaStaticLoader, PageTitlePositioning } from '@ngx-meta/core'
|
||||
import 'bootstrap-loader'
|
||||
|
||||
import { ENV_PROVIDERS } from './environment'
|
||||
import { AppRoutingModule } from './app-routing.module'
|
||||
import { AppComponent } from './app.component'
|
||||
import { AppState, InternalStateType } from './app.service'
|
||||
|
||||
import { AccountModule } from './account'
|
||||
import { CoreModule } from './core'
|
||||
|
@ -35,17 +27,6 @@ export function metaFactory (): MetaLoader {
|
|||
})
|
||||
}
|
||||
|
||||
type StoreType = {
|
||||
state: InternalStateType,
|
||||
restoreInputValues: () => void,
|
||||
disposeOldHosts: () => void
|
||||
}
|
||||
|
||||
// Application wide providers
|
||||
const APP_PROVIDERS = [
|
||||
AppState
|
||||
]
|
||||
|
||||
@NgModule({
|
||||
bootstrap: [ AppComponent ],
|
||||
declarations: [
|
||||
|
@ -74,65 +55,6 @@ const APP_PROVIDERS = [
|
|||
useFactory: (metaFactory)
|
||||
})
|
||||
],
|
||||
providers: [ // expose our Services and Providers into Angular's dependency injection
|
||||
ENV_PROVIDERS,
|
||||
APP_PROVIDERS
|
||||
]
|
||||
providers: [ ]
|
||||
})
|
||||
export class AppModule {
|
||||
constructor (
|
||||
public appRef: ApplicationRef,
|
||||
public appState: AppState
|
||||
) {}
|
||||
|
||||
public hmrOnInit (store: StoreType) {
|
||||
if (!store || !store.state) {
|
||||
return
|
||||
}
|
||||
console.log('HMR store', JSON.stringify(store, null, 2))
|
||||
/**
|
||||
* Set state
|
||||
*/
|
||||
this.appState._state = store.state
|
||||
/**
|
||||
* Set input values
|
||||
*/
|
||||
if ('restoreInputValues' in store) {
|
||||
let restoreInputValues = store.restoreInputValues
|
||||
setTimeout(restoreInputValues)
|
||||
}
|
||||
|
||||
this.appRef.tick()
|
||||
delete store.state
|
||||
delete store.restoreInputValues
|
||||
}
|
||||
|
||||
public hmrOnDestroy (store: StoreType) {
|
||||
const cmpLocation = this.appRef.components.map((cmp) => cmp.location.nativeElement)
|
||||
/**
|
||||
* Save state
|
||||
*/
|
||||
const state = this.appState._state
|
||||
store.state = state
|
||||
/**
|
||||
* Recreate root elements
|
||||
*/
|
||||
store.disposeOldHosts = createNewHosts(cmpLocation)
|
||||
/**
|
||||
* Save input values
|
||||
*/
|
||||
store.restoreInputValues = createInputTransfer()
|
||||
/**
|
||||
* Remove styles
|
||||
*/
|
||||
removeNgStyles()
|
||||
}
|
||||
|
||||
public hmrAfterDestroy (store: StoreType) {
|
||||
/**
|
||||
* Display new elements
|
||||
*/
|
||||
store.disposeOldHosts()
|
||||
delete store.disposeOldHosts
|
||||
}
|
||||
}
|
||||
export class AppModule {}
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
/* tslint:disable */
|
||||
|
||||
import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'
|
||||
import { Injectable } from '@angular/core'
|
||||
import { Observable } from 'rxjs/Observable'
|
||||
import 'rxjs/add/observable/of'
|
||||
|
||||
@Injectable()
|
||||
export class DataResolver implements Resolve<any> {
|
||||
public resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
|
||||
return Observable.of({ res: 'I am data'})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* An array of services to resolve routes with data.
|
||||
*/
|
||||
export const APP_RESOLVER_PROVIDERS = [
|
||||
DataResolver
|
||||
]
|
|
@ -1,48 +0,0 @@
|
|||
/* tslint:disable */
|
||||
|
||||
import { Injectable } from '@angular/core'
|
||||
|
||||
export type InternalStateType = {
|
||||
[key: string]: any
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
export class AppState {
|
||||
|
||||
public _state: InternalStateType = { }
|
||||
|
||||
/**
|
||||
* Already return a clone of the current state.
|
||||
*/
|
||||
public get state() {
|
||||
return this._state = this._clone(this._state)
|
||||
}
|
||||
/**
|
||||
* Never allow mutation
|
||||
*/
|
||||
public set state(value) {
|
||||
throw new Error('do not mutate the `.state` directly')
|
||||
}
|
||||
|
||||
public get(prop?: any) {
|
||||
/**
|
||||
* Use our state getter for the clone.
|
||||
*/
|
||||
const state = this.state
|
||||
return state.hasOwnProperty(prop) ? state[prop] : state
|
||||
}
|
||||
|
||||
public set(prop: string, value: any) {
|
||||
/**
|
||||
* Internally mutate our state.
|
||||
*/
|
||||
return this._state[prop] = value
|
||||
}
|
||||
|
||||
private _clone(object: InternalStateType) {
|
||||
/**
|
||||
* Simple object clone.
|
||||
*/
|
||||
return JSON.parse(JSON.stringify( object ))
|
||||
}
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'
|
||||
import { Injectable } from '@angular/core'
|
||||
import { Router } from '@angular/router'
|
||||
|
||||
import { NotificationsService } from 'angular2-notifications'
|
||||
import 'rxjs/add/observable/throw'
|
||||
import 'rxjs/add/operator/do'
|
||||
|
@ -13,10 +12,9 @@ import { Subject } from 'rxjs/Subject'
|
|||
import { OAuthClientLocal, User as UserServerModel, UserRefreshToken, UserRole, VideoChannel } from '../../../../../shared'
|
||||
import { Account } from '../../../../../shared/models/accounts'
|
||||
import { UserLogin } from '../../../../../shared/models/users/user-login.model'
|
||||
// Do not use the barrel (dependency loop)
|
||||
import { environment } from '../../../environments/environment'
|
||||
import { RestExtractor } from '../../shared/rest'
|
||||
import { UserConstructorHash } from '../../shared/users/user.model'
|
||||
|
||||
import { AuthStatus } from './auth-status.model'
|
||||
import { AuthUser } from './auth-user.model'
|
||||
|
||||
|
@ -43,9 +41,9 @@ interface UserLoginWithUserInformation extends UserLogin {
|
|||
|
||||
@Injectable()
|
||||
export class AuthService {
|
||||
private static BASE_CLIENT_URL = API_URL + '/api/v1/oauth-clients/local'
|
||||
private static BASE_TOKEN_URL = API_URL + '/api/v1/users/token'
|
||||
private static BASE_USER_INFORMATION_URL = API_URL + '/api/v1/users/me'
|
||||
private static BASE_CLIENT_URL = environment.apiUrl + '/api/v1/oauth-clients/local'
|
||||
private static BASE_TOKEN_URL = environment.apiUrl + '/api/v1/users/token'
|
||||
private static BASE_USER_INFORMATION_URL = environment.apiUrl + '/api/v1/users/me'
|
||||
|
||||
loginChangedSource: Observable<AuthStatus>
|
||||
userInformationLoaded = new ReplaySubject<boolean>(1)
|
||||
|
|
|
@ -11,7 +11,6 @@ import { AuthService } from './auth'
|
|||
import { LoginGuard, UserRightGuard } from './routing'
|
||||
import { ServerService } from './server'
|
||||
import { ConfirmComponent, ConfirmService } from './confirm'
|
||||
import { MenuComponent, MenuAdminComponent } from './menu'
|
||||
import { throwIfAlreadyLoaded } from './module-import-guard'
|
||||
|
||||
@NgModule({
|
||||
|
|
|
@ -2,13 +2,13 @@ import { HttpClient } from '@angular/common/http'
|
|||
import { Injectable } from '@angular/core'
|
||||
import 'rxjs/add/operator/do'
|
||||
import { ReplaySubject } from 'rxjs/ReplaySubject'
|
||||
|
||||
import { ServerConfig } from '../../../../../shared'
|
||||
import { environment } from '../../../environments/environment'
|
||||
|
||||
@Injectable()
|
||||
export class ServerService {
|
||||
private static BASE_CONFIG_URL = API_URL + '/api/v1/config/'
|
||||
private static BASE_VIDEO_URL = API_URL + '/api/v1/videos/'
|
||||
private static BASE_CONFIG_URL = environment.apiUrl + '/api/v1/config/'
|
||||
private static BASE_VIDEO_URL = environment.apiUrl + '/api/v1/videos/'
|
||||
|
||||
videoPrivaciesLoaded = new ReplaySubject<boolean>(1)
|
||||
videoCategoriesLoaded = new ReplaySubject<boolean>(1)
|
||||
|
|
|
@ -1,77 +0,0 @@
|
|||
/* tslint:disable */
|
||||
|
||||
/**
|
||||
* Angular 2
|
||||
*/
|
||||
import {
|
||||
enableDebugTools,
|
||||
disableDebugTools
|
||||
} from '@angular/platform-browser';
|
||||
import {
|
||||
ApplicationRef,
|
||||
enableProdMode
|
||||
} from '@angular/core';
|
||||
/**
|
||||
* Environment Providers
|
||||
*/
|
||||
let PROVIDERS: any[] = [
|
||||
/**
|
||||
* Common env directives
|
||||
*/
|
||||
];
|
||||
|
||||
/**
|
||||
* Angular debug tools in the dev console
|
||||
* https://github.com/angular/angular/blob/86405345b781a9dc2438c0fbe3e9409245647019/TOOLS_JS.md
|
||||
*/
|
||||
let _decorateModuleRef = <T>(value: T): T => { return value; };
|
||||
|
||||
if ('production' === ENV) {
|
||||
enableProdMode();
|
||||
|
||||
/**
|
||||
* Production
|
||||
*/
|
||||
_decorateModuleRef = (modRef: any) => {
|
||||
disableDebugTools();
|
||||
|
||||
return modRef;
|
||||
};
|
||||
|
||||
PROVIDERS = [
|
||||
...PROVIDERS,
|
||||
/**
|
||||
* Custom providers in production.
|
||||
*/
|
||||
];
|
||||
|
||||
} else {
|
||||
|
||||
_decorateModuleRef = (modRef: any) => {
|
||||
const appRef = modRef.injector.get(ApplicationRef);
|
||||
const cmpRef = appRef.components[0];
|
||||
|
||||
let _ng = (<any> window).ng;
|
||||
enableDebugTools(cmpRef);
|
||||
(<any> window).ng.probe = _ng.probe;
|
||||
(<any> window).ng.coreTokens = _ng.coreTokens;
|
||||
return modRef;
|
||||
};
|
||||
|
||||
/**
|
||||
* Development
|
||||
*/
|
||||
PROVIDERS = [
|
||||
...PROVIDERS,
|
||||
/**
|
||||
* Custom providers in development.
|
||||
*/
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
export const decorateModuleRef = _decorateModuleRef;
|
||||
|
||||
export const ENV_PROVIDERS = [
|
||||
...PROVIDERS
|
||||
];
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
#search-video {
|
||||
@include peertube-input-text($search-input-width);
|
||||
margin-right: 15px;
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
input:not([type=submit]) {
|
||||
@include peertube-input-text(340px);
|
||||
display: block;
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
menu {
|
||||
background-color: $black-background;
|
||||
margin: 0;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { Account as ServerAccount } from '../../../../../shared/models/accounts/account.model'
|
||||
import { Avatar } from '../../../../../shared/models/avatars/avatar.model'
|
||||
import { environment } from '../../../environments/environment'
|
||||
|
||||
export class Account implements ServerAccount {
|
||||
id: number
|
||||
|
@ -15,6 +16,6 @@ export class Account implements ServerAccount {
|
|||
static GET_ACCOUNT_AVATAR_PATH (account: Account) {
|
||||
if (account && account.avatar) return account.avatar.path
|
||||
|
||||
return API_URL + '/client/assets/images/default-avatar.png'
|
||||
return environment.apiUrl + '/client/assets/images/default-avatar.png'
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
export * from './host.validator'
|
||||
export * from './host'
|
||||
export * from './user'
|
||||
export * from './video-abuse'
|
||||
export * from './video'
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
export type ValidatorMessage = {
|
||||
[ id: string ]: {
|
||||
[ error: string ]: string
|
||||
}
|
||||
}
|
|
@ -1,11 +1,5 @@
|
|||
import { Validators } from '@angular/forms'
|
||||
|
||||
export type ValidatorMessage = {
|
||||
[ id: string ]: {
|
||||
[ error: string ]: string
|
||||
}
|
||||
}
|
||||
|
||||
export const VIDEO_NAME = {
|
||||
VALIDATORS: [ Validators.required, Validators.minLength(3), Validators.maxLength(120) ],
|
||||
MESSAGES: {
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
.action-button {
|
||||
@include peertube-button-link;
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
import { Injectable } from '@angular/core'
|
||||
import { HttpClient } from '@angular/common/http'
|
||||
import { Injectable } from '@angular/core'
|
||||
import 'rxjs/add/operator/catch'
|
||||
import 'rxjs/add/operator/map'
|
||||
|
||||
import { RestExtractor } from '../rest'
|
||||
import { UserCreate, UserUpdateMe } from '../../../../../shared'
|
||||
import { environment } from '../../../environments/environment'
|
||||
import { RestExtractor } from '../rest'
|
||||
|
||||
@Injectable()
|
||||
export class UserService {
|
||||
static BASE_USERS_URL = API_URL + '/api/v1/users/'
|
||||
static BASE_USERS_URL = environment.apiUrl + '/api/v1/users/'
|
||||
|
||||
constructor (
|
||||
private authHttp: HttpClient,
|
||||
|
|
|
@ -1,19 +1,17 @@
|
|||
import { Injectable } from '@angular/core'
|
||||
import { HttpClient, HttpParams } from '@angular/common/http'
|
||||
import { Injectable } from '@angular/core'
|
||||
import { SortMeta } from 'primeng/components/common/sortmeta'
|
||||
import 'rxjs/add/operator/catch'
|
||||
import 'rxjs/add/operator/map'
|
||||
import { Observable } from 'rxjs/Observable'
|
||||
|
||||
import { SortMeta } from 'primeng/components/common/sortmeta'
|
||||
|
||||
import { AuthService } from '../core'
|
||||
import { ResultList, VideoAbuse } from '../../../../../shared'
|
||||
import { RestExtractor, RestPagination, RestService } from '../rest'
|
||||
import { Utils } from '../utils'
|
||||
import { ResultList, VideoAbuse } from '../../../../../shared'
|
||||
import { environment } from '../../../environments/environment'
|
||||
|
||||
@Injectable()
|
||||
export class VideoAbuseService {
|
||||
private static BASE_VIDEO_ABUSE_URL = API_URL + '/api/v1/videos/'
|
||||
private static BASE_VIDEO_ABUSE_URL = environment.apiUrl + '/api/v1/videos/'
|
||||
|
||||
constructor (
|
||||
private authHttp: HttpClient,
|
||||
|
|
|
@ -1,18 +1,17 @@
|
|||
import { Injectable } from '@angular/core'
|
||||
import { HttpClient, HttpParams } from '@angular/common/http'
|
||||
import { Observable } from 'rxjs/Observable'
|
||||
import { Injectable } from '@angular/core'
|
||||
import { SortMeta } from 'primeng/components/common/sortmeta'
|
||||
import 'rxjs/add/operator/catch'
|
||||
import 'rxjs/add/operator/map'
|
||||
|
||||
import { SortMeta } from 'primeng/components/common/sortmeta'
|
||||
|
||||
import { Observable } from 'rxjs/Observable'
|
||||
import { BlacklistedVideo, ResultList } from '../../../../../shared'
|
||||
import { environment } from '../../../environments/environment'
|
||||
import { RestExtractor, RestPagination, RestService } from '../rest'
|
||||
import { Utils } from '../utils'
|
||||
import { BlacklistedVideo, ResultList } from '../../../../../shared'
|
||||
|
||||
@Injectable()
|
||||
export class VideoBlacklistService {
|
||||
private static BASE_VIDEOS_URL = API_URL + '/api/v1/videos/'
|
||||
private static BASE_VIDEOS_URL = environment.apiUrl + '/api/v1/videos/'
|
||||
|
||||
constructor (
|
||||
private authHttp: HttpClient,
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
.video-miniature {
|
||||
display: inline-block;
|
||||
padding-right: 15px;
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
.video-thumbnail {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { Video as VideoServerModel } from '../../../../../shared'
|
||||
import { User } from '../'
|
||||
import { Video as VideoServerModel } from '../../../../../shared'
|
||||
import { Account } from '../../../../../shared/models/accounts'
|
||||
import { environment } from '../../../environments/environment'
|
||||
|
||||
export class Video implements VideoServerModel {
|
||||
accountName: string
|
||||
|
@ -48,7 +49,7 @@ export class Video implements VideoServerModel {
|
|||
}
|
||||
|
||||
constructor (hash: VideoServerModel) {
|
||||
let absoluteAPIUrl = API_URL
|
||||
let absoluteAPIUrl = environment.apiUrl
|
||||
if (!absoluteAPIUrl) {
|
||||
// The API is on the same domain
|
||||
absoluteAPIUrl = window.location.origin
|
||||
|
|
|
@ -9,9 +9,9 @@ import { UserVideoRateUpdate } from '../../../../../shared/models/videos/user-vi
|
|||
import { UserVideoRate } from '../../../../../shared/models/videos/user-video-rate.model'
|
||||
import { VideoRateType } from '../../../../../shared/models/videos/video-rate.type'
|
||||
import { VideoUpdate } from '../../../../../shared/models/videos/video-update.model'
|
||||
import { environment } from '../../../environments/environment'
|
||||
import { RestExtractor } from '../rest/rest-extractor.service'
|
||||
import { RestService } from '../rest/rest.service'
|
||||
import { Search } from '../header/search.model'
|
||||
import { UserService } from '../users/user.service'
|
||||
import { SortField } from './sort-field.type'
|
||||
import { VideoDetails } from './video-details.model'
|
||||
|
@ -21,7 +21,7 @@ import { Video } from './video.model'
|
|||
|
||||
@Injectable()
|
||||
export class VideoService {
|
||||
private static BASE_VIDEO_URL = API_URL + '/api/v1/videos/'
|
||||
private static BASE_VIDEO_URL = environment.apiUrl + '/api/v1/videos/'
|
||||
|
||||
constructor (
|
||||
private authHttp: HttpClient,
|
||||
|
@ -118,7 +118,7 @@ export class VideoService {
|
|||
|
||||
loadCompleteDescription (descriptionPath: string) {
|
||||
return this.authHttp
|
||||
.get(API_URL + descriptionPath)
|
||||
.get(environment.apiUrl + descriptionPath)
|
||||
.map(res => res['description'])
|
||||
.catch((res) => this.restExtractor.handleError(res))
|
||||
}
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
input:not([type=submit]) {
|
||||
@include peertube-input-text(340px);
|
||||
display: block;
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
export * from './video-add.module'
|
||||
export * from './video-update.module'
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
textarea {
|
||||
@include peertube-input-text(100%);
|
||||
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
.video-edit {
|
||||
height: 100%;
|
||||
|
||||
|
|
|
@ -2,12 +2,10 @@ import { Component, Input, OnInit } from '@angular/core'
|
|||
import { FormBuilder, FormControl, FormGroup } from '@angular/forms'
|
||||
import { ActivatedRoute, Router } from '@angular/router'
|
||||
import { NotificationsService } from 'angular2-notifications'
|
||||
import { ServerService } from 'app/core'
|
||||
import { VideoEdit } from 'app/shared/video/video-edit.model'
|
||||
import 'rxjs/add/observable/forkJoin'
|
||||
import { VideoPrivacy } from '../../../../../shared/models/videos/video-privacy.enum'
|
||||
import { ServerService } from '../../../core/server'
|
||||
import { ValidatorMessage } from '../../../shared/forms/form-validators/validator-message'
|
||||
import {
|
||||
ValidatorMessage,
|
||||
VIDEO_CATEGORY,
|
||||
VIDEO_DESCRIPTION,
|
||||
VIDEO_LANGUAGE,
|
||||
|
@ -15,7 +13,8 @@ import {
|
|||
VIDEO_NAME,
|
||||
VIDEO_PRIVACY,
|
||||
VIDEO_TAGS
|
||||
} from '../../../shared/forms/form-validators'
|
||||
} from '../../../shared/forms/form-validators/video'
|
||||
import { VideoEdit } from '../../../shared/video/video-edit.model'
|
||||
|
||||
@Component({
|
||||
selector: 'my-video-edit',
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
.upload-video-container {
|
||||
border-radius: 3px;
|
||||
background-color: #F7F7F7;
|
||||
|
|
|
@ -3,13 +3,12 @@ import { Component, OnInit, ViewChild } from '@angular/core'
|
|||
import { FormBuilder, FormGroup } from '@angular/forms'
|
||||
import { Router } from '@angular/router'
|
||||
import { NotificationsService } from 'angular2-notifications'
|
||||
import { VideoService } from 'app/shared/video/video.service'
|
||||
import { VideoCreate } from '../../../../../shared'
|
||||
import { VideoPrivacy } from '../../../../../shared/models/videos'
|
||||
import { AuthService, ServerService } from '../../core'
|
||||
import { FormReactive } from '../../shared'
|
||||
import { ValidatorMessage } from '../../shared/forms/form-validators'
|
||||
import { ValidatorMessage } from '../../shared/forms/form-validators/validator-message'
|
||||
import { VideoEdit } from '../../shared/video/video-edit.model'
|
||||
import { VideoService } from '../../shared/video/video.service'
|
||||
|
||||
@Component({
|
||||
selector: 'my-videos-add',
|
||||
|
|
|
@ -3,10 +3,10 @@ import { FormBuilder, FormGroup } from '@angular/forms'
|
|||
import { ActivatedRoute, Router } from '@angular/router'
|
||||
import { NotificationsService } from 'angular2-notifications'
|
||||
import 'rxjs/add/observable/forkJoin'
|
||||
import { VideoPrivacy } from '../../../../../shared/models/videos/video-privacy.enum'
|
||||
import { VideoPrivacy } from '../../../../../shared/models/videos'
|
||||
import { ServerService } from '../../core'
|
||||
import { FormReactive } from '../../shared'
|
||||
import { ValidatorMessage } from '../../shared/forms/form-validators'
|
||||
import { ValidatorMessage } from '../../shared/forms/form-validators/validator-message'
|
||||
import { VideoEdit } from '../../shared/video/video-edit.model'
|
||||
import { VideoService } from '../../shared/video/video.service'
|
||||
|
||||
|
@ -25,8 +25,6 @@ export class VideoUpdateComponent extends FormReactive implements OnInit {
|
|||
validationMessages: ValidatorMessage = {}
|
||||
videoPrivacies = []
|
||||
|
||||
fileError = ''
|
||||
|
||||
constructor (
|
||||
private formBuilder: FormBuilder,
|
||||
private route: ActivatedRoute,
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
export * from './video-watch.module'
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
.resolution-block:not(:first-child) {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
#video-container {
|
||||
background-color: #000;
|
||||
display: flex;
|
||||
|
|
|
@ -2,10 +2,9 @@ import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/co
|
|||
import { ActivatedRoute, Router } from '@angular/router'
|
||||
import { MetaService } from '@ngx-meta/core'
|
||||
import { NotificationsService } from 'angular2-notifications'
|
||||
import { VideoService } from 'app/shared/video/video.service'
|
||||
import { Observable } from 'rxjs/Observable'
|
||||
import { Subscription } from 'rxjs/Subscription'
|
||||
import videojs from 'video.js'
|
||||
import * as videojs from 'video.js'
|
||||
import { UserVideoRateType, VideoRateType } from '../../../../../shared'
|
||||
import '../../../assets/player/peertube-videojs-plugin'
|
||||
import { AuthService, ConfirmService } from '../../core'
|
||||
|
@ -13,6 +12,7 @@ import { VideoBlacklistService } from '../../shared'
|
|||
import { Account } from '../../shared/account/account.model'
|
||||
import { VideoDetails } from '../../shared/video/video-details.model'
|
||||
import { Video } from '../../shared/video/video.model'
|
||||
import { VideoService } from '../../shared/video/video.service'
|
||||
import { MarkdownService } from '../shared'
|
||||
import { VideoDownloadComponent } from './video-download.component'
|
||||
import { VideoReportComponent } from './video-report.component'
|
||||
|
|
|
@ -46,7 +46,7 @@ const videosRoutes: Routes = [
|
|||
},
|
||||
{
|
||||
path: 'upload',
|
||||
loadChildren: 'app/videos/+video-edit#VideoAddModule',
|
||||
loadChildren: 'app/videos/+video-edit/video-add.module#VideoAddModule',
|
||||
data: {
|
||||
meta: {
|
||||
title: 'Upload a video'
|
||||
|
@ -55,7 +55,7 @@ const videosRoutes: Routes = [
|
|||
},
|
||||
{
|
||||
path: 'edit/:uuid',
|
||||
loadChildren: 'app/videos/+video-edit#VideoUpdateModule',
|
||||
loadChildren: 'app/videos/+video-edit/video-update.module#VideoUpdateModule',
|
||||
data: {
|
||||
meta: {
|
||||
title: 'Edit a video'
|
||||
|
@ -69,7 +69,7 @@ const videosRoutes: Routes = [
|
|||
},
|
||||
{
|
||||
path: 'watch/:uuid',
|
||||
loadChildren: 'app/videos/+video-watch#VideoWatchModule',
|
||||
loadChildren: 'app/videos/+video-watch/video-watch.module#VideoWatchModule',
|
||||
data: {
|
||||
preload: 3000
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// Big thanks to: https://github.com/kmoskwiak/videojs-resolution-switcher
|
||||
|
||||
import videojs, { Player } from 'video.js'
|
||||
import * as videojs from 'video.js'
|
||||
import * as WebTorrent from 'webtorrent'
|
||||
import { VideoFile } from '../../../../shared'
|
||||
|
||||
|
@ -27,7 +27,7 @@ const webtorrent = new WebTorrent({ dht: false })
|
|||
|
||||
const MenuItem = videojsUntyped.getComponent('MenuItem')
|
||||
const ResolutionMenuItem = videojsUntyped.extend(MenuItem, {
|
||||
constructor: function (player: Player, options) {
|
||||
constructor: function (player: videojs.Player, options) {
|
||||
options.selectable = true
|
||||
MenuItem.call(this, player, options)
|
||||
|
||||
|
|
|
@ -1,134 +0,0 @@
|
|||
/* tslint: disable */
|
||||
|
||||
/*
|
||||
* Custom Type Definitions
|
||||
* When including 3rd party modules you also need to include the type definition for the module
|
||||
* if they don't provide one within the module. You can try to install it with @types
|
||||
|
||||
npm install @types/node
|
||||
npm install @types/lodash
|
||||
|
||||
* If you can't find the type definition in the registry we can make an ambient/global definition in
|
||||
* this file for now. For example
|
||||
|
||||
declare module 'my-module' {
|
||||
export function doesSomething(value: string): string;
|
||||
}
|
||||
|
||||
* If you are using a CommonJS module that is using module.exports then you will have to write your
|
||||
* types using export = yourObjectOrFunction with a namespace above it
|
||||
* notice how we have to create a namespace that is equal to the function we're
|
||||
* assigning the export to
|
||||
|
||||
declare module 'jwt-decode' {
|
||||
function jwtDecode(token: string): any;
|
||||
namespace jwtDecode {}
|
||||
export = jwtDecode;
|
||||
}
|
||||
|
||||
*
|
||||
* If you're prototying and you will fix the types later you can also declare it as type any
|
||||
*
|
||||
|
||||
declare var assert: any;
|
||||
declare var _: any;
|
||||
declare var $: any;
|
||||
|
||||
*
|
||||
* If you're importing a module that uses Node.js modules which are CommonJS you need to import as
|
||||
* in the files such as main.browser.ts or any file within app/
|
||||
*
|
||||
|
||||
import * as _ from 'lodash'
|
||||
|
||||
* You can include your type definitions in this file until you create one for the @types
|
||||
*
|
||||
*/
|
||||
|
||||
// support NodeJS modules without type definitions
|
||||
declare module '*';
|
||||
|
||||
/*
|
||||
// for legacy tslint etc to understand rename 'modern-lru' with your package
|
||||
// then comment out `declare module '*';`. For each new module copy/paste
|
||||
// this method of creating an `any` module type definition
|
||||
declare module 'modern-lru' {
|
||||
let x: any;
|
||||
export = x;
|
||||
}
|
||||
*/
|
||||
|
||||
// Extra variables that live on Global that will be replaced by webpack DefinePlugin
|
||||
declare var ENV: string;
|
||||
declare var API_URL: string;
|
||||
declare var HMR: boolean;
|
||||
declare var System: SystemJS;
|
||||
|
||||
interface SystemJS {
|
||||
import: (path?: string) => Promise<any>;
|
||||
}
|
||||
|
||||
interface GlobalEnvironment {
|
||||
ENV: string;
|
||||
API_URL: string;
|
||||
HMR: boolean;
|
||||
SystemJS: SystemJS;
|
||||
System: SystemJS;
|
||||
}
|
||||
|
||||
interface Es6PromiseLoader {
|
||||
(id: string): (exportName?: string) => Promise<any>;
|
||||
}
|
||||
|
||||
type FactoryEs6PromiseLoader = () => Es6PromiseLoader;
|
||||
type FactoryPromise = () => Promise<any>;
|
||||
|
||||
type AsyncRoutes = {
|
||||
[component: string]: Es6PromiseLoader |
|
||||
Function |
|
||||
FactoryEs6PromiseLoader |
|
||||
FactoryPromise ;
|
||||
};
|
||||
|
||||
type IdleCallbacks = Es6PromiseLoader |
|
||||
Function |
|
||||
FactoryEs6PromiseLoader |
|
||||
FactoryPromise ;
|
||||
|
||||
interface WebpackModule {
|
||||
hot: {
|
||||
data?: any,
|
||||
idle: any,
|
||||
accept(dependencies?: string | string[], callback?: (updatedDependencies?: any) => void): void;
|
||||
decline(deps?: any | string | string[]): void;
|
||||
dispose(callback?: (data?: any) => void): void;
|
||||
addDisposeHandler(callback?: (data?: any) => void): void;
|
||||
removeDisposeHandler(callback?: (data?: any) => void): void;
|
||||
check(autoApply?: any, callback?: (err?: Error, outdatedModules?: any[]) => void): void;
|
||||
apply(options?: any, callback?: (err?: Error, outdatedModules?: any[]) => void): void;
|
||||
status(callback?: (status?: string) => void): void | string;
|
||||
removeStatusHandler(callback?: (status?: string) => void): void;
|
||||
};
|
||||
}
|
||||
|
||||
interface WebpackRequire {
|
||||
(id: string): any;
|
||||
(paths: string[], callback: (...modules: any[]) => void): void;
|
||||
ensure(ids: string[], callback: (req: WebpackRequire) => void, chunkName?: string): void;
|
||||
context(directory: string, useSubDirectories?: boolean, regExp?: RegExp): WebpackContext;
|
||||
}
|
||||
|
||||
interface WebpackContext extends WebpackRequire {
|
||||
keys(): string[];
|
||||
}
|
||||
|
||||
interface ErrorStackTraceLimit {
|
||||
stackTraceLimit: number;
|
||||
}
|
||||
|
||||
// Extend typings
|
||||
interface NodeRequire extends WebpackRequire {}
|
||||
interface ErrorConstructor extends ErrorStackTraceLimit {}
|
||||
interface NodeRequireFunction extends Es6PromiseLoader {}
|
||||
interface NodeModule extends WebpackModule {}
|
||||
interface Global extends GlobalEnvironment {}
|
|
@ -0,0 +1,4 @@
|
|||
export const environment = {
|
||||
production: true,
|
||||
apiUrl: ''
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
// The file contents for the current environment will overwrite these during build.
|
||||
// The build system defaults to the dev environment which uses `environment.ts`, but if you do
|
||||
// `ng build --env=prod` then `environment.prod.ts` will be used instead.
|
||||
// The list of which env maps to which file can be found in `.angular-cli.json`.
|
||||
|
||||
export const environment = {
|
||||
production: false,
|
||||
apiUrl: 'http://localhost:9000'
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
<title>PeerTube</title>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
@ -14,9 +14,7 @@
|
|||
<link rel="icon" type="image/png" href="/client/assets/images/favicon.png" />
|
||||
|
||||
<!-- base url -->
|
||||
<base href="<%= htmlWebpackPlugin.options.metadata.baseUrl %>">
|
||||
|
||||
<%= htmlWebpackPlugin.files.webpackManifest %>
|
||||
<base href="/">
|
||||
</head>
|
||||
|
||||
<!-- 3. Display the application -->
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
/* tslint: disable */
|
||||
|
||||
import { platformBrowser } from '@angular/platform-browser';
|
||||
import { decorateModuleRef } from './app/environment';
|
||||
|
||||
/**
|
||||
* App Module
|
||||
* our top level module that holds all of our components.
|
||||
*/
|
||||
import { AppModuleNgFactory } from '../compiled/src/app/app.module.ngfactory';
|
||||
|
||||
/**
|
||||
* Bootstrap our Angular app with a top level NgModule.
|
||||
*/
|
||||
export function main(): Promise<any> {
|
||||
return platformBrowser()
|
||||
.bootstrapModuleFactory(AppModuleNgFactory)
|
||||
.then(decorateModuleRef)
|
||||
.catch((err) => console.error(err));
|
||||
}
|
||||
|
||||
switch (document.readyState) {
|
||||
case 'loading':
|
||||
document.addEventListener('DOMContentLoaded', _domReadyHandler, false);
|
||||
break;
|
||||
case 'interactive':
|
||||
case 'complete':
|
||||
default:
|
||||
main();
|
||||
}
|
||||
|
||||
function _domReadyHandler() {
|
||||
document.removeEventListener('DOMContentLoaded', _domReadyHandler, false);
|
||||
main();
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
/* tslint: disable */
|
||||
|
||||
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'
|
||||
import { decorateModuleRef } from './app/environment'
|
||||
import { hmrModule } from '@angularclass/hmr'
|
||||
|
||||
/**
|
||||
* App Module
|
||||
* our top level module that holds all of our components
|
||||
*/
|
||||
import { AppModule } from './app'
|
||||
|
||||
/**
|
||||
* Bootstrap our Angular app with a top level NgModule
|
||||
*/
|
||||
export function main (): Promise<any> {
|
||||
return platformBrowserDynamic()
|
||||
.bootstrapModule(AppModule)
|
||||
.then(decorateModuleRef)
|
||||
.then((ngModuleRef: any) => {
|
||||
// `module` global ref for webpackhmr
|
||||
// Don't run this in Prod
|
||||
return hmrModule(ngModuleRef, module)
|
||||
})
|
||||
.catch((err) => console.error(err))
|
||||
}
|
||||
|
||||
/**
|
||||
* Needed for hmr
|
||||
* in prod this is replace for document ready
|
||||
*/
|
||||
switch (document.readyState) {
|
||||
case 'loading':
|
||||
document.addEventListener('DOMContentLoaded', _domReadyHandler, false)
|
||||
break
|
||||
case 'interactive':
|
||||
case 'complete':
|
||||
default:
|
||||
main()
|
||||
}
|
||||
|
||||
function _domReadyHandler () {
|
||||
document.removeEventListener('DOMContentLoaded', _domReadyHandler, false)
|
||||
main()
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
import { enableProdMode } from '@angular/core';
|
||||
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
||||
|
||||
import { AppModule } from './app/app.module';
|
||||
import { environment } from './environments/environment';
|
||||
|
||||
if (environment.production) {
|
||||
enableProdMode();
|
||||
}
|
||||
|
||||
platformBrowserDynamic().bootstrapModule(AppModule)
|
||||
.catch(err => console.log(err));
|
|
@ -1,38 +0,0 @@
|
|||
/* tslint: disable */
|
||||
|
||||
// Polyfills
|
||||
// (these modules are what are in 'angular2/bundles/angular2-polyfills' so don't use that here)
|
||||
|
||||
require('intl');
|
||||
require('intl/locale-data/jsonp/en.js');
|
||||
import 'ie-shim'; // Internet Explorer
|
||||
|
||||
// Prefer CoreJS over the polyfills above
|
||||
import 'core-js/es6/symbol';
|
||||
import 'core-js/es6/object';
|
||||
import 'core-js/es6/function';
|
||||
import 'core-js/es6/parse-int';
|
||||
import 'core-js/es6/parse-float';
|
||||
import 'core-js/es6/number';
|
||||
import 'core-js/es6/math';
|
||||
import 'core-js/es6/string';
|
||||
import 'core-js/es6/date';
|
||||
import 'core-js/es6/array';
|
||||
import 'core-js/es6/regexp';
|
||||
import 'core-js/es6/map';
|
||||
import 'core-js/es6/set';
|
||||
import 'core-js/es6/weak-map';
|
||||
import 'core-js/es6/weak-set';
|
||||
import 'core-js/es6/typed';
|
||||
import 'core-js/es6/reflect';
|
||||
// see issue https://github.com/AngularClass/angular2-webpack-starter/issues/709
|
||||
// import 'core-js/es6/promise';
|
||||
|
||||
import 'core-js/es7/reflect';
|
||||
import 'zone.js/dist/zone';
|
||||
|
||||
if ('production' !== ENV) {
|
||||
Error.stackTraceLimit = Infinity;
|
||||
|
||||
require('zone.js/dist/long-stack-trace-zone');
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
/**
|
||||
* This file includes polyfills needed by Angular and is loaded before the app.
|
||||
* You can add your own extra polyfills to this file.
|
||||
*
|
||||
* This file is divided into 2 sections:
|
||||
* 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
|
||||
* 2. Application imports. Files imported after ZoneJS that should be loaded before your main
|
||||
* file.
|
||||
*
|
||||
* The current setup is for so-called "evergreen" browsers; the last versions of browsers that
|
||||
* automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
|
||||
* Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
|
||||
*
|
||||
* Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
|
||||
*/
|
||||
|
||||
/***************************************************************************************************
|
||||
* BROWSER POLYFILLS
|
||||
*/
|
||||
|
||||
/** IE9, IE10 and IE11 requires all of the following polyfills. **/
|
||||
// import 'core-js/es6/symbol';
|
||||
// import 'core-js/es6/object';
|
||||
// import 'core-js/es6/function';
|
||||
// import 'core-js/es6/parse-int';
|
||||
// import 'core-js/es6/parse-float';
|
||||
// import 'core-js/es6/number';
|
||||
// import 'core-js/es6/math';
|
||||
// import 'core-js/es6/string';
|
||||
// import 'core-js/es6/date';
|
||||
// import 'core-js/es6/array';
|
||||
// import 'core-js/es6/regexp';
|
||||
// import 'core-js/es6/map';
|
||||
// import 'core-js/es6/weak-map';
|
||||
// import 'core-js/es6/set';
|
||||
|
||||
/** IE10 and IE11 requires the following for NgClass support on SVG elements */
|
||||
// import 'classlist.js'; // Run `npm install --save classlist.js`.
|
||||
|
||||
/** IE10 and IE11 requires the following for the Reflect API. */
|
||||
// import 'core-js/es6/reflect';
|
||||
|
||||
|
||||
/** Evergreen browsers require these. **/
|
||||
// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
|
||||
import 'core-js/es7/reflect';
|
||||
|
||||
|
||||
/**
|
||||
* Required to support Web Animations `@angular/platform-browser/animations`.
|
||||
* Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
|
||||
**/
|
||||
// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
|
||||
|
||||
|
||||
|
||||
/***************************************************************************************************
|
||||
* Zone JS is required by default for Angular itself.
|
||||
*/
|
||||
import 'zone.js/dist/zone'; // Included with Angular CLI.
|
||||
|
||||
|
||||
|
||||
/***************************************************************************************************
|
||||
* APPLICATION IMPORTS
|
||||
*/
|
|
@ -1,5 +1,12 @@
|
|||
$FontPathSourceSansPro: "../fonts/source-sans-pro";
|
||||
@import '~source-sans-pro/source-sans-pro';
|
||||
@import '_variables';
|
||||
@import '_mixins';
|
||||
|
||||
$icon-font-path: '../../node_modules/bootstrap-sass/assets/fonts/bootstrap/';
|
||||
@import '~bootstrap-sass/assets/stylesheets/_bootstrap';
|
||||
|
||||
$FontPathSourceSansPro: '../../node_modules/npm-font-source-sans-pro/fonts';
|
||||
@import '~npm-font-source-sans-pro/source-sans-pro';
|
||||
|
||||
@import '~primeng/resources/themes/bootstrap/theme.css';
|
||||
@import '~primeng/resources/primeng.css';
|
||||
@import '~video.js/dist/video-js.css';
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
@import '_variables';
|
||||
|
||||
@mixin disable-default-a-behaviour {
|
||||
&:hover, &:focus, &:active {
|
||||
text-decoration: none !important;
|
|
@ -1,877 +0,0 @@
|
|||
@import '_variables.scss';
|
||||
@import '_mixins.scss';
|
||||
|
||||
$bootstrap-sass-asset-helper: false !default;
|
||||
//
|
||||
// Variables
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
//== Colors
|
||||
//
|
||||
//## Gray and brand colors for use across Bootstrap.
|
||||
|
||||
$gray-base: #000 !default;
|
||||
$gray-darker: lighten($gray-base, 13.5%) !default; // #222
|
||||
$gray-dark: lighten($gray-base, 20%) !default; // #333
|
||||
$gray: lighten($gray-base, 33.5%) !default; // #555
|
||||
$gray-light: lighten($gray-base, 46.7%) !default; // #777
|
||||
$gray-lighter: lighten($gray-base, 93.5%) !default; // #eee
|
||||
|
||||
$brand-primary: darken(#428bca, 6.5%) !default; // #337ab7
|
||||
$brand-success: #5cb85c !default;
|
||||
$brand-info: #5bc0de !default;
|
||||
$brand-warning: #f0ad4e !default;
|
||||
$brand-danger: #d9534f !default;
|
||||
|
||||
|
||||
//== Scaffolding
|
||||
//
|
||||
//## Settings for some of the most global styles.
|
||||
|
||||
//** Background color for `<body>`.
|
||||
$body-bg: #fff !default;
|
||||
//** Global text color on `<body>`.
|
||||
$text-color: $gray-dark !default;
|
||||
|
||||
//** Global textual link color.
|
||||
$link-color: $brand-primary !default;
|
||||
//** Link hover color set via `darken()` function.
|
||||
$link-hover-color: darken($link-color, 15%) !default;
|
||||
//** Link hover decoration.
|
||||
$link-hover-decoration: underline !default;
|
||||
|
||||
|
||||
//== Typography
|
||||
//
|
||||
//## Font, line-height, and color for body text, headings, and more.
|
||||
|
||||
$font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif !default;
|
||||
$font-family-serif: Georgia, "Times New Roman", Times, serif !default;
|
||||
//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
|
||||
$font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace !default;
|
||||
$font-family-base: $font-family-sans-serif !default;
|
||||
|
||||
$font-size-base: 14px !default;
|
||||
$font-size-large: ceil(($font-size-base * 1.25)) !default; // ~18px
|
||||
$font-size-small: ceil(($font-size-base * 0.85)) !default; // ~12px
|
||||
|
||||
$font-size-h1: floor(($font-size-base * 2.6)) !default; // ~36px
|
||||
$font-size-h2: floor(($font-size-base * 2.15)) !default; // ~30px
|
||||
$font-size-h3: ceil(($font-size-base * 1.7)) !default; // ~24px
|
||||
$font-size-h4: ceil(($font-size-base * 1.25)) !default; // ~18px
|
||||
$font-size-h5: $font-size-base !default;
|
||||
$font-size-h6: ceil(($font-size-base * 0.85)) !default; // ~12px
|
||||
|
||||
//** Unit-less `line-height` for use in components like buttons.
|
||||
$line-height-base: 1.428571429 !default; // 20/14
|
||||
//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
|
||||
$line-height-computed: floor(($font-size-base * $line-height-base)) !default; // ~20px
|
||||
|
||||
//** By default, this inherits from the `<body>`.
|
||||
$headings-font-family: inherit !default;
|
||||
$headings-font-weight: 500 !default;
|
||||
$headings-line-height: 1.1 !default;
|
||||
$headings-color: inherit !default;
|
||||
|
||||
|
||||
//== Iconography
|
||||
//
|
||||
//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
|
||||
|
||||
//** Load fonts from this directory.
|
||||
|
||||
// [converter] If $bootstrap-sass-asset-helper if used, provide path relative to the assets load path.
|
||||
// [converter] This is because some asset helpers, such as Sprockets, do not work with file-relative paths.
|
||||
$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
|
||||
|
||||
//** File name for all font files.
|
||||
$icon-font-name: "glyphicons-halflings-regular" !default;
|
||||
//** Element ID within SVG icon file.
|
||||
$icon-font-svg-id: "glyphicons_halflingsregular" !default;
|
||||
|
||||
|
||||
//== Components
|
||||
//
|
||||
//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
|
||||
|
||||
$padding-base-vertical: 6px !default;
|
||||
$padding-base-horizontal: 12px !default;
|
||||
|
||||
$padding-large-vertical: 10px !default;
|
||||
$padding-large-horizontal: 16px !default;
|
||||
|
||||
$padding-small-vertical: 5px !default;
|
||||
$padding-small-horizontal: 10px !default;
|
||||
|
||||
$padding-xs-vertical: 1px !default;
|
||||
$padding-xs-horizontal: 5px !default;
|
||||
|
||||
$line-height-large: 1.3333333 !default; // extra decimals for Win 8.1 Chrome
|
||||
$line-height-small: 1.5 !default;
|
||||
|
||||
$border-radius-base: 4px !default;
|
||||
$border-radius-large: 6px !default;
|
||||
$border-radius-small: 3px !default;
|
||||
|
||||
//** Global color for active items (e.g., navs or dropdowns).
|
||||
$component-active-color: #fff !default;
|
||||
//** Global background color for active items (e.g., navs or dropdowns).
|
||||
$component-active-bg: $brand-primary !default;
|
||||
|
||||
//** Width of the `border` for generating carets that indicator dropdowns.
|
||||
$caret-width-base: 4px !default;
|
||||
//** Carets increase slightly in size for larger components.
|
||||
$caret-width-large: 5px !default;
|
||||
|
||||
|
||||
//== Tables
|
||||
//
|
||||
//## Customizes the `.table` component with basic values, each used across all table variations.
|
||||
|
||||
//** Padding for `<th>`s and `<td>`s.
|
||||
$table-cell-padding: 8px !default;
|
||||
//** Padding for cells in `.table-condensed`.
|
||||
$table-condensed-cell-padding: 5px !default;
|
||||
|
||||
//** Default background color used for all tables.
|
||||
$table-bg: transparent !default;
|
||||
//** Background color used for `.table-striped`.
|
||||
$table-bg-accent: #f9f9f9 !default;
|
||||
//** Background color used for `.table-hover`.
|
||||
$table-bg-hover: #f5f5f5 !default;
|
||||
$table-bg-active: $table-bg-hover !default;
|
||||
|
||||
//** Border color for table and cell borders.
|
||||
$table-border-color: #ddd !default;
|
||||
|
||||
|
||||
//== Buttons
|
||||
//
|
||||
//## For each of Bootstrap's buttons, define text, background and border color.
|
||||
|
||||
$btn-font-weight: normal !default;
|
||||
|
||||
$btn-default-color: #333 !default;
|
||||
$btn-default-bg: #fff !default;
|
||||
$btn-default-border: #ccc !default;
|
||||
|
||||
$btn-primary-color: #fff !default;
|
||||
$btn-primary-bg: $brand-primary !default;
|
||||
$btn-primary-border: darken($btn-primary-bg, 5%) !default;
|
||||
|
||||
$btn-success-color: #fff !default;
|
||||
$btn-success-bg: $brand-success !default;
|
||||
$btn-success-border: darken($btn-success-bg, 5%) !default;
|
||||
|
||||
$btn-info-color: #fff !default;
|
||||
$btn-info-bg: $brand-info !default;
|
||||
$btn-info-border: darken($btn-info-bg, 5%) !default;
|
||||
|
||||
$btn-warning-color: #fff !default;
|
||||
$btn-warning-bg: $brand-warning !default;
|
||||
$btn-warning-border: darken($btn-warning-bg, 5%) !default;
|
||||
|
||||
$btn-danger-color: #fff !default;
|
||||
$btn-danger-bg: $brand-danger !default;
|
||||
$btn-danger-border: darken($btn-danger-bg, 5%) !default;
|
||||
|
||||
$btn-link-disabled-color: $gray-light !default;
|
||||
|
||||
// Allows for customizing button radius independently from global border radius
|
||||
$btn-border-radius-base: $border-radius-base !default;
|
||||
$btn-border-radius-large: $border-radius-large !default;
|
||||
$btn-border-radius-small: $border-radius-small !default;
|
||||
|
||||
|
||||
//== Forms
|
||||
//
|
||||
//##
|
||||
|
||||
//** `<input>` background color
|
||||
$input-bg: #fff !default;
|
||||
//** `<input disabled>` background color
|
||||
$input-bg-disabled: $gray-lighter !default;
|
||||
|
||||
//** Text color for `<input>`s
|
||||
$input-color: $gray !default;
|
||||
//** `<input>` border color
|
||||
$input-border: #ccc !default;
|
||||
|
||||
// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
|
||||
//** Default `.form-control` border radius
|
||||
// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
|
||||
$input-border-radius: $border-radius-base !default;
|
||||
//** Large `.form-control` border radius
|
||||
$input-border-radius-large: $border-radius-large !default;
|
||||
//** Small `.form-control` border radius
|
||||
$input-border-radius-small: $border-radius-small !default;
|
||||
|
||||
//** Border color for inputs on focus
|
||||
$input-border-focus: #66afe9 !default;
|
||||
|
||||
//** Placeholder text color
|
||||
$input-color-placeholder: #999 !default;
|
||||
|
||||
//** Default `.form-control` height
|
||||
$input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
|
||||
//** Large `.form-control` height
|
||||
$input-height-large: (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
|
||||
//** Small `.form-control` height
|
||||
$input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
|
||||
|
||||
//** `.form-group` margin
|
||||
$form-group-margin-bottom: 15px !default;
|
||||
|
||||
$legend-color: $gray-dark !default;
|
||||
$legend-border-color: #e5e5e5 !default;
|
||||
|
||||
//** Background color for textual input addons
|
||||
$input-group-addon-bg: $gray-lighter !default;
|
||||
//** Border color for textual input addons
|
||||
$input-group-addon-border-color: $input-border !default;
|
||||
|
||||
//** Disabled cursor for form controls and buttons.
|
||||
$cursor-disabled: not-allowed !default;
|
||||
|
||||
|
||||
//== Dropdowns
|
||||
//
|
||||
//## Dropdown menu container and contents.
|
||||
|
||||
//** Background for the dropdown menu.
|
||||
$dropdown-bg: #fff !default;
|
||||
//** Dropdown menu `border-color`.
|
||||
$dropdown-border: rgba(0,0,0,.15) !default;
|
||||
//** Dropdown menu `border-color` **for IE8**.
|
||||
$dropdown-fallback-border: #ccc !default;
|
||||
//** Divider color for between dropdown items.
|
||||
$dropdown-divider-bg: #e5e5e5 !default;
|
||||
|
||||
//** Dropdown link text color.
|
||||
$dropdown-link-color: $gray-dark !default;
|
||||
//** Hover color for dropdown links.
|
||||
$dropdown-link-hover-color: darken($gray-dark, 5%) !default;
|
||||
//** Hover background for dropdown links.
|
||||
$dropdown-link-hover-bg: #f5f5f5 !default;
|
||||
|
||||
//** Active dropdown menu item text color.
|
||||
$dropdown-link-active-color: $component-active-color !default;
|
||||
//** Active dropdown menu item background color.
|
||||
$dropdown-link-active-bg: $component-active-bg !default;
|
||||
|
||||
//** Disabled dropdown menu item background color.
|
||||
$dropdown-link-disabled-color: $gray-light !default;
|
||||
|
||||
//** Text color for headers within dropdown menus.
|
||||
$dropdown-header-color: $gray-light !default;
|
||||
|
||||
//** Deprecated `$dropdown-caret-color` as of v3.1.0
|
||||
$dropdown-caret-color: #000 !default;
|
||||
|
||||
|
||||
//-- Z-index master list
|
||||
//
|
||||
// Warning: Avoid customizing these values. They're used for a bird's eye view
|
||||
// of components dependent on the z-axis and are designed to all work together.
|
||||
//
|
||||
// Note: These variables are not generated into the Customizer.
|
||||
|
||||
$zindex-navbar: 1000 !default;
|
||||
$zindex-dropdown: 1000 !default;
|
||||
$zindex-popover: 1060 !default;
|
||||
$zindex-tooltip: 1070 !default;
|
||||
$zindex-navbar-fixed: 1030 !default;
|
||||
$zindex-modal-background: 1040 !default;
|
||||
$zindex-modal: 1050 !default;
|
||||
|
||||
|
||||
//== Media queries breakpoints
|
||||
//
|
||||
//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
|
||||
|
||||
// Extra small screen / phone
|
||||
//** Deprecated `$screen-xs` as of v3.0.1
|
||||
$screen-xs: 480px !default;
|
||||
//** Deprecated `$screen-xs-min` as of v3.2.0
|
||||
$screen-xs-min: $screen-xs !default;
|
||||
//** Deprecated `$screen-phone` as of v3.0.1
|
||||
$screen-phone: $screen-xs-min !default;
|
||||
|
||||
// Small screen / tablet
|
||||
//** Deprecated `$screen-sm` as of v3.0.1
|
||||
$screen-sm: 768px !default;
|
||||
$screen-sm-min: $screen-sm !default;
|
||||
//** Deprecated `$screen-tablet` as of v3.0.1
|
||||
$screen-tablet: $screen-sm-min !default;
|
||||
|
||||
// Medium screen / desktop
|
||||
//** Deprecated `$screen-md` as of v3.0.1
|
||||
$screen-md: 992px !default;
|
||||
$screen-md-min: $screen-md !default;
|
||||
//** Deprecated `$screen-desktop` as of v3.0.1
|
||||
$screen-desktop: $screen-md-min !default;
|
||||
|
||||
// Large screen / wide desktop
|
||||
//** Deprecated `$screen-lg` as of v3.0.1
|
||||
$screen-lg: 1200px !default;
|
||||
$screen-lg-min: $screen-lg !default;
|
||||
//** Deprecated `$screen-lg-desktop` as of v3.0.1
|
||||
$screen-lg-desktop: $screen-lg-min !default;
|
||||
|
||||
// So media queries don't overlap when required, provide a maximum
|
||||
$screen-xs-max: ($screen-sm-min - 1) !default;
|
||||
$screen-sm-max: ($screen-md-min - 1) !default;
|
||||
$screen-md-max: ($screen-lg-min - 1) !default;
|
||||
|
||||
|
||||
//== Grid system
|
||||
//
|
||||
//## Define your custom responsive grid.
|
||||
|
||||
//** Number of columns in the grid.
|
||||
$grid-columns: 12 !default;
|
||||
//** Padding between columns. Gets divided in half for the left and right.
|
||||
$grid-gutter-width: 30px !default;
|
||||
// Navbar collapse
|
||||
//** Point at which the navbar becomes uncollapsed.
|
||||
$grid-float-breakpoint: $screen-sm-min !default;
|
||||
//** Point at which the navbar begins collapsing.
|
||||
$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
|
||||
|
||||
|
||||
//== Container sizes
|
||||
//
|
||||
//## Define the maximum width of `.container` for different screen sizes.
|
||||
|
||||
// Small screen / tablet
|
||||
$container-tablet: (720px + $grid-gutter-width) !default;
|
||||
//** For `$screen-sm-min` and up.
|
||||
$container-sm: $container-tablet !default;
|
||||
|
||||
// Medium screen / desktop
|
||||
$container-desktop: (940px + $grid-gutter-width) !default;
|
||||
//** For `$screen-md-min` and up.
|
||||
$container-md: $container-desktop !default;
|
||||
|
||||
// Large screen / wide desktop
|
||||
$container-large-desktop: (1140px + $grid-gutter-width) !default;
|
||||
//** For `$screen-lg-min` and up.
|
||||
$container-lg: $container-large-desktop !default;
|
||||
|
||||
|
||||
//== Navbar
|
||||
//
|
||||
//##
|
||||
|
||||
// Basics of a navbar
|
||||
$navbar-height: 50px !default;
|
||||
$navbar-margin-bottom: $line-height-computed !default;
|
||||
$navbar-border-radius: $border-radius-base !default;
|
||||
$navbar-padding-horizontal: floor(($grid-gutter-width / 2)) !default;
|
||||
$navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2) !default;
|
||||
$navbar-collapse-max-height: 340px !default;
|
||||
|
||||
$navbar-default-color: #777 !default;
|
||||
$navbar-default-bg: #f8f8f8 !default;
|
||||
$navbar-default-border: darken($navbar-default-bg, 6.5%) !default;
|
||||
|
||||
// Navbar links
|
||||
$navbar-default-link-color: #777 !default;
|
||||
$navbar-default-link-hover-color: #333 !default;
|
||||
$navbar-default-link-hover-bg: transparent !default;
|
||||
$navbar-default-link-active-color: #555 !default;
|
||||
$navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%) !default;
|
||||
$navbar-default-link-disabled-color: #ccc !default;
|
||||
$navbar-default-link-disabled-bg: transparent !default;
|
||||
|
||||
// Navbar brand label
|
||||
$navbar-default-brand-color: $navbar-default-link-color !default;
|
||||
$navbar-default-brand-hover-color: darken($navbar-default-brand-color, 10%) !default;
|
||||
$navbar-default-brand-hover-bg: transparent !default;
|
||||
|
||||
// Navbar toggle
|
||||
$navbar-default-toggle-hover-bg: #ddd !default;
|
||||
$navbar-default-toggle-icon-bar-bg: #888 !default;
|
||||
$navbar-default-toggle-border-color: #ddd !default;
|
||||
|
||||
|
||||
//=== Inverted navbar
|
||||
// Reset inverted navbar basics
|
||||
$navbar-inverse-color: lighten($gray-light, 15%) !default;
|
||||
$navbar-inverse-bg: #222 !default;
|
||||
$navbar-inverse-border: darken($navbar-inverse-bg, 10%) !default;
|
||||
|
||||
// Inverted navbar links
|
||||
$navbar-inverse-link-color: lighten($gray-light, 15%) !default;
|
||||
$navbar-inverse-link-hover-color: #fff !default;
|
||||
$navbar-inverse-link-hover-bg: transparent !default;
|
||||
$navbar-inverse-link-active-color: $navbar-inverse-link-hover-color !default;
|
||||
$navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%) !default;
|
||||
$navbar-inverse-link-disabled-color: #444 !default;
|
||||
$navbar-inverse-link-disabled-bg: transparent !default;
|
||||
|
||||
// Inverted navbar brand label
|
||||
$navbar-inverse-brand-color: $navbar-inverse-link-color !default;
|
||||
$navbar-inverse-brand-hover-color: #fff !default;
|
||||
$navbar-inverse-brand-hover-bg: transparent !default;
|
||||
|
||||
// Inverted navbar toggle
|
||||
$navbar-inverse-toggle-hover-bg: #333 !default;
|
||||
$navbar-inverse-toggle-icon-bar-bg: #fff !default;
|
||||
$navbar-inverse-toggle-border-color: #333 !default;
|
||||
|
||||
|
||||
//== Navs
|
||||
//
|
||||
//##
|
||||
|
||||
//=== Shared nav styles
|
||||
$nav-link-padding: 10px 15px !default;
|
||||
$nav-link-hover-bg: $gray-lighter !default;
|
||||
|
||||
$nav-disabled-link-color: $gray-light !default;
|
||||
$nav-disabled-link-hover-color: $gray-light !default;
|
||||
|
||||
//== Tabs
|
||||
$nav-tabs-border-color: #ddd !default;
|
||||
|
||||
$nav-tabs-link-hover-border-color: $gray-lighter !default;
|
||||
|
||||
$nav-tabs-active-link-hover-bg: $body-bg !default;
|
||||
$nav-tabs-active-link-hover-color: $gray !default;
|
||||
$nav-tabs-active-link-hover-border-color: #ddd !default;
|
||||
|
||||
$nav-tabs-justified-link-border-color: #ddd !default;
|
||||
$nav-tabs-justified-active-link-border-color: $body-bg !default;
|
||||
|
||||
//== Pills
|
||||
$nav-pills-border-radius: $border-radius-base !default;
|
||||
$nav-pills-active-link-hover-bg: $component-active-bg !default;
|
||||
$nav-pills-active-link-hover-color: $component-active-color !default;
|
||||
|
||||
|
||||
//== Pagination
|
||||
//
|
||||
//##
|
||||
|
||||
$pagination-color: $link-color !default;
|
||||
$pagination-bg: #fff !default;
|
||||
$pagination-border: #ddd !default;
|
||||
|
||||
$pagination-hover-color: $link-hover-color !default;
|
||||
$pagination-hover-bg: $gray-lighter !default;
|
||||
$pagination-hover-border: #ddd !default;
|
||||
|
||||
$pagination-active-color: #fff !default;
|
||||
$pagination-active-bg: $brand-primary !default;
|
||||
$pagination-active-border: $brand-primary !default;
|
||||
|
||||
$pagination-disabled-color: $gray-light !default;
|
||||
$pagination-disabled-bg: #fff !default;
|
||||
$pagination-disabled-border: #ddd !default;
|
||||
|
||||
|
||||
//== Pager
|
||||
//
|
||||
//##
|
||||
|
||||
$pager-bg: $pagination-bg !default;
|
||||
$pager-border: $pagination-border !default;
|
||||
$pager-border-radius: 15px !default;
|
||||
|
||||
$pager-hover-bg: $pagination-hover-bg !default;
|
||||
|
||||
$pager-active-bg: $pagination-active-bg !default;
|
||||
$pager-active-color: $pagination-active-color !default;
|
||||
|
||||
$pager-disabled-color: $pagination-disabled-color !default;
|
||||
|
||||
|
||||
//== Jumbotron
|
||||
//
|
||||
//##
|
||||
|
||||
$jumbotron-padding: 30px !default;
|
||||
$jumbotron-color: inherit !default;
|
||||
$jumbotron-bg: $gray-lighter !default;
|
||||
$jumbotron-heading-color: inherit !default;
|
||||
$jumbotron-font-size: ceil(($font-size-base * 1.5)) !default;
|
||||
$jumbotron-heading-font-size: ceil(($font-size-base * 4.5)) !default;
|
||||
|
||||
|
||||
//== Form states and alerts
|
||||
//
|
||||
//## Define colors for form feedback states and, by default, alerts.
|
||||
|
||||
$state-success-text: #3c763d !default;
|
||||
$state-success-bg: #dff0d8 !default;
|
||||
$state-success-border: darken(adjust-hue($state-success-bg, -10), 5%) !default;
|
||||
|
||||
$state-info-text: #31708f !default;
|
||||
$state-info-bg: #d9edf7 !default;
|
||||
$state-info-border: darken(adjust-hue($state-info-bg, -10), 7%) !default;
|
||||
|
||||
$state-warning-text: #8a6d3b !default;
|
||||
$state-warning-bg: #fcf8e3 !default;
|
||||
$state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%) !default;
|
||||
|
||||
$state-danger-text: #a94442 !default;
|
||||
$state-danger-bg: #f2dede !default;
|
||||
$state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%) !default;
|
||||
|
||||
|
||||
//== Tooltips
|
||||
//
|
||||
//##
|
||||
|
||||
//** Tooltip max width
|
||||
$tooltip-max-width: 200px !default;
|
||||
//** Tooltip text color
|
||||
$tooltip-color: #fff !default;
|
||||
//** Tooltip background color
|
||||
$tooltip-bg: #000 !default;
|
||||
$tooltip-opacity: .9 !default;
|
||||
|
||||
//** Tooltip arrow width
|
||||
$tooltip-arrow-width: 5px !default;
|
||||
//** Tooltip arrow color
|
||||
$tooltip-arrow-color: $tooltip-bg !default;
|
||||
|
||||
|
||||
//== Popovers
|
||||
//
|
||||
//##
|
||||
|
||||
//** Popover body background color
|
||||
$popover-bg: #fff !default;
|
||||
//** Popover maximum width
|
||||
$popover-max-width: 276px !default;
|
||||
//** Popover border color
|
||||
$popover-border-color: rgba(0,0,0,.2) !default;
|
||||
//** Popover fallback border color
|
||||
$popover-fallback-border-color: #ccc !default;
|
||||
|
||||
//** Popover title background color
|
||||
$popover-title-bg: darken($popover-bg, 3%) !default;
|
||||
|
||||
//** Popover arrow width
|
||||
$popover-arrow-width: 10px !default;
|
||||
//** Popover arrow color
|
||||
$popover-arrow-color: $popover-bg !default;
|
||||
|
||||
//** Popover outer arrow width
|
||||
$popover-arrow-outer-width: ($popover-arrow-width + 1) !default;
|
||||
//** Popover outer arrow color
|
||||
$popover-arrow-outer-color: fade_in($popover-border-color, 0.05) !default;
|
||||
//** Popover outer arrow fallback color
|
||||
$popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%) !default;
|
||||
|
||||
|
||||
//== Labels
|
||||
//
|
||||
//##
|
||||
|
||||
//** Default label background color
|
||||
$label-default-bg: $gray-light !default;
|
||||
//** Primary label background color
|
||||
$label-primary-bg: $brand-primary !default;
|
||||
//** Success label background color
|
||||
$label-success-bg: $brand-success !default;
|
||||
//** Info label background color
|
||||
$label-info-bg: $brand-info !default;
|
||||
//** Warning label background color
|
||||
$label-warning-bg: $brand-warning !default;
|
||||
//** Danger label background color
|
||||
$label-danger-bg: $brand-danger !default;
|
||||
|
||||
//** Default label text color
|
||||
$label-color: #fff !default;
|
||||
//** Default text color of a linked label
|
||||
$label-link-hover-color: #fff !default;
|
||||
|
||||
|
||||
//== Modals
|
||||
//
|
||||
//##
|
||||
|
||||
//** Padding applied to the modal body
|
||||
$modal-inner-padding: 15px !default;
|
||||
|
||||
//** Padding applied to the modal title
|
||||
$modal-title-padding: 15px !default;
|
||||
//** Modal title line-height
|
||||
$modal-title-line-height: $line-height-base !default;
|
||||
|
||||
//** Background color of modal content area
|
||||
$modal-content-bg: #fff !default;
|
||||
//** Modal content border color
|
||||
$modal-content-border-color: rgba(0,0,0,.2) !default;
|
||||
//** Modal content border color **for IE8**
|
||||
$modal-content-fallback-border-color: #999 !default;
|
||||
|
||||
//** Modal backdrop background color
|
||||
$modal-backdrop-bg: #000 !default;
|
||||
//** Modal backdrop opacity
|
||||
$modal-backdrop-opacity: .5 !default;
|
||||
//** Modal header border color
|
||||
$modal-header-border-color: #e5e5e5 !default;
|
||||
//** Modal footer border color
|
||||
$modal-footer-border-color: $modal-header-border-color !default;
|
||||
|
||||
$modal-lg: 900px !default;
|
||||
$modal-md: 600px !default;
|
||||
$modal-sm: 300px !default;
|
||||
|
||||
|
||||
//== Alerts
|
||||
//
|
||||
//## Define alert colors, border radius, and padding.
|
||||
|
||||
$alert-padding: 15px !default;
|
||||
$alert-border-radius: $border-radius-base !default;
|
||||
$alert-link-font-weight: bold !default;
|
||||
|
||||
$alert-success-bg: $state-success-bg !default;
|
||||
$alert-success-text: $state-success-text !default;
|
||||
$alert-success-border: $state-success-border !default;
|
||||
|
||||
$alert-info-bg: $state-info-bg !default;
|
||||
$alert-info-text: $state-info-text !default;
|
||||
$alert-info-border: $state-info-border !default;
|
||||
|
||||
$alert-warning-bg: $state-warning-bg !default;
|
||||
$alert-warning-text: $state-warning-text !default;
|
||||
$alert-warning-border: $state-warning-border !default;
|
||||
|
||||
$alert-danger-bg: $state-danger-bg !default;
|
||||
$alert-danger-text: $state-danger-text !default;
|
||||
$alert-danger-border: $state-danger-border !default;
|
||||
|
||||
|
||||
//== Progress bars
|
||||
//
|
||||
//##
|
||||
|
||||
//** Background color of the whole progress component
|
||||
$progress-bg: #f5f5f5 !default;
|
||||
//** Progress bar text color
|
||||
$progress-bar-color: #fff !default;
|
||||
//** Variable for setting rounded corners on progress bar.
|
||||
$progress-border-radius: $border-radius-base !default;
|
||||
|
||||
//** Default progress bar color
|
||||
$progress-bar-bg: $brand-primary !default;
|
||||
//** Success progress bar color
|
||||
$progress-bar-success-bg: $brand-success !default;
|
||||
//** Warning progress bar color
|
||||
$progress-bar-warning-bg: $brand-warning !default;
|
||||
//** Danger progress bar color
|
||||
$progress-bar-danger-bg: $brand-danger !default;
|
||||
//** Info progress bar color
|
||||
$progress-bar-info-bg: $brand-info !default;
|
||||
|
||||
|
||||
//== List group
|
||||
//
|
||||
//##
|
||||
|
||||
//** Background color on `.list-group-item`
|
||||
$list-group-bg: #fff !default;
|
||||
//** `.list-group-item` border color
|
||||
$list-group-border: #ddd !default;
|
||||
//** List group border radius
|
||||
$list-group-border-radius: $border-radius-base !default;
|
||||
|
||||
//** Background color of single list items on hover
|
||||
$list-group-hover-bg: #f5f5f5 !default;
|
||||
//** Text color of active list items
|
||||
$list-group-active-color: $component-active-color !default;
|
||||
//** Background color of active list items
|
||||
$list-group-active-bg: $component-active-bg !default;
|
||||
//** Border color of active list elements
|
||||
$list-group-active-border: $list-group-active-bg !default;
|
||||
//** Text color for content within active list items
|
||||
$list-group-active-text-color: lighten($list-group-active-bg, 40%) !default;
|
||||
|
||||
//** Text color of disabled list items
|
||||
$list-group-disabled-color: $gray-light !default;
|
||||
//** Background color of disabled list items
|
||||
$list-group-disabled-bg: $gray-lighter !default;
|
||||
//** Text color for content within disabled list items
|
||||
$list-group-disabled-text-color: $list-group-disabled-color !default;
|
||||
|
||||
$list-group-link-color: #555 !default;
|
||||
$list-group-link-hover-color: $list-group-link-color !default;
|
||||
$list-group-link-heading-color: #333 !default;
|
||||
|
||||
|
||||
//== Panels
|
||||
//
|
||||
//##
|
||||
|
||||
$panel-bg: #fff !default;
|
||||
$panel-body-padding: 15px !default;
|
||||
$panel-heading-padding: 10px 15px !default;
|
||||
$panel-footer-padding: $panel-heading-padding !default;
|
||||
$panel-border-radius: $border-radius-base !default;
|
||||
|
||||
//** Border color for elements within panels
|
||||
$panel-inner-border: #ddd !default;
|
||||
$panel-footer-bg: #f5f5f5 !default;
|
||||
|
||||
$panel-default-text: $gray-dark !default;
|
||||
$panel-default-border: #ddd !default;
|
||||
$panel-default-heading-bg: #f5f5f5 !default;
|
||||
|
||||
$panel-primary-text: #fff !default;
|
||||
$panel-primary-border: $brand-primary !default;
|
||||
$panel-primary-heading-bg: $brand-primary !default;
|
||||
|
||||
$panel-success-text: $state-success-text !default;
|
||||
$panel-success-border: $state-success-border !default;
|
||||
$panel-success-heading-bg: $state-success-bg !default;
|
||||
|
||||
$panel-info-text: $state-info-text !default;
|
||||
$panel-info-border: $state-info-border !default;
|
||||
$panel-info-heading-bg: $state-info-bg !default;
|
||||
|
||||
$panel-warning-text: $state-warning-text !default;
|
||||
$panel-warning-border: $state-warning-border !default;
|
||||
$panel-warning-heading-bg: $state-warning-bg !default;
|
||||
|
||||
$panel-danger-text: $state-danger-text !default;
|
||||
$panel-danger-border: $state-danger-border !default;
|
||||
$panel-danger-heading-bg: $state-danger-bg !default;
|
||||
|
||||
|
||||
//== Thumbnails
|
||||
//
|
||||
//##
|
||||
|
||||
//** Padding around the thumbnail image
|
||||
$thumbnail-padding: 4px !default;
|
||||
//** Thumbnail background color
|
||||
$thumbnail-bg: $body-bg !default;
|
||||
//** Thumbnail border color
|
||||
$thumbnail-border: #ddd !default;
|
||||
//** Thumbnail border radius
|
||||
$thumbnail-border-radius: $border-radius-base !default;
|
||||
|
||||
//** Custom text color for thumbnail captions
|
||||
$thumbnail-caption-color: $text-color !default;
|
||||
//** Padding around the thumbnail caption
|
||||
$thumbnail-caption-padding: 9px !default;
|
||||
|
||||
|
||||
//== Wells
|
||||
//
|
||||
//##
|
||||
|
||||
$well-bg: #f5f5f5 !default;
|
||||
$well-border: darken($well-bg, 7%) !default;
|
||||
|
||||
|
||||
//== Badges
|
||||
//
|
||||
//##
|
||||
|
||||
$badge-color: #fff !default;
|
||||
//** Linked badge text color on hover
|
||||
$badge-link-hover-color: #fff !default;
|
||||
$badge-bg: $gray-light !default;
|
||||
|
||||
//** Badge text color in active nav link
|
||||
$badge-active-color: $link-color !default;
|
||||
//** Badge background color in active nav link
|
||||
$badge-active-bg: #fff !default;
|
||||
|
||||
$badge-font-weight: bold !default;
|
||||
$badge-line-height: 1 !default;
|
||||
$badge-border-radius: 10px !default;
|
||||
|
||||
|
||||
//== Breadcrumbs
|
||||
//
|
||||
//##
|
||||
|
||||
$breadcrumb-padding-vertical: 8px !default;
|
||||
$breadcrumb-padding-horizontal: 15px !default;
|
||||
//** Breadcrumb background color
|
||||
$breadcrumb-bg: #f5f5f5 !default;
|
||||
//** Breadcrumb text color
|
||||
$breadcrumb-color: #ccc !default;
|
||||
//** Text color of current page in the breadcrumb
|
||||
$breadcrumb-active-color: $gray-light !default;
|
||||
//** Textual separator for between breadcrumb elements
|
||||
$breadcrumb-separator: "/" !default;
|
||||
|
||||
|
||||
//== Carousel
|
||||
//
|
||||
//##
|
||||
|
||||
$carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) !default;
|
||||
|
||||
$carousel-control-color: #fff !default;
|
||||
$carousel-control-width: 15% !default;
|
||||
$carousel-control-opacity: .5 !default;
|
||||
$carousel-control-font-size: 20px !default;
|
||||
|
||||
$carousel-indicator-active-bg: #fff !default;
|
||||
$carousel-indicator-border-color: #fff !default;
|
||||
|
||||
$carousel-caption-color: #fff !default;
|
||||
|
||||
|
||||
//== Close
|
||||
//
|
||||
//##
|
||||
|
||||
$close-font-weight: bold !default;
|
||||
$close-color: #000 !default;
|
||||
$close-text-shadow: 0 1px 0 #fff !default;
|
||||
|
||||
|
||||
//== Code
|
||||
//
|
||||
//##
|
||||
|
||||
$code-color: #c7254e !default;
|
||||
$code-bg: #f9f2f4 !default;
|
||||
|
||||
$kbd-color: #fff !default;
|
||||
$kbd-bg: #333 !default;
|
||||
|
||||
$pre-bg: #f5f5f5 !default;
|
||||
$pre-color: $gray-dark !default;
|
||||
$pre-border-color: #ccc !default;
|
||||
$pre-scrollable-max-height: 340px !default;
|
||||
|
||||
|
||||
//== Type
|
||||
//
|
||||
//##
|
||||
|
||||
//** Horizontal offset for forms and lists.
|
||||
$component-offset-horizontal: 180px !default;
|
||||
//** Text muted color
|
||||
$text-muted: $gray-light !default;
|
||||
//** Abbreviations and acronyms border color
|
||||
$abbr-border-color: $gray-light !default;
|
||||
//** Headings small color
|
||||
$headings-small-color: $gray-light !default;
|
||||
//** Blockquote small color
|
||||
$blockquote-small-color: $gray-light !default;
|
||||
//** Blockquote font size
|
||||
$blockquote-font-size: ($font-size-base * 1.25) !default;
|
||||
//** Blockquote border color
|
||||
$blockquote-border-color: $gray-lighter !default;
|
||||
//** Page header border color
|
||||
$page-header-border-color: $gray-lighter !default;
|
||||
//** Width of horizontal description list titles
|
||||
$dl-horizontal-offset: $component-offset-horizontal !default;
|
||||
//** Point at which .dl-horizontal becomes horizontal
|
||||
$dl-horizontal-breakpoint: $grid-float-breakpoint !default;
|
||||
//** Horizontal line color.
|
||||
$hr-border: $gray-lighter !default;
|
|
@ -1,6 +1,6 @@
|
|||
import './embed.scss'
|
||||
|
||||
import videojs from 'video.js'
|
||||
import * as videojs from 'video.js'
|
||||
import '../../assets/player/peertube-videojs-plugin'
|
||||
import 'videojs-dock/dist/videojs-dock.es.js'
|
||||
import { VideoDetails } from '../../../../shared'
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"extends": "../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../out-tsc/app",
|
||||
"baseUrl": "./",
|
||||
"module": "es2015",
|
||||
"types": []
|
||||
},
|
||||
"exclude": [
|
||||
"test.ts",
|
||||
"**/*.spec.ts"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
/* SystemJS module definition */
|
||||
declare var module: NodeModule;
|
||||
interface NodeModule {
|
||||
id: string;
|
||||
}
|
|
@ -1,32 +1,19 @@
|
|||
{
|
||||
"compileOnSave": false,
|
||||
"compilerOptions": {
|
||||
"target": "es5",
|
||||
"module": "commonjs",
|
||||
"outDir": "./dist/out-tsc",
|
||||
"sourceMap": true,
|
||||
"declaration": false,
|
||||
"moduleResolution": "node",
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"sourceMap": true,
|
||||
"noEmitHelpers": true,
|
||||
"importHelpers": true,
|
||||
"strictNullChecks": false,
|
||||
"baseUrl": "./src",
|
||||
"paths": [
|
||||
"target": "es5",
|
||||
"typeRoots": [
|
||||
"node_modules/@types"
|
||||
],
|
||||
"lib": [
|
||||
"dom",
|
||||
"es6"
|
||||
"es2017",
|
||||
"dom"
|
||||
]
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"dist"
|
||||
],
|
||||
"awesomeTypescriptLoaderOptions": {
|
||||
"forkChecker": true,
|
||||
"useWebpackText": true
|
||||
},
|
||||
"compileOnSave": false,
|
||||
"buildOnSave": false,
|
||||
"atom": { "rewriteTsconfig": false }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"target": "es5",
|
||||
"module": "es2015",
|
||||
"moduleResolution": "node",
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"sourceMap": true,
|
||||
"noEmitHelpers": true,
|
||||
"importHelpers": true,
|
||||
"strictNullChecks": false,
|
||||
"baseUrl": "./src",
|
||||
"outDir": "./dist",
|
||||
"paths": [
|
||||
],
|
||||
"lib": [
|
||||
"dom",
|
||||
"es6"
|
||||
]
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"dist"
|
||||
],
|
||||
"awesomeTypescriptLoaderOptions": {
|
||||
"forkChecker": true,
|
||||
"useWebpackText": true
|
||||
},
|
||||
"angularCompilerOptions": {
|
||||
"genDir": "./compiled",
|
||||
"skipMetadataEmit": true
|
||||
},
|
||||
"compileOnSave": false,
|
||||
"buildOnSave": false,
|
||||
"atom": { "rewriteTsconfig": false }
|
||||
}
|
759
client/yarn.lock
759
client/yarn.lock
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue