Add animation to transitions, and navigation.

Also add new login page with validation
This commit is contained in:
Sean Engelhardt 2018-07-31 15:46:55 +02:00 committed by FinnStutzenstein
parent 41ba616dc1
commit ec646a80dc
28 changed files with 1227 additions and 402 deletions

View File

@ -4624,8 +4624,7 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"aproba": {
"version": "1.2.0",
@ -4646,14 +4645,12 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@ -4668,20 +4665,17 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"core-util-is": {
"version": "1.0.2",
@ -4798,8 +4792,7 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"ini": {
"version": "1.3.5",
@ -4811,7 +4804,6 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@ -4826,7 +4818,6 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@ -4834,14 +4825,12 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"minipass": {
"version": "2.2.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.1",
"yallist": "^3.0.0"
@ -4860,7 +4849,6 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
@ -4941,8 +4929,7 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"object-assign": {
"version": "4.1.1",
@ -4954,7 +4941,6 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
@ -5040,8 +5026,7 @@
"safe-buffer": {
"version": "5.1.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"safer-buffer": {
"version": "2.1.2",
@ -5077,7 +5062,6 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@ -5097,7 +5081,6 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@ -5141,14 +5124,12 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"yallist": {
"version": "3.0.2",
"bundled": true,
"dev": true,
"optional": true
"dev": true
}
}
},

View File

@ -33,7 +33,7 @@ export function HttpLoaderFactory(http: HttpClient) {
cookieName: 'OpenSlidesCsrfToken',
headerName: 'X-CSRFToken'
}),
BrowserAnimationsModule, //TODO
BrowserAnimationsModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,

View File

@ -0,0 +1,44 @@
import { trigger, animate, transition, style, query, stagger, group, state } from '@angular/animations';
export const pageTransition = trigger('pageTransition', [
transition('* => *', [
/** keep the dom clean - let all items "just" enter */
query(':enter mat-card', [style({ opacity: 0 })], { optional: true }),
query(':enter .on-transition-fade', [style({ opacity: 0 })], { optional: true }),
/** parallel vanishing */
group([
/** animate fade out for the selected components */
query(':leave .on-transition-fade', [style({ opacity: 1 }), animate('0.2s', style({ opacity: 0 }))], {
optional: true
}),
/** how the material cards are leaving */
query(':leave mat-card', [style({ opacity: 1 }), animate('0.2s', style({ opacity: 0 }))], {
optional: true
})
]),
/** parallel appearing */
group([
/** animate fade in for the selected components */
query(':enter .on-transition-fade', [style({ opacity: 0 }), animate('0.2s', style({ opacity: 1 }))], {
optional: true
}),
/** how the mat cards enters the scene */
query(
':enter mat-card',
/** stagger = "one after another" with a distance of 50ms" */
stagger(50, [
style({ transform: 'translateY(50px)' }),
animate('300ms ease-in-out', style({ transform: 'translateY(0px)', opacity: 1 }))
]),
{ optional: true }
)
])
])
]);
export const navItemAnim = trigger('navItemAnim', [
transition(':enter', [style({ transform: 'translateX(-100%)' }), animate('500ms ease')]),
transition(':leave', [style({ transform: 'translateX(100%)' }), animate('500ms ease')])
]);

View File

@ -0,0 +1,8 @@
import { DomChangeDirective } from './dom-change.directive';
describe('DomChangeDirective', () => {
it('should create an instance', () => {
const directive = new DomChangeDirective();
expect(directive).toBeTruthy();
});
});

View File

@ -0,0 +1,33 @@
import { Directive, Output, EventEmitter, ElementRef, OnDestroy } from '@angular/core';
/**
* detects changes in DOM and emits a signal on changes.
*
* @example (appDomChange)="onChange($event)"
*/
@Directive({
selector: '[appDomChange]'
})
export class DomChangeDirective implements OnDestroy {
private changes: MutationObserver;
@Output() public domChange = new EventEmitter();
constructor(private elementRef: ElementRef) {
const element = this.elementRef.nativeElement;
this.changes = new MutationObserver((mutations: MutationRecord[]) => {
mutations.forEach((mutation: MutationRecord) => this.domChange.emit(mutation));
});
this.changes.observe(element, {
attributes: true,
childList: true,
characterData: true
});
}
ngOnDestroy(): void {
this.changes.disconnect();
}
}

View File

@ -3,6 +3,7 @@ import { Directive, Input, ElementRef, TemplateRef, ViewContainerRef, OnInit } f
import { OperatorService } from 'app/core/services/operator.service';
import { OpenSlidesComponent } from 'app/openslides.component';
import { Group } from 'app/shared/models/users/group';
import { BehaviorSubject } from 'rxjs';
/**
* Directive to check if the {@link OperatorService} has the correct permissions to access certain functions
@ -25,7 +26,7 @@ export class OsPermsDirective extends OpenSlidesComponent {
private permissions;
/**
* Constructs the direcctive once. Observes the operator for it's groups so the directvice can perform changes
* Constructs the directive once. Observes the operator for it's groups so the directive can perform changes
* dynamically
*
* @param template inner part of the HTML container
@ -42,9 +43,7 @@ export class OsPermsDirective extends OpenSlidesComponent {
// observe groups of operator, so the directive can actively react to changes
this.operator.getObservable().subscribe(content => {
console.log('os-perms did monitor changes in observer: ', content);
if (content instanceof Group && this.permissions !== '') {
console.log('content was a Group');
this.userPermissions = [...this.userPermissions, ...content.permissions];
this.updateView();
}
@ -68,7 +67,6 @@ export class OsPermsDirective extends OpenSlidesComponent {
*/
private readUserPermissions(): void {
const opGroups = this.operator.getGroups();
console.log('operator Groups: ', opGroups);
opGroups.forEach(group => {
this.userPermissions = [...this.userPermissions, ...group.permissions];
});
@ -80,6 +78,7 @@ export class OsPermsDirective extends OpenSlidesComponent {
private updateView(): void {
if (this.checkPermissions()) {
// will just render the page normally
console.log('do show: ', this.template, ' - ', this.viewContainer);
this.viewContainer.createEmbeddedView(this.template);
} else {
// will remove the content of the container

View File

@ -1,6 +1,6 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
// MaterialUI modules
import {
@ -27,6 +27,7 @@ import { TranslateModule } from '@ngx-translate/core';
// directives
import { OsPermsDirective } from './directives/os-perms.directive';
import { DomChangeDirective } from './directives/dom-change.directive';
library.add(fas);
@ -43,6 +44,7 @@ library.add(fas);
imports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
MatButtonModule,
MatCheckboxModule,
MatToolbarModule,
@ -58,6 +60,7 @@ library.add(fas);
],
exports: [
FormsModule,
ReactiveFormsModule,
MatButtonModule,
MatCheckboxModule,
MatToolbarModule,
@ -73,6 +76,6 @@ library.add(fas);
TranslateModule,
OsPermsDirective
],
declarations: [OsPermsDirective]
declarations: [OsPermsDirective, DomChangeDirective]
})
export class SharedModule {}

View File

@ -1,27 +1,29 @@
<mat-toolbar color='primary'>
<button class='generic-plus-button' mat-fab>
<button class='generic-plus-button on-transition-fade' mat-fab>
<fa-icon icon='plus'></fa-icon>
</button>
<span class='app-name' translate>Agenda</span>
<span class='app-name on-transition-fade' translate>Agenda</span>
<!-- download button on the right -->
<span class='spacer'></span>
<button mat-icon-button (click)='downloadAgendaButton()'>
<button class='on-transition-fade' mat-icon-button (click)='downloadAgendaButton()'>
<fa-icon icon='download'></fa-icon>
</button>
</mat-toolbar>
<div class="app-content">
Agenda Works
<br/>
<div>
everyone should see this
<mat-card class="os-card card-plus-distance">
<div class="app-content">
Agenda Works
<br/>
<div>
everyone should see this
</div>
<br/>
<div *appOsPerms="['agenda.can_see']">
Only permitted users should see this
</div>
</div>
<br/>
<div *appOsPerms="['agenda.can_see']">
Only permitted users should see this
</div>
</div>
</mat-card>

View File

@ -1,3 +1,19 @@
<p>
assignment-list works!
</p>
<mat-toolbar color='primary'>
<button class='generic-plus-button on-transition-fade' mat-fab>
<fa-icon icon='plus'></fa-icon>
</button>
<span class='app-name on-transition-fade' translate>Assignments</span>
<!-- download button on the right -->
<span class='spacer'></span>
<button class='on-transition-fade' mat-icon-button (click)='downloadAssignmentButton()'>
<fa-icon icon='download'></fa-icon>
</button>
</mat-toolbar>
<mat-card class="os-card card-plus-distance">
assignment-list works!
</mat-card>

View File

@ -9,4 +9,8 @@ export class AssignmentListComponent implements OnInit {
constructor() {}
ngOnInit() {}
downloadAssignmentButton(): void {
console.log('Hello World');
}
}

View File

@ -1,7 +0,0 @@
.login-card {
width: 400px;
margin: 10% auto;
}
.mat-card-title {
font-size: 16px;
}

View File

@ -1,29 +1,28 @@
<mat-card class="login-card">
<mat-card-header>
<mat-card-title>OpenSides 3 - Login</mat-card-title>
</mat-card-header>
<mat-card-content>
<form class="login-full-widht">
<table class="example-full-width" cellspacing="0">
<tr>
<td>
<mat-form-field class="login-full-widht">
<input matInput placeholder="Username" [(ngModel)]="username" name="username" required>
</mat-form-field>
</td>
</tr>
<tr>
<td>
<mat-form-field class="example-full-width">
<input matInput placeholder="Password" [(ngModel)]="password" type="password" name="password" required>
</mat-form-field>
</td>
</tr>
</table>
</form>
<!-- <mat-spinner [style.display]="showSpinner ? 'block' : 'none'"></mat-spinner> -->
</mat-card-content>
<mat-card-actions>
<button mat-raised-button (click)="formLogin()" color="primary">Login</button>
</mat-card-actions>
</mat-card>
<!-- The actual form -->
<mat-toolbar class="login-logo-bar" color="primary">
<img src='/assets/img/openslides-logo-h-dark-transparent.svg' alt='OpenSlides-logo'>
</mat-toolbar>
<div class="form-wrapper">
<mat-spinner *ngIf="inProcess"></mat-spinner>
<form [formGroup]="loginForm" class="login-form" (ngSubmit)="formLogin()">
<mat-form-field>
<input matInput required placeholder="User name" formControlName="username" [errorStateMatcher]="parentErrorStateMatcher">
</mat-form-field>
<br>
<mat-form-field>
<input matInput required placeholder="Password" formControlName="password" [type]="!hide ? 'password' : 'text'" [errorStateMatcher]="parentErrorStateMatcher">
<fa-icon matSuffix [icon]="!hide ? 'eye-slash' : 'eye'" (click)="hide = !hide"></fa-icon>
<mat-error>{{loginErrorMsg}}</mat-error>
</mat-form-field>
<!-- forgot password button -->
<br>
<button class='forgot-password-button' mat-button>Forgot Password?</button>
<!-- login button -->
<br>
<button mat-raised-button color="primary" class='login-button' type="submit">Login</button>
</form>
</div>

View File

@ -0,0 +1,45 @@
mat-form-field {
width: 100%;
}
.login-logo-bar {
height: 45% !important;
img {
margin-left: auto;
margin-right: auto;
width: 90%;
}
}
.forgot-password-button {
float: right;
padding: 0;
text-align: right;
}
.login-button {
margin-top: 30px;
width: 100%;
margin-left: auto;
margin-right: auto;
}
.form-wrapper {
padding-left: 15px;
padding-right: 15px;
mat-spinner {
position: absolute;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
}
}
.login-form {
padding-top: 60px;
margin: 0 auto;
max-width: 600px;
}

View File

@ -1,32 +1,93 @@
import { Component, OnInit } from '@angular/core';
import { Component, OnInit, Input } from '@angular/core';
import { Router } from '@angular/router';
import { Title } from '@angular/platform-browser';
import { MatSnackBar } from '@angular/material';
import { BaseComponent } from 'app/base.component';
import { AuthService } from 'app/core/services/auth.service';
import { OperatorService } from 'app/core/services/operator.service';
import { ErrorStateMatcher } from '@angular/material';
import { FormControl, FormGroupDirective, NgForm, FormGroup, Validators, FormBuilder } from '@angular/forms';
/**
* Custom error states. Might become part of the shared module later.
*/
export class ParentErrorStateMatcher implements ErrorStateMatcher {
isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {
const isSubmitted = !!(form && form.submitted);
const controlTouched = !!(control && (control.dirty || control.touched));
const controlInvalid = !!(control && control.invalid);
const parentInvalid = !!(
control &&
control.parent &&
control.parent.invalid &&
(control.parent.dirty || control.parent.touched)
);
return isSubmitted || (controlTouched && (controlInvalid || parentInvalid));
}
}
/**
* Login component.
*
* Handles user (and potentially guest) login
*/
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
styleUrls: ['./login.component.scss']
})
export class LoginComponent extends BaseComponent implements OnInit {
username = '';
password = '';
info: string;
/**
* Show or hide password and change the indicator accordingly
*/
hide: boolean;
/**
* Login Error Message if any
*/
loginErrorMsg = '';
/**
* Form group for the login form
*/
loginForm: FormGroup;
/**
* Custom Form validation
*/
parentErrorStateMatcher = new ParentErrorStateMatcher();
/**
* Show the Spinner if validation is in process
*/
inProcess = false;
/**
*
* @param titleService Setting the title
* @param authService Authenticating the user
* @param operator The representation of the current user
* @param router forward to start page
* @param formBuilder To build the form and validate
*/
constructor(
titleService: Title,
private authService: AuthService,
private operator: OperatorService,
private router: Router,
private snackBar: MatSnackBar
private formBuilder: FormBuilder
) {
super(titleService);
this.createForm();
}
/**
* Init.
*
* Set the title to "Log In"
* Observes the operator, if a user was already logged in, recreate to user and skip the login
*/
ngOnInit() {
super.setTitle('Log In');
@ -38,21 +99,33 @@ export class LoginComponent extends BaseComponent implements OnInit {
});
}
openSnackBar(message: string) {
this.snackBar.open(message, 'OK', {
duration: 2000
/**
* Create the login Form
*/
createForm() {
this.loginForm = this.formBuilder.group({
username: ['', [Validators.required, Validators.maxLength(128)]],
password: ['', [Validators.required, Validators.maxLength(128)]]
});
}
// Todo: This serves as a prototype and need enhancement,
// if logIn was fine
// like saving a "logged in state" and real checking the server
/**
* Actual login function triggered by the form.
*
* Send username and password to the {@link AuthService}
*/
formLogin(): void {
this.authService.login(this.username, this.password).subscribe(res => {
this.loginErrorMsg = '';
this.inProcess = true;
this.authService.login(this.loginForm.value.username, this.loginForm.value.password).subscribe(res => {
if (res.status === 400) {
//TODO translate
this.openSnackBar(res.error.detail);
this.inProcess = false;
this.loginForm.setErrors({
notFound: true
});
this.loginErrorMsg = res.error.detail;
} else {
this.inProcess = false;
if (res.user_id) {
const redirect = this.authService.redirectUrl ? this.authService.redirectUrl : '/';
this.router.navigate([redirect]);

View File

@ -1,3 +1,13 @@
<p>
mediafile-list works!
</p>
<mat-toolbar color='primary'>
<button class='generic-plus-button on-transition-fade' mat-fab>
<fa-icon icon='plus'></fa-icon>
</button>
<span class='app-name on-transition-fade' translate>Files</span>
</mat-toolbar>
<mat-card class="os-card card-plus-distance">
mediafile-list works!
</mat-card>

View File

@ -1,20 +1,41 @@
<mat-toolbar color='primary'>
<button class='generic-plus-button' mat-fab>
<button class='generic-plus-button on-transition-fade' mat-fab>
<fa-icon icon='plus'></fa-icon>
</button>
<!-- TODO translate -->
<span class='app-name' translate>Motions</span>
<span class='app-name on-transition-fade' translate>Motions</span>
<!-- download button on the right -->
<span class='spacer'></span>
<button mat-icon-button (click)='downloadMotionsButton()'>
<button class='on-transition-fade' mat-icon-button (click)='downloadMotionsButton()'>
<fa-icon icon='download'></fa-icon>
</button>
</mat-toolbar>
<div class="app-content">
Motion Works
</div>
<mat-card class="os-card card-plus-distance">
<div class="app-content">
Motion Works
</div>
</mat-card>
<mat-card class="os-card card-plus-distance">
<div class="app-content">
Motion Works
</div>
</mat-card>
<mat-card class="os-card card-plus-distance">
<div class="app-content">
Motion Works
</div>
</mat-card>
<mat-card class="os-card card-plus-distance">
<div class="app-content">
Motion Works
</div>
</mat-card>
<mat-card class="os-card card-plus-distance">
<div class="app-content">
Motion Works
</div>
</mat-card>

View File

@ -1,19 +1,21 @@
<mat-toolbar color='primary'>
<span class='app-name' translate>Settings</span>
<span class='app-name on-transition-fade' translate>Settings</span>
</mat-toolbar>
<div *appOsPerms="['core.can_manage_config']" class="app-content">
<mat-card class="os-card">
<div *appOsPerms="['core.can_manage_config']" class="app-content">
<mat-accordion>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Title
</mat-panel-title>
</mat-expansion-panel-header>
<mat-accordion>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Title
</mat-panel-title>
</mat-expansion-panel-header>
<p> CONTENT </p>
</mat-expansion-panel>
</mat-accordion>
<p> CONTENT </p>
</mat-expansion-panel>
</mat-accordion>
</div>
</div>
</mat-card>

View File

@ -19,10 +19,19 @@ const routes: Routes = [
children: [
{ path: '', component: StartComponent },
{ path: 'agenda', loadChildren: './agenda/agenda.module#AgendaModule' },
{ path: 'assignments', loadChildren: './assignments/assignments.module#AssignmentsModule' },
{ path: 'mediafiles', loadChildren: './mediafiles/mediafiles.module#MediafilesModule' },
{
path: 'assignments',
loadChildren: './assignments/assignments.module#AssignmentsModule'
},
{
path: 'mediafiles',
loadChildren: './mediafiles/mediafiles.module#MediafilesModule'
},
{ path: 'motions', loadChildren: './motions/motions.module#MotionsModule' },
{ path: 'settings', loadChildren: './settings/settings.module#SettingsModule' },
{
path: 'settings',
loadChildren: './settings/settings.module#SettingsModule'
},
{ path: 'users', loadChildren: './users/users.module#UsersModule' }
]
}

View File

@ -1,5 +1,5 @@
<mat-sidenav-container autosize>
<mat-sidenav #sideNav [mode]="isMobile ? 'push' : 'side'" [opened]='!isMobile' disableClose='!isMobile'>
<mat-sidenav-container autosize class='main-container'>
<mat-sidenav #sideNav [mode]="isMobile ? 'push' : 'side'" [opened]='!isMobile' disableClose='!isMobile' class="side-panel">
<mat-toolbar class='nav-toolbar'>
<!-- logo -->
@ -21,55 +21,36 @@
<!-- navigation -->
<mat-nav-list class='main-nav'>
<a *appOsPerms="['core.can_see_frontpage']" mat-list-item routerLink='/' routerLinkActive='active' (click)='isMobile ? sideNav.toggle() : null'>
<fa-icon icon='home'></fa-icon>
<span translate>Home</span>
</a>
<a *appOsPerms="['agenda.can_see']" mat-list-item routerLink='/agenda' routerLinkActive='active' (click)='isMobile ? sideNav.toggle() : null'>
<fa-icon icon='calendar'></fa-icon>
<span translate>Agenda</span>
</a>
<a *appOsPerms="['motions.can_see']" mat-list-item routerLink='/motions' routerLinkActive='active' (click)='isMobile ? sideNav.toggle() : null'>
<fa-icon icon='file-alt'></fa-icon>
<span translate>Motions</span>
</a>
<a *appOsPerms="['assignments.can_see']" mat-list-item routerLink='/assignments' routerLinkActive='active' (click)='isMobile ? sideNav.toggle() : null'>
<fa-icon icon='chart-pie'></fa-icon>
<span translate>Assignments</span>
</a>
<a *appOsPerms="['users.can_see_name']" mat-list-item routerLink='/users' routerLinkActive='active' (click)='isMobile ? sideNav.toggle() : null'>
<fa-icon icon='user'></fa-icon>
<span translate>Participants</span>
</a>
<a *appOsPerms="['mediafiles.can_see']" mat-list-item routerLink='/mediafiles' routerLinkActive='active' (click)='isMobile ? sideNav.toggle() : null'>
<fa-icon icon='paperclip'></fa-icon>
<span translate>Files</span>
</a>
<a *appOsPerms="['core.can_manage_config']" mat-list-item routerLink='/settings' routerLinkActive='active' (click)='isMobile ? sideNav.toggle() : null'>
<fa-icon icon='cog'></fa-icon>
<span translate>Settings</span>
</a>
<a [@navItemAnim] *appOsPerms="['core.can_see_frontpage']" mat-list-item routerLink='/' routerLinkActive='active' (click)='isMobile ? sideNav.toggle() : null'>
<fa-icon icon='home'></fa-icon>
<span translate>Home</span>
</a>
<a [@navItemAnim] *appOsPerms="['agenda.can_see']" mat-list-item routerLink='/agenda' routerLinkActive='active' (click)='isMobile ? sideNav.toggle() : null'>
<fa-icon icon='calendar'></fa-icon>
<span translate>Agenda</span>
</a>
<a [@navItemAnim] *appOsPerms="['motions.can_see']" mat-list-item routerLink='/motions' routerLinkActive='active' (click)='isMobile ? sideNav.toggle() : null'>
<fa-icon icon='file-alt'></fa-icon>
<span translate>Motions</span>
</a>
<a [@navItemAnim] *appOsPerms="['assignments.can_see']" mat-list-item routerLink='/assignments' routerLinkActive='active'
(click)='isMobile ? sideNav.toggle() : null'>
<fa-icon icon='chart-pie'></fa-icon>
<span translate>Assignments</span>
</a>
<a [@navItemAnim] *appOsPerms="['users.can_see_name']" mat-list-item routerLink='/users' routerLinkActive='active' (click)='isMobile ? sideNav.toggle() : null'>
<fa-icon icon='user'></fa-icon>
<span translate>Participants</span>
</a>
<a [@navItemAnim] *appOsPerms="['mediafiles.can_see']" mat-list-item routerLink='/mediafiles' routerLinkActive='active' (click)='isMobile ? sideNav.toggle() : null'>
<fa-icon icon='paperclip'></fa-icon>
<span translate>Files</span>
</a>
<a [@navItemAnim] *appOsPerms="['core.can_manage_config']" mat-list-item routerLink='/settings' routerLinkActive='active'
(click)='isMobile ? sideNav.toggle() : null'>
<fa-icon icon='cog'></fa-icon>
<span translate>Settings</span>
</a>
</mat-nav-list>
</mat-sidenav>
@ -105,7 +86,9 @@
</mat-toolbar>
<!-- continue with <mat-toolbar> in the app-->
<router-outlet></router-outlet>
<main [@pageTransition]="o.isActivated ? o.activatedRoute : ''">
<router-outlet #o="outlet"></router-outlet>
</main>
<!-- the global projector button -->
<button class='projector-button' mat-fab>

View File

@ -7,3 +7,7 @@ mat-sidenav-container {
bottom: 10px;
right: 10px;
}
.side-panel {
box-shadow: 3px 0px 10px 0px rgba(0, 0, 0, 0.2);
}

View File

@ -9,6 +9,11 @@
$background: map-get($theme, background);
app-site {
/** adjust the color of the main container to our theme */
.main-container {
background-color: mat-color($background, background);
}
/** change the nav-toolbar to the darker nuance of the current theme*/
.nav-toolbar {
background-color: mat-color($primary, darker);
@ -17,26 +22,24 @@
/** make the .user-menu expansion panel look like the nav-toolbar above */
.user-menu {
background-color: mat-color($primary, darker);
color: mat-color($primary, default-contrast);
color: mat-color($background, raised-button);
min-height: 64px;
.mat-expansion-indicator:after {
color: mat-color($primary, default-contrast);
color: mat-color($background, raised-button);
}
}
/** style and allign the nav icons the icons*/
/** style and align the nav icons the icons*/
.main-nav {
.ng-fa-icon {
color: mat-color($primary, lighter-contrast);
color: mat-color($foreground, icon);
min-width: 20px; //puts the text to the right on the same leve
margin-right: 10px; // the distance from the icon to the text
}
span {
color: mat-color($primary, lighter-contrast);
color: mat-color($foreground, text);
}
// color: mat-color($primary, default-contrast);
}
}
}

View File

@ -8,9 +8,11 @@ import { OperatorService } from 'app/core/services/operator.service';
import { TranslateService } from '@ngx-translate/core'; //showcase
import { BaseComponent } from 'app/base.component';
import { pageTransition, navItemAnim } from 'app/shared/animations';
@Component({
selector: 'app-site',
animations: [pageTransition, navItemAnim],
templateUrl: './site.component.html',
styleUrls: ['./site.component.scss']
})
@ -18,6 +20,9 @@ export class SiteComponent extends BaseComponent implements OnInit {
username = this.operator.username;
isMobile = false;
//test
state = 'hidden';
constructor(
private authService: AuthService,
private autoupdateService: AutoupdateService,
@ -71,4 +76,8 @@ export class SiteComponent extends BaseComponent implements OnInit {
this.authService.logout().subscribe();
this.router.navigate(['/login']);
}
changeState() {
this.state = this.state === 'hidden' ? 'show' : 'hidden';
}
}

View File

@ -1,15 +1,17 @@
<mat-toolbar color='primary'>
<span class='app-name' translate>Home</span>
<span class='app-name on-transition-fade' translate>Home</span>
</mat-toolbar>
<div class="app-content" translate>
<span>{{'Welcome to OpenSlides' | translate}}</span>
<br/>
<!-- <p translate [translateParams]="{user: 'Tim'}">Hello user</p> -->
<p>{{'Hello user' | translate:username}}</p>
<button type="button" (click)="DataStoreTest()">DataStoreTest</button>
<br/>
<button type="button" (click)="TranslateTest()">Translate in console</button>
<br/>
<button type="button" (click)="giveDataStore()">print the dataStore</button>
</div>
<mat-card class="os-card">
<div class="app-content" translate>
<span>{{'Welcome to OpenSlides' | translate}}</span>
<br/>
<!-- <p translate [translateParams]="{user: 'Tim'}">Hello user</p> -->
<p>{{'Hello user' | translate:username}}</p>
<button type="button" (click)="DataStoreTest()">DataStoreTest</button>
<br/>
<button type="button" (click)="TranslateTest()">Translate in console</button>
<br/>
<button type="button" (click)="giveDataStore()">print the dataStore</button>
</div>
</mat-card>

View File

@ -1,3 +1,7 @@
<p>
user-list works!
</p>
<mat-toolbar color='primary'>
<span class='app-name on-transition-fade' translate>Users</span>
</mat-toolbar>
<mat-card class="os-card">
UserList Works!
</mat-card>

View File

@ -0,0 +1,636 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:ns="http://opensource.org/licenses/MIT"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Ebene_3"
x="0px"
y="0px"
width="1079.0952"
height="214.49588"
viewBox="0 0 1079.0951 214.49587"
enable-background="new 0 0 841.89 595.28"
xml:space="preserve"
inkscape:version="0.92.2 2405546, 2018-03-11"
sodipodi:docname="openslides-logo-h-dark-transparent.svg"
inkscape:export-xdpi="20.85"
inkscape:export-ydpi="20.85"><metadata
id="metadata461"><rdf:RDF><ns:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /><dc:creator><ns:Agent><dc:title>OpenSlides Team</dc:title></ns:Agent></dc:creator></ns:Work><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs459">
</defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10000"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1008"
id="namedview457"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="1.2235367"
inkscape:cx="431.66437"
inkscape:cy="170.29711"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="Ebene_3"
fit-margin-top="40"
fit-margin-left="40"
fit-margin-right="40"
fit-margin-bottom="25"
units="px"
borderlayer="true"
inkscape:showpageshadow="false"
inkscape:document-units="px"><inkscape:grid
type="xygrid"
id="grid3097"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
originx="2.5749768e-06"
originy="-5.0000035"
spacingx="1"
spacingy="1" /></sodipodi:namedview>
<g
id="g5094"
transform="matrix(2.0781875,0,0,2.0781875,39.999977,39.999828)"
style="fill:#ffffff;fill-opacity:1"><g
transform="translate(-154.63686,-116.56793)"
id="g7"
style="fill:#ffffff;fill-opacity:1">
<path
d="m 334.257,126.401 c 3.222,1.985 5.696,4.867 7.423,8.649 1.727,3.782 2.591,8.358 2.591,13.726 0,5.276 -0.865,9.816 -2.591,13.621 -1.728,3.806 -4.202,6.712 -7.423,8.719 -3.221,2.007 -7.05,3.011 -11.485,3.011 -4.436,0 -8.276,-0.993 -11.521,-2.977 -3.245,-1.984 -5.731,-4.878 -7.458,-8.684 -1.728,-3.805 -2.591,-8.369 -2.591,-13.691 0,-5.228 0.875,-9.745 2.626,-13.551 1.751,-3.805 4.248,-6.723 7.494,-8.754 3.244,-2.031 7.061,-3.046 11.45,-3.046 4.435,10e-4 8.264,0.994 11.485,2.977 z m -19.503,8.93 c -1.798,2.801 -2.696,7.283 -2.696,13.446 0,6.163 0.91,10.645 2.731,13.446 1.821,2.801 4.482,4.202 7.984,4.202 3.547,0 6.208,-1.389 7.983,-4.167 1.774,-2.777 2.661,-7.271 2.661,-13.481 0,-6.208 -0.887,-10.703 -2.661,-13.481 -1.775,-2.777 -4.436,-4.167 -7.983,-4.167 -3.549,0 -6.223,1.4 -8.019,4.202 z"
id="path9"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 377.361,139.917 c 2.264,3.432 3.396,8.253 3.396,14.461 0,3.782 -0.584,7.167 -1.75,10.155 -1.167,2.988 -2.86,5.334 -5.077,7.038 -2.218,1.704 -4.844,2.556 -7.879,2.556 -3.782,0 -6.84,-1.331 -9.174,-3.992 v 17.157 l -9.944,1.121 V 135.89 h 8.754 l 0.49,4.342 c 1.4,-1.821 3.046,-3.187 4.937,-4.097 1.891,-0.91 3.792,-1.365 5.708,-1.365 4.761,10e-4 8.274,1.716 10.539,5.147 z m -6.968,14.532 c 0,-4.482 -0.549,-7.657 -1.646,-9.524 -1.098,-1.867 -2.766,-2.801 -5.007,-2.801 -1.354,0 -2.615,0.432 -3.781,1.295 -1.168,0.865 -2.195,2.02 -3.082,3.467 v 16.177 c 1.586,2.428 3.665,3.642 6.233,3.642 4.855,0 7.283,-4.085 7.283,-12.256 z"
id="path11"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 416.333,157.46 h -23.18 c 0.326,3.361 1.236,5.743 2.731,7.143 1.493,1.401 3.524,2.101 6.092,2.101 1.587,0 3.082,-0.256 4.482,-0.771 1.4,-0.513 2.917,-1.331 4.552,-2.451 l 4.132,5.603 c -4.156,3.362 -8.848,5.042 -14.076,5.042 -5.837,0 -10.319,-1.751 -13.446,-5.252 -3.129,-3.501 -4.692,-8.24 -4.692,-14.216 0,-3.782 0.666,-7.178 1.996,-10.189 1.33,-3.011 3.267,-5.38 5.813,-7.108 2.544,-1.727 5.567,-2.591 9.069,-2.591 5.275,0 9.384,1.658 12.326,4.972 2.941,3.315 4.412,7.938 4.412,13.866 -10e-4,0.467 -0.071,1.75 -0.211,3.851 z m -9.664,-6.652 c 0,-6.163 -2.218,-9.244 -6.653,-9.244 -2.055,0 -3.654,0.759 -4.797,2.276 -1.145,1.518 -1.833,3.981 -2.066,7.388 h 13.516 v -0.42 z"
id="path13"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 447.355,137.747 c 1.821,1.985 2.732,4.727 2.732,8.229 v 27.032 h -9.945 v -25.351 c 0,-2.007 -0.339,-3.42 -1.016,-4.237 -0.677,-0.816 -1.692,-1.225 -3.046,-1.225 -1.4,0 -2.673,0.432 -3.817,1.295 -1.145,0.864 -2.252,2.16 -3.326,3.887 v 25.631 h -9.944 v -37.117 h 8.614 l 0.77,4.692 c 1.541,-1.914 3.232,-3.362 5.078,-4.342 1.844,-0.98 3.933,-1.47 6.268,-1.47 3.267,0 5.812,0.992 7.632,2.976 z"
id="path15"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 481.566,124.931 c 2.592,1.004 4.983,2.533 7.178,4.587 l -4.972,5.743 c -1.681,-1.447 -3.386,-2.497 -5.112,-3.152 -1.728,-0.653 -3.572,-0.98 -5.532,-0.98 -2.147,0 -3.864,0.455 -5.147,1.365 -1.285,0.911 -1.926,2.206 -1.926,3.887 0,1.167 0.268,2.125 0.805,2.872 0.537,0.747 1.482,1.448 2.837,2.101 1.354,0.655 3.384,1.401 6.093,2.241 4.809,1.541 8.404,3.443 10.785,5.708 2.381,2.265 3.571,5.498 3.571,9.699 0,2.988 -0.747,5.615 -2.241,7.878 -1.494,2.265 -3.666,4.039 -6.513,5.323 -2.849,1.283 -6.187,1.926 -10.015,1.926 -3.828,0 -7.237,-0.607 -10.225,-1.821 -2.988,-1.214 -5.557,-2.872 -7.703,-4.972 l 5.393,-5.883 c 3.547,3.269 7.633,4.902 12.255,4.902 2.521,0 4.54,-0.583 6.058,-1.751 1.518,-1.167 2.276,-2.801 2.276,-4.902 0,-1.306 -0.27,-2.392 -0.806,-3.256 -0.537,-0.863 -1.459,-1.646 -2.766,-2.346 -1.309,-0.701 -3.199,-1.424 -5.673,-2.171 -5.276,-1.633 -9.046,-3.594 -11.31,-5.882 -2.266,-2.287 -3.396,-5.275 -3.396,-8.964 0,-2.708 0.723,-5.101 2.17,-7.178 1.447,-2.077 3.455,-3.677 6.023,-4.797 2.566,-1.121 5.485,-1.681 8.754,-1.681 3.503,-0.002 6.548,0.501 9.139,1.504 z"
id="path17"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 504.991,165.514 c 0.326,0.467 0.815,0.7 1.471,0.7 0.793,0 1.471,-0.14 2.03,-0.42 l 2.031,7.073 c -2.055,0.84 -4.296,1.261 -6.723,1.261 -2.941,0 -5.218,-0.853 -6.828,-2.556 -1.611,-1.704 -2.416,-4.167 -2.416,-7.388 v -43.069 l 9.944,-1.121 v 43.279 c 10e-4,1.027 0.164,1.775 0.491,2.241 z"
id="path19"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 524.214,118.418 c 1.144,1.098 1.716,2.486 1.716,4.167 0,1.681 -0.572,3.07 -1.716,4.167 -1.145,1.097 -2.603,1.646 -4.377,1.646 -1.774,0 -3.222,-0.548 -4.342,-1.646 -1.12,-1.097 -1.681,-2.486 -1.681,-4.167 0,-1.681 0.561,-3.069 1.681,-4.167 1.12,-1.096 2.567,-1.646 4.342,-1.646 1.775,0 3.232,0.55 4.377,1.646 z m -9.278,54.589 V 135.89 h 9.943 v 37.117 h -9.943 z"
id="path21"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 563.326,173.007 h -8.754 l -0.561,-4.552 c -2.615,3.782 -6.162,5.673 -10.645,5.673 -4.576,0 -8.065,-1.762 -10.469,-5.288 -2.406,-3.524 -3.607,-8.322 -3.607,-14.391 0,-3.828 0.618,-7.224 1.855,-10.189 1.236,-2.964 3,-5.288 5.287,-6.968 2.287,-1.68 4.973,-2.521 8.055,-2.521 1.727,0 3.35,0.339 4.867,1.015 1.516,0.677 2.859,1.576 4.026,2.696 v -18.488 l 9.944,1.121 v 51.892 z m -13.096,-7.423 c 1.121,-0.746 2.171,-1.867 3.151,-3.361 v -16.598 c -0.98,-1.167 -1.961,-2.042 -2.941,-2.626 -0.98,-0.583 -2.125,-0.875 -3.432,-0.875 -2.288,0 -4.085,1.004 -5.392,3.011 -1.309,2.008 -1.961,5.112 -1.961,9.314 0,4.436 0.57,7.587 1.715,9.454 1.145,1.868 2.813,2.801 5.008,2.801 1.447,0.001 2.731,-0.372 3.852,-1.12 z"
id="path23"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 601.494,157.46 h -23.182 c 0.326,3.361 1.236,5.743 2.732,7.143 1.492,1.401 3.523,2.101 6.092,2.101 1.587,0 3.082,-0.256 4.482,-0.771 1.4,-0.513 2.917,-1.331 4.552,-2.451 l 4.132,5.603 c -4.156,3.362 -8.848,5.042 -14.076,5.042 -5.837,0 -10.318,-1.751 -13.445,-5.252 -3.129,-3.501 -4.693,-8.24 -4.693,-14.216 0,-3.782 0.666,-7.178 1.996,-10.189 1.331,-3.011 3.268,-5.38 5.813,-7.108 2.545,-1.727 5.568,-2.591 9.069,-2.591 5.275,0 9.384,1.658 12.325,4.972 2.941,3.315 4.412,7.938 4.412,13.866 0,0.467 -0.07,1.75 -0.209,3.851 z m -9.665,-6.652 c 0,-6.163 -2.218,-9.244 -6.653,-9.244 -2.055,0 -3.653,0.759 -4.797,2.276 -1.145,1.518 -1.833,3.981 -2.066,7.388 h 13.517 v -0.42 z"
id="path25"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 634.127,139.252 -3.781,5.813 c -3.035,-2.054 -6.023,-3.082 -8.965,-3.082 -1.727,0 -3.059,0.304 -3.99,0.911 -0.936,0.607 -1.402,1.425 -1.402,2.451 0,0.747 0.199,1.377 0.596,1.891 0.396,0.514 1.145,1.004 2.242,1.471 1.096,0.467 2.742,1.027 4.936,1.681 3.922,1.075 6.84,2.51 8.754,4.307 1.914,1.798 2.873,4.261 2.873,7.388 0,2.475 -0.713,4.622 -2.137,6.443 -1.424,1.821 -3.352,3.21 -5.777,4.167 -2.428,0.956 -5.137,1.436 -8.123,1.436 -3.129,0 -5.979,-0.479 -8.545,-1.436 -2.568,-0.957 -4.762,-2.276 -6.582,-3.957 l 4.971,-5.532 c 1.402,1.167 2.941,2.078 4.623,2.731 1.68,0.654 3.408,0.98 5.182,0.98 1.914,0 3.42,-0.361 4.518,-1.085 1.096,-0.723 1.646,-1.692 1.646,-2.906 0,-0.98 -0.211,-1.762 -0.631,-2.346 -0.42,-0.583 -1.191,-1.121 -2.311,-1.61 -1.121,-0.49 -2.871,-1.062 -5.254,-1.716 -3.734,-1.026 -6.502,-2.486 -8.297,-4.377 -1.799,-1.891 -2.697,-4.237 -2.697,-7.038 0,-2.101 0.605,-3.992 1.82,-5.673 1.215,-1.681 2.93,-2.999 5.148,-3.957 2.217,-0.957 4.797,-1.436 7.738,-1.436 5.228,0 9.709,1.494 13.445,4.481 z"
id="path27"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
</g><g
transform="matrix(1.2794416,0,0,1.2794416,-241.04704,-149.41913)"
id="g29"
style="fill:#ffffff;fill-opacity:1">
<path
d="m 231.138,168.561 h 15.136 c 1.645,0 2.965,0.99 2.965,2.225 0,1.231 -1.32,2.223 -2.965,2.223 h -15.136 c -1.646,0 -2.969,-0.992 -2.969,-2.223 0,-1.235 1.322,-2.225 2.969,-2.225 z"
id="path31"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<g
id="g33"
style="fill:#ffffff;fill-opacity:1">
<path
d="m 224.244,127.652 c 1.516,0.284 2.521,1.745 2.243,3.26 -0.284,1.519 -1.747,2.523 -3.258,2.239 -1.522,-0.277 -2.526,-1.736 -2.241,-3.258 0.278,-1.519 1.739,-2.519 3.256,-2.241 z"
id="path35"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 248.342,127.971 c -0.113,-1.547 -1.455,-2.703 -2.995,-2.586 -1.539,0.114 -2.695,1.456 -2.584,2.996 0.112,1.54 1.455,2.697 2.995,2.576 1.539,-0.111 2.696,-1.453 2.584,-2.986 z"
id="path37"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 254.698,130.199 c -0.111,-1.541 -1.447,-2.698 -2.986,-2.584 -1.54,0.119 -2.696,1.454 -2.586,3 0.115,1.532 1.456,2.69 2.996,2.576 1.54,-0.111 2.698,-1.453 2.576,-2.992 z"
id="path39"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 228.791,118.638 c -1.282,-0.857 -3.021,-0.527 -3.888,0.749 -0.857,1.282 -0.528,3.014 0.748,3.887 1.282,0.864 3.021,0.526 3.886,-0.749 0.866,-1.282 0.528,-3.019 -0.746,-3.887 z"
id="path41"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path43"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path45"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.454 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path47"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.452 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path49"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 255.645,120.877 c 1.521,0.284 2.518,1.74 2.242,3.26 -0.285,1.519 -1.739,2.517 -3.26,2.239 -1.521,-0.284 -2.519,-1.737 -2.24,-3.259 0.284,-1.518 1.745,-2.517 3.258,-2.24 z"
id="path51"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 240.216,140.03 c -1.276,-0.865 -3.016,-0.537 -3.88,0.746 -0.866,1.277 -0.538,3.014 0.746,3.88 1.282,0.867 3.013,0.53 3.88,-0.746 0.866,-1.276 0.529,-3.016 -0.746,-3.88 z"
id="path53"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.583 -1.541,0.117 -2.698,1.459 -2.584,2.994 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.112 2.696,-1.453 2.583,-2.995 z"
id="path55"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.584 -1.541,0.119 -2.698,1.461 -2.584,2.996 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.113 2.696,-1.454 2.583,-2.996 z"
id="path57"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 229.154,134.489 c -1.275,-0.864 -3.018,-0.527 -3.88,0.749 -0.867,1.283 -0.529,3.014 0.745,3.88 1.282,0.871 3.012,0.534 3.881,-0.742 0.868,-1.283 0.534,-3.021 -0.746,-3.887 z"
id="path59"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 236.296,132.867 c -1.277,-0.864 -3.014,-0.533 -3.881,0.749 -0.866,1.275 -0.527,3.015 0.748,3.88 1.279,0.864 3.021,0.527 3.885,-0.749 0.867,-1.276 0.529,-3.013 -0.752,-3.88 z"
id="path61"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 251.567,136.602 c -0.111,-1.539 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path63"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 251.567,136.602 c -0.111,-1.541 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path65"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path67"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path69"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path71"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path73"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 232.399,125.857 c -1.281,-0.867 -3.021,-0.529 -3.887,0.745 -0.866,1.283 -0.528,3.016 0.747,3.887 1.282,0.859 3.015,0.53 3.886,-0.745 0.861,-1.284 0.53,-3.02 -0.746,-3.887 z"
id="path75"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 241.034,127.336 c -0.11,-1.54 -1.451,-2.696 -2.991,-2.579 -1.54,0.114 -2.698,1.456 -2.587,2.995 0.114,1.534 1.456,2.69 2.995,2.577 1.546,-0.111 2.7,-1.453 2.583,-2.993 z"
id="path77"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 221.422,121.313 c -1.276,-0.866 -3.015,-0.537 -3.88,0.745 -0.867,1.278 -0.529,3.015 0.746,3.88 1.282,0.868 3.015,0.537 3.88,-0.738 0.866,-1.282 0.535,-3.027 -0.746,-3.887 z"
id="path79"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path81"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 237.039,119.377 c -0.112,-1.546 -1.454,-2.698 -2.993,-2.584 -1.533,0.112 -2.69,1.454 -2.579,2.992 0.112,1.541 1.455,2.692 2.996,2.58 1.539,-0.115 2.688,-1.456 2.576,-2.988 z"
id="path83"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.452 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path85"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 231.97,140.602 c 1.519,0.282 2.523,1.745 2.239,3.257 -0.278,1.521 -1.736,2.525 -3.259,2.242 -1.512,-0.279 -2.518,-1.74 -2.241,-3.258 0.285,-1.523 1.745,-2.52 3.261,-2.241 z"
id="path87"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.584 -1.541,0.119 -2.698,1.461 -2.584,2.996 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.113 2.696,-1.454 2.583,-2.996 z"
id="path89"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 251.567,136.602 c -0.111,-1.541 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path91"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 244.838,134.975 c -0.115,-1.54 -1.456,-2.695 -2.996,-2.583 -1.534,0.117 -2.698,1.459 -2.577,2.999 0.11,1.542 1.445,2.69 2.992,2.579 1.539,-0.113 2.691,-1.455 2.581,-2.995 z"
id="path93"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path95"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path97"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
</g>
<g
id="g99"
style="fill:#ffffff;fill-opacity:1">
<path
d="m 196.938,156.803 c 1.044,-1.134 2.815,-1.213 3.955,-0.173 1.137,1.043 1.212,2.816 0.169,3.949 -1.04,1.143 -2.81,1.22 -3.949,0.173 -1.141,-1.04 -1.215,-2.808 -0.175,-3.949 z"
id="path101"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 209.977,136.537 c -1.369,-0.725 -3.061,-0.2 -3.779,1.17 -0.718,1.367 -0.192,3.057 1.173,3.777 1.364,0.72 3.057,0.196 3.771,-1.173 0.719,-1.365 0.197,-3.055 -1.165,-3.774 z"
id="path103"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 215.234,132.327 c -1.364,-0.722 -3.053,-0.204 -3.774,1.163 -0.714,1.369 -0.194,3.057 1.176,3.782 1.359,0.716 3.051,0.192 3.772,-1.174 0.719,-1.366 0.196,-3.057 -1.174,-3.771 z"
id="path105"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 191.702,148.171 c -1.404,0.633 -2.047,2.282 -1.425,3.693 0.634,1.408 2.277,2.045 3.691,1.426 1.414,-0.63 2.049,-2.284 1.426,-3.693 -0.629,-1.412 -2.278,-2.049 -3.692,-1.426 z"
id="path107"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path109"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path111"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.192,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path113"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.195,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path115"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 207.832,126.584 c 1.046,-1.138 2.81,-1.214 3.952,-0.173 1.138,1.046 1.214,2.809 0.172,3.951 -1.048,1.138 -2.807,1.214 -3.95,0.174 -1.137,-1.047 -1.212,-2.815 -0.174,-3.952 z"
id="path117"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 215.898,149.818 c -1.412,0.624 -2.056,2.274 -1.424,3.685 0.623,1.413 2.271,2.054 3.686,1.424 1.414,-0.628 2.045,-2.275 1.423,-3.686 -0.622,-1.409 -2.277,-2.045 -3.685,-1.423 z"
id="path119"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.777,1.171 -0.717,1.368 -0.192,3.059 1.17,3.777 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path121"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.778,1.169 -0.716,1.37 -0.191,3.061 1.171,3.779 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path123"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 205.336,156.264 c -1.407,0.623 -2.045,2.277 -1.421,3.686 0.629,1.414 2.278,2.045 3.687,1.423 1.419,-0.625 2.05,-2.271 1.428,-3.683 -0.63,-1.413 -2.279,-2.054 -3.694,-1.426 z"
id="path125"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 207.746,149.348 c -1.409,0.624 -2.048,2.274 -1.422,3.687 0.622,1.411 2.278,2.045 3.688,1.422 1.411,-0.628 2.047,-2.283 1.422,-3.691 -0.621,-1.412 -2.273,-2.046 -3.688,-1.418 z"
id="path127"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path129"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path131"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path133"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path135"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path137"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path139"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 199.739,148.936 c -1.418,0.628 -2.052,2.282 -1.429,3.689 0.628,1.415 2.276,2.049 3.692,1.428 1.407,-0.633 2.045,-2.273 1.427,-3.691 -0.633,-1.408 -2.28,-2.049 -3.69,-1.426 z"
id="path141"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 205.567,142.396 c -1.363,-0.721 -3.056,-0.197 -3.773,1.171 -0.718,1.366 -0.194,3.058 1.171,3.78 1.361,0.715 3.053,0.191 3.772,-1.175 0.725,-1.368 0.199,-3.055 -1.17,-3.776 z"
id="path143"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 190.066,155.839 c -1.412,0.623 -2.052,2.271 -1.425,3.684 0.624,1.411 2.276,2.046 3.686,1.424 1.416,-0.63 2.054,-2.272 1.431,-3.683 -0.628,-1.412 -2.284,-2.057 -3.692,-1.425 z"
id="path145"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path147"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 196.699,141.568 c -1.37,-0.724 -3.058,-0.196 -3.778,1.169 -0.718,1.358 -0.192,3.052 1.173,3.771 1.366,0.722 3.054,0.194 3.775,-1.171 0.719,-1.368 0.192,-3.053 -1.17,-3.769 z"
id="path149"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.195,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path151"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 212.012,157.114 c 1.046,-1.138 2.819,-1.215 3.95,-0.173 1.144,1.041 1.219,2.812 0.175,3.951 -1.037,1.135 -2.808,1.213 -3.951,0.174 -1.141,-1.047 -1.211,-2.816 -0.174,-3.952 z"
id="path153"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.778,1.169 -0.716,1.37 -0.191,3.061 1.171,3.779 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path155"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path157"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 214.061,143.221 c -1.367,-0.719 -3.056,-0.193 -3.776,1.171 -0.715,1.363 -0.193,3.061 1.176,3.774 1.368,0.722 3.049,0.2 3.774,-1.172 0.719,-1.364 0.192,-3.051 -1.174,-3.773 z"
id="path159"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path161"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path163"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
</g>
<g
id="g165"
style="fill:#ffffff;fill-opacity:1">
<path
d="m 278.788,156.803 c -1.044,-1.134 -2.816,-1.213 -3.953,-0.173 -1.136,1.043 -1.213,2.816 -0.172,3.949 1.041,1.143 2.809,1.22 3.95,0.173 1.142,-1.04 1.217,-2.808 0.175,-3.949 z"
id="path167"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 265.747,136.537 c 1.371,-0.725 3.063,-0.2 3.78,1.17 0.722,1.367 0.196,3.057 -1.171,3.777 -1.366,0.72 -3.058,0.196 -3.772,-1.173 -0.72,-1.365 -0.194,-3.055 1.163,-3.774 z"
id="path169"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 260.49,132.327 c 1.366,-0.722 3.057,-0.204 3.774,1.163 0.716,1.369 0.198,3.057 -1.175,3.782 -1.358,0.716 -3.053,0.192 -3.77,-1.174 -0.722,-1.366 -0.197,-3.057 1.171,-3.771 z"
id="path171"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 284.023,148.171 c 1.407,0.633 2.047,2.282 1.423,3.693 -0.631,1.408 -2.274,2.045 -3.69,1.426 -1.412,-0.63 -2.048,-2.284 -1.426,-3.693 0.629,-1.412 2.281,-2.049 3.693,-1.426 z"
id="path173"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path175"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path177"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path179"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path181"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 267.894,126.584 c -1.046,-1.138 -2.811,-1.214 -3.952,-0.173 -1.137,1.046 -1.213,2.809 -0.171,3.951 1.045,1.138 2.808,1.214 3.95,0.174 1.135,-1.047 1.211,-2.815 0.173,-3.952 z"
id="path183"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 259.827,149.818 c 1.411,0.624 2.055,2.274 1.426,3.685 -0.625,1.413 -2.271,2.054 -3.687,1.424 -1.416,-0.628 -2.047,-2.275 -1.425,-3.686 0.624,-1.409 2.279,-2.045 3.686,-1.423 z"
id="path185"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.779,1.171 0.715,1.368 0.189,3.059 -1.172,3.777 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path187"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.781,1.169 0.713,1.37 0.188,3.061 -1.174,3.779 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path189"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 270.387,156.264 c 1.413,0.623 2.046,2.277 1.422,3.686 -0.629,1.414 -2.274,2.045 -3.686,1.423 -1.417,-0.625 -2.048,-2.271 -1.426,-3.683 0.629,-1.413 2.279,-2.054 3.69,-1.426 z"
id="path191"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 267.979,149.348 c 1.411,0.624 2.052,2.274 1.421,3.687 -0.622,1.411 -2.274,2.045 -3.685,1.422 -1.411,-0.628 -2.049,-2.283 -1.425,-3.691 0.625,-1.412 2.273,-2.046 3.689,-1.418 z"
id="path193"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 256.719,138.374 c 1.364,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path195"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 256.719,138.374 c 1.368,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path197"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path199"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path201"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path203"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path205"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 275.989,148.936 c 1.414,0.628 2.048,2.282 1.427,3.689 -0.626,1.415 -2.276,2.049 -3.69,1.428 -1.407,-0.633 -2.047,-2.273 -1.428,-3.691 0.632,-1.408 2.28,-2.049 3.691,-1.426 z"
id="path207"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 270.158,142.396 c 1.366,-0.721 3.058,-0.197 3.772,1.171 0.72,1.366 0.194,3.058 -1.17,3.78 -1.36,0.715 -3.051,0.191 -3.771,-1.175 -0.726,-1.368 -0.198,-3.055 1.169,-3.776 z"
id="path209"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 285.66,155.839 c 1.41,0.623 2.052,2.271 1.424,3.684 -0.625,1.411 -2.276,2.046 -3.685,1.424 -1.418,-0.63 -2.053,-2.272 -1.432,-3.683 0.632,-1.412 2.284,-2.057 3.693,-1.425 z"
id="path211"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path213"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 279.025,141.568 c 1.372,-0.724 3.062,-0.196 3.778,1.169 0.717,1.358 0.194,3.052 -1.172,3.771 -1.365,0.722 -3.053,0.194 -3.773,-1.171 -0.719,-1.368 -0.19,-3.053 1.167,-3.769 z"
id="path215"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path217"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 263.713,157.114 c -1.045,-1.138 -2.817,-1.215 -3.949,-0.173 -1.143,1.041 -1.22,2.812 -0.175,3.951 1.039,1.135 2.811,1.213 3.951,0.174 1.14,-1.047 1.214,-2.816 0.173,-3.952 z"
id="path219"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.781,1.169 0.713,1.37 0.188,3.061 -1.174,3.779 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path221"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 256.719,138.374 c 1.368,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path223"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 261.667,143.221 c 1.363,-0.719 3.056,-0.193 3.777,1.171 0.71,1.363 0.19,3.061 -1.18,3.774 -1.366,0.722 -3.049,0.2 -3.773,-1.172 -0.719,-1.364 -0.189,-3.051 1.176,-3.773 z"
id="path225"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path227"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path229"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
</g>
</g></g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -15,16 +15,16 @@ $openslides-blue: (
A400: #39acff,
A700: #1fa2ff,
contrast: (
50: #ebebeb,
100: #535353,
200: #ebebeb,
300: #ebebeb,
400: #fefefe,
500: #fefefe,
600: #fefefe,
700: #fefefe,
800: #fefefe,
900: #fefefe,
50: #ffffff,
100: #ffffff,
200: #ffffff,
300: #ffffff,
400: #ffffff,
500: #ffffff,
600: #ffffff,
700: #ffffff,
800: #ffffff,
900: #ffffff,
A100: #000000,
A200: #000000,
A400: #000000,

View File

@ -31,14 +31,37 @@ body {
}
body {
background: #fafafa;
// background: #e8eaed;
margin: 0 auto;
padding: 0;
}
router-outlet ~ * {
position: absolute;
height: 100%;
width: 100%;
}
/**the plus button in Motion, Agenda, etc*/
.generic-plus-button {
bottom: -30px;
z-index: 100;
}
.test-thing {
bottom: -30px;
z-index: 100;
}
.os-card {
max-width: 90%;
margin-top: 10px;
margin-left: auto;
margin-right: auto;
}
.card-plus-distance {
margin-top: 40px;
}
/**title of an app page*/
@ -56,3 +79,8 @@ body {
.spacer {
flex: 1 1 auto;
}
/** helper classes for animation */
.on-transition-fade {
z-index: 100;
}

286
yarn.lock
View File

@ -3,13 +3,13 @@
"@gulp-sourcemaps/identity-map@1.X":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.1.tgz#cfa23bc5840f9104ce32a65e74db7e7a974bbee1"
version "1.0.2"
resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz#1e6fe5d8027b1f285dc0d31762f566bccd73d5a9"
dependencies:
acorn "^5.0.3"
css "^2.2.1"
normalize-path "^2.1.1"
source-map "^0.5.6"
source-map "^0.6.0"
through2 "^2.0.3"
"@gulp-sourcemaps/map-sources@1.X":
@ -31,8 +31,8 @@ accepts@1.3.3:
negotiator "0.6.1"
acorn@5.X, acorn@^5.0.3:
version "5.6.2"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.2.tgz#b1da1d7be2ac1b4a327fb9eab851702c5045b4e7"
version "5.7.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8"
after@0.8.2:
version "0.8.2"
@ -71,8 +71,8 @@ amdefine@>=0.0.4:
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
angular-gettext-tools@^2.2.0:
version "2.3.9"
resolved "https://registry.yarnpkg.com/angular-gettext-tools/-/angular-gettext-tools-2.3.9.tgz#e8fd6692171b863370b6db031e6cdbf24673f102"
version "2.3.11"
resolved "https://registry.yarnpkg.com/angular-gettext-tools/-/angular-gettext-tools-2.3.11.tgz#61920670eb3e34ee8f958dd8a4a3c327ee4e5de4"
dependencies:
babylon "^6.11.4"
binary-search "^1.2.0"
@ -400,8 +400,8 @@ base@^0.11.1:
pascalcase "^0.1.1"
bcrypt-pbkdf@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
version "1.0.2"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
dependencies:
tweetnacl "^0.14.3"
@ -420,8 +420,8 @@ binary-extensions@^1.0.0:
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
binary-search@^1.2.0:
version "1.3.3"
resolved "https://registry.yarnpkg.com/binary-search/-/binary-search-1.3.3.tgz#b5adb6fb279a197be51b1ee8b0fb76fcdc61b429"
version "1.3.4"
resolved "https://registry.yarnpkg.com/binary-search/-/binary-search-1.3.4.tgz#d15f44ff9226ef309d85247fa0dbfbf659955f56"
blob@0.0.4:
version "0.0.4"
@ -572,12 +572,8 @@ caniuse-api@^1.5.2:
lodash.uniq "^4.5.0"
caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
version "1.0.30000852"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000852.tgz#c37a706048f8d81f87946a7c13f39ed636876659"
caseless@~0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
version "1.0.30000871"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000871.tgz#f1995c1fe31892649a7605957a80c92518423d4d"
caseless@~0.12.0:
version "0.12.0"
@ -626,8 +622,8 @@ chokidar@^1.4.1:
fsevents "^1.0.0"
chokidar@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176"
version "2.0.4"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
dependencies:
anymatch "^2.0.0"
async-each "^1.0.0"
@ -636,12 +632,13 @@ chokidar@^2.0.0:
inherits "^2.0.1"
is-binary-path "^1.0.0"
is-glob "^4.0.0"
lodash.debounce "^4.0.8"
normalize-path "^2.1.1"
path-is-absolute "^1.0.0"
readdirp "^2.0.0"
upath "^1.0.0"
upath "^1.0.5"
optionalDependencies:
fsevents "^1.1.2"
fsevents "^1.2.2"
chownr@^1.0.1:
version "1.0.1"
@ -783,8 +780,8 @@ colormin@^1.0.5:
has "^1.0.1"
colors@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.0.tgz#5f20c9fef6945cb1134260aab33bfbdc8295e04e"
version "1.3.1"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.1.tgz#4accdb89cf2cabc7f982771925e9468784f32f3d"
colors@~1.1.2:
version "1.1.2"
@ -802,10 +799,6 @@ combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5:
dependencies:
delayed-stream "~1.0.0"
commander@^2.9.0:
version "2.15.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
component-bind@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
@ -1196,8 +1189,8 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
electron-to-chromium@^1.2.7:
version "1.3.48"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz#d3b0d8593814044e092ece2108fc3ac9aea4b900"
version "1.3.52"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.52.tgz#d2d9f1270ba4a3b967b831c40ef71fb4d9ab5ce0"
encodeurl@~1.0.1:
version "1.0.2"
@ -1261,8 +1254,8 @@ entities@~1.1.1:
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
error-ex@^1.2.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
dependencies:
is-arrayish "^0.2.1"
@ -1406,12 +1399,12 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
is-extendable "^1.0.1"
extend@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-2.0.1.tgz#1ee8010689e7395ff9448241c98652bc759a8260"
version "2.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-2.0.2.tgz#1b74985400171b85554894459c978de6ef453ab7"
extend@^3.0.0, extend@~3.0.0, extend@~3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
extglob@^0.3.1:
version "0.3.2"
@ -1552,8 +1545,8 @@ flush-write-stream@^1.0.2:
readable-stream "^2.0.4"
follow-redirects@^1.0.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.0.tgz#234f49cf770b7f35b40e790f636ceba0c3a0ab77"
version "1.5.1"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.1.tgz#67a8f14f5a1f67f962c2c46469c79eaec0a90291"
dependencies:
debug "^3.1.0"
@ -1642,7 +1635,7 @@ fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
fsevents@^1.0.0, fsevents@^1.1.2:
fsevents@^1.0.0, fsevents@^1.2.2:
version "1.2.4"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
dependencies:
@ -1681,19 +1674,9 @@ gaze@^1.0.0:
dependencies:
globule "^1.0.0"
generate-function@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
generate-object-property@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
dependencies:
is-property "^1.0.0"
get-caller-file@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
version "1.0.3"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
get-stdin@^4.0.1:
version "4.0.1"
@ -1954,8 +1937,8 @@ gulp-match@^1.0.3:
minimatch "^3.0.3"
gulp-rename@^1.2.2:
version "1.3.0"
resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.3.0.tgz#2e789d8f563ab0c924eeb62967576f37ff4cb826"
version "1.4.0"
resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.4.0.tgz#de1c718e7c4095ae861f7296ef4f3248648240bd"
gulp-sass@^3.1.0:
version "3.2.1"
@ -2052,15 +2035,6 @@ har-schema@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
har-validator@~2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
dependencies:
chalk "^1.1.1"
commander "^2.9.0"
is-my-json-valid "^2.12.4"
pinkie-promise "^2.0.0"
har-validator@~4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
@ -2169,8 +2143,8 @@ homedir-polyfill@^1.0.1:
parse-passwd "^1.0.0"
hosted-git-info@^2.1.4:
version "2.6.0"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222"
version "2.7.1"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
html-comment-regex@^1.1.0:
version "1.1.1"
@ -2405,20 +2379,6 @@ is-glob@^4.0.0:
dependencies:
is-extglob "^2.1.1"
is-my-ip-valid@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824"
is-my-json-valid@^2.12.4:
version "2.17.2"
resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz#6b2103a288e94ef3de5cf15d29dd85fc4b78d65c"
dependencies:
generate-function "^2.0.0"
generate-object-property "^1.1.0"
is-my-ip-valid "^1.0.0"
jsonpointer "^4.0.0"
xtend "^4.0.0"
is-negated-glob@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2"
@ -2443,12 +2403,6 @@ is-number@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
is-odd@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24"
dependencies:
is-number "^4.0.0"
is-plain-obj@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
@ -2471,10 +2425,6 @@ is-promise@^2.1:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
is-property@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
is-relative@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
@ -2552,8 +2502,8 @@ jasmine-core@^2.6.1:
resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.99.1.tgz#e6400df1e6b56e130b61c4bcd093daa7f6e8ca15"
js-base64@^2.1.8, js-base64@^2.1.9:
version "2.4.5"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.5.tgz#e293cd3c7c82f070d700fc7a1ca0a2e69f101f92"
version "2.4.8"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.8.tgz#57a9b130888f956834aa40c5b165ba59c758f033"
js-yaml@~3.7.0:
version "3.7.0"
@ -2615,10 +2565,6 @@ jsonify@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
jsonpointer@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@ -2812,6 +2758,10 @@ lodash.clonedeep@^4.3.2:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
lodash.escape@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698"
@ -3084,15 +3034,15 @@ micromatch@^3.0.4, micromatch@^3.1.4:
snapdragon "^0.8.1"
to-regex "^3.0.2"
mime-db@~1.33.0:
version "1.33.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
mime-db@~1.35.0:
version "1.35.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47"
mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7:
version "2.1.18"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
version "2.1.19"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0"
dependencies:
mime-db "~1.33.0"
mime-db "~1.35.0"
mime@^1.3.4:
version "1.6.0"
@ -3178,15 +3128,14 @@ nan@^2.10.0, nan@^2.9.2:
resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
nanomatch@^1.2.9:
version "1.2.9"
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2"
version "1.2.13"
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
dependencies:
arr-diff "^4.0.0"
array-unique "^0.3.2"
define-property "^2.0.2"
extend-shallow "^3.0.2"
fragment-cache "^0.2.1"
is-odd "^2.0.0"
is-windows "^1.0.2"
kind-of "^6.0.2"
object.pick "^1.3.0"
@ -3194,7 +3143,7 @@ nanomatch@^1.2.9:
snapdragon "^0.8.1"
to-regex "^3.0.1"
needle@^2.2.0:
needle@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d"
dependencies:
@ -3228,23 +3177,23 @@ node-gyp@^3.3.1:
which "1"
node-pre-gyp@^0.10.0:
version "0.10.0"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46"
version "0.10.3"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
dependencies:
detect-libc "^1.0.2"
mkdirp "^0.5.1"
needle "^2.2.0"
needle "^2.2.1"
nopt "^4.0.1"
npm-packlist "^1.1.6"
npmlog "^4.0.2"
rc "^1.1.7"
rc "^1.2.7"
rimraf "^2.6.1"
semver "^5.3.0"
tar "^4"
node-sass@^4.8.3:
version "4.9.0"
resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.0.tgz#d1b8aa855d98ed684d6848db929a20771cc2ae52"
version "4.9.2"
resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.2.tgz#5e63fe6bd0f2ae3ac9d6c14ede8620e2b8bdb437"
dependencies:
async-foreach "^0.1.3"
chalk "^1.1.1"
@ -3261,7 +3210,7 @@ node-sass@^4.8.3:
nan "^2.10.0"
node-gyp "^3.3.1"
npmlog "^4.0.0"
request "~2.79.0"
request "2.87.0"
sass-graph "^2.2.4"
stdout-stream "^1.4.0"
"true-case-path" "^1.0.2"
@ -3318,8 +3267,8 @@ npm-bundled@^1.0.1:
resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308"
npm-packlist@^1.1.6:
version "1.1.10"
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a"
version "1.1.11"
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de"
dependencies:
ignore-walk "^3.0.1"
npm-bundled "^1.0.1"
@ -3380,8 +3329,8 @@ object-copy@^0.1.0:
kind-of "^3.0.3"
object-keys@^1.0.11, object-keys@^1.0.8:
version "1.0.11"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
version "1.0.12"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2"
object-visit@^1.0.0:
version "1.0.1"
@ -3926,10 +3875,6 @@ qs@6.5.2, qs@~6.5.1:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
qs@~6.3.0:
version "6.3.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
qs@~6.4.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
@ -3962,7 +3907,7 @@ raw-body@2.3.3:
iconv-lite "0.4.23"
unpipe "1.0.0"
rc@^1.1.7:
rc@^1.2.7:
version "1.2.8"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
dependencies:
@ -4148,6 +4093,31 @@ request-progress@^2.0.1:
dependencies:
throttleit "^1.0.0"
request@2.87.0, request@^2.81.0:
version "2.87.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e"
dependencies:
aws-sign2 "~0.7.0"
aws4 "^1.6.0"
caseless "~0.12.0"
combined-stream "~1.0.5"
extend "~3.0.1"
forever-agent "~0.6.1"
form-data "~2.3.1"
har-validator "~5.0.3"
http-signature "~1.2.0"
is-typedarray "~1.0.0"
isstream "~0.1.2"
json-stringify-safe "~5.0.1"
mime-types "~2.1.17"
oauth-sign "~0.8.2"
performance-now "^2.1.0"
qs "~6.5.1"
safe-buffer "^5.1.1"
tough-cookie "~2.3.3"
tunnel-agent "^0.6.0"
uuid "^3.1.0"
"request@>=2.9.0 <2.82.0":
version "2.81.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
@ -4175,56 +4145,6 @@ request-progress@^2.0.1:
tunnel-agent "^0.6.0"
uuid "^3.0.0"
request@^2.81.0:
version "2.87.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e"
dependencies:
aws-sign2 "~0.7.0"
aws4 "^1.6.0"
caseless "~0.12.0"
combined-stream "~1.0.5"
extend "~3.0.1"
forever-agent "~0.6.1"
form-data "~2.3.1"
har-validator "~5.0.3"
http-signature "~1.2.0"
is-typedarray "~1.0.0"
isstream "~0.1.2"
json-stringify-safe "~5.0.1"
mime-types "~2.1.17"
oauth-sign "~0.8.2"
performance-now "^2.1.0"
qs "~6.5.1"
safe-buffer "^5.1.1"
tough-cookie "~2.3.3"
tunnel-agent "^0.6.0"
uuid "^3.1.0"
request@~2.79.0:
version "2.79.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
dependencies:
aws-sign2 "~0.6.0"
aws4 "^1.2.1"
caseless "~0.11.0"
combined-stream "~1.0.5"
extend "~3.0.0"
forever-agent "~0.6.1"
form-data "~2.1.1"
har-validator "~2.0.6"
hawk "~3.1.3"
http-signature "~1.1.0"
is-typedarray "~1.0.0"
isstream "~0.1.2"
json-stringify-safe "~5.0.1"
mime-types "~2.1.7"
oauth-sign "~0.8.1"
qs "~6.3.0"
stringstream "~0.0.4"
tough-cookie "~2.3.0"
tunnel-agent "~0.4.1"
uuid "^3.0.0"
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@ -4255,8 +4175,8 @@ resolve-url@^0.2.1:
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
resolve@^1.1.6, resolve@^1.1.7, resolve@^1.4.0:
version "1.7.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3"
version "1.8.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26"
dependencies:
path-parse "^1.0.5"
@ -4479,7 +4399,7 @@ source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
source-map@^0.6.1, source-map@~0.6.0:
source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
@ -4836,10 +4756,6 @@ tunnel-agent@^0.6.0:
dependencies:
safe-buffer "^5.0.1"
tunnel-agent@~0.4.1:
version "0.4.3"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
@ -4944,7 +4860,7 @@ unset-value@^1.0.0:
has-value "^0.3.1"
isobject "^3.0.0"
upath@^1.0.0:
upath@^1.0.5:
version "1.1.0"
resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
@ -4953,10 +4869,8 @@ urix@^0.1.0:
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
use@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544"
dependencies:
kind-of "^6.0.2"
version "3.1.1"
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
useragent@^2.1.12:
version "2.3.0"
@ -4974,8 +4888,8 @@ utils-merge@1.0.1:
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
uuid@^3.0.0, uuid@^3.1.0:
version "3.2.1"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14"
version "3.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
v8flags@^3.0.1:
version "3.1.1"
@ -5089,8 +5003,8 @@ vinyl@^1.0.0:
replace-ext "0.0.1"
vinyl@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c"
version "2.2.0"
resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86"
dependencies:
clone "^2.1.1"
clone-buffer "^1.0.0"
@ -5161,7 +5075,7 @@ xmlhttprequest-ssl@1.5.3:
version "1.5.3"
resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d"
"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1:
"xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.0, xtend@~4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"