├── web ├── src │ ├── assets │ │ ├── .gitkeep │ │ └── css │ │ │ ├── bootstrap-reboot.min.css.map │ │ │ ├── cover.css │ │ │ ├── bootstrap-reboot.min.css │ │ │ ├── bootstrap-reboot.css │ │ │ ├── bootstrap-reboot.css.map │ │ │ ├── bootstrap-grid.min.css.map │ │ │ ├── bootstrap-grid.min.css │ │ │ ├── bootstrap-grid.css.map │ │ │ └── bootstrap-grid.css │ ├── app │ │ ├── shared │ │ │ ├── index.ts │ │ │ └── util.ts │ │ ├── index.ts │ │ ├── app.state.ts │ │ ├── app.module.ts │ │ ├── app.component.ts │ │ ├── app.reducer.ts │ │ ├── app.component.spec.ts │ │ └── app.component.html │ ├── favicon.ico │ ├── styles.css │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── typings.d.ts │ ├── tsconfig.app.json │ ├── main.ts │ ├── tsconfig.spec.json │ ├── index.html │ ├── test.ts │ └── polyfills.ts ├── e2e │ ├── app.po.ts │ ├── app.e2e-spec.ts │ └── tsconfig.json ├── .editorconfig ├── .gitignore ├── protractor.conf.js ├── tsconfig.json ├── README.md ├── angular-cli.json ├── karma.conf.js ├── package.json └── tslint.json ├── core ├── .gitignore ├── .npmignore ├── src │ ├── modules │ │ └── counter │ │ │ ├── counter.state.ts │ │ │ ├── index.ts │ │ │ ├── counter.module.ts │ │ │ ├── counter.effects.ts │ │ │ ├── counter.actions.ts │ │ │ └── counter.reducer.ts │ ├── providers │ │ └── my-provider.ts │ ├── components │ │ └── my-component.ts │ ├── index.ts │ └── demo-core-module.module.ts ├── scripts │ └── copy-package.js ├── .editorconfig ├── tsconfig.json ├── package.json ├── tslint.json └── yarn.lock ├── mobile ├── src │ ├── pages │ │ └── home │ │ │ ├── home.scss │ │ │ ├── home.html │ │ │ └── home.ts │ ├── app │ │ ├── app.html │ │ ├── app.state.ts │ │ ├── main.ts │ │ ├── app.scss │ │ ├── app.component.ts │ │ ├── app.reducer.ts │ │ └── app.module.ts │ ├── assets │ │ └── icon │ │ │ └── favicon.ico │ ├── manifest.json │ ├── declarations.d.ts │ ├── service-worker.js │ ├── index.html │ └── theme │ │ └── variables.scss ├── resources │ ├── icon.png │ ├── splash.png │ ├── ios │ │ ├── icon │ │ │ ├── icon.png │ │ │ ├── icon-40.png │ │ │ ├── icon-50.png │ │ │ ├── icon-60.png │ │ │ ├── icon-72.png │ │ │ ├── icon-76.png │ │ │ ├── icon@2x.png │ │ │ ├── icon-40@2x.png │ │ │ ├── icon-40@3x.png │ │ │ ├── icon-50@2x.png │ │ │ ├── icon-60@2x.png │ │ │ ├── icon-60@3x.png │ │ │ ├── icon-72@2x.png │ │ │ ├── icon-76@2x.png │ │ │ ├── icon-83.5@2x.png │ │ │ ├── icon-small.png │ │ │ ├── icon-small@2x.png │ │ │ └── icon-small@3x.png │ │ └── splash │ │ │ ├── Default-667h.png │ │ │ ├── Default-736h.png │ │ │ ├── Default~iphone.png │ │ │ ├── Default@2x~iphone.png │ │ │ ├── Default-568h@2x~iphone.png │ │ │ ├── Default-Landscape-736h.png │ │ │ ├── Default-Landscape~ipad.png │ │ │ ├── Default-Portrait~ipad.png │ │ │ ├── Default-Landscape@2x~ipad.png │ │ │ └── Default-Portrait@2x~ipad.png │ └── android │ │ ├── icon │ │ ├── drawable-hdpi-icon.png │ │ ├── drawable-ldpi-icon.png │ │ ├── drawable-mdpi-icon.png │ │ ├── drawable-xhdpi-icon.png │ │ ├── drawable-xxhdpi-icon.png │ │ └── drawable-xxxhdpi-icon.png │ │ └── splash │ │ ├── drawable-land-hdpi-screen.png │ │ ├── drawable-land-ldpi-screen.png │ │ ├── drawable-land-mdpi-screen.png │ │ ├── drawable-land-xhdpi-screen.png │ │ ├── drawable-port-hdpi-screen.png │ │ ├── drawable-port-ldpi-screen.png │ │ ├── drawable-port-mdpi-screen.png │ │ ├── drawable-port-xhdpi-screen.png │ │ ├── drawable-land-xxhdpi-screen.png │ │ ├── drawable-land-xxxhdpi-screen.png │ │ ├── drawable-port-xxhdpi-screen.png │ │ └── drawable-port-xxxhdpi-screen.png ├── ionic.config.json ├── tslint.json ├── .editorconfig ├── README.md ├── .gitignore ├── tsconfig.json ├── www │ └── index.html ├── package.json ├── config.xml └── hooks │ └── README.md ├── ngrx-angular-web-app.png ├── .gitignore └── README.md /web/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/src/app/shared/index.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /core/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | aot/ -------------------------------------------------------------------------------- /mobile/src/pages/home/home.scss: -------------------------------------------------------------------------------- 1 | page-home { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /mobile/src/app/app.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /core/.npmignore: -------------------------------------------------------------------------------- 1 | src 2 | node_modules 3 | .gitignore 4 | .npmignore 5 | tsconfig.json 6 | aot -------------------------------------------------------------------------------- /web/src/app/index.ts: -------------------------------------------------------------------------------- 1 | export * from './app.component'; 2 | export * from './app.module'; 3 | -------------------------------------------------------------------------------- /web/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/web/src/favicon.ico -------------------------------------------------------------------------------- /web/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ -------------------------------------------------------------------------------- /web/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ngrx-angular-web-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/ngrx-angular-web-app.png -------------------------------------------------------------------------------- /mobile/resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/icon.png -------------------------------------------------------------------------------- /mobile/resources/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/splash.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon.png -------------------------------------------------------------------------------- /mobile/src/assets/icon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/src/assets/icon/favicon.ico -------------------------------------------------------------------------------- /mobile/ionic.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngrx-demo-mobile", 3 | "app_id": "", 4 | "projectTypeId": "ionic-angular" 5 | } 6 | -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-40.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-50.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-60.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-72.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-76.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon@2x.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-40@2x.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-40@3x.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-50@2x.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-60@2x.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-60@3x.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-72@2x.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-76@2x.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-83.5@2x.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-small.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-small@2x.png -------------------------------------------------------------------------------- /mobile/resources/ios/icon/icon-small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/icon/icon-small@3x.png -------------------------------------------------------------------------------- /mobile/resources/ios/splash/Default-667h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/splash/Default-667h.png -------------------------------------------------------------------------------- /mobile/resources/ios/splash/Default-736h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/splash/Default-736h.png -------------------------------------------------------------------------------- /web/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /mobile/resources/ios/splash/Default~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/splash/Default~iphone.png -------------------------------------------------------------------------------- /mobile/resources/ios/splash/Default@2x~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/splash/Default@2x~iphone.png -------------------------------------------------------------------------------- /mobile/resources/android/icon/drawable-hdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/icon/drawable-hdpi-icon.png -------------------------------------------------------------------------------- /mobile/resources/android/icon/drawable-ldpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/icon/drawable-ldpi-icon.png -------------------------------------------------------------------------------- /mobile/resources/android/icon/drawable-mdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/icon/drawable-mdpi-icon.png -------------------------------------------------------------------------------- /mobile/resources/android/icon/drawable-xhdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/icon/drawable-xhdpi-icon.png -------------------------------------------------------------------------------- /mobile/resources/android/icon/drawable-xxhdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/icon/drawable-xxhdpi-icon.png -------------------------------------------------------------------------------- /mobile/resources/ios/splash/Default-568h@2x~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/splash/Default-568h@2x~iphone.png -------------------------------------------------------------------------------- /mobile/resources/ios/splash/Default-Landscape-736h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/splash/Default-Landscape-736h.png -------------------------------------------------------------------------------- /mobile/resources/ios/splash/Default-Landscape~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/splash/Default-Landscape~ipad.png -------------------------------------------------------------------------------- /mobile/resources/ios/splash/Default-Portrait~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/splash/Default-Portrait~ipad.png -------------------------------------------------------------------------------- /mobile/resources/android/icon/drawable-xxxhdpi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/icon/drawable-xxxhdpi-icon.png -------------------------------------------------------------------------------- /mobile/resources/ios/splash/Default-Landscape@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/splash/Default-Landscape@2x~ipad.png -------------------------------------------------------------------------------- /mobile/resources/ios/splash/Default-Portrait@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/ios/splash/Default-Portrait@2x~ipad.png -------------------------------------------------------------------------------- /web/src/app/app.state.ts: -------------------------------------------------------------------------------- 1 | import { CounterState } from 'ngrx-demo-core'; 2 | 3 | export interface AppState { 4 | counter: CounterState, 5 | // Add other states here 6 | } -------------------------------------------------------------------------------- /mobile/resources/android/splash/drawable-land-hdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/splash/drawable-land-hdpi-screen.png -------------------------------------------------------------------------------- /mobile/resources/android/splash/drawable-land-ldpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/splash/drawable-land-ldpi-screen.png -------------------------------------------------------------------------------- /mobile/resources/android/splash/drawable-land-mdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/splash/drawable-land-mdpi-screen.png -------------------------------------------------------------------------------- /mobile/resources/android/splash/drawable-land-xhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/splash/drawable-land-xhdpi-screen.png -------------------------------------------------------------------------------- /mobile/resources/android/splash/drawable-port-hdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/splash/drawable-port-hdpi-screen.png -------------------------------------------------------------------------------- /mobile/resources/android/splash/drawable-port-ldpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/splash/drawable-port-ldpi-screen.png -------------------------------------------------------------------------------- /mobile/resources/android/splash/drawable-port-mdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/splash/drawable-port-mdpi-screen.png -------------------------------------------------------------------------------- /mobile/resources/android/splash/drawable-port-xhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/splash/drawable-port-xhdpi-screen.png -------------------------------------------------------------------------------- /mobile/src/app/app.state.ts: -------------------------------------------------------------------------------- 1 | import { CounterState } from 'ngrx-demo-core'; 2 | 3 | export interface AppState { 4 | counter: CounterState, 5 | // Add other states here 6 | } 7 | -------------------------------------------------------------------------------- /mobile/resources/android/splash/drawable-land-xxhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/splash/drawable-land-xxhdpi-screen.png -------------------------------------------------------------------------------- /mobile/resources/android/splash/drawable-land-xxxhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/splash/drawable-land-xxxhdpi-screen.png -------------------------------------------------------------------------------- /mobile/resources/android/splash/drawable-port-xxhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/splash/drawable-port-xxhdpi-screen.png -------------------------------------------------------------------------------- /mobile/resources/android/splash/drawable-port-xxxhdpi-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benorama/ngrx-demo-apps/HEAD/mobile/resources/android/splash/drawable-port-xxxhdpi-screen.png -------------------------------------------------------------------------------- /core/src/modules/counter/counter.state.ts: -------------------------------------------------------------------------------- 1 | export interface CounterState { 2 | 3 | total: number; 4 | 5 | } 6 | 7 | export let initialCounterState: CounterState = { 8 | total: 0 9 | }; 10 | -------------------------------------------------------------------------------- /mobile/src/app/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | 3 | import { AppModule } from './app.module'; 4 | 5 | platformBrowserDynamic().bootstrapModule(AppModule); 6 | -------------------------------------------------------------------------------- /core/src/providers/my-provider.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | @Injectable() 4 | export class MyProvider { 5 | myMethod() { 6 | console.log("I'm afraid I can't do that."); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /mobile/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "no-duplicate-variable": true, 4 | "no-unused-variable": [ 5 | true 6 | ] 7 | }, 8 | "rulesDirectory": [ 9 | "node_modules/tslint-eslint-rules/dist/rules" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /core/src/components/my-component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'my-component', 5 | template: `
I'm a special snowflake
` 6 | }) 7 | export class MyComponent { 8 | constructor() {} 9 | } 10 | -------------------------------------------------------------------------------- /core/src/modules/counter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './counter.actions'; 2 | export {CounterModule} from './counter.module'; 3 | export {counterReducer} from './counter.reducer'; 4 | export {CounterState} from './counter.state'; 5 | export {CounterEffects} from './counter.effects'; 6 | -------------------------------------------------------------------------------- /web/e2e/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, element, by } from 'protractor/globals'; 2 | 3 | export class WebPage { 4 | navigateTo() { 5 | return browser.get('/'); 6 | } 7 | 8 | getParagraphText() { 9 | return element(by.css('app-root h1')).getText(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /web/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "es2015", 6 | "baseUrl": "", 7 | "types": [] 8 | }, 9 | "exclude": [ 10 | "test.ts", 11 | "**/*.spec.ts" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /web/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /core/scripts/copy-package.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | 3 | var packageJson = require('../package.json'); 4 | if (! packageJson) { 5 | throw new Error('Can\'t find package json'); 6 | } 7 | 8 | delete packageJson.devDependencies; 9 | 10 | fs.writeFile('./dist/package.json', JSON.stringify(packageJson, null, 2)); -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | tmp/ 4 | 5 | *.log 6 | *.tgz 7 | 8 | # core 9 | core/typings/ 10 | 11 | # web 12 | web/typings/ 13 | web/e2e/*.d.ts 14 | 15 | # mobile 16 | mobile/www/build/ 17 | mobile/platforms/ 18 | mobile/plugins/ 19 | mobile/typings/ 20 | *.swp 21 | 22 | .DS_Store 23 | Thumbs.db 24 | .idea 25 | -------------------------------------------------------------------------------- /core/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [*.md] 13 | max_line_length = 0 14 | trim_trailing_whitespace = false 15 | -------------------------------------------------------------------------------- /mobile/src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Ionic", 3 | "short_name": "Ionic", 4 | "start_url": "index.html", 5 | "display": "standalone", 6 | "icons": [{ 7 | "src": "assets/imgs/logo.png", 8 | "sizes": "512x512", 9 | "type": "image/png" 10 | }], 11 | "background_color": "#4e8ef7", 12 | "theme_color": "#4e8ef7" 13 | } -------------------------------------------------------------------------------- /core/src/index.ts: -------------------------------------------------------------------------------- 1 | export {DemoCoreModule} from './demo-core-module.module'; 2 | export * from './components/my-component'; 3 | export * from './providers/my-provider'; 4 | export { 5 | CounterState, 6 | CounterModule, 7 | counterReducer, 8 | CounterEffects 9 | } from './modules/counter'; 10 | export * from './modules/counter/counter.actions'; 11 | -------------------------------------------------------------------------------- /web/e2e/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { WebPage } from './app.po'; 2 | 3 | describe('web App', function() { 4 | let page: WebPage; 5 | 6 | beforeEach(() => { 7 | page = new WebPage(); 8 | }); 9 | 10 | it('should display message saying app works', () => { 11 | page.navigateTo(); 12 | expect(page.getParagraphText()).toEqual('app works!'); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /web/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /web/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "baseUrl": "", 8 | "types": [ 9 | "jasmine", 10 | "node" 11 | ] 12 | }, 13 | "files": [ 14 | "test.ts" 15 | ], 16 | "include": [ 17 | "**/*.spec.ts", 18 | "**/*.d.ts" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /web/e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "declaration": false, 5 | "emitDecoratorMetadata": true, 6 | "experimentalDecorators": true, 7 | "module": "commonjs", 8 | "moduleResolution": "node", 9 | "outDir": "../dist/out-tsc-e2e", 10 | "sourceMap": true, 11 | "target": "es5", 12 | "typeRoots": [ 13 | "../node_modules/@types" 14 | ] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /web/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // The file contents for the current environment will overwrite these during build. 2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do 3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead. 4 | // The list of which env maps to which file can be found in `angular-cli.json`. 5 | 6 | export const environment = { 7 | production: false 8 | }; 9 | -------------------------------------------------------------------------------- /core/src/modules/counter/counter.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { EffectsModule } from '@ngrx/effects'; 3 | 4 | import { CounterEffects } from './counter.effects'; 5 | import { counterReducer } from './counter.reducer'; 6 | 7 | @NgModule({ 8 | declarations: [ 9 | ], 10 | imports: [ 11 | EffectsModule.run(CounterEffects) 12 | ], 13 | providers: [ 14 | ] 15 | }) 16 | export class CounterModule {} 17 | -------------------------------------------------------------------------------- /mobile/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs 2 | # editorconfig.org 3 | 4 | root = true 5 | 6 | [*] 7 | indent_style = space 8 | indent_size = 2 9 | 10 | # We recommend you to keep these unchanged 11 | end_of_line = lf 12 | charset = utf-8 13 | trim_trailing_whitespace = true 14 | insert_final_newline = true 15 | 16 | [*.md] 17 | trim_trailing_whitespace = false -------------------------------------------------------------------------------- /mobile/README.md: -------------------------------------------------------------------------------- 1 | Ionic 2 App Base 2 | ===================== 3 | 4 | This is the base template for Ionic 2 starter apps. 5 | 6 | ## Using this project 7 | 8 | You'll need the Ionic CLI with support for v2 apps: 9 | 10 | ```bash 11 | $ npm install -g ionic 12 | ``` 13 | 14 | Then run: 15 | 16 | ```bash 17 | $ ionic start myApp 18 | ``` 19 | 20 | More info on this can be found on the Ionic [Getting Started](http://ionicframework.com/docs/v2/getting-started/) page. 21 | -------------------------------------------------------------------------------- /core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "src", 5 | "declaration": true, 6 | "emitDecoratorMetadata": true, 7 | "experimentalDecorators": true, 8 | "module": "commonjs", 9 | "moduleResolution": "node", 10 | "outDir": "./dist", 11 | "sourceMap": true, 12 | "target": "es5", 13 | "typeRoots": [ 14 | "node_modules/@types" 15 | ], 16 | "lib": [ 17 | "es2016", 18 | "dom" 19 | ] 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /mobile/src/pages/home/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Ngrx/Ionic mobile app 5 | 6 | 7 | 8 | 9 | 10 |

11 | {{counter$ | async}} 12 |

13 |

14 | 15 | 16 |

17 |

18 | 19 |

20 |
21 | -------------------------------------------------------------------------------- /mobile/.gitignore: -------------------------------------------------------------------------------- 1 | # Specifies intentionally untracked files to ignore when using Git 2 | # http://git-scm.com/docs/gitignore 3 | 4 | *~ 5 | *.sw[mnpcod] 6 | *.log 7 | *.tmp 8 | *.tmp.* 9 | log.txt 10 | *.sublime-project 11 | *.sublime-workspace 12 | .vscode/ 13 | npm-debug.log* 14 | 15 | .idea/ 16 | .sass-cache/ 17 | .tmp/ 18 | .versions/ 19 | coverage/ 20 | dist/ 21 | node_modules/ 22 | tmp/ 23 | temp/ 24 | hooks/ 25 | platforms/ 26 | plugins/ 27 | plugins/android.json 28 | plugins/ios.json 29 | www/ 30 | $RECYCLE.BIN/ 31 | 32 | .DS_Store 33 | Thumbs.db 34 | UserInterfaceState.xcuserstate 35 | -------------------------------------------------------------------------------- /mobile/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "declaration": false, 5 | "emitDecoratorMetadata": true, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2015" 10 | ], 11 | "module": "es2015", 12 | "moduleResolution": "node", 13 | "sourceMap": true, 14 | "target": "es5" 15 | }, 16 | "include": [ 17 | "src/**/*.ts" 18 | ], 19 | "exclude": [ 20 | "node_modules" 21 | ], 22 | "compileOnSave": false, 23 | "atom": { 24 | "rewriteTsconfig": false 25 | } 26 | } -------------------------------------------------------------------------------- /core/src/demo-core-module.module.ts: -------------------------------------------------------------------------------- 1 | import { Observable } from 'rxjs'; 2 | import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 3 | import { BrowserModule } from '@angular/platform-browser'; 4 | 5 | import { MyComponent } from './components/my-component'; 6 | import { MyProvider } from './providers/my-provider'; 7 | 8 | @NgModule({ 9 | declarations: [ 10 | MyComponent 11 | ], 12 | providers: [ MyProvider ], 13 | exports: [ 14 | MyComponent 15 | ], 16 | imports: [ 17 | BrowserModule 18 | ], 19 | schemas: [ 20 | CUSTOM_ELEMENTS_SCHEMA 21 | ] 22 | }) 23 | export class DemoCoreModule {} 24 | -------------------------------------------------------------------------------- /web/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Ngrx/Angular Web App 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Loading... 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /web/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | 7 | # dependencies 8 | /node_modules 9 | 10 | # IDEs and editors 11 | /.idea 12 | .project 13 | .classpath 14 | .c9/ 15 | *.launch 16 | .settings/ 17 | 18 | # IDE - VSCode 19 | .vscode/* 20 | !.vscode/settings.json 21 | !.vscode/tasks.json 22 | !.vscode/launch.json 23 | !.vscode/extensions.json 24 | 25 | # misc 26 | /.sass-cache 27 | /connect.lock 28 | /coverage/* 29 | /libpeerconnection.log 30 | npm-debug.log 31 | testem.log 32 | /typings 33 | 34 | # e2e 35 | /e2e/*.js 36 | /e2e/*.map 37 | 38 | #System Files 39 | .DS_Store 40 | Thumbs.db 41 | -------------------------------------------------------------------------------- /mobile/src/declarations.d.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Declaration files are how the Typescript compiler knows about the type information(or shape) of an object. 3 | They're what make intellisense work and make Typescript know all about your code. 4 | 5 | A wildcard module is declared below to allow third party libraries to be used in an app even if they don't 6 | provide their own type declarations. 7 | 8 | To learn more about using third party libraries in an Ionic app, check out the docs here: 9 | http://ionicframework.com/docs/v2/resources/third-party-libs/ 10 | 11 | For more info on type definition files, check out the Typescript docs here: 12 | https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html 13 | */ 14 | declare module '*'; -------------------------------------------------------------------------------- /mobile/src/app/app.scss: -------------------------------------------------------------------------------- 1 | // http://ionicframework.com/docs/v2/theming/ 2 | 3 | 4 | // App Global Sass 5 | // -------------------------------------------------- 6 | // Put style rules here that you want to apply globally. These 7 | // styles are for the entire app and not just one component. 8 | // Additionally, this file can be also used as an entry point 9 | // to import other Sass files to be included in the output CSS. 10 | // 11 | // Shared Sass variables, which can be used to adjust Ionic's 12 | // default Sass variables, belong in "theme/variables.scss". 13 | // 14 | // To declare rules for a specific mode, create a child rule 15 | // for the .md, .ios, or .wp mode classes. The mode class is 16 | // automatically applied to the element in the app. 17 | -------------------------------------------------------------------------------- /core/src/modules/counter/counter.effects.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { Effect, Actions } from '@ngrx/effects'; 3 | import { Observable } from 'rxjs/Observable';; 4 | import 'rxjs/add/operator/map'; 5 | import 'rxjs/add/operator/startWith'; 6 | import 'rxjs/add/observable/of'; 7 | import { 8 | CounterActionTypes, 9 | ResetAction, 10 | ResetSuccessAction 11 | } from './counter.actions'; 12 | 13 | @Injectable() 14 | export class CounterEffects { 15 | constructor( 16 | private actions$: Actions 17 | ) { } 18 | 19 | 20 | @Effect() resetSuccess$ = this.actions$ 21 | .ofType(CounterActionTypes.RESET) 22 | .startWith(new ResetAction()) 23 | .map(() => { 24 | return new ResetSuccessAction() 25 | }); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /mobile/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { Platform } from 'ionic-angular'; 3 | import { StatusBar } from '@ionic-native/status-bar'; 4 | import { SplashScreen } from '@ionic-native/splash-screen'; 5 | 6 | import { HomePage } from '../pages/home/home'; 7 | 8 | 9 | @Component({ 10 | templateUrl: 'app.html' 11 | }) 12 | export class MyApp { 13 | rootPage:any = HomePage; 14 | 15 | constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) { 16 | platform.ready().then(() => { 17 | // Okay, so the platform is ready and our plugins are available. 18 | // Here you can do any higher level native things you might need. 19 | statusBar.styleDefault(); 20 | splashScreen.hide(); 21 | }); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /core/src/modules/counter/counter.actions.ts: -------------------------------------------------------------------------------- 1 | import { Action } from '@ngrx/store'; 2 | 3 | export const CounterActionTypes = { 4 | INCREMENT: '[Counter] Increment', 5 | DECREMENT: '[Counter] Decrement', 6 | RESET: '[Counter] Reset', 7 | RESET_SUCCESS: '[Counter] ResetSucess' 8 | }; 9 | 10 | 11 | export class IncrementAction implements Action { 12 | type = CounterActionTypes.INCREMENT; 13 | } 14 | 15 | export class DecrementAction implements Action { 16 | type = CounterActionTypes.DECREMENT; 17 | } 18 | 19 | export class ResetAction implements Action { 20 | type = CounterActionTypes.RESET; 21 | } 22 | 23 | export class ResetSuccessAction implements Action { 24 | type = CounterActionTypes.RESET_SUCCESS; 25 | } 26 | 27 | export type CounterActions = 28 | IncrementAction 29 | | DecrementAction 30 | | ResetAction 31 | | ResetSuccessAction; 32 | -------------------------------------------------------------------------------- /mobile/src/pages/home/home.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { Observable } from 'rxjs/Observable'; 3 | import { Store } from '@ngrx/store'; 4 | 5 | import { AppState } from '../../app/app.state'; 6 | import * as counterActions from 'ngrx-demo-core'; 7 | 8 | @Component({ 9 | selector: 'page-home', 10 | templateUrl: 'home.html' 11 | }) 12 | export class HomePage { 13 | 14 | counter$: Observable; 15 | 16 | constructor(private store: Store) { 17 | this.counter$ = this.store.select(s => s.counter.total); 18 | } 19 | 20 | decrement() { 21 | this.store.dispatch(new counterActions.DecrementAction()); 22 | } 23 | 24 | increment() { 25 | this.store.dispatch(new counterActions.IncrementAction()); 26 | } 27 | 28 | reset() { 29 | this.store.dispatch(new counterActions.ResetAction()); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /web/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { BrowserModule } from '@angular/platform-browser'; 2 | import { NgModule } from '@angular/core'; 3 | import { StoreModule } from '@ngrx/store'; 4 | import { StoreDevtoolsModule } from '@ngrx/store-devtools'; 5 | import { EffectsModule } from '@ngrx/effects'; 6 | 7 | import { DemoCoreModule, CounterEffects } from 'ngrx-demo-core'; 8 | import { reducer } from './app.reducer'; 9 | import { AppComponent } from './app.component'; 10 | 11 | @NgModule({ 12 | bootstrap: [ 13 | AppComponent 14 | ], 15 | declarations: [ 16 | AppComponent 17 | ], 18 | imports: [ 19 | BrowserModule, 20 | DemoCoreModule, 21 | StoreModule.provideStore(reducer), 22 | StoreDevtoolsModule.instrumentOnlyWithExtension(), 23 | EffectsModule.runAfterBootstrap(CounterEffects) 24 | ], 25 | providers: [] 26 | }) 27 | export class AppModule { } 28 | -------------------------------------------------------------------------------- /mobile/src/service-worker.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Check out https://googlechrome.github.io/sw-toolbox/docs/master/index.html for 3 | * more info on how to use sw-toolbox to custom configure your service worker. 4 | */ 5 | 6 | 7 | 'use strict'; 8 | importScripts('./build/sw-toolbox.js'); 9 | 10 | self.toolbox.options.cache = { 11 | name: 'ionic-cache' 12 | }; 13 | 14 | // pre-cache our key assets 15 | self.toolbox.precache( 16 | [ 17 | './build/main.js', 18 | './build/main.css', 19 | './build/polyfills.js', 20 | 'index.html', 21 | 'manifest.json' 22 | ] 23 | ); 24 | 25 | // dynamically cache any other local assets 26 | self.toolbox.router.any('/*', self.toolbox.cacheFirst); 27 | 28 | // for any other requests go to the network, cache, 29 | // and then only use that cached resource if your user goes offline 30 | self.toolbox.router.default = self.toolbox.networkFirst; -------------------------------------------------------------------------------- /web/protractor.conf.js: -------------------------------------------------------------------------------- 1 | // Protractor configuration file, see link for more information 2 | // https://github.com/angular/protractor/blob/master/lib/config.ts 3 | 4 | const { SpecReporter } = require('jasmine-spec-reporter'); 5 | 6 | exports.config = { 7 | allScriptsTimeout: 11000, 8 | specs: [ 9 | './e2e/**/*.e2e-spec.ts' 10 | ], 11 | capabilities: { 12 | 'browserName': 'chrome' 13 | }, 14 | directConnect: true, 15 | baseUrl: 'http://localhost:4200/', 16 | framework: 'jasmine', 17 | jasmineNodeOpts: { 18 | showColors: true, 19 | defaultTimeoutInterval: 30000, 20 | print: function() {} 21 | }, 22 | beforeLaunch: function() { 23 | require('ts-node').register({ 24 | project: 'e2e/tsconfig.e2e.json' 25 | }); 26 | }, 27 | onPrepare() { 28 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); 29 | } 30 | }; 31 | -------------------------------------------------------------------------------- /mobile/src/app/app.reducer.ts: -------------------------------------------------------------------------------- 1 | import '@ngrx/core/add/operator/select'; 2 | import 'rxjs/add/operator/switchMap'; 3 | import 'rxjs/add/operator/let'; 4 | import { combineReducers } from '@ngrx/store'; 5 | import { compose } from '@ngrx/core/compose'; 6 | import { storeLogger } from 'ngrx-store-logger'; 7 | import { storeFreeze } from 'ngrx-store-freeze'; 8 | import { counterReducer } from 'ngrx-demo-core'; 9 | 10 | const reducers = { 11 | counter: counterReducer 12 | }; 13 | 14 | const developmentReducer = compose(storeFreeze, storeLogger(), combineReducers)(reducers); 15 | //const productionReducer = combineReducers(reducers); 16 | 17 | export function reducer(state: any, action: any) { 18 | /*if (environment.production) { 19 | return productionReducer(state, action); 20 | } 21 | else { 22 | return developmentReducer(state, action); 23 | }*/ 24 | return developmentReducer(state, action); 25 | } 26 | -------------------------------------------------------------------------------- /web/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | import { Observable } from 'rxjs/Observable'; 4 | import { Store } from '@ngrx/store'; 5 | 6 | import { AppState } from './app.state'; 7 | import * as counterActions from 'ngrx-demo-core'; 8 | //import * as counterActions from './counter/counter.actions'; 9 | 10 | @Component({ 11 | selector: 'app-root', 12 | templateUrl: './app.component.html' 13 | }) 14 | export class AppComponent { 15 | 16 | counter$: Observable; 17 | 18 | constructor(private store: Store) { 19 | this.counter$ = this.store.select(s => s.counter.total); 20 | } 21 | 22 | decrement() { 23 | this.store.dispatch(new counterActions.DecrementAction()); 24 | } 25 | 26 | increment() { 27 | this.store.dispatch(new counterActions.IncrementAction()); 28 | } 29 | 30 | reset() { 31 | this.store.dispatch(new counterActions.ResetAction()); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /core/src/modules/counter/counter.reducer.ts: -------------------------------------------------------------------------------- 1 | import '@ngrx/core/add/operator/select'; 2 | import 'rxjs/add/operator/map'; 3 | import { Action } from '@ngrx/store'; 4 | import { Observable } from 'rxjs/Observable'; 5 | import { CounterActions, CounterActionTypes } from './counter.actions'; 6 | import { initialCounterState, CounterState } from './counter.state'; 7 | 8 | export function counterReducer(state = initialCounterState, action: CounterActions): CounterState { 9 | switch (action.type) { 10 | 11 | case CounterActionTypes.INCREMENT: 12 | return Object.assign({}, state, { 13 | total : state.total + 1 14 | }); 15 | 16 | case CounterActionTypes.DECREMENT: 17 | return Object.assign({}, state, { 18 | total : state.total - 1 19 | }); 20 | 21 | case CounterActionTypes.RESET_SUCCESS: 22 | return initialCounterState; 23 | 24 | 25 | default: { 26 | return state; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /web/src/app/app.reducer.ts: -------------------------------------------------------------------------------- 1 | import '@ngrx/core/add/operator/select'; 2 | import 'rxjs/add/operator/switchMap'; 3 | import 'rxjs/add/operator/let'; 4 | import { combineReducers } from '@ngrx/store'; 5 | import { compose } from '@ngrx/core/compose'; 6 | import { storeLogger } from 'ngrx-store-logger'; 7 | import { storeFreeze } from 'ngrx-store-freeze'; 8 | import { share, Selector } from './shared/util'; 9 | import { environment } from '../environments/environment'; 10 | import { counterReducer } from 'ngrx-demo-core'; 11 | 12 | const reducers = { 13 | counter: counterReducer 14 | }; 15 | 16 | const developmentReducer = compose(storeFreeze, storeLogger(), combineReducers)(reducers); 17 | const productionReducer = combineReducers(reducers); 18 | 19 | export function reducer(state: any, action: any) { 20 | if (environment.production) { 21 | return productionReducer(state, action); 22 | } 23 | else { 24 | return developmentReducer(state, action); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /web/src/app/app.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { AppComponent } from './app.component'; 5 | 6 | describe('App: Web', () => { 7 | beforeEach(() => { 8 | TestBed.configureTestingModule({ 9 | declarations: [ 10 | AppComponent 11 | ], 12 | }); 13 | }); 14 | 15 | it('should create the app', async(() => { 16 | let fixture = TestBed.createComponent(AppComponent); 17 | let app = fixture.debugElement.componentInstance; 18 | expect(app).toBeTruthy(); 19 | })); 20 | 21 | it(`should have as title 'app works!'`, async(() => { 22 | let fixture = TestBed.createComponent(AppComponent); 23 | let app = fixture.debugElement.componentInstance; 24 | expect(app.title).toEqual('app works!'); 25 | })); 26 | 27 | it('should render title in a h1 tag', async(() => { 28 | let fixture = TestBed.createComponent(AppComponent); 29 | fixture.detectChanges(); 30 | let compiled = fixture.debugElement.nativeElement; 31 | expect(compiled.querySelector('h1').textContent).toContain('app works!'); 32 | })); 33 | }); 34 | -------------------------------------------------------------------------------- /web/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/long-stack-trace-zone'; 4 | import 'zone.js/dist/proxy.js'; 5 | import 'zone.js/dist/sync-test'; 6 | import 'zone.js/dist/jasmine-patch'; 7 | import 'zone.js/dist/async-test'; 8 | import 'zone.js/dist/fake-async-test'; 9 | import { getTestBed } from '@angular/core/testing'; 10 | import { 11 | BrowserDynamicTestingModule, 12 | platformBrowserDynamicTesting 13 | } from '@angular/platform-browser-dynamic/testing'; 14 | 15 | // Unfortunately there's no typing for the `__karma__` variable. Just declare it as any. 16 | declare var __karma__: any; 17 | declare var require: any; 18 | 19 | // Prevent Karma from running prematurely. 20 | __karma__.loaded = function () {}; 21 | 22 | // First, initialize the Angular testing environment. 23 | getTestBed().initTestEnvironment( 24 | BrowserDynamicTestingModule, 25 | platformBrowserDynamicTesting() 26 | ); 27 | // Then we find all the tests. 28 | const context = require.context('./', true, /\.spec\.ts$/); 29 | // And load the modules. 30 | context.keys().map(context); 31 | // Finally, start Karma to run the tests. 32 | __karma__.start(); 33 | -------------------------------------------------------------------------------- /web/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "outDir": "./dist/out-tsc", 5 | "baseUrl": "src", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "moduleResolution": "node", 9 | "emitDecoratorMetadata": true, 10 | "experimentalDecorators": true, 11 | "target": "es5", 12 | "typeRoots": [ 13 | "node_modules/@types" 14 | ], 15 | "lib": [ 16 | "es2016", 17 | "dom" 18 | ], 19 | "paths": { 20 | "@angular/common": ["../node_modules/@angular/common"], 21 | "@angular/compiler": ["../node_modules/@angular/compiler"], 22 | "@angular/compiler-cli": ["../node_modules/@angular/compiler-cli"], 23 | "@angular/core": ["../node_modules/@angular/core"], 24 | "@angular/platform-browser": ["../node_modules/@angular/platform-browser"], 25 | "@ngrx/core": ["../node_modules/@ngrx/core"], 26 | "@ngrx/effects": ["../node_modules/@ngrx/effects"], 27 | "@ngrx/store": ["../node_modules/@ngrx/store"], 28 | "@types/node": ["../node_modules/@types/node"], 29 | "rxjs": ["../node_modules/rxjs"], 30 | "tslint": ["../node_modules/tslint"], 31 | "zone.js": ["../node_moduleszone.js"] 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /mobile/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule, ErrorHandler } from '@angular/core'; 2 | import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular'; 3 | import { StatusBar } from '@ionic-native/status-bar'; 4 | import { SplashScreen } from '@ionic-native/splash-screen'; 5 | import { StoreModule } from '@ngrx/store'; 6 | import { StoreDevtoolsModule } from '@ngrx/store-devtools'; 7 | import { EffectsModule } from '@ngrx/effects'; 8 | 9 | import { reducer } from './app.reducer'; 10 | import { DemoCoreModule, CounterEffects } from 'ngrx-demo-core'; 11 | 12 | import { MyApp } from './app.component'; 13 | import { HomePage } from '../pages/home/home'; 14 | 15 | @NgModule({ 16 | declarations: [ 17 | MyApp, 18 | HomePage 19 | ], 20 | imports: [ 21 | IonicModule.forRoot(MyApp), 22 | DemoCoreModule, 23 | StoreModule.provideStore(reducer), 24 | StoreDevtoolsModule.instrumentOnlyWithExtension(), 25 | EffectsModule.runAfterBootstrap(CounterEffects) 26 | ], 27 | bootstrap: [IonicApp], 28 | entryComponents: [ 29 | MyApp, 30 | HomePage 31 | ], 32 | providers: [ 33 | StatusBar, 34 | SplashScreen, 35 | {provide: ErrorHandler, useClass: IonicErrorHandler} 36 | ] 37 | }) 38 | export class AppModule {} 39 | -------------------------------------------------------------------------------- /web/README.md: -------------------------------------------------------------------------------- 1 | # Web 2 | 3 | This project was generated with [angular-cli](https://github.com/angular/angular-cli) version 1.0.0-beta.15. 4 | 5 | ## Development server 6 | Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. 7 | 8 | ## Code scaffolding 9 | 10 | Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive/pipe/service/class`. 11 | 12 | ## Build 13 | 14 | Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build. 15 | 16 | ## Running unit tests 17 | 18 | Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). 19 | 20 | ## Running end-to-end tests 21 | 22 | Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). 23 | Before running the tests make sure you are serving the app via `ng serve`. 24 | 25 | ## Deploying to Github Pages 26 | 27 | Run `ng github-pages:deploy` to deploy to Github Pages. 28 | 29 | ## Further help 30 | 31 | To get more help on the `angular-cli` use `ng --help` or go check out the [Angular-CLI README](https://github.com/angular/angular-cli/blob/master/README.md). 32 | -------------------------------------------------------------------------------- /web/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 |
6 | 7 |
8 |
9 |

Ngrx/Angular Web App

10 |
11 |
12 | 13 |
14 | 15 |

16 | Counter example 17 |

18 |

19 | {{counter$ | async}} 20 |

21 |

22 | 23 | 24 |

25 |

26 | 27 |

28 | 29 |
30 | 31 |
32 |
33 |

Cover template for Bootstrap, by @mdo.

34 |
35 |
36 | 37 |
38 | 39 |
40 | 41 |
-------------------------------------------------------------------------------- /web/angular-cli.json: -------------------------------------------------------------------------------- 1 | { 2 | "project": { 3 | "version": "1.0.0-beta.26", 4 | "name": "ngrx-demo-web" 5 | }, 6 | "apps": [ 7 | { 8 | "root": "src", 9 | "outDir": "dist", 10 | "assets": [ 11 | "assets", 12 | "favicon.ico" 13 | ], 14 | "index": "index.html", 15 | "main": "main.ts", 16 | "polyfills": "polyfills.ts", 17 | "test": "test.ts", 18 | "tsconfig": "tsconfig.app.json", 19 | "testTsconfig": "tsconfig.spec.json", 20 | "prefix": "app", 21 | "styles": [ 22 | "styles.css" 23 | ], 24 | "scripts": [], 25 | "environmentSource": "environments/environment.ts", 26 | "environments": { 27 | "dev": "environments/environment.ts", 28 | "prod": "environments/environment.prod.ts" 29 | } 30 | } 31 | ], 32 | "e2e": { 33 | "protractor": { 34 | "config": "./protractor.conf.js" 35 | } 36 | }, 37 | "lint": [ 38 | { 39 | "project": "src/tsconfig.app.json" 40 | }, 41 | { 42 | "project": "src/tsconfig.spec.json" 43 | }, 44 | { 45 | "project": "e2e/tsconfig.e2e.json" 46 | } 47 | ], 48 | "test": { 49 | "karma": { 50 | "config": "./karma.conf.js" 51 | } 52 | }, 53 | "defaults": { 54 | "styleExt": "css", 55 | "component": {} 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /web/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/0.13/config/configuration-file.html 3 | 4 | module.exports = function (config) { 5 | config.set({ 6 | basePath: '', 7 | frameworks: ['jasmine', '@angular/cli'], 8 | plugins: [ 9 | require('karma-jasmine'), 10 | require('karma-chrome-launcher'), 11 | require('karma-jasmine-html-reporter'), 12 | require('karma-coverage-istanbul-reporter'), 13 | require('@angular/cli/plugins/karma') 14 | ], 15 | client:{ 16 | clearContext: false // leave Jasmine Spec Runner output visible in browser 17 | }, 18 | files: [ 19 | { pattern: './src/test.ts', watched: false } 20 | ], 21 | preprocessors: { 22 | './src/test.ts': ['@angular/cli'] 23 | }, 24 | mime: { 25 | 'text/x-typescript': ['ts','tsx'] 26 | }, 27 | coverageIstanbulReporter: { 28 | reports: [ 'html', 'lcovonly' ], 29 | fixWebpackSourcePaths: true 30 | }, 31 | angularCli: { 32 | environment: 'dev' 33 | }, 34 | reporters: config.angularCli && config.angularCli.codeCoverage 35 | ? ['progress', 'coverage-istanbul'] 36 | : ['progress', 'kjhtml'], 37 | port: 9876, 38 | colors: true, 39 | logLevel: config.LOG_INFO, 40 | autoWatch: true, 41 | browsers: ['Chrome'], 42 | singleRun: false 43 | }); 44 | }; 45 | -------------------------------------------------------------------------------- /mobile/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ionic App 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /mobile/www/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ionic App 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /mobile/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngrx-demo-mobile", 3 | "author": "Benoit Hediard", 4 | "private": true, 5 | "scripts": { 6 | "clean": "ionic-app-scripts clean", 7 | "build": "ionic-app-scripts build", 8 | "ionic:build": "ionic-app-scripts build", 9 | "ionic:serve": "ionic-app-scripts serve" 10 | }, 11 | "dependencies": { 12 | "@angular/animations": "4.0.1", 13 | "@angular/common": "4.0.1", 14 | "@angular/compiler": "4.0.1", 15 | "@angular/compiler-cli": "4.0.1", 16 | "@angular/core": "4.0.1", 17 | "@angular/forms": "4.0.1", 18 | "@angular/http": "4.0.1", 19 | "@angular/platform-browser": "4.0.1", 20 | "@angular/platform-browser-dynamic": "4.0.1", 21 | "@angular/platform-server": "4.0.1", 22 | "@ionic-native/core": "3.4.4", 23 | "@ionic-native/splash-screen": "3.4.4", 24 | "@ionic-native/status-bar": "3.4.4", 25 | "@ionic/storage": "2.0.1", 26 | "@ngrx/core": "1.2.0", 27 | "@ngrx/effects": "2.0.2", 28 | "@ngrx/store": "2.2.1", 29 | "@ngrx/store-devtools": "3.2.4", 30 | "ionic-angular": "3.0.0", 31 | "ionicons": "3.0.0", 32 | "ngrx-store-freeze": "0.1.9", 33 | "ngrx-store-logger": "0.1.7", 34 | "rxjs": "5.3.0", 35 | "sw-toolbox": "3.6.0", 36 | "zone.js": "0.8.5" 37 | }, 38 | "devDependencies": { 39 | "@angular/tsc-wrapped": "4.0.1", 40 | "@ionic/app-scripts": "1.2.5", 41 | "@ionic/cli-build-ionic-angular": "0.0.4", 42 | "@ionic/cli-plugin-cordova": "0.0.10", 43 | "typescript": "2.2.2" 44 | }, 45 | "version": "0.0.1", 46 | "description": "An Ionic project" 47 | } 48 | -------------------------------------------------------------------------------- /core/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngrx-demo-core", 3 | "version": "0.0.1", 4 | "author": "Benoit Hediard", 5 | "description": "Core module with ngrx shared business logic to be used in an Angular2 web app and a Ionic2 mobile app.", 6 | "main": "./dist/index.js", 7 | "typings": "./dist/index.d.ts", 8 | "scripts": { 9 | "clean": "rm -rf ./aot/* && rm -rf ./dist/* && npm run clean:postbuild", 10 | "clean:postbuild": "find ./src/ -type f -iname *.ngsummary.json -delete && find ./src/ -type f -iname *.ngfactory.ts -delete", 11 | "build": "npm run clean && ngc -p tsconfig.json && npm run clean:postbuild", 12 | "publishPackage": "npm run build && npm publish" 13 | }, 14 | "license": "MIT", 15 | "repository": { 16 | "type": "git", 17 | "url": "git+https://github.com/benorama/ngrx-demo-apps.git" 18 | }, 19 | "homepage": "https://github.com/benorama/ngrx-demo-apps#readme", 20 | "bugs": { 21 | "url": "https://github.com/benorama/ngrx-demo-apps/issues" 22 | }, 23 | "keywords": [ 24 | "angular", 25 | "angular2", 26 | "ionic", 27 | "ionic2", 28 | "ngrx" 29 | ], 30 | "dependencies": {}, 31 | "devDependencies": { 32 | "@angular/common": "4.0.1", 33 | "@angular/compiler": "4.0.1", 34 | "@angular/compiler-cli": "4.0.1", 35 | "@angular/core": "4.0.1", 36 | "@angular/platform-browser": "4.0.1", 37 | "@ngrx/core": "1.2.0", 38 | "@ngrx/effects": "2.0.2", 39 | "@ngrx/store": "2.2.1", 40 | "@types/node": "7.0.12", 41 | "rxjs": "5.3.0", 42 | "tslint": "5.0.0", 43 | "typescript": "2.2.2", 44 | "zone.js": "0.8.5" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /web/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngrx-demo-web", 3 | "author": "Benoit Hediard", 4 | "version": "0.0.1", 5 | "license": "MIT", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/benorama/ngrx-demo-apps.git" 9 | }, 10 | "angular-cli": {}, 11 | "scripts": { 12 | "ng": "ng", 13 | "start": "ng serve", 14 | "build": "ng build", 15 | "test": "ng test", 16 | "lint": "ng lint", 17 | "e2e": "ng e2e" 18 | }, 19 | "private": true, 20 | "dependencies": { 21 | "@angular/common": "4.0.1", 22 | "@angular/compiler": "4.0.1", 23 | "@angular/core": "4.0.1", 24 | "@angular/platform-browser": "4.0.1", 25 | "@angular/platform-browser-dynamic": "4.0.1", 26 | "@angular/router": "4.0.1", 27 | "@ngrx/core": "1.2.0", 28 | "@ngrx/effects": "2.0.2", 29 | "@ngrx/store": "2.2.1", 30 | "core-js": "2.4.1", 31 | "ngrx-store-freeze": "0.1.9", 32 | "ngrx-store-logger": "0.1.7", 33 | "rxjs": "5.2.0", 34 | "zone.js": "0.8.5" 35 | }, 36 | "devDependencies": { 37 | "@angular/cli": "1.0.0", 38 | "@angular/compiler-cli": "^4.0.1", 39 | "@ngrx/store-devtools": "3.2.4", 40 | "@types/jasmine": "2.5.47", 41 | "@types/node": "7.0.12", 42 | "codelyzer": "3.0.0-beta.4", 43 | "jasmine-core": "2.5.2", 44 | "jasmine-spec-reporter": "3.2.0", 45 | "karma": "1.5.0", 46 | "karma-chrome-launcher": "2.0.0", 47 | "karma-cli": "1.0.1", 48 | "karma-coverage-istanbul-reporter": "1.0.0", 49 | "karma-jasmine": "1.1.0", 50 | "protractor": "5.1.1", 51 | "ts-node": "3.0.2", 52 | "tslint": "5.0.0", 53 | "typescript": "2.2.2" 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /mobile/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | MyApp 4 | An awesome Ionic/Cordova app. 5 | Ionic Framework Team 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /web/src/app/shared/util.ts: -------------------------------------------------------------------------------- 1 | import 'rxjs/add/operator/publishReplay'; 2 | import { multicast } from 'rxjs/operator/multicast'; 3 | import { Scheduler } from 'rxjs/Scheduler'; 4 | import { ReplaySubject } from 'rxjs/ReplaySubject'; 5 | import { Observable } from 'rxjs/Observable'; 6 | import { compose } from '@ngrx/core/compose'; 7 | 8 | /** 9 | * This function coerces a string into a string literal type. 10 | * Using tagged union types in TypeScript 2.0, this enables 11 | * powerful typechecking of our reducers. 12 | * 13 | * Since every action label passes through this function it 14 | * is a good place to ensure all of our action labels 15 | * are unique. 16 | */ 17 | 18 | let labelCache: { [label: string]: boolean } = {}; 19 | export function label(label: T | ''): T { 20 | if (labelCache[label]) { 21 | throw new Error(`Action type "${label}" is not unqiue"`); 22 | } 23 | 24 | labelCache[label] = true; 25 | 26 | return label; 27 | } 28 | 29 | export interface SelectorFn { 30 | (input$: Observable): Observable; 31 | } 32 | 33 | export interface Selector extends SelectorFn { 34 | readonly cachedResult?: null | Observable; 35 | reset(): void; 36 | override(source$: Observable): void; 37 | } 38 | 39 | export function share(selectFn: SelectorFn): Selector { 40 | let cachedResult: null | Observable; 41 | 42 | 43 | const override = function (source$: Observable) { 44 | cachedResult = source$; 45 | }; 46 | 47 | const reset = function () { 48 | cachedResult = null; 49 | }; 50 | 51 | const multicastFactory = function () { 52 | return new ReplaySubject(1); 53 | }; 54 | 55 | const selector: any = function (input$: Observable) { 56 | if (Boolean(cachedResult)) { 57 | return cachedResult; 58 | } 59 | 60 | return cachedResult = multicast.call(selectFn(input$), multicastFactory).refCount(); 61 | }; 62 | 63 | selector.override = override; 64 | selector.reset = reset; 65 | Object.defineProperty(selector, 'cachedResult', { 66 | configurable: true, 67 | enumerable: true, 68 | get() { 69 | return cachedResult; 70 | } 71 | }); 72 | 73 | return selector; 74 | } 75 | -------------------------------------------------------------------------------- /mobile/src/theme/variables.scss: -------------------------------------------------------------------------------- 1 | // Ionic Variables and Theming. For more info, please see: 2 | // http://ionicframework.com/docs/v2/theming/ 3 | $font-path: "../assets/fonts"; 4 | 5 | @import "ionic.globals"; 6 | 7 | 8 | // Shared Variables 9 | // -------------------------------------------------- 10 | // To customize the look and feel of this app, you can override 11 | // the Sass variables found in Ionic's source scss files. 12 | // To view all the possible Ionic variables, see: 13 | // http://ionicframework.com/docs/v2/theming/overriding-ionic-variables/ 14 | 15 | 16 | 17 | 18 | // Named Color Variables 19 | // -------------------------------------------------- 20 | // Named colors makes it easy to reuse colors on various components. 21 | // It's highly recommended to change the default colors 22 | // to match your app's branding. Ionic uses a Sass map of 23 | // colors so you can add, rename and remove colors as needed. 24 | // The "primary" color is the only required color in the map. 25 | 26 | $colors: ( 27 | primary: #387ef5, 28 | secondary: #32db64, 29 | danger: #f53d3d, 30 | light: #f4f4f4, 31 | dark: #222 32 | ); 33 | 34 | 35 | // App iOS Variables 36 | // -------------------------------------------------- 37 | // iOS only Sass variables can go here 38 | 39 | 40 | 41 | 42 | // App Material Design Variables 43 | // -------------------------------------------------- 44 | // Material Design only Sass variables can go here 45 | 46 | 47 | 48 | 49 | // App Windows Variables 50 | // -------------------------------------------------- 51 | // Windows only Sass variables can go here 52 | 53 | 54 | 55 | 56 | // App Theme 57 | // -------------------------------------------------- 58 | // Ionic apps can have different themes applied, which can 59 | // then be future customized. This import comes last 60 | // so that the above variables are used and Ionic's 61 | // default are overridden. 62 | 63 | @import "ionic.theme.default"; 64 | 65 | 66 | // Ionicons 67 | // -------------------------------------------------- 68 | // The premium icon font for Ionic. For more info, please see: 69 | // http://ionicframework.com/docs/v2/ionicons/ 70 | 71 | @import "ionic.ionicons"; 72 | 73 | 74 | // Fonts 75 | // -------------------------------------------------- 76 | 77 | @import "roboto"; 78 | @import "noto-sans"; 79 | -------------------------------------------------------------------------------- /web/src/assets/css/bootstrap-reboot.min.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../scss/_normalize.scss","bootstrap-reboot.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /web/src/polyfills.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file includes polyfills needed by Angular and is loaded before the app. 3 | * You can add your own extra polyfills to this file. 4 | * 5 | * This file is divided into 2 sections: 6 | * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. 7 | * 2. Application imports. Files imported after ZoneJS that should be loaded before your main 8 | * file. 9 | * 10 | * The current setup is for so-called "evergreen" browsers; the last versions of browsers that 11 | * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), 12 | * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. 13 | * 14 | * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html 15 | */ 16 | 17 | /*************************************************************************************************** 18 | * BROWSER POLYFILLS 19 | */ 20 | 21 | /** IE9, IE10 and IE11 requires all of the following polyfills. **/ 22 | // import 'core-js/es6/symbol'; 23 | // import 'core-js/es6/object'; 24 | // import 'core-js/es6/function'; 25 | // import 'core-js/es6/parse-int'; 26 | // import 'core-js/es6/parse-float'; 27 | // import 'core-js/es6/number'; 28 | // import 'core-js/es6/math'; 29 | // import 'core-js/es6/string'; 30 | // import 'core-js/es6/date'; 31 | // import 'core-js/es6/array'; 32 | // import 'core-js/es6/regexp'; 33 | // import 'core-js/es6/map'; 34 | // import 'core-js/es6/set'; 35 | 36 | /** IE10 and IE11 requires the following for NgClass support on SVG elements */ 37 | // import 'classlist.js'; // Run `npm install --save classlist.js`. 38 | 39 | /** IE10 and IE11 requires the following to support `@angular/animation`. */ 40 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`. 41 | 42 | 43 | /** Evergreen browsers require these. **/ 44 | import 'core-js/es6/reflect'; 45 | import 'core-js/es7/reflect'; 46 | 47 | 48 | /** ALL Firefox browsers require the following to support `@angular/animation`. **/ 49 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`. 50 | 51 | 52 | 53 | /*************************************************************************************************** 54 | * Zone JS is required by Angular itself. 55 | */ 56 | import 'zone.js/dist/zone'; // Included with Angular CLI. 57 | 58 | 59 | 60 | /*************************************************************************************************** 61 | * APPLICATION IMPORTS 62 | */ 63 | 64 | /** 65 | * Date, currency, decimal and percent pipes. 66 | * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 67 | */ 68 | // import 'intl'; // Run `npm install --save intl`. 69 | -------------------------------------------------------------------------------- /web/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rulesDirectory": [ 3 | "node_modules/codelyzer" 4 | ], 5 | "rules": { 6 | "callable-types": true, 7 | "class-name": true, 8 | "comment-format": [ 9 | true, 10 | "check-space" 11 | ], 12 | "curly": true, 13 | "eofline": true, 14 | "forin": true, 15 | "import-blacklist": [true, "rxjs"], 16 | "import-spacing": true, 17 | "indent": [ 18 | true, 19 | "spaces" 20 | ], 21 | "interface-over-type-literal": true, 22 | "label-position": true, 23 | "max-line-length": [ 24 | true, 25 | 140 26 | ], 27 | "member-access": false, 28 | "member-ordering": [ 29 | true, 30 | "static-before-instance", 31 | "variables-before-functions" 32 | ], 33 | "no-arg": true, 34 | "no-bitwise": true, 35 | "no-console": [ 36 | true, 37 | "debug", 38 | "info", 39 | "time", 40 | "timeEnd", 41 | "trace" 42 | ], 43 | "no-construct": true, 44 | "no-debugger": true, 45 | "no-duplicate-variable": true, 46 | "no-empty": false, 47 | "no-empty-interface": true, 48 | "no-eval": true, 49 | "no-inferrable-types": [true, "ignore-params"], 50 | "no-shadowed-variable": true, 51 | "no-string-literal": false, 52 | "no-string-throw": true, 53 | "no-switch-case-fall-through": true, 54 | "no-trailing-whitespace": true, 55 | "no-unused-expression": true, 56 | "no-use-before-declare": true, 57 | "no-var-keyword": true, 58 | "object-literal-sort-keys": false, 59 | "one-line": [ 60 | true, 61 | "check-open-brace", 62 | "check-catch", 63 | "check-else", 64 | "check-whitespace" 65 | ], 66 | "prefer-const": true, 67 | "quotemark": [ 68 | true, 69 | "single" 70 | ], 71 | "radix": true, 72 | "semicolon": [ 73 | "always" 74 | ], 75 | "triple-equals": [ 76 | true, 77 | "allow-null-check" 78 | ], 79 | "typedef-whitespace": [ 80 | true, 81 | { 82 | "call-signature": "nospace", 83 | "index-signature": "nospace", 84 | "parameter": "nospace", 85 | "property-declaration": "nospace", 86 | "variable-declaration": "nospace" 87 | } 88 | ], 89 | "typeof-compare": true, 90 | "unified-signatures": true, 91 | "variable-name": false, 92 | "whitespace": [ 93 | true, 94 | "check-branch", 95 | "check-decl", 96 | "check-operator", 97 | "check-separator", 98 | "check-type" 99 | ], 100 | 101 | "directive-selector": [true, "attribute", "app", "camelCase"], 102 | "component-selector": [true, "element", "app", "kebab-case"], 103 | "use-input-property-decorator": true, 104 | "use-output-property-decorator": true, 105 | "use-host-property-decorator": true, 106 | "no-input-rename": true, 107 | "no-output-rename": true, 108 | "use-life-cycle-interface": true, 109 | "use-pipe-transform-interface": true, 110 | "component-class-suffix": true, 111 | "directive-class-suffix": true, 112 | "no-access-missing-member": true, 113 | "templates-use-public": true, 114 | "invoke-injectable": true 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /core/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rulesDirectory": [ 3 | "node_modules/codelyzer" 4 | ], 5 | "rules": { 6 | "callable-types": true, 7 | "class-name": true, 8 | "comment-format": [ 9 | true, 10 | "check-space" 11 | ], 12 | "curly": true, 13 | "eofline": true, 14 | "forin": true, 15 | "import-blacklist": [true, "rxjs"], 16 | "import-spacing": true, 17 | "indent": [ 18 | true, 19 | "spaces" 20 | ], 21 | "interface-over-type-literal": true, 22 | "label-position": true, 23 | "max-line-length": [ 24 | true, 25 | 140 26 | ], 27 | "member-access": false, 28 | "member-ordering": [ 29 | true, 30 | "static-before-instance", 31 | "variables-before-functions" 32 | ], 33 | "no-arg": true, 34 | "no-bitwise": true, 35 | "no-console": [ 36 | true, 37 | "debug", 38 | "info", 39 | "time", 40 | "timeEnd", 41 | "trace" 42 | ], 43 | "no-construct": true, 44 | "no-debugger": true, 45 | "no-duplicate-variable": true, 46 | "no-empty": false, 47 | "no-empty-interface": true, 48 | "no-eval": true, 49 | "no-inferrable-types": [true, "ignore-params"], 50 | "no-shadowed-variable": true, 51 | "no-string-literal": false, 52 | "no-string-throw": true, 53 | "no-switch-case-fall-through": true, 54 | "no-trailing-whitespace": true, 55 | "no-unused-expression": true, 56 | "no-use-before-declare": true, 57 | "no-var-keyword": true, 58 | "object-literal-sort-keys": false, 59 | "one-line": [ 60 | true, 61 | "check-open-brace", 62 | "check-catch", 63 | "check-else", 64 | "check-whitespace" 65 | ], 66 | "prefer-const": true, 67 | "quotemark": [ 68 | true, 69 | "single" 70 | ], 71 | "radix": true, 72 | "semicolon": [ 73 | "always" 74 | ], 75 | "triple-equals": [ 76 | true, 77 | "allow-null-check" 78 | ], 79 | "typedef-whitespace": [ 80 | true, 81 | { 82 | "call-signature": "nospace", 83 | "index-signature": "nospace", 84 | "parameter": "nospace", 85 | "property-declaration": "nospace", 86 | "variable-declaration": "nospace" 87 | } 88 | ], 89 | "typeof-compare": true, 90 | "unified-signatures": true, 91 | "variable-name": false, 92 | "whitespace": [ 93 | true, 94 | "check-branch", 95 | "check-decl", 96 | "check-operator", 97 | "check-separator", 98 | "check-type" 99 | ], 100 | 101 | "directive-selector": [true, "attribute", "app", "camelCase"], 102 | "component-selector": [true, "element", "app", "kebab-case"], 103 | "use-input-property-decorator": true, 104 | "use-output-property-decorator": true, 105 | "use-host-property-decorator": true, 106 | "no-input-rename": true, 107 | "no-output-rename": true, 108 | "use-life-cycle-interface": true, 109 | "use-pipe-transform-interface": true, 110 | "component-class-suffix": true, 111 | "directive-class-suffix": true, 112 | "no-access-missing-member": true, 113 | "templates-use-public": true, 114 | "invoke-injectable": true 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /web/src/assets/css/cover.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Globals 3 | */ 4 | 5 | /* Links */ 6 | a, 7 | a:focus, 8 | a:hover { 9 | color: #fff; 10 | } 11 | 12 | /* Custom default button */ 13 | .btn-secondary, 14 | .btn-secondary:hover, 15 | .btn-secondary:focus { 16 | color: #333; 17 | text-shadow: none; /* Prevent inheritance from `body` */ 18 | background-color: #fff; 19 | border: .05rem solid #fff; 20 | } 21 | 22 | 23 | /* 24 | * Base structure 25 | */ 26 | 27 | html, 28 | body { 29 | height: 100%; 30 | background-color: #333; 31 | } 32 | body { 33 | color: #fff; 34 | text-align: center; 35 | text-shadow: 0 .05rem .1rem rgba(0,0,0,.5); 36 | } 37 | 38 | /* Extra markup and styles for table-esque vertical and horizontal centering */ 39 | .site-wrapper { 40 | display: table; 41 | width: 100%; 42 | height: 100%; /* For at least Firefox */ 43 | min-height: 100%; 44 | -webkit-box-shadow: inset 0 0 5rem rgba(0,0,0,.5); 45 | box-shadow: inset 0 0 5rem rgba(0,0,0,.5); 46 | } 47 | .site-wrapper-inner { 48 | display: table-cell; 49 | vertical-align: top; 50 | } 51 | .cover-container { 52 | margin-right: auto; 53 | margin-left: auto; 54 | } 55 | 56 | /* Padding for spacing */ 57 | .inner { 58 | padding: 2rem; 59 | } 60 | 61 | 62 | /* 63 | * Header 64 | */ 65 | 66 | .masthead { 67 | margin-bottom: 2rem; 68 | } 69 | 70 | .masthead-brand { 71 | margin-bottom: 0; 72 | } 73 | 74 | .nav-masthead .nav-link { 75 | padding: .25rem 0; 76 | font-weight: bold; 77 | color: rgba(255,255,255,.5); 78 | background-color: transparent; 79 | border-bottom: .25rem solid transparent; 80 | } 81 | 82 | .nav-masthead .nav-link:hover, 83 | .nav-masthead .nav-link:focus { 84 | border-bottom-color: rgba(255,255,255,.25); 85 | } 86 | 87 | .nav-masthead .nav-link + .nav-link { 88 | margin-left: 1rem; 89 | } 90 | 91 | .nav-masthead .active { 92 | color: #fff; 93 | border-bottom-color: #fff; 94 | } 95 | 96 | @media (min-width: 48em) { 97 | .masthead-brand { 98 | float: left; 99 | } 100 | .nav-masthead { 101 | float: right; 102 | } 103 | } 104 | 105 | 106 | /* 107 | * Cover 108 | */ 109 | 110 | .cover { 111 | padding: 0 1.5rem; 112 | } 113 | .cover .btn-lg { 114 | padding: .75rem 1.25rem; 115 | font-weight: bold; 116 | } 117 | 118 | 119 | /* 120 | * Footer 121 | */ 122 | 123 | .mastfoot { 124 | color: rgba(255,255,255,.5); 125 | } 126 | 127 | 128 | /* 129 | * Affix and center 130 | */ 131 | 132 | @media (min-width: 40em) { 133 | /* Pull out the header and footer */ 134 | .masthead { 135 | position: fixed; 136 | top: 0; 137 | } 138 | .mastfoot { 139 | position: fixed; 140 | bottom: 0; 141 | } 142 | /* Start the vertical centering */ 143 | .site-wrapper-inner { 144 | vertical-align: middle; 145 | } 146 | /* Handle the widths */ 147 | .masthead, 148 | .mastfoot, 149 | .cover-container { 150 | width: 100%; /* Must be percentage or pixels for horizontal alignment */ 151 | } 152 | } 153 | 154 | @media (min-width: 62em) { 155 | .masthead, 156 | .mastfoot, 157 | .cover-container { 158 | width: 42rem; 159 | } 160 | } 161 | 162 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Introduction 3 | 4 | This is a proof of concept that demonstrates the ability to share a Typescript package with core functionalities and business logic between an Angular web app and an Ionic mobile app. 5 | 6 | Please check the Medium article [Hybrid mobile apps: sharing logic between Angular and Ionic apps](https://medium.com/@benorama/hybrid-mobile-apps-sharing-logic-between-angular2-and-ionic2-apps-7c32145b90d5#.m1x3vpyc0) for more info. 7 | 8 | ![Demo](https://cloud.githubusercontent.com/assets/394356/24591063/344c55ee-17f9-11e7-82ca-96821ac723b7.png) 9 | 10 | **Goals:** 11 | 12 | * encapsulate all the business logic in a core module, based on [@ngrx/store](https://github.com/ngrx/store), 13 | * keep specific view layout, markup and navigation logic in the app projects. 14 | 15 | Note: [@ngrx/store](https://github.com/ngrx/store) is a RxJS powered state management inspired by Redux for Angular apps. 16 | It's currently the most popular way to structure complex business logic in Angular apps. 17 | 18 | 19 | ## Running the apps locally 20 | 21 | ``` 22 | # Clone the repo 23 | git clone https://github.com/benorama/ngrx-demo-apps.git 24 | ``` 25 | 26 | Prerequisites: 27 | * [Typescript 2.0+](https://www.typescriptlang.org/index.html#download-links) 28 | * [Angular CLI](https://cli.angular.io) 29 | * [Ionic CLI](http://ionicframework.com/docs/cli/) 30 | 31 | Note: `ngrx-demo-core` module is shared between the apps with `npm link` but it could be published to `npmjs` and be used as a regular dependency. 32 | 33 | ### ngrx-demo-core module 34 | 35 | First, compile `ngrx-demo-core` shared module. 36 | 37 | It is based on official Ionic module template, which supports Angular's ngc and Ahead-of-Time compiling out of the box. 38 | https://github.com/driftyco/ionic-module-template 39 | 40 | ``` 41 | # Go into core module directory 42 | cd ngrx-demo-apps/core 43 | 44 | # Install dependencies 45 | yarn 46 | # Or npm install 47 | 48 | # Compile typescript into dist 49 | yarn build 50 | # Or npm run build 51 | 52 | yarn link 53 | # Or npm pack 54 | # Or npm publish 55 | 56 | # Note: during dev, you can use 'tsc -w' 57 | ``` 58 | 59 | The shared module is now installed locally and can be used in other local npm projects. 60 | 61 | ### ngrx-demo-web app 62 | 63 | Install or link `ngrx-demo-core` shared module and run the web app. 64 | 65 | ``` 66 | # Go into web Angular2 app directory 67 | cd ../web 68 | 69 | # Install dependencies 70 | yarn 71 | # Or npm install 72 | 73 | # Create a symlink from the local node_modules folder to the global shared module symlink 74 | yarn link "ngrx-demo-core" 75 | # Or npm install ../core/ngrx-demo-core-0.0.1.tgz (if you used npm pack) 76 | 77 | # Run the web app locally 78 | ng serve 79 | ``` 80 | 81 | ### ngrx-demo-mobile app 82 | 83 | As we did for the web app, install or link the `ngrx-demo-core` shared module and run the mobile app. 84 | 85 | ``` 86 | # Go into mobile Ionic2 app directory 87 | cd ../mobile 88 | 89 | # Install dependencies and typings (you can get a burger...) 90 | yarn 91 | # Or npm install 92 | 93 | # Create a symlink from the local node_modules folder to the global shared module symlink 94 | yarn link "ngrx-demo-core" 95 | # Or npm install ../core/ngrx-demo-core-0.0.1.tgz (if you used npm pack) 96 | 97 | # Run the mobile app locally 98 | ionic serve 99 | ``` 100 | 101 | Note: for more info on using external lib on Ionic2 102 | * [Third Party libraries in Ionic Apps](http://ionicframework.com/docs/v2/resources/third-party-libs/) 103 | * [App Scripts](http://ionicframework.com/docs/v2/resources/app-scripts/) 104 | 105 | ## Bugs and feedback 106 | 107 | If you have any questions or suggestions to improve the demo app, don't hesitate to submit an issue or a pull request! -------------------------------------------------------------------------------- /web/src/assets/css/bootstrap-reboot.min.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}html{-webkit-box-sizing:border-box;box-sizing:border-box}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}html{-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{cursor:help}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}a{color:#0275d8;text-decoration:none}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle}[role=button]{cursor:pointer}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse;background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,select,textarea{line-height:inherit}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}input[type=search]{-webkit-appearance:none}output{display:inline-block}[hidden]{display:none!important}/*# sourceMappingURL=bootstrap-reboot.min.css.map */ -------------------------------------------------------------------------------- /web/src/assets/css/bootstrap-reboot.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */ 2 | html { 3 | font-family: sans-serif; 4 | line-height: 1.15; 5 | -ms-text-size-adjust: 100%; 6 | -webkit-text-size-adjust: 100%; 7 | } 8 | 9 | body { 10 | margin: 0; 11 | } 12 | 13 | article, 14 | aside, 15 | footer, 16 | header, 17 | nav, 18 | section { 19 | display: block; 20 | } 21 | 22 | h1 { 23 | font-size: 2em; 24 | margin: 0.67em 0; 25 | } 26 | 27 | figcaption, 28 | figure, 29 | main { 30 | display: block; 31 | } 32 | 33 | figure { 34 | margin: 1em 40px; 35 | } 36 | 37 | hr { 38 | -webkit-box-sizing: content-box; 39 | box-sizing: content-box; 40 | height: 0; 41 | overflow: visible; 42 | } 43 | 44 | pre { 45 | font-family: monospace, monospace; 46 | font-size: 1em; 47 | } 48 | 49 | a { 50 | background-color: transparent; 51 | -webkit-text-decoration-skip: objects; 52 | } 53 | 54 | a:active, 55 | a:hover { 56 | outline-width: 0; 57 | } 58 | 59 | abbr[title] { 60 | border-bottom: none; 61 | text-decoration: underline; 62 | text-decoration: underline dotted; 63 | } 64 | 65 | b, 66 | strong { 67 | font-weight: inherit; 68 | } 69 | 70 | b, 71 | strong { 72 | font-weight: bolder; 73 | } 74 | 75 | code, 76 | kbd, 77 | samp { 78 | font-family: monospace, monospace; 79 | font-size: 1em; 80 | } 81 | 82 | dfn { 83 | font-style: italic; 84 | } 85 | 86 | mark { 87 | background-color: #ff0; 88 | color: #000; 89 | } 90 | 91 | small { 92 | font-size: 80%; 93 | } 94 | 95 | sub, 96 | sup { 97 | font-size: 75%; 98 | line-height: 0; 99 | position: relative; 100 | vertical-align: baseline; 101 | } 102 | 103 | sub { 104 | bottom: -0.25em; 105 | } 106 | 107 | sup { 108 | top: -0.5em; 109 | } 110 | 111 | audio, 112 | video { 113 | display: inline-block; 114 | } 115 | 116 | audio:not([controls]) { 117 | display: none; 118 | height: 0; 119 | } 120 | 121 | img { 122 | border-style: none; 123 | } 124 | 125 | svg:not(:root) { 126 | overflow: hidden; 127 | } 128 | 129 | button, 130 | input, 131 | optgroup, 132 | select, 133 | textarea { 134 | font-family: sans-serif; 135 | font-size: 100%; 136 | line-height: 1.15; 137 | margin: 0; 138 | } 139 | 140 | button, 141 | input { 142 | overflow: visible; 143 | } 144 | 145 | button, 146 | select { 147 | text-transform: none; 148 | } 149 | 150 | button, 151 | html [type="button"], 152 | [type="reset"], 153 | [type="submit"] { 154 | -webkit-appearance: button; 155 | } 156 | 157 | button::-moz-focus-inner, 158 | [type="button"]::-moz-focus-inner, 159 | [type="reset"]::-moz-focus-inner, 160 | [type="submit"]::-moz-focus-inner { 161 | border-style: none; 162 | padding: 0; 163 | } 164 | 165 | button:-moz-focusring, 166 | [type="button"]:-moz-focusring, 167 | [type="reset"]:-moz-focusring, 168 | [type="submit"]:-moz-focusring { 169 | outline: 1px dotted ButtonText; 170 | } 171 | 172 | fieldset { 173 | border: 1px solid #c0c0c0; 174 | margin: 0 2px; 175 | padding: 0.35em 0.625em 0.75em; 176 | } 177 | 178 | legend { 179 | -webkit-box-sizing: border-box; 180 | box-sizing: border-box; 181 | color: inherit; 182 | display: table; 183 | max-width: 100%; 184 | padding: 0; 185 | white-space: normal; 186 | } 187 | 188 | progress { 189 | display: inline-block; 190 | vertical-align: baseline; 191 | } 192 | 193 | textarea { 194 | overflow: auto; 195 | } 196 | 197 | [type="checkbox"], 198 | [type="radio"] { 199 | -webkit-box-sizing: border-box; 200 | box-sizing: border-box; 201 | padding: 0; 202 | } 203 | 204 | [type="number"]::-webkit-inner-spin-button, 205 | [type="number"]::-webkit-outer-spin-button { 206 | height: auto; 207 | } 208 | 209 | [type="search"] { 210 | -webkit-appearance: textfield; 211 | outline-offset: -2px; 212 | } 213 | 214 | [type="search"]::-webkit-search-cancel-button, 215 | [type="search"]::-webkit-search-decoration { 216 | -webkit-appearance: none; 217 | } 218 | 219 | ::-webkit-file-upload-button { 220 | -webkit-appearance: button; 221 | font: inherit; 222 | } 223 | 224 | details, 225 | menu { 226 | display: block; 227 | } 228 | 229 | summary { 230 | display: list-item; 231 | } 232 | 233 | canvas { 234 | display: inline-block; 235 | } 236 | 237 | template { 238 | display: none; 239 | } 240 | 241 | [hidden] { 242 | display: none; 243 | } 244 | 245 | html { 246 | -webkit-box-sizing: border-box; 247 | box-sizing: border-box; 248 | } 249 | 250 | *, 251 | *::before, 252 | *::after { 253 | -webkit-box-sizing: inherit; 254 | box-sizing: inherit; 255 | } 256 | 257 | @-ms-viewport { 258 | width: device-width; 259 | } 260 | 261 | html { 262 | -ms-overflow-style: scrollbar; 263 | -webkit-tap-highlight-color: transparent; 264 | } 265 | 266 | body { 267 | font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; 268 | font-size: 1rem; 269 | font-weight: normal; 270 | line-height: 1.5; 271 | color: #292b2c; 272 | background-color: #fff; 273 | } 274 | 275 | [tabindex="-1"]:focus { 276 | outline: none !important; 277 | } 278 | 279 | h1, h2, h3, h4, h5, h6 { 280 | margin-top: 0; 281 | margin-bottom: .5rem; 282 | } 283 | 284 | p { 285 | margin-top: 0; 286 | margin-bottom: 1rem; 287 | } 288 | 289 | abbr[title], 290 | abbr[data-original-title] { 291 | cursor: help; 292 | } 293 | 294 | address { 295 | margin-bottom: 1rem; 296 | font-style: normal; 297 | line-height: inherit; 298 | } 299 | 300 | ol, 301 | ul, 302 | dl { 303 | margin-top: 0; 304 | margin-bottom: 1rem; 305 | } 306 | 307 | ol ol, 308 | ul ul, 309 | ol ul, 310 | ul ol { 311 | margin-bottom: 0; 312 | } 313 | 314 | dt { 315 | font-weight: bold; 316 | } 317 | 318 | dd { 319 | margin-bottom: .5rem; 320 | margin-left: 0; 321 | } 322 | 323 | blockquote { 324 | margin: 0 0 1rem; 325 | } 326 | 327 | a { 328 | color: #0275d8; 329 | text-decoration: none; 330 | } 331 | 332 | a:focus, a:hover { 333 | color: #014c8c; 334 | text-decoration: underline; 335 | } 336 | 337 | a:not([href]):not([tabindex]) { 338 | color: inherit; 339 | text-decoration: none; 340 | } 341 | 342 | a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover { 343 | color: inherit; 344 | text-decoration: none; 345 | } 346 | 347 | a:not([href]):not([tabindex]):focus { 348 | outline: 0; 349 | } 350 | 351 | pre { 352 | margin-top: 0; 353 | margin-bottom: 1rem; 354 | overflow: auto; 355 | } 356 | 357 | figure { 358 | margin: 0 0 1rem; 359 | } 360 | 361 | img { 362 | vertical-align: middle; 363 | } 364 | 365 | [role="button"] { 366 | cursor: pointer; 367 | } 368 | 369 | a, 370 | area, 371 | button, 372 | [role="button"], 373 | input, 374 | label, 375 | select, 376 | summary, 377 | textarea { 378 | -ms-touch-action: manipulation; 379 | touch-action: manipulation; 380 | } 381 | 382 | table { 383 | border-collapse: collapse; 384 | background-color: transparent; 385 | } 386 | 387 | caption { 388 | padding-top: 0.75rem; 389 | padding-bottom: 0.75rem; 390 | color: #636c72; 391 | text-align: left; 392 | caption-side: bottom; 393 | } 394 | 395 | th { 396 | text-align: left; 397 | } 398 | 399 | label { 400 | display: inline-block; 401 | margin-bottom: .5rem; 402 | } 403 | 404 | button:focus { 405 | outline: 1px dotted; 406 | outline: 5px auto -webkit-focus-ring-color; 407 | } 408 | 409 | input, 410 | button, 411 | select, 412 | textarea { 413 | line-height: inherit; 414 | } 415 | 416 | input[type="radio"]:disabled, 417 | input[type="checkbox"]:disabled { 418 | cursor: not-allowed; 419 | } 420 | 421 | input[type="date"], 422 | input[type="time"], 423 | input[type="datetime-local"], 424 | input[type="month"] { 425 | -webkit-appearance: listbox; 426 | } 427 | 428 | textarea { 429 | resize: vertical; 430 | } 431 | 432 | fieldset { 433 | min-width: 0; 434 | padding: 0; 435 | margin: 0; 436 | border: 0; 437 | } 438 | 439 | legend { 440 | display: block; 441 | width: 100%; 442 | padding: 0; 443 | margin-bottom: .5rem; 444 | font-size: 1.5rem; 445 | line-height: inherit; 446 | } 447 | 448 | input[type="search"] { 449 | -webkit-appearance: none; 450 | } 451 | 452 | output { 453 | display: inline-block; 454 | } 455 | 456 | [hidden] { 457 | display: none !important; 458 | } 459 | /*# sourceMappingURL=bootstrap-reboot.css.map */ -------------------------------------------------------------------------------- /mobile/hooks/README.md: -------------------------------------------------------------------------------- 1 | 21 | # Cordova Hooks 22 | 23 | Cordova Hooks represent special scripts which could be added by application and plugin developers or even by your own build system to customize cordova commands. Hook scripts could be defined by adding them to the special predefined folder (`/hooks`) or via configuration files (`config.xml` and `plugin.xml`) and run serially in the following order: 24 | * Application hooks from `/hooks`; 25 | * Application hooks from `config.xml`; 26 | * Plugin hooks from `plugins/.../plugin.xml`. 27 | 28 | __Remember__: Make your scripts executable. 29 | 30 | __Note__: `.cordova/hooks` directory is also supported for backward compatibility, but we don't recommend using it as it is deprecated. 31 | 32 | ## Supported hook types 33 | The following hook types are supported: 34 | 35 | after_build/ 36 | after_compile/ 37 | after_docs/ 38 | after_emulate/ 39 | after_platform_add/ 40 | after_platform_rm/ 41 | after_platform_ls/ 42 | after_plugin_add/ 43 | after_plugin_ls/ 44 | after_plugin_rm/ 45 | after_plugin_search/ 46 | after_plugin_install/ <-- Plugin hooks defined in plugin.xml are executed exclusively for a plugin being installed 47 | after_prepare/ 48 | after_run/ 49 | after_serve/ 50 | before_build/ 51 | before_compile/ 52 | before_docs/ 53 | before_emulate/ 54 | before_platform_add/ 55 | before_platform_rm/ 56 | before_platform_ls/ 57 | before_plugin_add/ 58 | before_plugin_ls/ 59 | before_plugin_rm/ 60 | before_plugin_search/ 61 | before_plugin_install/ <-- Plugin hooks defined in plugin.xml are executed exclusively for a plugin being installed 62 | before_plugin_uninstall/ <-- Plugin hooks defined in plugin.xml are executed exclusively for a plugin being uninstalled 63 | before_prepare/ 64 | before_run/ 65 | before_serve/ 66 | pre_package/ <-- Windows 8 and Windows Phone only. 67 | 68 | ## Ways to define hooks 69 | ### Via '/hooks' directory 70 | To execute custom action when corresponding hook type is fired, use hook type as a name for a subfolder inside 'hooks' directory and place you script file here, for example: 71 | 72 | # script file will be automatically executed after each build 73 | hooks/after_build/after_build_custom_action.js 74 | 75 | 76 | ### Config.xml 77 | 78 | Hooks can be defined in project's `config.xml` using `` elements, for example: 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | ... 89 | 90 | 91 | 92 | 93 | 94 | 95 | ... 96 | 97 | 98 | ### Plugin hooks (plugin.xml) 99 | 100 | As a plugin developer you can define hook scripts using `` elements in a `plugin.xml` like that: 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | ... 109 | 110 | 111 | `before_plugin_install`, `after_plugin_install`, `before_plugin_uninstall` plugin hooks will be fired exclusively for the plugin being installed/uninstalled. 112 | 113 | ## Script Interface 114 | 115 | ### Javascript 116 | 117 | If you are writing hooks in Javascript you should use the following module definition: 118 | ```javascript 119 | module.exports = function(context) { 120 | ... 121 | } 122 | ``` 123 | 124 | You can make your scipts async using Q: 125 | ```javascript 126 | module.exports = function(context) { 127 | var Q = context.requireCordovaModule('q'); 128 | var deferral = new Q.defer(); 129 | 130 | setTimeout(function(){ 131 | console.log('hook.js>> end'); 132 | deferral.resolve(); 133 | }, 1000); 134 | 135 | return deferral.promise; 136 | } 137 | ``` 138 | 139 | `context` object contains hook type, executed script full path, hook options, command-line arguments passed to Cordova and top-level "cordova" object: 140 | ```json 141 | { 142 | "hook": "before_plugin_install", 143 | "scriptLocation": "c:\\script\\full\\path\\appBeforePluginInstall.js", 144 | "cmdLine": "The\\exact\\command\\cordova\\run\\with arguments", 145 | "opts": { 146 | "projectRoot":"C:\\path\\to\\the\\project", 147 | "cordova": { 148 | "platforms": ["wp8"], 149 | "plugins": ["com.plugin.withhooks"], 150 | "version": "0.21.7-dev" 151 | }, 152 | "plugin": { 153 | "id": "com.plugin.withhooks", 154 | "pluginInfo": { 155 | ... 156 | }, 157 | "platform": "wp8", 158 | "dir": "C:\\path\\to\\the\\project\\plugins\\com.plugin.withhooks" 159 | } 160 | }, 161 | "cordova": {...} 162 | } 163 | 164 | ``` 165 | `context.opts.plugin` object will only be passed to plugin hooks scripts. 166 | 167 | You can also require additional Cordova modules in your script using `context.requireCordovaModule` in the following way: 168 | ```javascript 169 | var Q = context.requireCordovaModule('q'); 170 | ``` 171 | 172 | __Note__: new module loader script interface is used for the `.js` files defined via `config.xml` or `plugin.xml` only. 173 | For compatibility reasons hook files specified via `/hooks` folders are run via Node child_process spawn, see 'Non-javascript' section below. 174 | 175 | ### Non-javascript 176 | 177 | Non-javascript scripts are run via Node child_process spawn from the project's root directory and have the root directory passes as the first argument. All other options are passed to the script using environment variables: 178 | 179 | * CORDOVA_VERSION - The version of the Cordova-CLI. 180 | * CORDOVA_PLATFORMS - Comma separated list of platforms that the command applies to (e.g.: android, ios). 181 | * CORDOVA_PLUGINS - Comma separated list of plugin IDs that the command applies to (e.g.: org.apache.cordova.file, org.apache.cordova.file-transfer) 182 | * CORDOVA_HOOK - Path to the hook that is being executed. 183 | * CORDOVA_CMDLINE - The exact command-line arguments passed to cordova (e.g.: cordova run ios --emulate) 184 | 185 | If a script returns a non-zero exit code, then the parent cordova command will be aborted. 186 | 187 | ## Writing hooks 188 | 189 | We highly recommend writing your hooks using Node.js so that they are 190 | cross-platform. Some good examples are shown here: 191 | 192 | [http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/](http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/) 193 | 194 | Also, note that even if you are working on Windows, and in case your hook scripts aren't bat files (which is recommended, if you want your scripts to work in non-Windows operating systems) Cordova CLI will expect a shebang line as the first line for it to know the interpreter it needs to use to launch the script. The shebang line should match the following example: 195 | 196 | #!/usr/bin/env [name_of_interpreter_executable] 197 | -------------------------------------------------------------------------------- /web/src/assets/css/bootstrap-reboot.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../scss/_normalize.scss","bootstrap-reboot.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss"],"names":[],"mappings":"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","file":"bootstrap-reboot.css","sourcesContent":[null,"/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\n\nbody {\n margin: 0;\n}\n\narticle,\naside,\nfooter,\nheader,\nnav,\nsection {\n display: block;\n}\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\nfigcaption,\nfigure,\nmain {\n display: block;\n}\n\nfigure {\n margin: 1em 40px;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\npre {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\na {\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:active,\na:hover {\n outline-width: 0;\n}\n\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\n\nb,\nstrong {\n font-weight: inherit;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\ndfn {\n font-style: italic;\n}\n\nmark {\n background-color: #ff0;\n color: #000;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\naudio,\nvideo {\n display: inline-block;\n}\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\nimg {\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: sans-serif;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\nprogress {\n display: inline-block;\n vertical-align: baseline;\n}\n\ntextarea {\n overflow: auto;\n}\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n}\n\ndetails,\nmenu {\n display: block;\n}\n\nsummary {\n display: list-item;\n}\n\ncanvas {\n display: inline-block;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none;\n}\n\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\nbody {\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #292b2c;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\na {\n color: #0275d8;\n text-decoration: none;\n}\n\na:focus, a:hover {\n color: #014c8c;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n}\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n background-color: transparent;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #636c72;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\ntextarea {\n line-height: inherit;\n}\n\ninput[type=\"radio\"]:disabled,\ninput[type=\"checkbox\"]:disabled {\n cursor: not-allowed;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n}\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\noutput {\n display: inline-block;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */",null,null,null]} -------------------------------------------------------------------------------- /core/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@angular/common@4.0.1": 6 | version "4.0.1" 7 | resolved "https://registry.yarnpkg.com/@angular/common/-/common-4.0.1.tgz#df488eada842b2d841ded750712292b18387b5b0" 8 | 9 | "@angular/compiler-cli@4.0.1": 10 | version "4.0.1" 11 | resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-4.0.1.tgz#90c60d491c12e1da901a0aeb3990470aa96e9bfa" 12 | dependencies: 13 | "@angular/tsc-wrapped" "4.0.1" 14 | minimist "^1.2.0" 15 | reflect-metadata "^0.1.2" 16 | 17 | "@angular/compiler@4.0.1": 18 | version "4.0.1" 19 | resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-4.0.1.tgz#15721edb148167a2d83b6f9324817e658eac8280" 20 | 21 | "@angular/core@4.0.1": 22 | version "4.0.1" 23 | resolved "https://registry.yarnpkg.com/@angular/core/-/core-4.0.1.tgz#0b110a001012076ea696460ccd922707bcdf51ba" 24 | 25 | "@angular/platform-browser@4.0.1": 26 | version "4.0.1" 27 | resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-4.0.1.tgz#4b9efbeb2fbb900de188743b988802d3aa2b33ff" 28 | 29 | "@angular/tsc-wrapped@4.0.1": 30 | version "4.0.1" 31 | resolved "https://registry.yarnpkg.com/@angular/tsc-wrapped/-/tsc-wrapped-4.0.1.tgz#5323cc99263b097bceeb8e423270b5f58ffb2186" 32 | dependencies: 33 | tsickle "^0.21.0" 34 | 35 | "@ngrx/core@1.2.0": 36 | version "1.2.0" 37 | resolved "https://registry.yarnpkg.com/@ngrx/core/-/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6" 38 | 39 | "@ngrx/effects@2.0.2": 40 | version "2.0.2" 41 | resolved "https://registry.yarnpkg.com/@ngrx/effects/-/effects-2.0.2.tgz#8255e29cc0276f108784c90481e3b96e6713154b" 42 | 43 | "@ngrx/store@2.2.1": 44 | version "2.2.1" 45 | resolved "https://registry.yarnpkg.com/@ngrx/store/-/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510" 46 | 47 | "@types/node@7.0.12": 48 | version "7.0.12" 49 | resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.12.tgz#ae5f67a19c15f752148004db07cbbb372e69efc9" 50 | 51 | ansi-regex@^2.0.0: 52 | version "2.1.1" 53 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 54 | 55 | ansi-styles@^2.2.1: 56 | version "2.2.1" 57 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 58 | 59 | babel-code-frame@^6.22.0: 60 | version "6.22.0" 61 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" 62 | dependencies: 63 | chalk "^1.1.0" 64 | esutils "^2.0.2" 65 | js-tokens "^3.0.0" 66 | 67 | balanced-match@^0.4.1: 68 | version "0.4.2" 69 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 70 | 71 | brace-expansion@^1.0.0: 72 | version "1.1.6" 73 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" 74 | dependencies: 75 | balanced-match "^0.4.1" 76 | concat-map "0.0.1" 77 | 78 | chalk@^1.1.0: 79 | version "1.1.3" 80 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 81 | dependencies: 82 | ansi-styles "^2.2.1" 83 | escape-string-regexp "^1.0.2" 84 | has-ansi "^2.0.0" 85 | strip-ansi "^3.0.0" 86 | supports-color "^2.0.0" 87 | 88 | colors@^1.1.2: 89 | version "1.1.2" 90 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" 91 | 92 | concat-map@0.0.1: 93 | version "0.0.1" 94 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 95 | 96 | diff@^3.2.0: 97 | version "3.2.0" 98 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" 99 | 100 | escape-string-regexp@^1.0.2: 101 | version "1.0.5" 102 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 103 | 104 | esutils@^2.0.2: 105 | version "2.0.2" 106 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 107 | 108 | findup-sync@~0.3.0: 109 | version "0.3.0" 110 | resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" 111 | dependencies: 112 | glob "~5.0.0" 113 | 114 | fs.realpath@^1.0.0: 115 | version "1.0.0" 116 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 117 | 118 | glob@^7.1.1: 119 | version "7.1.1" 120 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 121 | dependencies: 122 | fs.realpath "^1.0.0" 123 | inflight "^1.0.4" 124 | inherits "2" 125 | minimatch "^3.0.2" 126 | once "^1.3.0" 127 | path-is-absolute "^1.0.0" 128 | 129 | glob@~5.0.0: 130 | version "5.0.15" 131 | resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" 132 | dependencies: 133 | inflight "^1.0.4" 134 | inherits "2" 135 | minimatch "2 || 3" 136 | once "^1.3.0" 137 | path-is-absolute "^1.0.0" 138 | 139 | has-ansi@^2.0.0: 140 | version "2.0.0" 141 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 142 | dependencies: 143 | ansi-regex "^2.0.0" 144 | 145 | inflight@^1.0.4: 146 | version "1.0.6" 147 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 148 | dependencies: 149 | once "^1.3.0" 150 | wrappy "1" 151 | 152 | inherits@2: 153 | version "2.0.3" 154 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 155 | 156 | js-tokens@^3.0.0: 157 | version "3.0.1" 158 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" 159 | 160 | "minimatch@2 || 3", minimatch@^3.0.2: 161 | version "3.0.3" 162 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" 163 | dependencies: 164 | brace-expansion "^1.0.0" 165 | 166 | minimist@0.0.8: 167 | version "0.0.8" 168 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 169 | 170 | minimist@^1.2.0: 171 | version "1.2.0" 172 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 173 | 174 | minimist@~0.0.1: 175 | version "0.0.10" 176 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 177 | 178 | mkdirp@^0.5.1: 179 | version "0.5.1" 180 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 181 | dependencies: 182 | minimist "0.0.8" 183 | 184 | once@^1.3.0: 185 | version "1.4.0" 186 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 187 | dependencies: 188 | wrappy "1" 189 | 190 | optimist@~0.6.0: 191 | version "0.6.1" 192 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 193 | dependencies: 194 | minimist "~0.0.1" 195 | wordwrap "~0.0.2" 196 | 197 | path-is-absolute@^1.0.0: 198 | version "1.0.1" 199 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 200 | 201 | path-parse@^1.0.5: 202 | version "1.0.5" 203 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 204 | 205 | reflect-metadata@^0.1.2: 206 | version "0.1.10" 207 | resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a" 208 | 209 | resolve@^1.3.2: 210 | version "1.3.2" 211 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235" 212 | dependencies: 213 | path-parse "^1.0.5" 214 | 215 | rxjs@5.3.0: 216 | version "5.3.0" 217 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.3.0.tgz#d88ccbdd46af290cbdb97d5d8055e52453fabe2d" 218 | dependencies: 219 | symbol-observable "^1.0.1" 220 | 221 | semver@^5.3.0: 222 | version "5.3.0" 223 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 224 | 225 | source-map-support@^0.4.2: 226 | version "0.4.14" 227 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.14.tgz#9d4463772598b86271b4f523f6c1f4e02a7d6aef" 228 | dependencies: 229 | source-map "^0.5.6" 230 | 231 | source-map@^0.5.6: 232 | version "0.5.6" 233 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 234 | 235 | strip-ansi@^3.0.0: 236 | version "3.0.1" 237 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 238 | dependencies: 239 | ansi-regex "^2.0.0" 240 | 241 | supports-color@^2.0.0: 242 | version "2.0.0" 243 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 244 | 245 | symbol-observable@^1.0.1: 246 | version "1.0.4" 247 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" 248 | 249 | tsickle@^0.21.0: 250 | version "0.21.6" 251 | resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.21.6.tgz#53b01b979c5c13fdb13afb3fb958177e5991588d" 252 | dependencies: 253 | minimist "^1.2.0" 254 | mkdirp "^0.5.1" 255 | source-map "^0.5.6" 256 | source-map-support "^0.4.2" 257 | 258 | tslint@5.0.0: 259 | version "5.0.0" 260 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.0.0.tgz#ad3b7952f8a9b21079248bee01c2eaf92167e185" 261 | dependencies: 262 | babel-code-frame "^6.22.0" 263 | colors "^1.1.2" 264 | diff "^3.2.0" 265 | findup-sync "~0.3.0" 266 | glob "^7.1.1" 267 | optimist "~0.6.0" 268 | resolve "^1.3.2" 269 | semver "^5.3.0" 270 | tsutils "^1.4.0" 271 | 272 | tsutils@^1.4.0: 273 | version "1.4.0" 274 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.4.0.tgz#84f8a83df9967d35bf1ff3aa48c7339593d64e19" 275 | 276 | typescript@2.2.2: 277 | version "2.2.2" 278 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.2.tgz#606022508479b55ffa368b58fee963a03dfd7b0c" 279 | 280 | wordwrap@~0.0.2: 281 | version "0.0.3" 282 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 283 | 284 | wrappy@1: 285 | version "1.0.2" 286 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 287 | 288 | zone.js@0.8.5: 289 | version "0.8.5" 290 | resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.8.5.tgz#7906e017482cbff4c3f079c5c34305ce941f5ba2" 291 | -------------------------------------------------------------------------------- /web/src/assets/css/bootstrap-grid.min.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../scss/bootstrap-grid.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /web/src/assets/css/bootstrap-grid.min.css: -------------------------------------------------------------------------------- 1 | @-ms-viewport{width:device-width}html{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-overflow-style:scrollbar}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}.container{position:relative;margin-left:auto;margin-right:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container{padding-right:15px;padding-left:15px}}@media (min-width:576px){.container{width:540px;max-width:100%}}@media (min-width:768px){.container{width:720px;max-width:100%}}@media (min-width:992px){.container{width:960px;max-width:100%}}@media (min-width:1200px){.container{width:1140px;max-width:100%}}.container-fluid{position:relative;margin-left:auto;margin-right:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container-fluid{padding-right:15px;padding-left:15px}}.row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}@media (min-width:576px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:768px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:992px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:1200px){.row{margin-right:-15px;margin-left:-15px}}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:576px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:768px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:992px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{padding-right:15px;padding-left:15px}}.col{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-0{right:auto}.pull-1{right:8.333333%}.pull-2{right:16.666667%}.pull-3{right:25%}.pull-4{right:33.333333%}.pull-5{right:41.666667%}.pull-6{right:50%}.pull-7{right:58.333333%}.pull-8{right:66.666667%}.pull-9{right:75%}.pull-10{right:83.333333%}.pull-11{right:91.666667%}.pull-12{right:100%}.push-0{left:auto}.push-1{left:8.333333%}.push-2{left:16.666667%}.push-3{left:25%}.push-4{left:33.333333%}.push-5{left:41.666667%}.push-6{left:50%}.push-7{left:58.333333%}.push-8{left:66.666667%}.push-9{left:75%}.push-10{left:83.333333%}.push-11{left:91.666667%}.push-12{left:100%}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-sm-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-sm-0{right:auto}.pull-sm-1{right:8.333333%}.pull-sm-2{right:16.666667%}.pull-sm-3{right:25%}.pull-sm-4{right:33.333333%}.pull-sm-5{right:41.666667%}.pull-sm-6{right:50%}.pull-sm-7{right:58.333333%}.pull-sm-8{right:66.666667%}.pull-sm-9{right:75%}.pull-sm-10{right:83.333333%}.pull-sm-11{right:91.666667%}.pull-sm-12{right:100%}.push-sm-0{left:auto}.push-sm-1{left:8.333333%}.push-sm-2{left:16.666667%}.push-sm-3{left:25%}.push-sm-4{left:33.333333%}.push-sm-5{left:41.666667%}.push-sm-6{left:50%}.push-sm-7{left:58.333333%}.push-sm-8{left:66.666667%}.push-sm-9{left:75%}.push-sm-10{left:83.333333%}.push-sm-11{left:91.666667%}.push-sm-12{left:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-md-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-md-0{right:auto}.pull-md-1{right:8.333333%}.pull-md-2{right:16.666667%}.pull-md-3{right:25%}.pull-md-4{right:33.333333%}.pull-md-5{right:41.666667%}.pull-md-6{right:50%}.pull-md-7{right:58.333333%}.pull-md-8{right:66.666667%}.pull-md-9{right:75%}.pull-md-10{right:83.333333%}.pull-md-11{right:91.666667%}.pull-md-12{right:100%}.push-md-0{left:auto}.push-md-1{left:8.333333%}.push-md-2{left:16.666667%}.push-md-3{left:25%}.push-md-4{left:33.333333%}.push-md-5{left:41.666667%}.push-md-6{left:50%}.push-md-7{left:58.333333%}.push-md-8{left:66.666667%}.push-md-9{left:75%}.push-md-10{left:83.333333%}.push-md-11{left:91.666667%}.push-md-12{left:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-lg-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-lg-0{right:auto}.pull-lg-1{right:8.333333%}.pull-lg-2{right:16.666667%}.pull-lg-3{right:25%}.pull-lg-4{right:33.333333%}.pull-lg-5{right:41.666667%}.pull-lg-6{right:50%}.pull-lg-7{right:58.333333%}.pull-lg-8{right:66.666667%}.pull-lg-9{right:75%}.pull-lg-10{right:83.333333%}.pull-lg-11{right:91.666667%}.pull-lg-12{right:100%}.push-lg-0{left:auto}.push-lg-1{left:8.333333%}.push-lg-2{left:16.666667%}.push-lg-3{left:25%}.push-lg-4{left:33.333333%}.push-lg-5{left:41.666667%}.push-lg-6{left:50%}.push-lg-7{left:58.333333%}.push-lg-8{left:66.666667%}.push-lg-9{left:75%}.push-lg-10{left:83.333333%}.push-lg-11{left:91.666667%}.push-lg-12{left:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xl-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-xl-0{right:auto}.pull-xl-1{right:8.333333%}.pull-xl-2{right:16.666667%}.pull-xl-3{right:25%}.pull-xl-4{right:33.333333%}.pull-xl-5{right:41.666667%}.pull-xl-6{right:50%}.pull-xl-7{right:58.333333%}.pull-xl-8{right:66.666667%}.pull-xl-9{right:75%}.pull-xl-10{right:83.333333%}.pull-xl-11{right:91.666667%}.pull-xl-12{right:100%}.push-xl-0{left:auto}.push-xl-1{left:8.333333%}.push-xl-2{left:16.666667%}.push-xl-3{left:25%}.push-xl-4{left:33.333333%}.push-xl-5{left:41.666667%}.push-xl-6{left:50%}.push-xl-7{left:58.333333%}.push-xl-8{left:66.666667%}.push-xl-9{left:75%}.push-xl-10{left:83.333333%}.push-xl-11{left:91.666667%}.push-xl-12{left:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}/*# sourceMappingURL=bootstrap-grid.min.css.map */ -------------------------------------------------------------------------------- /web/src/assets/css/bootstrap-grid.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../scss/bootstrap-grid.scss","bootstrap-grid.css","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/mixins/_grid-framework.scss"],"names":[],"mappings":"AAUE;EAAgB,oBAAmB;CCRpC;;ADWD;EACE,+BAAsB;UAAtB,uBAAsB;EACtB,8BAA6B;CAC9B;;AAED;;;EAGE,4BAAmB;UAAnB,oBAAmB;CACpB;;AEjBC;ECAA,mBAAkB;EAClB,kBAAiB;EACjB,mBAAkB;EAKd,oBAA4B;EAC5B,mBAA4B;CDL/B;;AEgDC;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CDoBF;;AG4BG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CD2BF;;AGqBG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CDkCF;;AGcG;EFnDF;ICOI,oBAA4B;IAC5B,mBAA4B;GDL/B;CDyCF;;AGOG;EFnDF;ICkBI,aEqMK;IFpML,gBAAe;GDhBlB;CDgDF;;AGAG;EFnDF;ICkBI,aEsMK;IFrML,gBAAe;GDhBlB;CDuDF;;AGPG;EFnDF;ICkBI,aEuMK;IFtML,gBAAe;GDhBlB;CD8DF;;AGdG;EFnDF;ICkBI,cEwMM;IFvMN,gBAAe;GDhBlB;CDqEF;;AC5DC;ECZA,mBAAkB;EAClB,kBAAiB;EACjB,mBAAkB;EAKd,oBAA4B;EAC5B,mBAA4B;CDM/B;;AEqCC;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CDyEF;;AGpCG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CDgFF;;AG3CG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CDuFF;;AGlDG;EFvCF;ICLI,oBAA4B;IAC5B,mBAA4B;GDM/B;CD8FF;;ACtFC;ECaA,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,wBAAe;MAAf,oBAAe;UAAf,gBAAe;EAKX,oBAA4B;EAC5B,mBAA4B;CDlB/B;;AE2BC;EF7BF;ICmBI,oBAA4B;IAC5B,mBAA4B;GDlB/B;CDkGF;;AGvEG;EF7BF;ICmBI,oBAA4B;IAC5B,mBAA4B;GDlB/B;CDyGF;;AG9EG;EF7BF;ICmBI,oBAA4B;IAC5B,mBAA4B;GDlB/B;CDgHF;;AGrFG;EF7BF;ICmBI,oBAA4B;IAC5B,mBAA4B;GDlB/B;CDuHF;;ACnHC;EACE,gBAAe;EACf,eAAc;CAOf;;AATD;;EAMI,iBAAgB;EAChB,gBAAe;CAChB;;AIlCH;EACE,mBAAkB;EAClB,YAAW;EACX,gBAAe;EHuBb,oBAA4B;EAC5B,mBAA4B;CGrB/B;;AF2CC;EEjDF;IH0BI,oBAA4B;IAC5B,mBAA4B;GGrB/B;CLiKF;;AGtHG;EEjDF;IH0BI,oBAA4B;IAC5B,mBAA4B;GGrB/B;CLwKF;;AG7HG;EEjDF;IH0BI,oBAA4B;IAC5B,mBAA4B;GGrB/B;CL+KF;;AGpIG;EEjDF;IH0BI,oBAA4B;IAC5B,mBAA4B;GGrB/B;CLsLF;;AKrKK;EACE,sBAAa;MAAb,2BAAa;UAAb,cAAa;EACb,oBAAY;EAAZ,qBAAY;MAAZ,qBAAY;UAAZ,aAAY;EACZ,gBAAe;CAChB;;AACD;EACE,oBAAc;EAAd,uBAAc;MAAd,mBAAc;UAAd,eAAc;EACd,YAAW;CACZ;;AAGC;EH6BN,oBAAsC;EAAtC,4BAAsC;MAAtC,wBAAsC;UAAtC,oBAAsC;EAKtC,qBAAuC;CGhChC;;AAFD;EH6BN,oBAAsC;EAAtC,6BAAsC;MAAtC,yBAAsC;UAAtC,qBAAsC;EAKtC,sBAAuC;CGhChC;;AAFD;EH6BN,oBAAsC;EAAtC,sBAAsC;MAAtC,kBAAsC;UAAtC,cAAsC;EAKtC,eAAuC;CGhChC;;AAFD;EH6BN,oBAAsC;EAAtC,6BAAsC;MAAtC,yBAAsC;UAAtC,qBAAsC;EAKtC,sBAAuC;CGhChC;;AAFD;EH6BN,oBAAsC;EAAtC,6BAAsC;MAAtC,yBAAsC;UAAtC,qBAAsC;EAKtC,sBAAuC;CGhChC;;AAFD;EH6BN,oBAAsC;EAAtC,sBAAsC;MAAtC,kBAAsC;UAAtC,cAAsC;EAKtC,eAAuC;CGhChC;;AAFD;EH6BN,oBAAsC;EAAtC,6BAAsC;MAAtC,yBAAsC;UAAtC,qBAAsC;EAKtC,sBAAuC;CGhChC;;AAFD;EH6BN,oBAAsC;EAAtC,6BAAsC;MAAtC,yBAAsC;UAAtC,qBAAsC;EAKtC,sBAAuC;CGhChC;;AAFD;EH6BN,oBAAsC;EAAtC,sBAAsC;MAAtC,kBAAsC;UAAtC,cAAsC;EAKtC,eAAuC;CGhChC;;AAFD;EH6BN,oBAAsC;EAAtC,6BAAsC;MAAtC,yBAAsC;UAAtC,qBAAsC;EAKtC,sBAAuC;CGhChC;;AAFD;EH6BN,oBAAsC;EAAtC,6BAAsC;MAAtC,yBAAsC;UAAtC,qBAAsC;EAKtC,sBAAuC;CGhChC;;AAFD;EH6BN,oBAAsC;EAAtC,uBAAsC;MAAtC,mBAAsC;UAAtC,eAAsC;EAKtC,gBAAuC;CGhChC;;AAKC;EHuCR,YAAuD;CGrC9C;;AAFD;EHuCR,iBAAiD;CGrCxC;;AAFD;EHuCR,kBAAiD;CGrCxC;;AAFD;EHuCR,WAAiD;CGrCxC;;AAFD;EHuCR,kBAAiD;CGrCxC;;AAFD;EHuCR,kBAAiD;CGrCxC;;AAFD;EHuCR,WAAiD;CGrCxC;;AAFD;EHuCR,kBAAiD;CGrCxC;;AAFD;EHuCR,kBAAiD;CGrCxC;;AAFD;EHuCR,WAAiD;CGrCxC;;AAFD;EHuCR,kBAAiD;CGrCxC;;AAFD;EHuCR,kBAAiD;CGrCxC;;AAFD;EHuCR,YAAiD;CGrCxC;;AAFD;EHmCR,WAAsD;CGjC7C;;AAFD;EHmCR,gBAAgD;CGjCvC;;AAFD;EHmCR,iBAAgD;CGjCvC;;AAFD;EHmCR,UAAgD;CGjCvC;;AAFD;EHmCR,iBAAgD;CGjCvC;;AAFD;EHmCR,iBAAgD;CGjCvC;;AAFD;EHmCR,UAAgD;CGjCvC;;AAFD;EHmCR,iBAAgD;CGjCvC;;AAFD;EHmCR,iBAAgD;CGjCvC;;AAFD;EHmCR,UAAgD;CGjCvC;;AAFD;EHmCR,iBAAgD;CGjCvC;;AAFD;EHmCR,iBAAgD;CGjCvC;;AAFD;EHmCR,WAAgD;CGjCvC;;AAOD;EHsBR,uBAAyC;CGpBhC;;AAFD;EHsBR,wBAAyC;CGpBhC;;AAFD;EHsBR,iBAAyC;CGpBhC;;AAFD;EHsBR,wBAAyC;CGpBhC;;AAFD;EHsBR,wBAAyC;CGpBhC;;AAFD;EHsBR,iBAAyC;CGpBhC;;AAFD;EHsBR,wBAAyC;CGpBhC;;AAFD;EHsBR,wBAAyC;CGpBhC;;AAFD;EHsBR,iBAAyC;CGpBhC;;AAFD;EHsBR,wBAAyC;CGpBhC;;AAFD;EHsBR,wBAAyC;CGpBhC;;AFHP;EE1BE;IACE,sBAAa;QAAb,2BAAa;YAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;QAAZ,qBAAY;YAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,uBAAc;QAAd,mBAAc;YAAd,eAAc;IACd,YAAW;GACZ;EAGC;IH6BN,oBAAsC;IAAtC,4BAAsC;QAAtC,wBAAsC;YAAtC,oBAAsC;IAKtC,qBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,sBAAsC;QAAtC,kBAAsC;YAAtC,cAAsC;IAKtC,eAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,sBAAsC;QAAtC,kBAAsC;YAAtC,cAAsC;IAKtC,eAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,sBAAsC;QAAtC,kBAAsC;YAAtC,cAAsC;IAKtC,eAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,uBAAsC;QAAtC,mBAAsC;YAAtC,eAAsC;IAKtC,gBAAuC;GGhChC;EAKC;IHuCR,YAAuD;GGrC9C;EAFD;IHuCR,iBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,YAAiD;GGrCxC;EAFD;IHmCR,WAAsD;GGjC7C;EAFD;IHmCR,gBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,WAAgD;GGjCvC;EAOD;IHsBR,gBAAyC;GGpBhC;EAFD;IHsBR,uBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;CLihBV;;AGphBG;EE1BE;IACE,sBAAa;QAAb,2BAAa;YAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;QAAZ,qBAAY;YAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,uBAAc;QAAd,mBAAc;YAAd,eAAc;IACd,YAAW;GACZ;EAGC;IH6BN,oBAAsC;IAAtC,4BAAsC;QAAtC,wBAAsC;YAAtC,oBAAsC;IAKtC,qBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,sBAAsC;QAAtC,kBAAsC;YAAtC,cAAsC;IAKtC,eAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,sBAAsC;QAAtC,kBAAsC;YAAtC,cAAsC;IAKtC,eAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,sBAAsC;QAAtC,kBAAsC;YAAtC,cAAsC;IAKtC,eAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,uBAAsC;QAAtC,mBAAsC;YAAtC,eAAsC;IAKtC,gBAAuC;GGhChC;EAKC;IHuCR,YAAuD;GGrC9C;EAFD;IHuCR,iBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,YAAiD;GGrCxC;EAFD;IHmCR,WAAsD;GGjC7C;EAFD;IHmCR,gBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,WAAgD;GGjCvC;EAOD;IHsBR,gBAAyC;GGpBhC;EAFD;IHsBR,uBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;CL+rBV;;AGlsBG;EE1BE;IACE,sBAAa;QAAb,2BAAa;YAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;QAAZ,qBAAY;YAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,uBAAc;QAAd,mBAAc;YAAd,eAAc;IACd,YAAW;GACZ;EAGC;IH6BN,oBAAsC;IAAtC,4BAAsC;QAAtC,wBAAsC;YAAtC,oBAAsC;IAKtC,qBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,sBAAsC;QAAtC,kBAAsC;YAAtC,cAAsC;IAKtC,eAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,sBAAsC;QAAtC,kBAAsC;YAAtC,cAAsC;IAKtC,eAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,sBAAsC;QAAtC,kBAAsC;YAAtC,cAAsC;IAKtC,eAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,uBAAsC;QAAtC,mBAAsC;YAAtC,eAAsC;IAKtC,gBAAuC;GGhChC;EAKC;IHuCR,YAAuD;GGrC9C;EAFD;IHuCR,iBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,YAAiD;GGrCxC;EAFD;IHmCR,WAAsD;GGjC7C;EAFD;IHmCR,gBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,WAAgD;GGjCvC;EAOD;IHsBR,gBAAyC;GGpBhC;EAFD;IHsBR,uBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;CL62BV;;AGh3BG;EE1BE;IACE,sBAAa;QAAb,2BAAa;YAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;QAAZ,qBAAY;YAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,uBAAc;QAAd,mBAAc;YAAd,eAAc;IACd,YAAW;GACZ;EAGC;IH6BN,oBAAsC;IAAtC,4BAAsC;QAAtC,wBAAsC;YAAtC,oBAAsC;IAKtC,qBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,sBAAsC;QAAtC,kBAAsC;YAAtC,cAAsC;IAKtC,eAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,sBAAsC;QAAtC,kBAAsC;YAAtC,cAAsC;IAKtC,eAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,sBAAsC;QAAtC,kBAAsC;YAAtC,cAAsC;IAKtC,eAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,6BAAsC;QAAtC,yBAAsC;YAAtC,qBAAsC;IAKtC,sBAAuC;GGhChC;EAFD;IH6BN,oBAAsC;IAAtC,uBAAsC;QAAtC,mBAAsC;YAAtC,eAAsC;IAKtC,gBAAuC;GGhChC;EAKC;IHuCR,YAAuD;GGrC9C;EAFD;IHuCR,iBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,WAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,kBAAiD;GGrCxC;EAFD;IHuCR,YAAiD;GGrCxC;EAFD;IHmCR,WAAsD;GGjC7C;EAFD;IHmCR,gBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,UAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,iBAAgD;GGjCvC;EAFD;IHmCR,WAAgD;GGjCvC;EAOD;IHsBR,gBAAyC;GGpBhC;EAFD;IHsBR,uBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,iBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;EAFD;IHsBR,wBAAyC;GGpBhC;CL2hCV","file":"bootstrap-grid.css","sourcesContent":[null,"@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n box-sizing: border-box;\n -ms-overflow-style: scrollbar;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n.container {\n position: relative;\n margin-left: auto;\n margin-right: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .container {\n width: 540px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n width: 720px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n width: 960px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n width: 1140px;\n max-width: 100%;\n }\n}\n\n.container-fluid {\n position: relative;\n margin-left: auto;\n margin-right: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n@media (min-width: 576px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 768px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 992px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 1200px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.pull-0 {\n right: auto;\n}\n\n.pull-1 {\n right: 8.333333%;\n}\n\n.pull-2 {\n right: 16.666667%;\n}\n\n.pull-3 {\n right: 25%;\n}\n\n.pull-4 {\n right: 33.333333%;\n}\n\n.pull-5 {\n right: 41.666667%;\n}\n\n.pull-6 {\n right: 50%;\n}\n\n.pull-7 {\n right: 58.333333%;\n}\n\n.pull-8 {\n right: 66.666667%;\n}\n\n.pull-9 {\n right: 75%;\n}\n\n.pull-10 {\n right: 83.333333%;\n}\n\n.pull-11 {\n right: 91.666667%;\n}\n\n.pull-12 {\n right: 100%;\n}\n\n.push-0 {\n left: auto;\n}\n\n.push-1 {\n left: 8.333333%;\n}\n\n.push-2 {\n left: 16.666667%;\n}\n\n.push-3 {\n left: 25%;\n}\n\n.push-4 {\n left: 33.333333%;\n}\n\n.push-5 {\n left: 41.666667%;\n}\n\n.push-6 {\n left: 50%;\n}\n\n.push-7 {\n left: 58.333333%;\n}\n\n.push-8 {\n left: 66.666667%;\n}\n\n.push-9 {\n left: 75%;\n}\n\n.push-10 {\n left: 83.333333%;\n}\n\n.push-11 {\n left: 91.666667%;\n}\n\n.push-12 {\n left: 100%;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-sm-0 {\n right: auto;\n }\n .pull-sm-1 {\n right: 8.333333%;\n }\n .pull-sm-2 {\n right: 16.666667%;\n }\n .pull-sm-3 {\n right: 25%;\n }\n .pull-sm-4 {\n right: 33.333333%;\n }\n .pull-sm-5 {\n right: 41.666667%;\n }\n .pull-sm-6 {\n right: 50%;\n }\n .pull-sm-7 {\n right: 58.333333%;\n }\n .pull-sm-8 {\n right: 66.666667%;\n }\n .pull-sm-9 {\n right: 75%;\n }\n .pull-sm-10 {\n right: 83.333333%;\n }\n .pull-sm-11 {\n right: 91.666667%;\n }\n .pull-sm-12 {\n right: 100%;\n }\n .push-sm-0 {\n left: auto;\n }\n .push-sm-1 {\n left: 8.333333%;\n }\n .push-sm-2 {\n left: 16.666667%;\n }\n .push-sm-3 {\n left: 25%;\n }\n .push-sm-4 {\n left: 33.333333%;\n }\n .push-sm-5 {\n left: 41.666667%;\n }\n .push-sm-6 {\n left: 50%;\n }\n .push-sm-7 {\n left: 58.333333%;\n }\n .push-sm-8 {\n left: 66.666667%;\n }\n .push-sm-9 {\n left: 75%;\n }\n .push-sm-10 {\n left: 83.333333%;\n }\n .push-sm-11 {\n left: 91.666667%;\n }\n .push-sm-12 {\n left: 100%;\n }\n .offset-sm-0 {\n margin-left: 0%;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-md-0 {\n right: auto;\n }\n .pull-md-1 {\n right: 8.333333%;\n }\n .pull-md-2 {\n right: 16.666667%;\n }\n .pull-md-3 {\n right: 25%;\n }\n .pull-md-4 {\n right: 33.333333%;\n }\n .pull-md-5 {\n right: 41.666667%;\n }\n .pull-md-6 {\n right: 50%;\n }\n .pull-md-7 {\n right: 58.333333%;\n }\n .pull-md-8 {\n right: 66.666667%;\n }\n .pull-md-9 {\n right: 75%;\n }\n .pull-md-10 {\n right: 83.333333%;\n }\n .pull-md-11 {\n right: 91.666667%;\n }\n .pull-md-12 {\n right: 100%;\n }\n .push-md-0 {\n left: auto;\n }\n .push-md-1 {\n left: 8.333333%;\n }\n .push-md-2 {\n left: 16.666667%;\n }\n .push-md-3 {\n left: 25%;\n }\n .push-md-4 {\n left: 33.333333%;\n }\n .push-md-5 {\n left: 41.666667%;\n }\n .push-md-6 {\n left: 50%;\n }\n .push-md-7 {\n left: 58.333333%;\n }\n .push-md-8 {\n left: 66.666667%;\n }\n .push-md-9 {\n left: 75%;\n }\n .push-md-10 {\n left: 83.333333%;\n }\n .push-md-11 {\n left: 91.666667%;\n }\n .push-md-12 {\n left: 100%;\n }\n .offset-md-0 {\n margin-left: 0%;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-lg-0 {\n right: auto;\n }\n .pull-lg-1 {\n right: 8.333333%;\n }\n .pull-lg-2 {\n right: 16.666667%;\n }\n .pull-lg-3 {\n right: 25%;\n }\n .pull-lg-4 {\n right: 33.333333%;\n }\n .pull-lg-5 {\n right: 41.666667%;\n }\n .pull-lg-6 {\n right: 50%;\n }\n .pull-lg-7 {\n right: 58.333333%;\n }\n .pull-lg-8 {\n right: 66.666667%;\n }\n .pull-lg-9 {\n right: 75%;\n }\n .pull-lg-10 {\n right: 83.333333%;\n }\n .pull-lg-11 {\n right: 91.666667%;\n }\n .pull-lg-12 {\n right: 100%;\n }\n .push-lg-0 {\n left: auto;\n }\n .push-lg-1 {\n left: 8.333333%;\n }\n .push-lg-2 {\n left: 16.666667%;\n }\n .push-lg-3 {\n left: 25%;\n }\n .push-lg-4 {\n left: 33.333333%;\n }\n .push-lg-5 {\n left: 41.666667%;\n }\n .push-lg-6 {\n left: 50%;\n }\n .push-lg-7 {\n left: 58.333333%;\n }\n .push-lg-8 {\n left: 66.666667%;\n }\n .push-lg-9 {\n left: 75%;\n }\n .push-lg-10 {\n left: 83.333333%;\n }\n .push-lg-11 {\n left: 91.666667%;\n }\n .push-lg-12 {\n left: 100%;\n }\n .offset-lg-0 {\n margin-left: 0%;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-xl-0 {\n right: auto;\n }\n .pull-xl-1 {\n right: 8.333333%;\n }\n .pull-xl-2 {\n right: 16.666667%;\n }\n .pull-xl-3 {\n right: 25%;\n }\n .pull-xl-4 {\n right: 33.333333%;\n }\n .pull-xl-5 {\n right: 41.666667%;\n }\n .pull-xl-6 {\n right: 50%;\n }\n .pull-xl-7 {\n right: 58.333333%;\n }\n .pull-xl-8 {\n right: 66.666667%;\n }\n .pull-xl-9 {\n right: 75%;\n }\n .pull-xl-10 {\n right: 83.333333%;\n }\n .pull-xl-11 {\n right: 91.666667%;\n }\n .pull-xl-12 {\n right: 100%;\n }\n .push-xl-0 {\n left: auto;\n }\n .push-xl-1 {\n left: 8.333333%;\n }\n .push-xl-2 {\n left: 16.666667%;\n }\n .push-xl-3 {\n left: 25%;\n }\n .push-xl-4 {\n left: 33.333333%;\n }\n .push-xl-5 {\n left: 41.666667%;\n }\n .push-xl-6 {\n left: 50%;\n }\n .push-xl-7 {\n left: 58.333333%;\n }\n .push-xl-8 {\n left: 66.666667%;\n }\n .push-xl-9 {\n left: 75%;\n }\n .push-xl-10 {\n left: 83.333333%;\n }\n .push-xl-11 {\n left: 91.666667%;\n }\n .push-xl-12 {\n left: 100%;\n }\n .offset-xl-0 {\n margin-left: 0%;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */",null,null,null,null,null]} -------------------------------------------------------------------------------- /web/src/assets/css/bootstrap-grid.css: -------------------------------------------------------------------------------- 1 | @-ms-viewport { 2 | width: device-width; 3 | } 4 | 5 | html { 6 | -webkit-box-sizing: border-box; 7 | box-sizing: border-box; 8 | -ms-overflow-style: scrollbar; 9 | } 10 | 11 | *, 12 | *::before, 13 | *::after { 14 | -webkit-box-sizing: inherit; 15 | box-sizing: inherit; 16 | } 17 | 18 | .container { 19 | position: relative; 20 | margin-left: auto; 21 | margin-right: auto; 22 | padding-right: 15px; 23 | padding-left: 15px; 24 | } 25 | 26 | @media (min-width: 576px) { 27 | .container { 28 | padding-right: 15px; 29 | padding-left: 15px; 30 | } 31 | } 32 | 33 | @media (min-width: 768px) { 34 | .container { 35 | padding-right: 15px; 36 | padding-left: 15px; 37 | } 38 | } 39 | 40 | @media (min-width: 992px) { 41 | .container { 42 | padding-right: 15px; 43 | padding-left: 15px; 44 | } 45 | } 46 | 47 | @media (min-width: 1200px) { 48 | .container { 49 | padding-right: 15px; 50 | padding-left: 15px; 51 | } 52 | } 53 | 54 | @media (min-width: 576px) { 55 | .container { 56 | width: 540px; 57 | max-width: 100%; 58 | } 59 | } 60 | 61 | @media (min-width: 768px) { 62 | .container { 63 | width: 720px; 64 | max-width: 100%; 65 | } 66 | } 67 | 68 | @media (min-width: 992px) { 69 | .container { 70 | width: 960px; 71 | max-width: 100%; 72 | } 73 | } 74 | 75 | @media (min-width: 1200px) { 76 | .container { 77 | width: 1140px; 78 | max-width: 100%; 79 | } 80 | } 81 | 82 | .container-fluid { 83 | position: relative; 84 | margin-left: auto; 85 | margin-right: auto; 86 | padding-right: 15px; 87 | padding-left: 15px; 88 | } 89 | 90 | @media (min-width: 576px) { 91 | .container-fluid { 92 | padding-right: 15px; 93 | padding-left: 15px; 94 | } 95 | } 96 | 97 | @media (min-width: 768px) { 98 | .container-fluid { 99 | padding-right: 15px; 100 | padding-left: 15px; 101 | } 102 | } 103 | 104 | @media (min-width: 992px) { 105 | .container-fluid { 106 | padding-right: 15px; 107 | padding-left: 15px; 108 | } 109 | } 110 | 111 | @media (min-width: 1200px) { 112 | .container-fluid { 113 | padding-right: 15px; 114 | padding-left: 15px; 115 | } 116 | } 117 | 118 | .row { 119 | display: -webkit-box; 120 | display: -webkit-flex; 121 | display: -ms-flexbox; 122 | display: flex; 123 | -webkit-flex-wrap: wrap; 124 | -ms-flex-wrap: wrap; 125 | flex-wrap: wrap; 126 | margin-right: -15px; 127 | margin-left: -15px; 128 | } 129 | 130 | @media (min-width: 576px) { 131 | .row { 132 | margin-right: -15px; 133 | margin-left: -15px; 134 | } 135 | } 136 | 137 | @media (min-width: 768px) { 138 | .row { 139 | margin-right: -15px; 140 | margin-left: -15px; 141 | } 142 | } 143 | 144 | @media (min-width: 992px) { 145 | .row { 146 | margin-right: -15px; 147 | margin-left: -15px; 148 | } 149 | } 150 | 151 | @media (min-width: 1200px) { 152 | .row { 153 | margin-right: -15px; 154 | margin-left: -15px; 155 | } 156 | } 157 | 158 | .no-gutters { 159 | margin-right: 0; 160 | margin-left: 0; 161 | } 162 | 163 | .no-gutters > .col, 164 | .no-gutters > [class*="col-"] { 165 | padding-right: 0; 166 | padding-left: 0; 167 | } 168 | 169 | .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { 170 | position: relative; 171 | width: 100%; 172 | min-height: 1px; 173 | padding-right: 15px; 174 | padding-left: 15px; 175 | } 176 | 177 | @media (min-width: 576px) { 178 | .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { 179 | padding-right: 15px; 180 | padding-left: 15px; 181 | } 182 | } 183 | 184 | @media (min-width: 768px) { 185 | .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { 186 | padding-right: 15px; 187 | padding-left: 15px; 188 | } 189 | } 190 | 191 | @media (min-width: 992px) { 192 | .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { 193 | padding-right: 15px; 194 | padding-left: 15px; 195 | } 196 | } 197 | 198 | @media (min-width: 1200px) { 199 | .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl { 200 | padding-right: 15px; 201 | padding-left: 15px; 202 | } 203 | } 204 | 205 | .col { 206 | -webkit-flex-basis: 0; 207 | -ms-flex-preferred-size: 0; 208 | flex-basis: 0; 209 | -webkit-box-flex: 1; 210 | -webkit-flex-grow: 1; 211 | -ms-flex-positive: 1; 212 | flex-grow: 1; 213 | max-width: 100%; 214 | } 215 | 216 | .col-auto { 217 | -webkit-box-flex: 0; 218 | -webkit-flex: 0 0 auto; 219 | -ms-flex: 0 0 auto; 220 | flex: 0 0 auto; 221 | width: auto; 222 | } 223 | 224 | .col-1 { 225 | -webkit-box-flex: 0; 226 | -webkit-flex: 0 0 8.333333%; 227 | -ms-flex: 0 0 8.333333%; 228 | flex: 0 0 8.333333%; 229 | max-width: 8.333333%; 230 | } 231 | 232 | .col-2 { 233 | -webkit-box-flex: 0; 234 | -webkit-flex: 0 0 16.666667%; 235 | -ms-flex: 0 0 16.666667%; 236 | flex: 0 0 16.666667%; 237 | max-width: 16.666667%; 238 | } 239 | 240 | .col-3 { 241 | -webkit-box-flex: 0; 242 | -webkit-flex: 0 0 25%; 243 | -ms-flex: 0 0 25%; 244 | flex: 0 0 25%; 245 | max-width: 25%; 246 | } 247 | 248 | .col-4 { 249 | -webkit-box-flex: 0; 250 | -webkit-flex: 0 0 33.333333%; 251 | -ms-flex: 0 0 33.333333%; 252 | flex: 0 0 33.333333%; 253 | max-width: 33.333333%; 254 | } 255 | 256 | .col-5 { 257 | -webkit-box-flex: 0; 258 | -webkit-flex: 0 0 41.666667%; 259 | -ms-flex: 0 0 41.666667%; 260 | flex: 0 0 41.666667%; 261 | max-width: 41.666667%; 262 | } 263 | 264 | .col-6 { 265 | -webkit-box-flex: 0; 266 | -webkit-flex: 0 0 50%; 267 | -ms-flex: 0 0 50%; 268 | flex: 0 0 50%; 269 | max-width: 50%; 270 | } 271 | 272 | .col-7 { 273 | -webkit-box-flex: 0; 274 | -webkit-flex: 0 0 58.333333%; 275 | -ms-flex: 0 0 58.333333%; 276 | flex: 0 0 58.333333%; 277 | max-width: 58.333333%; 278 | } 279 | 280 | .col-8 { 281 | -webkit-box-flex: 0; 282 | -webkit-flex: 0 0 66.666667%; 283 | -ms-flex: 0 0 66.666667%; 284 | flex: 0 0 66.666667%; 285 | max-width: 66.666667%; 286 | } 287 | 288 | .col-9 { 289 | -webkit-box-flex: 0; 290 | -webkit-flex: 0 0 75%; 291 | -ms-flex: 0 0 75%; 292 | flex: 0 0 75%; 293 | max-width: 75%; 294 | } 295 | 296 | .col-10 { 297 | -webkit-box-flex: 0; 298 | -webkit-flex: 0 0 83.333333%; 299 | -ms-flex: 0 0 83.333333%; 300 | flex: 0 0 83.333333%; 301 | max-width: 83.333333%; 302 | } 303 | 304 | .col-11 { 305 | -webkit-box-flex: 0; 306 | -webkit-flex: 0 0 91.666667%; 307 | -ms-flex: 0 0 91.666667%; 308 | flex: 0 0 91.666667%; 309 | max-width: 91.666667%; 310 | } 311 | 312 | .col-12 { 313 | -webkit-box-flex: 0; 314 | -webkit-flex: 0 0 100%; 315 | -ms-flex: 0 0 100%; 316 | flex: 0 0 100%; 317 | max-width: 100%; 318 | } 319 | 320 | .pull-0 { 321 | right: auto; 322 | } 323 | 324 | .pull-1 { 325 | right: 8.333333%; 326 | } 327 | 328 | .pull-2 { 329 | right: 16.666667%; 330 | } 331 | 332 | .pull-3 { 333 | right: 25%; 334 | } 335 | 336 | .pull-4 { 337 | right: 33.333333%; 338 | } 339 | 340 | .pull-5 { 341 | right: 41.666667%; 342 | } 343 | 344 | .pull-6 { 345 | right: 50%; 346 | } 347 | 348 | .pull-7 { 349 | right: 58.333333%; 350 | } 351 | 352 | .pull-8 { 353 | right: 66.666667%; 354 | } 355 | 356 | .pull-9 { 357 | right: 75%; 358 | } 359 | 360 | .pull-10 { 361 | right: 83.333333%; 362 | } 363 | 364 | .pull-11 { 365 | right: 91.666667%; 366 | } 367 | 368 | .pull-12 { 369 | right: 100%; 370 | } 371 | 372 | .push-0 { 373 | left: auto; 374 | } 375 | 376 | .push-1 { 377 | left: 8.333333%; 378 | } 379 | 380 | .push-2 { 381 | left: 16.666667%; 382 | } 383 | 384 | .push-3 { 385 | left: 25%; 386 | } 387 | 388 | .push-4 { 389 | left: 33.333333%; 390 | } 391 | 392 | .push-5 { 393 | left: 41.666667%; 394 | } 395 | 396 | .push-6 { 397 | left: 50%; 398 | } 399 | 400 | .push-7 { 401 | left: 58.333333%; 402 | } 403 | 404 | .push-8 { 405 | left: 66.666667%; 406 | } 407 | 408 | .push-9 { 409 | left: 75%; 410 | } 411 | 412 | .push-10 { 413 | left: 83.333333%; 414 | } 415 | 416 | .push-11 { 417 | left: 91.666667%; 418 | } 419 | 420 | .push-12 { 421 | left: 100%; 422 | } 423 | 424 | .offset-1 { 425 | margin-left: 8.333333%; 426 | } 427 | 428 | .offset-2 { 429 | margin-left: 16.666667%; 430 | } 431 | 432 | .offset-3 { 433 | margin-left: 25%; 434 | } 435 | 436 | .offset-4 { 437 | margin-left: 33.333333%; 438 | } 439 | 440 | .offset-5 { 441 | margin-left: 41.666667%; 442 | } 443 | 444 | .offset-6 { 445 | margin-left: 50%; 446 | } 447 | 448 | .offset-7 { 449 | margin-left: 58.333333%; 450 | } 451 | 452 | .offset-8 { 453 | margin-left: 66.666667%; 454 | } 455 | 456 | .offset-9 { 457 | margin-left: 75%; 458 | } 459 | 460 | .offset-10 { 461 | margin-left: 83.333333%; 462 | } 463 | 464 | .offset-11 { 465 | margin-left: 91.666667%; 466 | } 467 | 468 | @media (min-width: 576px) { 469 | .col-sm { 470 | -webkit-flex-basis: 0; 471 | -ms-flex-preferred-size: 0; 472 | flex-basis: 0; 473 | -webkit-box-flex: 1; 474 | -webkit-flex-grow: 1; 475 | -ms-flex-positive: 1; 476 | flex-grow: 1; 477 | max-width: 100%; 478 | } 479 | .col-sm-auto { 480 | -webkit-box-flex: 0; 481 | -webkit-flex: 0 0 auto; 482 | -ms-flex: 0 0 auto; 483 | flex: 0 0 auto; 484 | width: auto; 485 | } 486 | .col-sm-1 { 487 | -webkit-box-flex: 0; 488 | -webkit-flex: 0 0 8.333333%; 489 | -ms-flex: 0 0 8.333333%; 490 | flex: 0 0 8.333333%; 491 | max-width: 8.333333%; 492 | } 493 | .col-sm-2 { 494 | -webkit-box-flex: 0; 495 | -webkit-flex: 0 0 16.666667%; 496 | -ms-flex: 0 0 16.666667%; 497 | flex: 0 0 16.666667%; 498 | max-width: 16.666667%; 499 | } 500 | .col-sm-3 { 501 | -webkit-box-flex: 0; 502 | -webkit-flex: 0 0 25%; 503 | -ms-flex: 0 0 25%; 504 | flex: 0 0 25%; 505 | max-width: 25%; 506 | } 507 | .col-sm-4 { 508 | -webkit-box-flex: 0; 509 | -webkit-flex: 0 0 33.333333%; 510 | -ms-flex: 0 0 33.333333%; 511 | flex: 0 0 33.333333%; 512 | max-width: 33.333333%; 513 | } 514 | .col-sm-5 { 515 | -webkit-box-flex: 0; 516 | -webkit-flex: 0 0 41.666667%; 517 | -ms-flex: 0 0 41.666667%; 518 | flex: 0 0 41.666667%; 519 | max-width: 41.666667%; 520 | } 521 | .col-sm-6 { 522 | -webkit-box-flex: 0; 523 | -webkit-flex: 0 0 50%; 524 | -ms-flex: 0 0 50%; 525 | flex: 0 0 50%; 526 | max-width: 50%; 527 | } 528 | .col-sm-7 { 529 | -webkit-box-flex: 0; 530 | -webkit-flex: 0 0 58.333333%; 531 | -ms-flex: 0 0 58.333333%; 532 | flex: 0 0 58.333333%; 533 | max-width: 58.333333%; 534 | } 535 | .col-sm-8 { 536 | -webkit-box-flex: 0; 537 | -webkit-flex: 0 0 66.666667%; 538 | -ms-flex: 0 0 66.666667%; 539 | flex: 0 0 66.666667%; 540 | max-width: 66.666667%; 541 | } 542 | .col-sm-9 { 543 | -webkit-box-flex: 0; 544 | -webkit-flex: 0 0 75%; 545 | -ms-flex: 0 0 75%; 546 | flex: 0 0 75%; 547 | max-width: 75%; 548 | } 549 | .col-sm-10 { 550 | -webkit-box-flex: 0; 551 | -webkit-flex: 0 0 83.333333%; 552 | -ms-flex: 0 0 83.333333%; 553 | flex: 0 0 83.333333%; 554 | max-width: 83.333333%; 555 | } 556 | .col-sm-11 { 557 | -webkit-box-flex: 0; 558 | -webkit-flex: 0 0 91.666667%; 559 | -ms-flex: 0 0 91.666667%; 560 | flex: 0 0 91.666667%; 561 | max-width: 91.666667%; 562 | } 563 | .col-sm-12 { 564 | -webkit-box-flex: 0; 565 | -webkit-flex: 0 0 100%; 566 | -ms-flex: 0 0 100%; 567 | flex: 0 0 100%; 568 | max-width: 100%; 569 | } 570 | .pull-sm-0 { 571 | right: auto; 572 | } 573 | .pull-sm-1 { 574 | right: 8.333333%; 575 | } 576 | .pull-sm-2 { 577 | right: 16.666667%; 578 | } 579 | .pull-sm-3 { 580 | right: 25%; 581 | } 582 | .pull-sm-4 { 583 | right: 33.333333%; 584 | } 585 | .pull-sm-5 { 586 | right: 41.666667%; 587 | } 588 | .pull-sm-6 { 589 | right: 50%; 590 | } 591 | .pull-sm-7 { 592 | right: 58.333333%; 593 | } 594 | .pull-sm-8 { 595 | right: 66.666667%; 596 | } 597 | .pull-sm-9 { 598 | right: 75%; 599 | } 600 | .pull-sm-10 { 601 | right: 83.333333%; 602 | } 603 | .pull-sm-11 { 604 | right: 91.666667%; 605 | } 606 | .pull-sm-12 { 607 | right: 100%; 608 | } 609 | .push-sm-0 { 610 | left: auto; 611 | } 612 | .push-sm-1 { 613 | left: 8.333333%; 614 | } 615 | .push-sm-2 { 616 | left: 16.666667%; 617 | } 618 | .push-sm-3 { 619 | left: 25%; 620 | } 621 | .push-sm-4 { 622 | left: 33.333333%; 623 | } 624 | .push-sm-5 { 625 | left: 41.666667%; 626 | } 627 | .push-sm-6 { 628 | left: 50%; 629 | } 630 | .push-sm-7 { 631 | left: 58.333333%; 632 | } 633 | .push-sm-8 { 634 | left: 66.666667%; 635 | } 636 | .push-sm-9 { 637 | left: 75%; 638 | } 639 | .push-sm-10 { 640 | left: 83.333333%; 641 | } 642 | .push-sm-11 { 643 | left: 91.666667%; 644 | } 645 | .push-sm-12 { 646 | left: 100%; 647 | } 648 | .offset-sm-0 { 649 | margin-left: 0%; 650 | } 651 | .offset-sm-1 { 652 | margin-left: 8.333333%; 653 | } 654 | .offset-sm-2 { 655 | margin-left: 16.666667%; 656 | } 657 | .offset-sm-3 { 658 | margin-left: 25%; 659 | } 660 | .offset-sm-4 { 661 | margin-left: 33.333333%; 662 | } 663 | .offset-sm-5 { 664 | margin-left: 41.666667%; 665 | } 666 | .offset-sm-6 { 667 | margin-left: 50%; 668 | } 669 | .offset-sm-7 { 670 | margin-left: 58.333333%; 671 | } 672 | .offset-sm-8 { 673 | margin-left: 66.666667%; 674 | } 675 | .offset-sm-9 { 676 | margin-left: 75%; 677 | } 678 | .offset-sm-10 { 679 | margin-left: 83.333333%; 680 | } 681 | .offset-sm-11 { 682 | margin-left: 91.666667%; 683 | } 684 | } 685 | 686 | @media (min-width: 768px) { 687 | .col-md { 688 | -webkit-flex-basis: 0; 689 | -ms-flex-preferred-size: 0; 690 | flex-basis: 0; 691 | -webkit-box-flex: 1; 692 | -webkit-flex-grow: 1; 693 | -ms-flex-positive: 1; 694 | flex-grow: 1; 695 | max-width: 100%; 696 | } 697 | .col-md-auto { 698 | -webkit-box-flex: 0; 699 | -webkit-flex: 0 0 auto; 700 | -ms-flex: 0 0 auto; 701 | flex: 0 0 auto; 702 | width: auto; 703 | } 704 | .col-md-1 { 705 | -webkit-box-flex: 0; 706 | -webkit-flex: 0 0 8.333333%; 707 | -ms-flex: 0 0 8.333333%; 708 | flex: 0 0 8.333333%; 709 | max-width: 8.333333%; 710 | } 711 | .col-md-2 { 712 | -webkit-box-flex: 0; 713 | -webkit-flex: 0 0 16.666667%; 714 | -ms-flex: 0 0 16.666667%; 715 | flex: 0 0 16.666667%; 716 | max-width: 16.666667%; 717 | } 718 | .col-md-3 { 719 | -webkit-box-flex: 0; 720 | -webkit-flex: 0 0 25%; 721 | -ms-flex: 0 0 25%; 722 | flex: 0 0 25%; 723 | max-width: 25%; 724 | } 725 | .col-md-4 { 726 | -webkit-box-flex: 0; 727 | -webkit-flex: 0 0 33.333333%; 728 | -ms-flex: 0 0 33.333333%; 729 | flex: 0 0 33.333333%; 730 | max-width: 33.333333%; 731 | } 732 | .col-md-5 { 733 | -webkit-box-flex: 0; 734 | -webkit-flex: 0 0 41.666667%; 735 | -ms-flex: 0 0 41.666667%; 736 | flex: 0 0 41.666667%; 737 | max-width: 41.666667%; 738 | } 739 | .col-md-6 { 740 | -webkit-box-flex: 0; 741 | -webkit-flex: 0 0 50%; 742 | -ms-flex: 0 0 50%; 743 | flex: 0 0 50%; 744 | max-width: 50%; 745 | } 746 | .col-md-7 { 747 | -webkit-box-flex: 0; 748 | -webkit-flex: 0 0 58.333333%; 749 | -ms-flex: 0 0 58.333333%; 750 | flex: 0 0 58.333333%; 751 | max-width: 58.333333%; 752 | } 753 | .col-md-8 { 754 | -webkit-box-flex: 0; 755 | -webkit-flex: 0 0 66.666667%; 756 | -ms-flex: 0 0 66.666667%; 757 | flex: 0 0 66.666667%; 758 | max-width: 66.666667%; 759 | } 760 | .col-md-9 { 761 | -webkit-box-flex: 0; 762 | -webkit-flex: 0 0 75%; 763 | -ms-flex: 0 0 75%; 764 | flex: 0 0 75%; 765 | max-width: 75%; 766 | } 767 | .col-md-10 { 768 | -webkit-box-flex: 0; 769 | -webkit-flex: 0 0 83.333333%; 770 | -ms-flex: 0 0 83.333333%; 771 | flex: 0 0 83.333333%; 772 | max-width: 83.333333%; 773 | } 774 | .col-md-11 { 775 | -webkit-box-flex: 0; 776 | -webkit-flex: 0 0 91.666667%; 777 | -ms-flex: 0 0 91.666667%; 778 | flex: 0 0 91.666667%; 779 | max-width: 91.666667%; 780 | } 781 | .col-md-12 { 782 | -webkit-box-flex: 0; 783 | -webkit-flex: 0 0 100%; 784 | -ms-flex: 0 0 100%; 785 | flex: 0 0 100%; 786 | max-width: 100%; 787 | } 788 | .pull-md-0 { 789 | right: auto; 790 | } 791 | .pull-md-1 { 792 | right: 8.333333%; 793 | } 794 | .pull-md-2 { 795 | right: 16.666667%; 796 | } 797 | .pull-md-3 { 798 | right: 25%; 799 | } 800 | .pull-md-4 { 801 | right: 33.333333%; 802 | } 803 | .pull-md-5 { 804 | right: 41.666667%; 805 | } 806 | .pull-md-6 { 807 | right: 50%; 808 | } 809 | .pull-md-7 { 810 | right: 58.333333%; 811 | } 812 | .pull-md-8 { 813 | right: 66.666667%; 814 | } 815 | .pull-md-9 { 816 | right: 75%; 817 | } 818 | .pull-md-10 { 819 | right: 83.333333%; 820 | } 821 | .pull-md-11 { 822 | right: 91.666667%; 823 | } 824 | .pull-md-12 { 825 | right: 100%; 826 | } 827 | .push-md-0 { 828 | left: auto; 829 | } 830 | .push-md-1 { 831 | left: 8.333333%; 832 | } 833 | .push-md-2 { 834 | left: 16.666667%; 835 | } 836 | .push-md-3 { 837 | left: 25%; 838 | } 839 | .push-md-4 { 840 | left: 33.333333%; 841 | } 842 | .push-md-5 { 843 | left: 41.666667%; 844 | } 845 | .push-md-6 { 846 | left: 50%; 847 | } 848 | .push-md-7 { 849 | left: 58.333333%; 850 | } 851 | .push-md-8 { 852 | left: 66.666667%; 853 | } 854 | .push-md-9 { 855 | left: 75%; 856 | } 857 | .push-md-10 { 858 | left: 83.333333%; 859 | } 860 | .push-md-11 { 861 | left: 91.666667%; 862 | } 863 | .push-md-12 { 864 | left: 100%; 865 | } 866 | .offset-md-0 { 867 | margin-left: 0%; 868 | } 869 | .offset-md-1 { 870 | margin-left: 8.333333%; 871 | } 872 | .offset-md-2 { 873 | margin-left: 16.666667%; 874 | } 875 | .offset-md-3 { 876 | margin-left: 25%; 877 | } 878 | .offset-md-4 { 879 | margin-left: 33.333333%; 880 | } 881 | .offset-md-5 { 882 | margin-left: 41.666667%; 883 | } 884 | .offset-md-6 { 885 | margin-left: 50%; 886 | } 887 | .offset-md-7 { 888 | margin-left: 58.333333%; 889 | } 890 | .offset-md-8 { 891 | margin-left: 66.666667%; 892 | } 893 | .offset-md-9 { 894 | margin-left: 75%; 895 | } 896 | .offset-md-10 { 897 | margin-left: 83.333333%; 898 | } 899 | .offset-md-11 { 900 | margin-left: 91.666667%; 901 | } 902 | } 903 | 904 | @media (min-width: 992px) { 905 | .col-lg { 906 | -webkit-flex-basis: 0; 907 | -ms-flex-preferred-size: 0; 908 | flex-basis: 0; 909 | -webkit-box-flex: 1; 910 | -webkit-flex-grow: 1; 911 | -ms-flex-positive: 1; 912 | flex-grow: 1; 913 | max-width: 100%; 914 | } 915 | .col-lg-auto { 916 | -webkit-box-flex: 0; 917 | -webkit-flex: 0 0 auto; 918 | -ms-flex: 0 0 auto; 919 | flex: 0 0 auto; 920 | width: auto; 921 | } 922 | .col-lg-1 { 923 | -webkit-box-flex: 0; 924 | -webkit-flex: 0 0 8.333333%; 925 | -ms-flex: 0 0 8.333333%; 926 | flex: 0 0 8.333333%; 927 | max-width: 8.333333%; 928 | } 929 | .col-lg-2 { 930 | -webkit-box-flex: 0; 931 | -webkit-flex: 0 0 16.666667%; 932 | -ms-flex: 0 0 16.666667%; 933 | flex: 0 0 16.666667%; 934 | max-width: 16.666667%; 935 | } 936 | .col-lg-3 { 937 | -webkit-box-flex: 0; 938 | -webkit-flex: 0 0 25%; 939 | -ms-flex: 0 0 25%; 940 | flex: 0 0 25%; 941 | max-width: 25%; 942 | } 943 | .col-lg-4 { 944 | -webkit-box-flex: 0; 945 | -webkit-flex: 0 0 33.333333%; 946 | -ms-flex: 0 0 33.333333%; 947 | flex: 0 0 33.333333%; 948 | max-width: 33.333333%; 949 | } 950 | .col-lg-5 { 951 | -webkit-box-flex: 0; 952 | -webkit-flex: 0 0 41.666667%; 953 | -ms-flex: 0 0 41.666667%; 954 | flex: 0 0 41.666667%; 955 | max-width: 41.666667%; 956 | } 957 | .col-lg-6 { 958 | -webkit-box-flex: 0; 959 | -webkit-flex: 0 0 50%; 960 | -ms-flex: 0 0 50%; 961 | flex: 0 0 50%; 962 | max-width: 50%; 963 | } 964 | .col-lg-7 { 965 | -webkit-box-flex: 0; 966 | -webkit-flex: 0 0 58.333333%; 967 | -ms-flex: 0 0 58.333333%; 968 | flex: 0 0 58.333333%; 969 | max-width: 58.333333%; 970 | } 971 | .col-lg-8 { 972 | -webkit-box-flex: 0; 973 | -webkit-flex: 0 0 66.666667%; 974 | -ms-flex: 0 0 66.666667%; 975 | flex: 0 0 66.666667%; 976 | max-width: 66.666667%; 977 | } 978 | .col-lg-9 { 979 | -webkit-box-flex: 0; 980 | -webkit-flex: 0 0 75%; 981 | -ms-flex: 0 0 75%; 982 | flex: 0 0 75%; 983 | max-width: 75%; 984 | } 985 | .col-lg-10 { 986 | -webkit-box-flex: 0; 987 | -webkit-flex: 0 0 83.333333%; 988 | -ms-flex: 0 0 83.333333%; 989 | flex: 0 0 83.333333%; 990 | max-width: 83.333333%; 991 | } 992 | .col-lg-11 { 993 | -webkit-box-flex: 0; 994 | -webkit-flex: 0 0 91.666667%; 995 | -ms-flex: 0 0 91.666667%; 996 | flex: 0 0 91.666667%; 997 | max-width: 91.666667%; 998 | } 999 | .col-lg-12 { 1000 | -webkit-box-flex: 0; 1001 | -webkit-flex: 0 0 100%; 1002 | -ms-flex: 0 0 100%; 1003 | flex: 0 0 100%; 1004 | max-width: 100%; 1005 | } 1006 | .pull-lg-0 { 1007 | right: auto; 1008 | } 1009 | .pull-lg-1 { 1010 | right: 8.333333%; 1011 | } 1012 | .pull-lg-2 { 1013 | right: 16.666667%; 1014 | } 1015 | .pull-lg-3 { 1016 | right: 25%; 1017 | } 1018 | .pull-lg-4 { 1019 | right: 33.333333%; 1020 | } 1021 | .pull-lg-5 { 1022 | right: 41.666667%; 1023 | } 1024 | .pull-lg-6 { 1025 | right: 50%; 1026 | } 1027 | .pull-lg-7 { 1028 | right: 58.333333%; 1029 | } 1030 | .pull-lg-8 { 1031 | right: 66.666667%; 1032 | } 1033 | .pull-lg-9 { 1034 | right: 75%; 1035 | } 1036 | .pull-lg-10 { 1037 | right: 83.333333%; 1038 | } 1039 | .pull-lg-11 { 1040 | right: 91.666667%; 1041 | } 1042 | .pull-lg-12 { 1043 | right: 100%; 1044 | } 1045 | .push-lg-0 { 1046 | left: auto; 1047 | } 1048 | .push-lg-1 { 1049 | left: 8.333333%; 1050 | } 1051 | .push-lg-2 { 1052 | left: 16.666667%; 1053 | } 1054 | .push-lg-3 { 1055 | left: 25%; 1056 | } 1057 | .push-lg-4 { 1058 | left: 33.333333%; 1059 | } 1060 | .push-lg-5 { 1061 | left: 41.666667%; 1062 | } 1063 | .push-lg-6 { 1064 | left: 50%; 1065 | } 1066 | .push-lg-7 { 1067 | left: 58.333333%; 1068 | } 1069 | .push-lg-8 { 1070 | left: 66.666667%; 1071 | } 1072 | .push-lg-9 { 1073 | left: 75%; 1074 | } 1075 | .push-lg-10 { 1076 | left: 83.333333%; 1077 | } 1078 | .push-lg-11 { 1079 | left: 91.666667%; 1080 | } 1081 | .push-lg-12 { 1082 | left: 100%; 1083 | } 1084 | .offset-lg-0 { 1085 | margin-left: 0%; 1086 | } 1087 | .offset-lg-1 { 1088 | margin-left: 8.333333%; 1089 | } 1090 | .offset-lg-2 { 1091 | margin-left: 16.666667%; 1092 | } 1093 | .offset-lg-3 { 1094 | margin-left: 25%; 1095 | } 1096 | .offset-lg-4 { 1097 | margin-left: 33.333333%; 1098 | } 1099 | .offset-lg-5 { 1100 | margin-left: 41.666667%; 1101 | } 1102 | .offset-lg-6 { 1103 | margin-left: 50%; 1104 | } 1105 | .offset-lg-7 { 1106 | margin-left: 58.333333%; 1107 | } 1108 | .offset-lg-8 { 1109 | margin-left: 66.666667%; 1110 | } 1111 | .offset-lg-9 { 1112 | margin-left: 75%; 1113 | } 1114 | .offset-lg-10 { 1115 | margin-left: 83.333333%; 1116 | } 1117 | .offset-lg-11 { 1118 | margin-left: 91.666667%; 1119 | } 1120 | } 1121 | 1122 | @media (min-width: 1200px) { 1123 | .col-xl { 1124 | -webkit-flex-basis: 0; 1125 | -ms-flex-preferred-size: 0; 1126 | flex-basis: 0; 1127 | -webkit-box-flex: 1; 1128 | -webkit-flex-grow: 1; 1129 | -ms-flex-positive: 1; 1130 | flex-grow: 1; 1131 | max-width: 100%; 1132 | } 1133 | .col-xl-auto { 1134 | -webkit-box-flex: 0; 1135 | -webkit-flex: 0 0 auto; 1136 | -ms-flex: 0 0 auto; 1137 | flex: 0 0 auto; 1138 | width: auto; 1139 | } 1140 | .col-xl-1 { 1141 | -webkit-box-flex: 0; 1142 | -webkit-flex: 0 0 8.333333%; 1143 | -ms-flex: 0 0 8.333333%; 1144 | flex: 0 0 8.333333%; 1145 | max-width: 8.333333%; 1146 | } 1147 | .col-xl-2 { 1148 | -webkit-box-flex: 0; 1149 | -webkit-flex: 0 0 16.666667%; 1150 | -ms-flex: 0 0 16.666667%; 1151 | flex: 0 0 16.666667%; 1152 | max-width: 16.666667%; 1153 | } 1154 | .col-xl-3 { 1155 | -webkit-box-flex: 0; 1156 | -webkit-flex: 0 0 25%; 1157 | -ms-flex: 0 0 25%; 1158 | flex: 0 0 25%; 1159 | max-width: 25%; 1160 | } 1161 | .col-xl-4 { 1162 | -webkit-box-flex: 0; 1163 | -webkit-flex: 0 0 33.333333%; 1164 | -ms-flex: 0 0 33.333333%; 1165 | flex: 0 0 33.333333%; 1166 | max-width: 33.333333%; 1167 | } 1168 | .col-xl-5 { 1169 | -webkit-box-flex: 0; 1170 | -webkit-flex: 0 0 41.666667%; 1171 | -ms-flex: 0 0 41.666667%; 1172 | flex: 0 0 41.666667%; 1173 | max-width: 41.666667%; 1174 | } 1175 | .col-xl-6 { 1176 | -webkit-box-flex: 0; 1177 | -webkit-flex: 0 0 50%; 1178 | -ms-flex: 0 0 50%; 1179 | flex: 0 0 50%; 1180 | max-width: 50%; 1181 | } 1182 | .col-xl-7 { 1183 | -webkit-box-flex: 0; 1184 | -webkit-flex: 0 0 58.333333%; 1185 | -ms-flex: 0 0 58.333333%; 1186 | flex: 0 0 58.333333%; 1187 | max-width: 58.333333%; 1188 | } 1189 | .col-xl-8 { 1190 | -webkit-box-flex: 0; 1191 | -webkit-flex: 0 0 66.666667%; 1192 | -ms-flex: 0 0 66.666667%; 1193 | flex: 0 0 66.666667%; 1194 | max-width: 66.666667%; 1195 | } 1196 | .col-xl-9 { 1197 | -webkit-box-flex: 0; 1198 | -webkit-flex: 0 0 75%; 1199 | -ms-flex: 0 0 75%; 1200 | flex: 0 0 75%; 1201 | max-width: 75%; 1202 | } 1203 | .col-xl-10 { 1204 | -webkit-box-flex: 0; 1205 | -webkit-flex: 0 0 83.333333%; 1206 | -ms-flex: 0 0 83.333333%; 1207 | flex: 0 0 83.333333%; 1208 | max-width: 83.333333%; 1209 | } 1210 | .col-xl-11 { 1211 | -webkit-box-flex: 0; 1212 | -webkit-flex: 0 0 91.666667%; 1213 | -ms-flex: 0 0 91.666667%; 1214 | flex: 0 0 91.666667%; 1215 | max-width: 91.666667%; 1216 | } 1217 | .col-xl-12 { 1218 | -webkit-box-flex: 0; 1219 | -webkit-flex: 0 0 100%; 1220 | -ms-flex: 0 0 100%; 1221 | flex: 0 0 100%; 1222 | max-width: 100%; 1223 | } 1224 | .pull-xl-0 { 1225 | right: auto; 1226 | } 1227 | .pull-xl-1 { 1228 | right: 8.333333%; 1229 | } 1230 | .pull-xl-2 { 1231 | right: 16.666667%; 1232 | } 1233 | .pull-xl-3 { 1234 | right: 25%; 1235 | } 1236 | .pull-xl-4 { 1237 | right: 33.333333%; 1238 | } 1239 | .pull-xl-5 { 1240 | right: 41.666667%; 1241 | } 1242 | .pull-xl-6 { 1243 | right: 50%; 1244 | } 1245 | .pull-xl-7 { 1246 | right: 58.333333%; 1247 | } 1248 | .pull-xl-8 { 1249 | right: 66.666667%; 1250 | } 1251 | .pull-xl-9 { 1252 | right: 75%; 1253 | } 1254 | .pull-xl-10 { 1255 | right: 83.333333%; 1256 | } 1257 | .pull-xl-11 { 1258 | right: 91.666667%; 1259 | } 1260 | .pull-xl-12 { 1261 | right: 100%; 1262 | } 1263 | .push-xl-0 { 1264 | left: auto; 1265 | } 1266 | .push-xl-1 { 1267 | left: 8.333333%; 1268 | } 1269 | .push-xl-2 { 1270 | left: 16.666667%; 1271 | } 1272 | .push-xl-3 { 1273 | left: 25%; 1274 | } 1275 | .push-xl-4 { 1276 | left: 33.333333%; 1277 | } 1278 | .push-xl-5 { 1279 | left: 41.666667%; 1280 | } 1281 | .push-xl-6 { 1282 | left: 50%; 1283 | } 1284 | .push-xl-7 { 1285 | left: 58.333333%; 1286 | } 1287 | .push-xl-8 { 1288 | left: 66.666667%; 1289 | } 1290 | .push-xl-9 { 1291 | left: 75%; 1292 | } 1293 | .push-xl-10 { 1294 | left: 83.333333%; 1295 | } 1296 | .push-xl-11 { 1297 | left: 91.666667%; 1298 | } 1299 | .push-xl-12 { 1300 | left: 100%; 1301 | } 1302 | .offset-xl-0 { 1303 | margin-left: 0%; 1304 | } 1305 | .offset-xl-1 { 1306 | margin-left: 8.333333%; 1307 | } 1308 | .offset-xl-2 { 1309 | margin-left: 16.666667%; 1310 | } 1311 | .offset-xl-3 { 1312 | margin-left: 25%; 1313 | } 1314 | .offset-xl-4 { 1315 | margin-left: 33.333333%; 1316 | } 1317 | .offset-xl-5 { 1318 | margin-left: 41.666667%; 1319 | } 1320 | .offset-xl-6 { 1321 | margin-left: 50%; 1322 | } 1323 | .offset-xl-7 { 1324 | margin-left: 58.333333%; 1325 | } 1326 | .offset-xl-8 { 1327 | margin-left: 66.666667%; 1328 | } 1329 | .offset-xl-9 { 1330 | margin-left: 75%; 1331 | } 1332 | .offset-xl-10 { 1333 | margin-left: 83.333333%; 1334 | } 1335 | .offset-xl-11 { 1336 | margin-left: 91.666667%; 1337 | } 1338 | } 1339 | /*# sourceMappingURL=bootstrap-grid.css.map */ --------------------------------------------------------------------------------