├── src
├── assets
│ ├── .gitkeep
│ └── lib
│ │ └── hljs
│ │ ├── styles
│ │ ├── pojoaque.jpg
│ │ ├── school-book.png
│ │ ├── brown-papersq.png
│ │ ├── darkula.css
│ │ ├── ascetic.css
│ │ ├── mono-blue.css
│ │ ├── dark.css
│ │ ├── androidstudio.css
│ │ ├── codepen-embed.css
│ │ ├── brown-paper.css
│ │ ├── vs.css
│ │ ├── far.css
│ │ ├── arta.css
│ │ ├── ir-black.css
│ │ ├── color-brewer.css
│ │ ├── magula.css
│ │ ├── github-gist.css
│ │ ├── monokai.css
│ │ ├── darcula.css
│ │ ├── tomorrow.css
│ │ ├── zenburn.css
│ │ ├── school-book.css
│ │ ├── ocean.css
│ │ ├── paraiso-dark.css
│ │ ├── paraiso-light.css
│ │ ├── dracula.css
│ │ ├── qtcreator_dark.css
│ │ ├── qtcreator_light.css
│ │ ├── rainbow.css
│ │ ├── kimbie.dark.css
│ │ ├── kimbie.light.css
│ │ ├── atelier-dune-dark.css
│ │ ├── monokai-sublime.css
│ │ ├── atelier-dune-light.css
│ │ ├── atelier-heath-dark.css
│ │ ├── atelier-heath-light.css
│ │ ├── atelier-forest-dark.css
│ │ ├── atelier-forest-light.css
│ │ ├── tomorrow-night-bright.css
│ │ ├── tomorrow-night-eighties.css
│ │ ├── atelier-seaside-dark.css
│ │ ├── atelier-seaside-light.css
│ │ ├── hopscotch.css
│ │ ├── atelier-lakeside-dark.css
│ │ ├── atelier-lakeside-light.css
│ │ ├── arduino-light.css
│ │ ├── googlecode.css
│ │ ├── xt256.css
│ │ ├── atelier-sulphurpool-dark.css
│ │ ├── atelier-sulphurpool-light.css
│ │ ├── obsidian.css
│ │ ├── foundation.css
│ │ ├── tomorrow-night.css
│ │ ├── xcode.css
│ │ ├── tomorrow-night-blue.css
│ │ ├── pojoaque.css
│ │ ├── solarized-dark.css
│ │ ├── solarized-light.css
│ │ ├── docco.css
│ │ ├── idea.css
│ │ ├── atelier-cave-dark.css
│ │ ├── atelier-cave-light.css
│ │ ├── atelier-estuary-dark.css
│ │ ├── atelier-plateau-dark.css
│ │ ├── atelier-savanna-dark.css
│ │ ├── github.css
│ │ ├── atelier-estuary-light.css
│ │ ├── atelier-plateau-light.css
│ │ ├── atelier-savanna-light.css
│ │ ├── atom-one-dark.css
│ │ ├── default.css
│ │ ├── atom-one-light.css
│ │ ├── sunburst.css
│ │ ├── railscasts.css
│ │ ├── routeros.css
│ │ ├── agate.css
│ │ ├── hybrid.css
│ │ ├── gruvbox-dark.css
│ │ ├── gruvbox-light.css
│ │ ├── vs2015.css
│ │ ├── grayscale.css
│ │ └── purebasic.css
│ │ └── LICENSE
├── app
│ ├── app.component.scss
│ ├── header
│ │ ├── header.component.scss
│ │ ├── header.component.ts
│ │ └── header.component.html
│ ├── model
│ │ ├── model-delete-dialog
│ │ │ ├── model-delete-dialog.component.scss
│ │ │ ├── model-delete-dialog.component.html
│ │ │ └── model-delete-dialog.component.ts
│ │ ├── model-page
│ │ │ ├── model-page.component.scss
│ │ │ └── model-page.component.ts
│ │ ├── model-form-dialog
│ │ │ ├── model-form-dialog.component.scss
│ │ │ ├── model-form-dialog.component.ts
│ │ │ └── model-form-dialog.component.html
│ │ ├── model-routing.module.ts
│ │ └── model.module.ts
│ ├── sidenav
│ │ ├── sidenav.component.scss
│ │ ├── sidenav.component.ts
│ │ └── sidenav.component.html
│ ├── alerts
│ │ ├── alerts.component.scss
│ │ ├── alerts.component.ts
│ │ └── alerts.component.html
│ ├── auth
│ │ ├── auth-page
│ │ │ ├── auth-page.component.scss
│ │ │ ├── auth-page.component.ts
│ │ │ └── auth-page.component.html
│ │ ├── auth-routing.module.ts
│ │ └── auth.module.ts
│ ├── app.component.ts
│ ├── collection
│ │ ├── collection-page
│ │ │ ├── collection-page.component.scss
│ │ │ ├── collection-page.component.ts
│ │ │ └── collection-page.component.html
│ │ ├── collection-routing.module.ts
│ │ └── collection.module.ts
│ ├── home
│ │ ├── home-page
│ │ │ ├── home-page.component.ts
│ │ │ ├── home-page.component.scss
│ │ │ └── home-page.component.html
│ │ ├── home-routing.module.ts
│ │ └── home.module.ts
│ ├── app.component.html
│ ├── app-routing.module.ts
│ └── app.module.ts
├── favicon.ico
├── environments
│ ├── environment.prod.ts
│ └── environment.ts
├── styles.scss
├── tsconfig.app.json
├── tsconfig.spec.json
├── index.html
├── tslint.json
├── browserslist
├── test.ts
└── karma.conf.js
├── projects
├── ngxs
│ ├── src
│ │ ├── lib
│ │ │ ├── ngxs-token.ts
│ │ │ ├── ngxs.module.ts
│ │ │ ├── ngxs.service.ts
│ │ │ └── auth.state.ts
│ │ ├── public_api.ts
│ │ └── test.ts
│ ├── ng-package.json
│ ├── package.json
│ ├── tsconfig.spec.json
│ ├── tslint.json
│ ├── tsconfig.lib.json
│ └── karma.conf.js
├── core
│ ├── src
│ │ ├── lib
│ │ │ ├── utilities
│ │ │ │ ├── index.ts
│ │ │ │ └── helper.ts
│ │ │ ├── auth
│ │ │ │ ├── index.ts
│ │ │ │ └── wp-auth.interface.ts
│ │ │ ├── cache
│ │ │ │ ├── index.ts
│ │ │ │ ├── cache.service.ts
│ │ │ │ └── cache.interceptor.ts
│ │ │ ├── jwt
│ │ │ │ ├── index.ts
│ │ │ │ └── jwt.interface.ts
│ │ │ ├── model
│ │ │ │ ├── index.ts
│ │ │ │ ├── wp-model.interface.ts
│ │ │ │ └── wp-model.service.ts
│ │ │ ├── collection
│ │ │ │ ├── index.ts
│ │ │ │ ├── wp-collection.interface.ts
│ │ │ │ └── wp-collection.service.ts
│ │ │ ├── decorators
│ │ │ │ ├── index.ts
│ │ │ │ ├── wp-auth.decorator.ts
│ │ │ │ ├── wp-error.dectorator.ts
│ │ │ │ ├── wp-model.decorator.ts
│ │ │ │ └── wp-collection.decorator.ts
│ │ │ ├── interfaces
│ │ │ │ ├── index.ts
│ │ │ │ ├── wp-term.interface.ts
│ │ │ │ ├── wp-user.interface.ts
│ │ │ │ ├── wp-config.interface.ts
│ │ │ │ ├── wp-media.interface.ts
│ │ │ │ └── wp-post.interface.ts
│ │ │ └── wordpress.module.ts
│ │ ├── public_api.ts
│ │ └── test.ts
│ ├── ng-package.prod.json
│ ├── ng-package.json
│ ├── tsconfig.spec.json
│ ├── tslint.json
│ ├── package.json
│ ├── tsconfig.lib.json
│ └── karma.conf.js
└── mock
│ ├── src
│ ├── public_api.ts
│ ├── lib
│ │ ├── mock.token.ts
│ │ ├── auth.data.ts
│ │ ├── mock.module.ts
│ │ └── users.data.ts
│ └── test.ts
│ ├── ng-package.json
│ ├── package.json
│ ├── tsconfig.spec.json
│ ├── tslint.json
│ ├── tsconfig.lib.json
│ └── karma.conf.js
├── .travis.yml
├── e2e
├── src
│ ├── app.po.ts
│ └── app.e2e-spec.ts
├── tsconfig.e2e.json
└── protractor.conf.js
├── .editorconfig
├── .gitignore
├── tsconfig.json
├── LICENSE
├── README.md
└── package.json
/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/app/app.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/projects/ngxs/src/lib/ngxs-token.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/app/header/header.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/app/model/model-delete-dialog/model-delete-dialog.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/app/sidenav/sidenav.component.scss:
--------------------------------------------------------------------------------
1 | :host, clr-vertical-nav {
2 | height: 100%;
3 | }
--------------------------------------------------------------------------------
/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MurhafSousli/ngx-wordpress/HEAD/src/favicon.ico
--------------------------------------------------------------------------------
/projects/core/src/lib/utilities/index.ts:
--------------------------------------------------------------------------------
1 | export * from './helper';
2 | export * from './filters';
3 |
--------------------------------------------------------------------------------
/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true
3 | };
4 |
--------------------------------------------------------------------------------
/projects/core/src/lib/auth/index.ts:
--------------------------------------------------------------------------------
1 | export * from './wp-auth-ref';
2 | export * from './wp-auth.interface';
3 |
--------------------------------------------------------------------------------
/src/app/alerts/alerts.component.scss:
--------------------------------------------------------------------------------
1 | ::ng-deep {
2 | .alert-text a {
3 | color: yellow;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/projects/core/src/lib/cache/index.ts:
--------------------------------------------------------------------------------
1 | export * from './cache.interceptor';
2 | export * from './cache.service';
3 |
--------------------------------------------------------------------------------
/projects/mock/src/public_api.ts:
--------------------------------------------------------------------------------
1 | export * from './lib/mock.interceptor';
2 | export * from './lib/mock.module';
3 |
--------------------------------------------------------------------------------
/projects/ngxs/src/public_api.ts:
--------------------------------------------------------------------------------
1 | export * from './lib/collection.state';
2 | export * from './lib/model.state';
3 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/pojoaque.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MurhafSousli/ngx-wordpress/HEAD/src/assets/lib/hljs/styles/pojoaque.jpg
--------------------------------------------------------------------------------
/projects/core/src/lib/jwt/index.ts:
--------------------------------------------------------------------------------
1 | export * from './jwt.interceptor';
2 | export * from './jwt.service';
3 | export * from './jwt.interface';
4 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/school-book.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MurhafSousli/ngx-wordpress/HEAD/src/assets/lib/hljs/styles/school-book.png
--------------------------------------------------------------------------------
/src/app/auth/auth-page/auth-page.component.scss:
--------------------------------------------------------------------------------
1 | // .btn-group {
2 | // margin-top: 2em;
3 | // }
4 |
5 | .state-viewer {
6 | margin-top: 1em;
7 | }
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/brown-papersq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MurhafSousli/ngx-wordpress/HEAD/src/assets/lib/hljs/styles/brown-papersq.png
--------------------------------------------------------------------------------
/projects/core/src/lib/model/index.ts:
--------------------------------------------------------------------------------
1 | export * from './wp-model-ref';
2 | export * from './wp-model.service';
3 | export * from './wp-model.interface';
4 |
--------------------------------------------------------------------------------
/projects/core/src/lib/model/wp-model.interface.ts:
--------------------------------------------------------------------------------
1 | export interface WpModelState {
2 | data?: T;
3 | loading?: boolean;
4 | error?: any;
5 | }
6 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: required
2 | dist: trusty
3 |
4 | language: node_js
5 | node_js:
6 | - "8"
7 |
8 | script: npm run build-core
9 |
10 | cache:
11 | yarn: true
12 |
--------------------------------------------------------------------------------
/projects/core/src/lib/collection/index.ts:
--------------------------------------------------------------------------------
1 | export * from './wp-collection-ref';
2 | export * from './wp-collection.service';
3 | export * from './wp-collection.interface';
4 |
--------------------------------------------------------------------------------
/projects/mock/ng-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3 | "dest": "../../dist/mock",
4 | "lib": {
5 | "entryFile": "src/public_api.ts"
6 | }
7 | }
--------------------------------------------------------------------------------
/projects/ngxs/ng-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3 | "dest": "../../dist/ngxs",
4 | "lib": {
5 | "entryFile": "src/public_api.ts"
6 | }
7 | }
--------------------------------------------------------------------------------
/projects/core/ng-package.prod.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3 | "dest": "../../dist/core",
4 | "lib": {
5 | "entryFile": "src/public_api.ts"
6 | }
7 | }
--------------------------------------------------------------------------------
/projects/core/src/lib/decorators/index.ts:
--------------------------------------------------------------------------------
1 | export * from './wp-auth.decorator';
2 | export * from './wp-collection.decorator';
3 | export * from './wp-model.decorator';
4 | export * from './wp-error.dectorator';
5 |
--------------------------------------------------------------------------------
/projects/ngxs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@ngx-wordpress/ngxs",
3 | "version": "5.0.0-beta.6",
4 | "peerDependencies": {
5 | "@angular/common": "^6.0.0",
6 | "@angular/core": "^6.0.0"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/darkula.css:
--------------------------------------------------------------------------------
1 | /*
2 | Deprecated due to a typo in the name and left here for compatibility purpose only.
3 | Please use darcula.css instead.
4 | */
5 |
6 | @import url('darcula.css');
7 |
--------------------------------------------------------------------------------
/projects/core/ng-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3 | "dest": "../../dist/core",
4 | "deleteDestPath": false,
5 | "lib": {
6 | "entryFile": "src/public_api.ts"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 | .clr-vertical-nav {
3 | width: unset;
4 | }
5 |
6 | pre {
7 | display: flex;
8 | }
9 |
10 | code {
11 | min-width: 100%;
12 | }
--------------------------------------------------------------------------------
/src/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "types": []
6 | },
7 | "exclude": [
8 | "test.ts",
9 | "**/*.spec.ts"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/projects/core/src/lib/interfaces/index.ts:
--------------------------------------------------------------------------------
1 | export * from './wp-media.interface';
2 | export * from './wp-config.interface';
3 | export * from './wp-term.interface';
4 | export * from './wp-user.interface';
5 | export * from './wp-post.interface';
6 |
--------------------------------------------------------------------------------
/projects/mock/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@ngx-wordpress/mock",
3 | "version": "5.0.0-beta.6",
4 | "peerDependencies": {
5 | "@angular/common": "^6.0.0",
6 | "@angular/core": "^6.0.0",
7 | "rxjs": "^6.0.0"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-root',
5 | templateUrl: './app.component.html',
6 | styleUrls: ['./app.component.scss']
7 | })
8 | export class AppComponent {
9 | }
10 |
--------------------------------------------------------------------------------
/e2e/src/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo() {
5 | return browser.get('/');
6 | }
7 |
8 | getParagraphText() {
9 | return element(by.css('app-root h1')).getText();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/projects/ngxs/src/lib/ngxs.module.ts:
--------------------------------------------------------------------------------
1 | // import { NgModule } from '@angular/core';
2 | // import { NgxsModule } from '@ngxs/store';
3 | //
4 | // @NgModule({
5 | // imports: [
6 | // NgxsModule.forFeature()
7 | // ]
8 | // })
9 | // export class WordPressStoreModule { }
10 |
--------------------------------------------------------------------------------
/e2e/tsconfig.e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "module": "commonjs",
6 | "target": "es5",
7 | "types": [
8 | "jasmine",
9 | "jasminewd2",
10 | "node"
11 | ]
12 | }
13 | }
--------------------------------------------------------------------------------
/projects/core/src/public_api.ts:
--------------------------------------------------------------------------------
1 | export * from './lib/wordpress.service';
2 | export * from './lib/wordpress.module';
3 | export * from './lib/auth';
4 | export * from './lib/model';
5 | export * from './lib/collection';
6 | export * from './lib/interfaces';
7 | export * from './lib/decorators';
8 |
--------------------------------------------------------------------------------
/src/app/collection/collection-page/collection-page.component.scss:
--------------------------------------------------------------------------------
1 | :host {
2 | ::ng-deep {
3 | .clr-form-control {
4 | margin-top: 0;
5 | }
6 | .clr-control-container {
7 | width: 100%;
8 | input {
9 | width: 100%;
10 | }
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/.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 |
--------------------------------------------------------------------------------
/projects/core/src/lib/interfaces/wp-term.interface.ts:
--------------------------------------------------------------------------------
1 | export interface WpTerm {
2 | id?: number;
3 | link?: string;
4 | name?: string;
5 | slug?: string;
6 | taxonomy?: string;
7 | _links?: any;
8 | count?: number;
9 | description?: string;
10 | parent?: number;
11 | meta?: any[];
12 | }
13 |
14 |
--------------------------------------------------------------------------------
/src/app/model/model-page/model-page.component.scss:
--------------------------------------------------------------------------------
1 | :host {
2 | ::ng-deep {
3 | .modal-controls {
4 | .clr-form-control {
5 | margin-top: 0;
6 | }
7 | .clr-control-container {
8 | width: 100%;
9 | input {
10 | width: 100%;
11 | }
12 | }
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/projects/ngxs/src/lib/ngxs.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { Store } from '@ngxs/store';
3 | import { WordPress } from '@ngx-wordpress/core';
4 |
5 | @Injectable({
6 | providedIn: 'root'
7 | })
8 | export class WordPressStore {
9 |
10 | constructor(private store: Store, private wp: WordPress) { }
11 | }
12 |
--------------------------------------------------------------------------------
/projects/core/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../out-tsc/spec",
5 | "types": [
6 | "jasmine",
7 | "node"
8 | ]
9 | },
10 | "files": [
11 | "src/test.ts"
12 | ],
13 | "include": [
14 | "**/*.spec.ts",
15 | "**/*.d.ts"
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/projects/mock/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../out-tsc/spec",
5 | "types": [
6 | "jasmine",
7 | "node"
8 | ]
9 | },
10 | "files": [
11 | "src/test.ts"
12 | ],
13 | "include": [
14 | "**/*.spec.ts",
15 | "**/*.d.ts"
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/projects/ngxs/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../out-tsc/spec",
5 | "types": [
6 | "jasmine",
7 | "node"
8 | ]
9 | },
10 | "files": [
11 | "src/test.ts"
12 | ],
13 | "include": [
14 | "**/*.spec.ts",
15 | "**/*.d.ts"
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/src/app/sidenav/sidenav.component.ts:
--------------------------------------------------------------------------------
1 | import { ChangeDetectionStrategy, Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-sidenav',
5 | templateUrl: './sidenav.component.html',
6 | styleUrls: ['./sidenav.component.scss'],
7 | changeDetection: ChangeDetectionStrategy.OnPush
8 | })
9 | export class SidenavComponent {
10 | }
11 |
--------------------------------------------------------------------------------
/src/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/spec",
5 | "types": [
6 | "jasmine",
7 | "node"
8 | ]
9 | },
10 | "files": [
11 | "test.ts",
12 | "polyfills.ts"
13 | ],
14 | "include": [
15 | "**/*.spec.ts",
16 | "**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NgxWordpress
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/app/home/home-page/home-page.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, ChangeDetectionStrategy } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-home-page',
5 | templateUrl: './home-page.component.html',
6 | styleUrls: ['./home-page.component.scss'],
7 | changeDetection: ChangeDetectionStrategy.OnPush
8 | })
9 | export class HomePageComponent {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/src/app/model/model-form-dialog/model-form-dialog.component.scss:
--------------------------------------------------------------------------------
1 | :host {
2 | ::ng-deep {
3 | .clr-control-container {
4 | width: 100%;
5 | input, textarea {
6 | width: 100%;
7 | }
8 | textarea {
9 | height: 200px;
10 | }
11 | }
12 | clr-input-container {
13 | margin-bottom: 2em;
14 | }
15 | }
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/e2e/src/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { AppPage } from './app.po';
2 |
3 | describe('workspace-project App', () => {
4 | let page: AppPage;
5 |
6 | beforeEach(() => {
7 | page = new AppPage();
8 | });
9 |
10 | it('should display welcome message', () => {
11 | page.navigateTo();
12 | expect(page.getParagraphText()).toEqual('Welcome to ngx-wordpress!');
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/projects/core/src/lib/jwt/jwt.interface.ts:
--------------------------------------------------------------------------------
1 | import { Observable } from 'rxjs';
2 |
3 | export interface JwtConfig {
4 | tokenGetter?: () => Promise | Observable;
5 | headerName?: string;
6 | authScheme?: string;
7 | whitelistedDomains?: Array;
8 | blacklistedRoutes?: Array;
9 | skipWhenExpired?: boolean;
10 | }
11 |
--------------------------------------------------------------------------------
/projects/core/src/lib/auth/wp-auth.interface.ts:
--------------------------------------------------------------------------------
1 | import { WpUser } from '../interfaces';
2 |
3 | export interface WpAuthState {
4 | loggedIn?: boolean;
5 | loading?: boolean;
6 | error?: Error;
7 | user?: WpUser;
8 | }
9 |
10 | export interface WpAuthToken {
11 | token?: string;
12 | user_email?: string;
13 | user_nicename?: string;
14 | user_display_name?: string;
15 | }
16 |
--------------------------------------------------------------------------------
/src/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "app",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "app",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/projects/core/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "lib",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "lib",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/projects/mock/src/lib/mock.token.ts:
--------------------------------------------------------------------------------
1 | import { InjectionToken } from '@angular/core';
2 | import { WpPost, WpUser } from '@ngx-wordpress/core';
3 |
4 | export interface WpMockConfig {
5 | delay?: number;
6 | postsData?: WpPost[];
7 | usersData?: WpUser[];
8 | usersAuthData?: {username: string, password: string}[];
9 | }
10 |
11 | export const MOCK_CONFIG = new InjectionToken('CONFIG');
12 |
--------------------------------------------------------------------------------
/projects/mock/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "lib",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "lib",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/projects/ngxs/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "lib",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "lib",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/app/model/model-delete-dialog/model-delete-dialog.component.html:
--------------------------------------------------------------------------------
1 |
2 | Are you sure you want to delete post #{{id}}
3 |
7 |
8 |
--------------------------------------------------------------------------------
/src/browserslist:
--------------------------------------------------------------------------------
1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers
2 | # For additional information regarding the format and rule options, please see:
3 | # https://github.com/browserslist/browserslist#queries
4 | #
5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed
6 |
7 | > 0.5%
8 | last 2 versions
9 | Firefox ESR
10 | not dead
11 | not IE 9-11
--------------------------------------------------------------------------------
/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/app/sidenav/sidenav.component.html:
--------------------------------------------------------------------------------
1 |
2 | Home
3 | Authentication
4 | Collection
5 | Model
6 |
7 |
--------------------------------------------------------------------------------
/src/app/home/home-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 | import { HomePageComponent } from './home-page/home-page.component';
4 |
5 | const routes: Routes = [
6 | {
7 | path: '',
8 | component: HomePageComponent
9 | }
10 | ];
11 |
12 | @NgModule({
13 | imports: [RouterModule.forChild(routes)],
14 | exports: [RouterModule]
15 | })
16 | export class HomeRoutingModule {}
17 |
--------------------------------------------------------------------------------
/src/app/model/model-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 | import { ModelPageComponent } from './model-page/model-page.component';
4 |
5 | const routes: Routes = [
6 | {
7 | path: '',
8 | component: ModelPageComponent
9 | }];
10 |
11 | @NgModule({
12 | imports: [RouterModule.forChild(routes)],
13 | exports: [RouterModule]
14 | })
15 | export class ModelRoutingModule { }
16 |
--------------------------------------------------------------------------------
/src/app/header/header.component.ts:
--------------------------------------------------------------------------------
1 | import { ChangeDetectionStrategy, Component } from '@angular/core';
2 | import { WpAuth, WpAuthRef } from '@ngx-wordpress/core';
3 |
4 | @Component({
5 | selector: 'app-header',
6 | templateUrl: './header.component.html',
7 | styleUrls: ['./header.component.scss'],
8 | changeDetection: ChangeDetectionStrategy.OnPush
9 | })
10 | export class HeaderComponent {
11 | @WpAuth()
12 | auth: WpAuthRef;
13 | title = 'Ngx WordPress';
14 | }
15 |
--------------------------------------------------------------------------------
/src/app/auth/auth-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { FormsModule } from '@angular/forms';
3 | import { Routes, RouterModule } from '@angular/router';
4 | import { AuthPageComponent } from './auth-page/auth-page.component';
5 |
6 | const appRoutes: Routes = [{ path: '', component: AuthPageComponent }];
7 |
8 | @NgModule({
9 | imports: [FormsModule, RouterModule.forChild(appRoutes)],
10 | exports: [RouterModule]
11 | })
12 | export class AuthRoutingModule {}
13 |
--------------------------------------------------------------------------------
/src/app/collection/collection-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 | import { CollectionPageComponent } from './collection-page/collection-page.component';
4 |
5 | const routes: Routes = [
6 | {
7 | path: '',
8 | component: CollectionPageComponent
9 | }
10 | ];
11 |
12 | @NgModule({
13 | imports: [RouterModule.forChild(routes)],
14 | exports: [RouterModule]
15 | })
16 | export class CollectionRoutingModule { }
17 |
--------------------------------------------------------------------------------
/src/app/home/home.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { HomeRoutingModule } from './home-routing.module';
4 |
5 | import { HomePageComponent } from './home-page/home-page.component';
6 | import { ClarityModule } from '@clr/angular';
7 |
8 | @NgModule({
9 | imports: [
10 | CommonModule,
11 | HomeRoutingModule,
12 | ClarityModule,
13 | ],
14 | declarations: [HomePageComponent]
15 | })
16 | export class HomeModule { }
17 |
--------------------------------------------------------------------------------
/projects/mock/src/lib/auth.data.ts:
--------------------------------------------------------------------------------
1 | export const tokenData = {
2 | token: 'fake-jwt-token',
3 | user_email: 'admin@my-wordpress-site.com',
4 | user_nicename: 'admin',
5 | user_display_name: 'Murhaf Sousli'
6 | };
7 |
8 | export const validateTokenData = {
9 | code: 'jwt_auth_valid_token',
10 | data: {
11 | status: 200
12 | }
13 | };
14 |
15 | export const unAuthorizedData = {
16 | code: 'rest_not_logged_in',
17 | message: 'You are not currently logged in.',
18 | data: {
19 | status: 401
20 | }
21 | };
22 |
--------------------------------------------------------------------------------
/src/app/alerts/alerts.component.ts:
--------------------------------------------------------------------------------
1 | import { ChangeDetectionStrategy, Component } from '@angular/core';
2 | import { WpAuth, WpError, WpAuthState } from '@ngx-wordpress/core';
3 | import { Observable } from 'rxjs';
4 |
5 | @Component({
6 | selector: 'app-alerts',
7 | templateUrl: './alerts.component.html',
8 | styleUrls: ['./alerts.component.scss'],
9 | changeDetection: ChangeDetectionStrategy.OnPush
10 | })
11 | export class AlertsComponent {
12 | @WpAuth() auth: WpAuthState;
13 | @WpError() error: Observable;
14 | }
15 |
--------------------------------------------------------------------------------
/src/app/alerts/alerts.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | You are logged in!
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/app/model/model-delete-dialog/model-delete-dialog.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-model-delete-dialog',
5 | templateUrl: './model-delete-dialog.component.html',
6 | styleUrls: ['./model-delete-dialog.component.scss'],
7 | changeDetection: ChangeDetectionStrategy.OnPush
8 | })
9 | export class ModelDeleteDialogComponent {
10 | @Input() open: boolean;
11 | @Input() id: string;
12 | @Output() delete = new EventEmitter();
13 | @Output() close = new EventEmitter();
14 | }
15 |
--------------------------------------------------------------------------------
/projects/core/src/lib/interfaces/wp-user.interface.ts:
--------------------------------------------------------------------------------
1 | export interface WpUser {
2 | id?: string | number;
3 | username?: string;
4 | name?: string;
5 | first_name?: string;
6 | last_name?: string;
7 | email?: string;
8 | url?: string;
9 | description?: string;
10 | link?: string;
11 | nickname?: string;
12 | locale?: string;
13 | slug?: string;
14 | roles?: string[];
15 | registered_date?: string;
16 | capabilities?: any;
17 | extra_capabilities?: any;
18 | avatar_urls?: {
19 | 24?: string,
20 | 48?: string,
21 | 96?: string
22 | };
23 | meta?: any[];
24 | _links?: any;
25 | }
26 |
--------------------------------------------------------------------------------
/src/app/app-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { RouterModule, Routes } from '@angular/router';
2 | import { NgModule } from '@angular/core';
3 |
4 | const appRoutes: Routes = [
5 | { path: '', loadChildren: './home/home.module#HomeModule' },
6 | { path: 'auth', loadChildren: './auth/auth.module#AuthModule' },
7 | { path: 'collection', loadChildren: './collection/collection.module#CollectionModule' },
8 | { path: 'model', loadChildren: './model/model.module#ModelModule' },
9 | { path: '**', redirectTo: '' }
10 | ];
11 |
12 | @NgModule({
13 | imports: [RouterModule.forRoot(appRoutes)],
14 | exports: [RouterModule]
15 | })
16 | export class AppRoutingModule {}
17 |
--------------------------------------------------------------------------------
/src/app/model/model-form-dialog/model-form-dialog.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-model-form-dialog',
5 | templateUrl: './model-form-dialog.component.html',
6 | styleUrls: ['./model-form-dialog.component.scss'],
7 | changeDetection: ChangeDetectionStrategy.OnPush
8 | })
9 | export class ModelFormDialogComponent {
10 |
11 | @Input() open: boolean;
12 | @Input() id: string;
13 | @Input() data: any = {
14 | title: '',
15 | content: ''
16 | };
17 | @Output() create = new EventEmitter();
18 | @Output() close = new EventEmitter();
19 | }
20 |
--------------------------------------------------------------------------------
/src/app/model/model-form-dialog/model-form-dialog.component.html:
--------------------------------------------------------------------------------
1 |
2 | Create new post
3 |
4 |
8 |
9 |
13 |
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See http://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # compiled output
4 | /dist
5 | /tmp
6 | /out-tsc
7 |
8 | # dependencies
9 | /node_modules
10 |
11 | # IDEs and editors
12 | /.idea
13 | .project
14 | .classpath
15 | .c9/
16 | *.launch
17 | .settings/
18 | *.sublime-workspace
19 |
20 | # IDE - VSCode
21 | .vscode/*
22 | !.vscode/settings.json
23 | !.vscode/tasks.json
24 | !.vscode/launch.json
25 | !.vscode/extensions.json
26 |
27 | # misc
28 | /.sass-cache
29 | /connect.lock
30 | /coverage
31 | /libpeerconnection.log
32 | npm-debug.log
33 | yarn-error.log
34 | testem.log
35 | /typings
36 |
37 | # System Files
38 | .DS_Store
39 | Thumbs.db
40 |
--------------------------------------------------------------------------------
/projects/mock/src/lib/mock.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule, ModuleWithProviders } from '@angular/core';
2 | import { HttpClientModule } from '@angular/common/http';
3 | import { fakeBackendProvider } from './mock.interceptor';
4 | import { MOCK_CONFIG, WpMockConfig } from './mock.token';
5 |
6 | @NgModule({
7 | imports: [HttpClientModule]
8 | })
9 | export class WordPressMockModule {
10 | static forRoot(config: WpMockConfig): ModuleWithProviders {
11 | return {
12 | ngModule: WordPressMockModule,
13 | providers: [
14 | {
15 | provide: MOCK_CONFIG,
16 | useValue: config
17 | },
18 | fakeBackendProvider
19 | ]
20 | };
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/app/auth/auth.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { FormsModule } from '@angular/forms';
3 | import { CommonModule } from '@angular/common';
4 | import { ClarityModule, ClrFormsNextModule } from '@clr/angular';
5 |
6 | import { HighlightModule } from 'ngx-highlightjs';
7 |
8 | import { AuthPageComponent } from './auth-page/auth-page.component';
9 | import { AuthRoutingModule } from './auth-routing.module';
10 |
11 | @NgModule({
12 | imports: [
13 | CommonModule,
14 | FormsModule,
15 | AuthRoutingModule,
16 | ClarityModule,
17 | ClrFormsNextModule,
18 | HighlightModule
19 | ],
20 | declarations: [AuthPageComponent]
21 | })
22 | export class AuthModule { }
23 |
--------------------------------------------------------------------------------
/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/zone-testing';
4 | import { getTestBed } from '@angular/core/testing';
5 | import {
6 | BrowserDynamicTestingModule,
7 | platformBrowserDynamicTesting
8 | } from '@angular/platform-browser-dynamic/testing';
9 |
10 | declare const require: any;
11 |
12 | // First, initialize the Angular testing environment.
13 | getTestBed().initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting()
16 | );
17 | // Then we find all the tests.
18 | const context = require.context('./', true, /\.spec\.ts$/);
19 | // And load the modules.
20 | context.keys().map(context);
21 |
--------------------------------------------------------------------------------
/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | // This file can be replaced during build by using the `fileReplacements` array.
2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
3 | // The list of file replacements can be found in `angular.json`.
4 |
5 | export const environment = {
6 | production: false
7 | };
8 |
9 | /*
10 | * For easier debugging in development mode, you can import the following file
11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
12 | *
13 | * This import should be commented out in production mode because it will have a negative impact
14 | * on performance if an error is thrown.
15 | */
16 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
17 |
--------------------------------------------------------------------------------
/src/app/header/header.component.html:
--------------------------------------------------------------------------------
1 |
20 |
--------------------------------------------------------------------------------
/src/app/collection/collection.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { FormsModule } from '@angular/forms';
4 | import { ClarityModule, ClrFormsNextModule } from '@clr/angular';
5 | import { HighlightModule } from 'ngx-highlightjs';
6 |
7 | import { CollectionRoutingModule } from './collection-routing.module';
8 | import { CollectionPageComponent } from './collection-page/collection-page.component';
9 |
10 | @NgModule({
11 | imports: [
12 | CommonModule,
13 | FormsModule,
14 | CollectionRoutingModule,
15 | ClarityModule,
16 | ClrFormsNextModule,
17 | HighlightModule
18 | ],
19 | declarations: [CollectionPageComponent]
20 | })
21 | export class CollectionModule {
22 | }
23 |
--------------------------------------------------------------------------------
/projects/core/src/test.ts:
--------------------------------------------------------------------------------
1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2 |
3 | import 'core-js/es7/reflect';
4 | import 'zone.js/dist/zone';
5 | import 'zone.js/dist/zone-testing';
6 | import { getTestBed } from '@angular/core/testing';
7 | import {
8 | BrowserDynamicTestingModule,
9 | platformBrowserDynamicTesting
10 | } from '@angular/platform-browser-dynamic/testing';
11 |
12 | declare const require: any;
13 |
14 | // First, initialize the Angular testing environment.
15 | getTestBed().initTestEnvironment(
16 | BrowserDynamicTestingModule,
17 | platformBrowserDynamicTesting()
18 | );
19 | // Then we find all the tests.
20 | const context = require.context('./', true, /\.spec\.ts$/);
21 | // And load the modules.
22 | context.keys().map(context);
23 |
--------------------------------------------------------------------------------
/projects/mock/src/test.ts:
--------------------------------------------------------------------------------
1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2 |
3 | import 'core-js/es7/reflect';
4 | import 'zone.js/dist/zone';
5 | import 'zone.js/dist/zone-testing';
6 | import { getTestBed } from '@angular/core/testing';
7 | import {
8 | BrowserDynamicTestingModule,
9 | platformBrowserDynamicTesting
10 | } from '@angular/platform-browser-dynamic/testing';
11 |
12 | declare const require: any;
13 |
14 | // First, initialize the Angular testing environment.
15 | getTestBed().initTestEnvironment(
16 | BrowserDynamicTestingModule,
17 | platformBrowserDynamicTesting()
18 | );
19 | // Then we find all the tests.
20 | const context = require.context('./', true, /\.spec\.ts$/);
21 | // And load the modules.
22 | context.keys().map(context);
23 |
--------------------------------------------------------------------------------
/projects/ngxs/src/test.ts:
--------------------------------------------------------------------------------
1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2 |
3 | import 'core-js/es7/reflect';
4 | import 'zone.js/dist/zone';
5 | import 'zone.js/dist/zone-testing';
6 | import { getTestBed } from '@angular/core/testing';
7 | import {
8 | BrowserDynamicTestingModule,
9 | platformBrowserDynamicTesting
10 | } from '@angular/platform-browser-dynamic/testing';
11 |
12 | declare const require: any;
13 |
14 | // First, initialize the Angular testing environment.
15 | getTestBed().initTestEnvironment(
16 | BrowserDynamicTestingModule,
17 | platformBrowserDynamicTesting()
18 | );
19 | // Then we find all the tests.
20 | const context = require.context('./', true, /\.spec\.ts$/);
21 | // And load the modules.
22 | context.keys().map(context);
23 |
--------------------------------------------------------------------------------
/projects/core/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@ngx-wordpress/core",
3 | "version": "5.0.0-beta.6",
4 | "description": "The best WordPress module for Angular",
5 | "repository": {
6 | "type": "git",
7 | "url": "git://github.com/murhafsousli/ngx-wordpress.git"
8 | },
9 | "homepage": "https://github.com/MurhafSousli/ngx-wordpress#readme",
10 | "bugs": {
11 | "url": "https://github.com/MurhafSousli/ngx-wordpress/issues"
12 | },
13 | "keywords": [
14 | "angular",
15 | "wordpress",
16 | "wp",
17 | "api",
18 | "rest",
19 | "blog"
20 | ],
21 | "author": "Murhaf Sousli ",
22 | "license": "MIT",
23 | "private": false,
24 | "peerDependencies": {
25 | "@angular/common": "^6.0.0",
26 | "@angular/core": "^6.0.0",
27 | "rxjs": "^6.0.0"
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/ascetic.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Original style from softwaremaniacs.org (c) Ivan Sagalaev
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: white;
12 | color: black;
13 | }
14 |
15 | .hljs-string,
16 | .hljs-variable,
17 | .hljs-template-variable,
18 | .hljs-symbol,
19 | .hljs-bullet,
20 | .hljs-section,
21 | .hljs-addition,
22 | .hljs-attribute,
23 | .hljs-link {
24 | color: #888;
25 | }
26 |
27 | .hljs-comment,
28 | .hljs-quote,
29 | .hljs-meta,
30 | .hljs-deletion {
31 | color: #ccc;
32 | }
33 |
34 | .hljs-keyword,
35 | .hljs-selector-tag,
36 | .hljs-section,
37 | .hljs-name,
38 | .hljs-type,
39 | .hljs-strong {
40 | font-weight: bold;
41 | }
42 |
43 | .hljs-emphasis {
44 | font-style: italic;
45 | }
46 |
--------------------------------------------------------------------------------
/e2e/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 | './src/**/*.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 | onPrepare() {
23 | require('ts-node').register({
24 | project: require('path').join(__dirname, './tsconfig.e2e.json')
25 | });
26 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
27 | }
28 | };
--------------------------------------------------------------------------------
/projects/core/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../out-tsc/lib",
5 | "target": "es2015",
6 | "module": "es2015",
7 | "moduleResolution": "node",
8 | "declaration": true,
9 | "sourceMap": true,
10 | "inlineSources": true,
11 | "emitDecoratorMetadata": true,
12 | "experimentalDecorators": true,
13 | "importHelpers": true,
14 | "types": [],
15 | "lib": [
16 | "dom",
17 | "es2017"
18 | ]
19 | },
20 | "angularCompilerOptions": {
21 | "annotateForClosureCompiler": true,
22 | "skipTemplateCodegen": true,
23 | "strictMetadataEmit": true,
24 | "fullTemplateTypeCheck": true,
25 | "strictInjectionParameters": true,
26 | "enableResourceInlining": true
27 | },
28 | "exclude": [
29 | "src/test.ts",
30 | "**/*.spec.ts"
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/projects/mock/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../out-tsc/lib",
5 | "target": "es2015",
6 | "module": "es2015",
7 | "moduleResolution": "node",
8 | "declaration": true,
9 | "sourceMap": true,
10 | "inlineSources": true,
11 | "emitDecoratorMetadata": true,
12 | "experimentalDecorators": true,
13 | "importHelpers": true,
14 | "types": [],
15 | "lib": [
16 | "dom",
17 | "es2015"
18 | ]
19 | },
20 | "angularCompilerOptions": {
21 | "annotateForClosureCompiler": true,
22 | "skipTemplateCodegen": true,
23 | "strictMetadataEmit": true,
24 | "fullTemplateTypeCheck": true,
25 | "strictInjectionParameters": true,
26 | "enableResourceInlining": true
27 | },
28 | "exclude": [
29 | "src/test.ts",
30 | "**/*.spec.ts"
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/projects/ngxs/tsconfig.lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../out-tsc/lib",
5 | "target": "es2015",
6 | "module": "es2015",
7 | "moduleResolution": "node",
8 | "declaration": true,
9 | "sourceMap": true,
10 | "inlineSources": true,
11 | "emitDecoratorMetadata": true,
12 | "experimentalDecorators": true,
13 | "importHelpers": true,
14 | "types": [],
15 | "lib": [
16 | "dom",
17 | "es2015"
18 | ]
19 | },
20 | "angularCompilerOptions": {
21 | "annotateForClosureCompiler": true,
22 | "skipTemplateCodegen": true,
23 | "strictMetadataEmit": true,
24 | "fullTemplateTypeCheck": true,
25 | "strictInjectionParameters": true,
26 | "enableResourceInlining": true
27 | },
28 | "exclude": [
29 | "src/test.ts",
30 | "**/*.spec.ts"
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "baseUrl": "./",
5 | "outDir": "./dist/out-tsc",
6 | "sourceMap": true,
7 | "declaration": false,
8 | "module": "es2015",
9 | "moduleResolution": "node",
10 | "emitDecoratorMetadata": true,
11 | "experimentalDecorators": true,
12 | "target": "es5",
13 | "typeRoots": [
14 | "node_modules/@types"
15 | ],
16 | "lib": [
17 | "es2017",
18 | "dom"
19 | ],
20 | "paths": {
21 | "core": [
22 | "dist/core"
23 | ],
24 | "core/*": [
25 | "dist/core/*"
26 | ],
27 | "mock": [
28 | "dist/mock"
29 | ],
30 | "mock/*": [
31 | "dist/mock/*"
32 | ],
33 | "ngxs": [
34 | "dist/ngxs"
35 | ],
36 | "ngxs/*": [
37 | "dist/ngxs/*"
38 | ]
39 | }
40 | }
41 | }
--------------------------------------------------------------------------------
/projects/ngxs/src/lib/auth.state.ts:
--------------------------------------------------------------------------------
1 | import { State, Action } from '@ngxs/store';
2 | import { WpAuthState, defaultAuthState } from '@ngx-wordpress/core';
3 |
4 | export class SignIn {
5 | static readonly type = '[WP_AUTH] Sign in';
6 | }
7 |
8 | export class SignOut {
9 | static readonly type = '[WP_AUTH] Sign out';
10 | }
11 |
12 | export class ValidateToken {
13 | static readonly type = '[WP_AUTH] Validate Token';
14 | }
15 |
16 | @State({
17 | name: 'wp',
18 | defaults: defaultAuthState
19 | })
20 | export class WordPressState {
21 | @Action(SignIn)
22 | get({getState, setState}) {
23 | const state = getState();
24 | setState(state + 1);
25 | }
26 |
27 | @Action(SignOut)
28 | more({getState, setState}) {
29 | const state = getState();
30 | setState(state + 1);
31 | }
32 |
33 | @Action(ValidateToken)
34 | next({getState, setState}) {
35 | const state = getState();
36 | setState(state + 1);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/app/model/model.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { FormsModule } from '@angular/forms';
4 | import { ClarityModule, ClrFormsNextModule } from '@clr/angular';
5 | import { HighlightModule } from 'ngx-highlightjs';
6 |
7 | import { ModelRoutingModule } from './model-routing.module';
8 | import { ModelPageComponent } from './model-page/model-page.component';
9 | import { ModelFormDialogComponent } from './model-form-dialog/model-form-dialog.component';
10 | import { ModelDeleteDialogComponent } from './model-delete-dialog/model-delete-dialog.component';
11 |
12 | @NgModule({
13 | imports: [
14 | CommonModule,
15 | FormsModule,
16 | ModelRoutingModule,
17 | ClarityModule,
18 | ClrFormsNextModule,
19 | HighlightModule
20 | ],
21 | declarations: [
22 | ModelPageComponent,
23 | ModelFormDialogComponent,
24 | ModelDeleteDialogComponent
25 | ]
26 | })
27 | export class ModelModule {
28 | }
29 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/mono-blue.css:
--------------------------------------------------------------------------------
1 | /*
2 | Five-color theme from a model blue hue.
3 | */
4 | .hljs {
5 | display: block;
6 | overflow-x: auto;
7 | padding: 0.5em;
8 | background: #eaeef3;
9 | }
10 |
11 | .hljs {
12 | color: #00193a;
13 | }
14 |
15 | .hljs-keyword,
16 | .hljs-selector-tag,
17 | .hljs-title,
18 | .hljs-section,
19 | .hljs-doctag,
20 | .hljs-name,
21 | .hljs-strong {
22 | font-weight: bold;
23 | }
24 |
25 | .hljs-comment {
26 | color: #738191;
27 | }
28 |
29 | .hljs-string,
30 | .hljs-title,
31 | .hljs-section,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-type,
35 | .hljs-addition,
36 | .hljs-tag,
37 | .hljs-quote,
38 | .hljs-name,
39 | .hljs-selector-id,
40 | .hljs-selector-class {
41 | color: #0048ab;
42 | }
43 |
44 | .hljs-meta,
45 | .hljs-subst,
46 | .hljs-symbol,
47 | .hljs-regexp,
48 | .hljs-attribute,
49 | .hljs-deletion,
50 | .hljs-variable,
51 | .hljs-template-variable,
52 | .hljs-link,
53 | .hljs-bullet {
54 | color: #4c81c9;
55 | }
56 |
57 | .hljs-emphasis {
58 | font-style: italic;
59 | }
60 |
--------------------------------------------------------------------------------
/projects/core/src/lib/decorators/wp-auth.decorator.ts:
--------------------------------------------------------------------------------
1 | import { WordPress } from '../wordpress.service';
2 |
3 | export function WpAuth() {
4 | return function (target: any, name: string) {
5 |
6 | const selectorFnName = '__' + name + '__selector';
7 |
8 | const createSelect = () => {
9 | const wp = WordPress.wp;
10 | if (!wp) {
11 | throw new Error('AuthFactory not connected to WordPress!');
12 | }
13 | return wp.auth;
14 | };
15 |
16 | const createSelector = () => {
17 | return null;
18 | };
19 |
20 | if (delete target[name]) {
21 | Object.defineProperty(target, selectorFnName, {
22 | writable: true,
23 | enumerable: false,
24 | configurable: true
25 | });
26 |
27 | Object.defineProperty(target, name, {
28 | get: function () {
29 | return this[selectorFnName] || (this[selectorFnName] = createSelect.apply(this, [createSelector()]));
30 | },
31 | enumerable: true,
32 | configurable: true
33 | });
34 | }
35 | };
36 | }
37 |
--------------------------------------------------------------------------------
/projects/core/src/lib/decorators/wp-error.dectorator.ts:
--------------------------------------------------------------------------------
1 | import { WordPress } from '../wordpress.service';
2 |
3 | export function WpError() {
4 |
5 | return function (target: any, name: string) {
6 | const selectorFnName = '__' + name + '__selector';
7 |
8 | const createSelect = () => {
9 | const wp = WordPress.wp;
10 | if (!wp) {
11 | throw new Error('CollectionFactory not connected to WordPress!');
12 | }
13 | return wp.error;
14 | };
15 |
16 | const createSelector = () => {
17 | return null;
18 | };
19 |
20 | if (delete target[name]) {
21 | Object.defineProperty(target, selectorFnName, {
22 | writable: true,
23 | enumerable: false,
24 | configurable: true
25 | });
26 |
27 | Object.defineProperty(target, name, {
28 | get: function () {
29 | return this[selectorFnName] || (this[selectorFnName] = createSelect.apply(this, [createSelector()]));
30 | },
31 | enumerable: true,
32 | configurable: true
33 | });
34 | }
35 | };
36 | }
37 |
--------------------------------------------------------------------------------
/src/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration file, see link for more information
2 | // https://karma-runner.github.io/1.0/config/configuration-file.html
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | basePath: '',
7 | frameworks: ['jasmine', '@angular-devkit/build-angular'],
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-devkit/build-angular/plugins/karma')
14 | ],
15 | client: {
16 | clearContext: false // leave Jasmine Spec Runner output visible in browser
17 | },
18 | coverageIstanbulReporter: {
19 | dir: require('path').join(__dirname, '../coverage'),
20 | reports: ['html', 'lcovonly'],
21 | fixWebpackSourcePaths: true
22 | },
23 | reporters: ['progress', 'kjhtml'],
24 | port: 9876,
25 | colors: true,
26 | logLevel: config.LOG_INFO,
27 | autoWatch: true,
28 | browsers: ['Chrome'],
29 | singleRun: false
30 | });
31 | };
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/dark.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Dark style from softwaremaniacs.org (c) Ivan Sagalaev
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #444;
12 | }
13 |
14 | .hljs-keyword,
15 | .hljs-selector-tag,
16 | .hljs-literal,
17 | .hljs-section,
18 | .hljs-link {
19 | color: white;
20 | }
21 |
22 | .hljs,
23 | .hljs-subst {
24 | color: #ddd;
25 | }
26 |
27 | .hljs-string,
28 | .hljs-title,
29 | .hljs-name,
30 | .hljs-type,
31 | .hljs-attribute,
32 | .hljs-symbol,
33 | .hljs-bullet,
34 | .hljs-built_in,
35 | .hljs-addition,
36 | .hljs-variable,
37 | .hljs-template-tag,
38 | .hljs-template-variable {
39 | color: #d88;
40 | }
41 |
42 | .hljs-comment,
43 | .hljs-quote,
44 | .hljs-deletion,
45 | .hljs-meta {
46 | color: #777;
47 | }
48 |
49 | .hljs-keyword,
50 | .hljs-selector-tag,
51 | .hljs-literal,
52 | .hljs-title,
53 | .hljs-section,
54 | .hljs-doctag,
55 | .hljs-type,
56 | .hljs-name,
57 | .hljs-strong {
58 | font-weight: bold;
59 | }
60 |
61 | .hljs-emphasis {
62 | font-style: italic;
63 | }
64 |
--------------------------------------------------------------------------------
/projects/core/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration file, see link for more information
2 | // https://karma-runner.github.io/1.0/config/configuration-file.html
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | basePath: '',
7 | frameworks: ['jasmine', '@angular-devkit/build-angular'],
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-devkit/build-angular/plugins/karma')
14 | ],
15 | client: {
16 | clearContext: false // leave Jasmine Spec Runner output visible in browser
17 | },
18 | coverageIstanbulReporter: {
19 | dir: require('path').join(__dirname, '../../coverage'),
20 | reports: ['html', 'lcovonly'],
21 | fixWebpackSourcePaths: true
22 | },
23 | reporters: ['progress', 'kjhtml'],
24 | port: 9876,
25 | colors: true,
26 | logLevel: config.LOG_INFO,
27 | autoWatch: true,
28 | browsers: ['Chrome'],
29 | singleRun: false
30 | });
31 | };
32 |
--------------------------------------------------------------------------------
/projects/core/src/lib/interfaces/wp-config.interface.ts:
--------------------------------------------------------------------------------
1 | import { InjectionToken } from '@angular/core';
2 | import { Observable, OperatorFunction } from 'rxjs';
3 |
4 | export const WP_CONFIG = new InjectionToken('WP_CONFIG');
5 |
6 | export interface WpConfig {
7 | baseUrl?: string;
8 | restUrl?: string;
9 | authUrl?: string;
10 | validateAuthUrl?: string;
11 | cdnOptions?: any;
12 | jwtOptions?: {
13 | headerName?: string;
14 | authScheme?: string;
15 | skipWhenExpired?: boolean;
16 | tokenGetter?: () => Promise | Observable;
17 | tokenSetter?: (token: string) => Promise | Observable;
18 | tokenRemover?: () => Promise | Observable;
19 | };
20 | filters?: {
21 | [key: string]: WpObjectFilter;
22 | };
23 | }
24 |
25 | export interface WpObjectFilter {
26 | [key: string]: WpPropertyFilter;
27 | }
28 |
29 | export type WpPropertyFilter = OperatorFunction, WpFilterRes>[];
30 |
31 | export interface WpFilterRes {
32 | key?: string;
33 | value: T;
34 | }
35 |
--------------------------------------------------------------------------------
/projects/mock/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration file, see link for more information
2 | // https://karma-runner.github.io/1.0/config/configuration-file.html
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | basePath: '',
7 | frameworks: ['jasmine', '@angular-devkit/build-angular'],
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-devkit/build-angular/plugins/karma')
14 | ],
15 | client: {
16 | clearContext: false // leave Jasmine Spec Runner output visible in browser
17 | },
18 | coverageIstanbulReporter: {
19 | dir: require('path').join(__dirname, '../../coverage'),
20 | reports: ['html', 'lcovonly'],
21 | fixWebpackSourcePaths: true
22 | },
23 | reporters: ['progress', 'kjhtml'],
24 | port: 9876,
25 | colors: true,
26 | logLevel: config.LOG_INFO,
27 | autoWatch: true,
28 | browsers: ['Chrome'],
29 | singleRun: false
30 | });
31 | };
32 |
--------------------------------------------------------------------------------
/projects/ngxs/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration file, see link for more information
2 | // https://karma-runner.github.io/1.0/config/configuration-file.html
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | basePath: '',
7 | frameworks: ['jasmine', '@angular-devkit/build-angular'],
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-devkit/build-angular/plugins/karma')
14 | ],
15 | client: {
16 | clearContext: false // leave Jasmine Spec Runner output visible in browser
17 | },
18 | coverageIstanbulReporter: {
19 | dir: require('path').join(__dirname, '../../coverage'),
20 | reports: ['html', 'lcovonly'],
21 | fixWebpackSourcePaths: true
22 | },
23 | reporters: ['progress', 'kjhtml'],
24 | port: 9876,
25 | colors: true,
26 | logLevel: config.LOG_INFO,
27 | autoWatch: true,
28 | browsers: ['Chrome'],
29 | singleRun: false
30 | });
31 | };
32 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/androidstudio.css:
--------------------------------------------------------------------------------
1 | /*
2 | Date: 24 Fev 2015
3 | Author: Pedro Oliveira
4 | */
5 |
6 | .hljs {
7 | color: #a9b7c6;
8 | background: #282b2e;
9 | display: block;
10 | overflow-x: auto;
11 | padding: 0.5em;
12 | }
13 |
14 | .hljs-number,
15 | .hljs-literal,
16 | .hljs-symbol,
17 | .hljs-bullet {
18 | color: #6897BB;
19 | }
20 |
21 | .hljs-keyword,
22 | .hljs-selector-tag,
23 | .hljs-deletion {
24 | color: #cc7832;
25 | }
26 |
27 | .hljs-variable,
28 | .hljs-template-variable,
29 | .hljs-link {
30 | color: #629755;
31 | }
32 |
33 | .hljs-comment,
34 | .hljs-quote {
35 | color: #808080;
36 | }
37 |
38 | .hljs-meta {
39 | color: #bbb529;
40 | }
41 |
42 | .hljs-string,
43 | .hljs-attribute,
44 | .hljs-addition {
45 | color: #6A8759;
46 | }
47 |
48 | .hljs-section,
49 | .hljs-title,
50 | .hljs-type {
51 | color: #ffc66d;
52 | }
53 |
54 | .hljs-name,
55 | .hljs-selector-id,
56 | .hljs-selector-class {
57 | color: #e8bf6a;
58 | }
59 |
60 | .hljs-emphasis {
61 | font-style: italic;
62 | }
63 |
64 | .hljs-strong {
65 | font-weight: bold;
66 | }
67 |
--------------------------------------------------------------------------------
/projects/core/src/lib/collection/wp-collection.interface.ts:
--------------------------------------------------------------------------------
1 | export interface WpCollectionState {
2 | data?: T;
3 | loading?: boolean;
4 | error?: any;
5 | pagination?: WpPagination;
6 | }
7 |
8 | /**
9 | * Pagination class holds the current collection response pagination and links
10 | */
11 | export class WpPagination {
12 | currentPage?: number;
13 | totalPages?: number;
14 | totalObjects?: number;
15 | hasPrev?: boolean;
16 | hasMore?: boolean;
17 | }
18 |
19 | export class WpQuery {
20 | search?: string;
21 | page?: number;
22 | per_page?: number;
23 | _embed?: boolean;
24 | filter?: any;
25 | post_status?: string;
26 | perm?: any;
27 | orderby?: string;
28 | meta_key?: string;
29 | meta_value?: string;
30 | meta_query?: any;
31 | meta_value_num?: number;
32 | meta_compare?: string;
33 | post_type?: string;
34 | order?: string;
35 | author?: string | number | string[] | number[];
36 | categories?: any;
37 | tags?: any;
38 | // use 'user_nicename' - NOT name.
39 | author_name?: string;
40 | author__in?: number[];
41 | author__not_in?: number[];
42 | }
43 |
--------------------------------------------------------------------------------
/projects/core/src/lib/decorators/wp-model.decorator.ts:
--------------------------------------------------------------------------------
1 | import { WordPress } from '../wordpress.service';
2 |
3 | export function WpModel(endpoint?: string) {
4 | return function (target: any, name: string) {
5 |
6 | const selectorFnName = '__' + name + '__selector';
7 |
8 | const createSelect = (res: { endpoint: string }) => {
9 | const wp = WordPress.wp;
10 | if (!wp) {
11 | throw new Error('ModelFactory not connected to WordPress!');
12 | }
13 | return wp.model(res.endpoint);
14 | };
15 |
16 | const createSelector = () => {
17 | return {endpoint};
18 | };
19 |
20 | if (delete target[name]) {
21 | Object.defineProperty(target, selectorFnName, {
22 | writable: true,
23 | enumerable: false,
24 | configurable: true
25 | });
26 |
27 | Object.defineProperty(target, name, {
28 | get: function () {
29 | return this[selectorFnName] || (this[selectorFnName] = createSelect.apply(this, [createSelector()]));
30 | },
31 | enumerable: true,
32 | configurable: true
33 | });
34 | }
35 | };
36 | }
37 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 Murhaf Sousli
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/codepen-embed.css:
--------------------------------------------------------------------------------
1 | /*
2 | codepen.io Embed Theme
3 | Author: Justin Perry
4 | Original theme - https://github.com/chriskempson/tomorrow-theme
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #222;
12 | color: #fff;
13 | }
14 |
15 | .hljs-comment,
16 | .hljs-quote {
17 | color: #777;
18 | }
19 |
20 | .hljs-variable,
21 | .hljs-template-variable,
22 | .hljs-tag,
23 | .hljs-regexp,
24 | .hljs-meta,
25 | .hljs-number,
26 | .hljs-built_in,
27 | .hljs-builtin-name,
28 | .hljs-literal,
29 | .hljs-params,
30 | .hljs-symbol,
31 | .hljs-bullet,
32 | .hljs-link,
33 | .hljs-deletion {
34 | color: #ab875d;
35 | }
36 |
37 | .hljs-section,
38 | .hljs-title,
39 | .hljs-name,
40 | .hljs-selector-id,
41 | .hljs-selector-class,
42 | .hljs-type,
43 | .hljs-attribute {
44 | color: #9b869b;
45 | }
46 |
47 | .hljs-string,
48 | .hljs-keyword,
49 | .hljs-selector-tag,
50 | .hljs-addition {
51 | color: #8f9c6c;
52 | }
53 |
54 | .hljs-emphasis {
55 | font-style: italic;
56 | }
57 |
58 | .hljs-strong {
59 | font-weight: bold;
60 | }
61 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/brown-paper.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Brown Paper style from goldblog.com.ua (c) Zaripov Yura
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background:#b7a68e url(./brown-papersq.png);
12 | }
13 |
14 | .hljs-keyword,
15 | .hljs-selector-tag,
16 | .hljs-literal {
17 | color:#005599;
18 | font-weight:bold;
19 | }
20 |
21 | .hljs,
22 | .hljs-subst {
23 | color: #363c69;
24 | }
25 |
26 | .hljs-string,
27 | .hljs-title,
28 | .hljs-section,
29 | .hljs-type,
30 | .hljs-attribute,
31 | .hljs-symbol,
32 | .hljs-bullet,
33 | .hljs-built_in,
34 | .hljs-addition,
35 | .hljs-variable,
36 | .hljs-template-tag,
37 | .hljs-template-variable,
38 | .hljs-link,
39 | .hljs-name {
40 | color: #2c009f;
41 | }
42 |
43 | .hljs-comment,
44 | .hljs-quote,
45 | .hljs-meta,
46 | .hljs-deletion {
47 | color: #802022;
48 | }
49 |
50 | .hljs-keyword,
51 | .hljs-selector-tag,
52 | .hljs-literal,
53 | .hljs-doctag,
54 | .hljs-title,
55 | .hljs-section,
56 | .hljs-type,
57 | .hljs-name,
58 | .hljs-strong {
59 | font-weight: bold;
60 | }
61 |
62 | .hljs-emphasis {
63 | font-style: italic;
64 | }
65 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/vs.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Visual Studio-like style based on original C# coloring by Jason Diamond
4 |
5 | */
6 | .hljs {
7 | display: block;
8 | overflow-x: auto;
9 | padding: 0.5em;
10 | background: white;
11 | color: black;
12 | }
13 |
14 | .hljs-comment,
15 | .hljs-quote,
16 | .hljs-variable {
17 | color: #008000;
18 | }
19 |
20 | .hljs-keyword,
21 | .hljs-selector-tag,
22 | .hljs-built_in,
23 | .hljs-name,
24 | .hljs-tag {
25 | color: #00f;
26 | }
27 |
28 | .hljs-string,
29 | .hljs-title,
30 | .hljs-section,
31 | .hljs-attribute,
32 | .hljs-literal,
33 | .hljs-template-tag,
34 | .hljs-template-variable,
35 | .hljs-type,
36 | .hljs-addition {
37 | color: #a31515;
38 | }
39 |
40 | .hljs-deletion,
41 | .hljs-selector-attr,
42 | .hljs-selector-pseudo,
43 | .hljs-meta {
44 | color: #2b91af;
45 | }
46 |
47 | .hljs-doctag {
48 | color: #808080;
49 | }
50 |
51 | .hljs-attr {
52 | color: #f00;
53 | }
54 |
55 | .hljs-symbol,
56 | .hljs-bullet,
57 | .hljs-link {
58 | color: #00b0e8;
59 | }
60 |
61 |
62 | .hljs-emphasis {
63 | font-style: italic;
64 | }
65 |
66 | .hljs-strong {
67 | font-weight: bold;
68 | }
69 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/far.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | FAR Style (c) MajestiC
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #000080;
12 | }
13 |
14 | .hljs,
15 | .hljs-subst {
16 | color: #0ff;
17 | }
18 |
19 | .hljs-string,
20 | .hljs-attribute,
21 | .hljs-symbol,
22 | .hljs-bullet,
23 | .hljs-built_in,
24 | .hljs-builtin-name,
25 | .hljs-template-tag,
26 | .hljs-template-variable,
27 | .hljs-addition {
28 | color: #ff0;
29 | }
30 |
31 | .hljs-keyword,
32 | .hljs-selector-tag,
33 | .hljs-section,
34 | .hljs-type,
35 | .hljs-name,
36 | .hljs-selector-id,
37 | .hljs-selector-class,
38 | .hljs-variable {
39 | color: #fff;
40 | }
41 |
42 | .hljs-comment,
43 | .hljs-quote,
44 | .hljs-doctag,
45 | .hljs-deletion {
46 | color: #888;
47 | }
48 |
49 | .hljs-number,
50 | .hljs-regexp,
51 | .hljs-literal,
52 | .hljs-link {
53 | color: #0f0;
54 | }
55 |
56 | .hljs-meta {
57 | color: #008080;
58 | }
59 |
60 | .hljs-keyword,
61 | .hljs-selector-tag,
62 | .hljs-title,
63 | .hljs-section,
64 | .hljs-name,
65 | .hljs-strong {
66 | font-weight: bold;
67 | }
68 |
69 | .hljs-emphasis {
70 | font-style: italic;
71 | }
72 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/arta.css:
--------------------------------------------------------------------------------
1 | /*
2 | Date: 17.V.2011
3 | Author: pumbur
4 | */
5 |
6 | .hljs {
7 | display: block;
8 | overflow-x: auto;
9 | padding: 0.5em;
10 | background: #222;
11 | }
12 |
13 | .hljs,
14 | .hljs-subst {
15 | color: #aaa;
16 | }
17 |
18 | .hljs-section {
19 | color: #fff;
20 | }
21 |
22 | .hljs-comment,
23 | .hljs-quote,
24 | .hljs-meta {
25 | color: #444;
26 | }
27 |
28 | .hljs-string,
29 | .hljs-symbol,
30 | .hljs-bullet,
31 | .hljs-regexp {
32 | color: #ffcc33;
33 | }
34 |
35 | .hljs-number,
36 | .hljs-addition {
37 | color: #00cc66;
38 | }
39 |
40 | .hljs-built_in,
41 | .hljs-builtin-name,
42 | .hljs-literal,
43 | .hljs-type,
44 | .hljs-template-variable,
45 | .hljs-attribute,
46 | .hljs-link {
47 | color: #32aaee;
48 | }
49 |
50 | .hljs-keyword,
51 | .hljs-selector-tag,
52 | .hljs-name,
53 | .hljs-selector-id,
54 | .hljs-selector-class {
55 | color: #6644aa;
56 | }
57 |
58 | .hljs-title,
59 | .hljs-variable,
60 | .hljs-deletion,
61 | .hljs-template-tag {
62 | color: #bb1166;
63 | }
64 |
65 | .hljs-section,
66 | .hljs-doctag,
67 | .hljs-strong {
68 | font-weight: bold;
69 | }
70 |
71 | .hljs-emphasis {
72 | font-style: italic;
73 | }
74 |
--------------------------------------------------------------------------------
/projects/core/src/lib/decorators/wp-collection.decorator.ts:
--------------------------------------------------------------------------------
1 | import { WordPress } from '../wordpress.service';
2 | import { WpQuery } from '../collection';
3 |
4 | export function WpCollection(endpoint: string, query?: WpQuery) {
5 | return function (target: any, name: string) {
6 |
7 | const selectorFnName = '__' + name + '__selector';
8 |
9 | const createSelect = (res: { endpoint: string, query: WpQuery }) => {
10 | const wp = WordPress.wp;
11 | if (!wp) {
12 | throw new Error('CollectionFactory not connected to WordPress!');
13 | }
14 | return wp.collection(res.endpoint, res.query);
15 | };
16 |
17 | const createSelector = () => ({endpoint, query});
18 |
19 | if (delete target[name]) {
20 | Object.defineProperty(target, selectorFnName, {
21 | writable: true,
22 | enumerable: false,
23 | configurable: true
24 | });
25 |
26 | Object.defineProperty(target, name, {
27 | get: function () {
28 | return this[selectorFnName] || (this[selectorFnName] = createSelect.apply(this, [createSelector()]));
29 | },
30 | enumerable: true,
31 | configurable: true
32 | });
33 | }
34 | };
35 | }
36 |
37 |
--------------------------------------------------------------------------------
/projects/core/src/lib/model/wp-model.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { HttpClient } from '@angular/common/http';
3 | import { Observable } from 'rxjs';
4 | import { map } from 'rxjs/operators';
5 |
6 | @Injectable({
7 | providedIn: 'root'
8 | })
9 | export class WpModelService {
10 |
11 | constructor(private http: HttpClient) {
12 | }
13 |
14 | /**
15 | * Get a single object by id
16 | */
17 | get(url: string, id: number | string): Observable {
18 | return this.http.get(url + '/' + id);
19 | }
20 |
21 | /**
22 | * Create a single object by id
23 | */
24 | create(url: string, body: any): Observable {
25 | return this.http.post(url, body);
26 | }
27 |
28 | /**
29 | * Update an existing object by id
30 | */
31 | update(url: string, id: number | string, body?): Observable {
32 | return this.http.put(url + '/' + id, body);
33 | }
34 |
35 | /**
36 | * Delete an existing object by id
37 | */
38 | delete(url: string, id: number | string): Observable {
39 | return this.http.delete(url + '/' + id + '?force=true').pipe(
40 | map((res: { deleted: boolean, previous: any }) => res.previous)
41 | );
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/ir-black.css:
--------------------------------------------------------------------------------
1 | /*
2 | IR_Black style (c) Vasily Mikhailitchenko
3 | */
4 |
5 | .hljs {
6 | display: block;
7 | overflow-x: auto;
8 | padding: 0.5em;
9 | background: #000;
10 | color: #f8f8f8;
11 | }
12 |
13 | .hljs-comment,
14 | .hljs-quote,
15 | .hljs-meta {
16 | color: #7c7c7c;
17 | }
18 |
19 | .hljs-keyword,
20 | .hljs-selector-tag,
21 | .hljs-tag,
22 | .hljs-name {
23 | color: #96cbfe;
24 | }
25 |
26 | .hljs-attribute,
27 | .hljs-selector-id {
28 | color: #ffffb6;
29 | }
30 |
31 | .hljs-string,
32 | .hljs-selector-attr,
33 | .hljs-selector-pseudo,
34 | .hljs-addition {
35 | color: #a8ff60;
36 | }
37 |
38 | .hljs-subst {
39 | color: #daefa3;
40 | }
41 |
42 | .hljs-regexp,
43 | .hljs-link {
44 | color: #e9c062;
45 | }
46 |
47 | .hljs-title,
48 | .hljs-section,
49 | .hljs-type,
50 | .hljs-doctag {
51 | color: #ffffb6;
52 | }
53 |
54 | .hljs-symbol,
55 | .hljs-bullet,
56 | .hljs-variable,
57 | .hljs-template-variable,
58 | .hljs-literal {
59 | color: #c6c5fe;
60 | }
61 |
62 | .hljs-number,
63 | .hljs-deletion {
64 | color:#ff73fd;
65 | }
66 |
67 | .hljs-emphasis {
68 | font-style: italic;
69 | }
70 |
71 | .hljs-strong {
72 | font-weight: bold;
73 | }
74 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/color-brewer.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Colorbrewer theme
4 | Original: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock
5 | Ported by Fabrício Tavares de Oliveira
6 |
7 | */
8 |
9 | .hljs {
10 | display: block;
11 | overflow-x: auto;
12 | padding: 0.5em;
13 | background: #fff;
14 | }
15 |
16 | .hljs,
17 | .hljs-subst {
18 | color: #000;
19 | }
20 |
21 | .hljs-string,
22 | .hljs-meta,
23 | .hljs-symbol,
24 | .hljs-template-tag,
25 | .hljs-template-variable,
26 | .hljs-addition {
27 | color: #756bb1;
28 | }
29 |
30 | .hljs-comment,
31 | .hljs-quote {
32 | color: #636363;
33 | }
34 |
35 | .hljs-number,
36 | .hljs-regexp,
37 | .hljs-literal,
38 | .hljs-bullet,
39 | .hljs-link {
40 | color: #31a354;
41 | }
42 |
43 | .hljs-deletion,
44 | .hljs-variable {
45 | color: #88f;
46 | }
47 |
48 |
49 |
50 | .hljs-keyword,
51 | .hljs-selector-tag,
52 | .hljs-title,
53 | .hljs-section,
54 | .hljs-built_in,
55 | .hljs-doctag,
56 | .hljs-type,
57 | .hljs-tag,
58 | .hljs-name,
59 | .hljs-selector-id,
60 | .hljs-selector-class,
61 | .hljs-strong {
62 | color: #3182bd;
63 | }
64 |
65 | .hljs-emphasis {
66 | font-style: italic;
67 | }
68 |
69 | .hljs-attribute {
70 | color: #e6550d;
71 | }
72 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/magula.css:
--------------------------------------------------------------------------------
1 | /*
2 | Description: Magula style for highligh.js
3 | Author: Ruslan Keba
4 | Website: http://rukeba.com/
5 | Version: 1.0
6 | Date: 2009-01-03
7 | Music: Aphex Twin / Xtal
8 | */
9 |
10 | .hljs {
11 | display: block;
12 | overflow-x: auto;
13 | padding: 0.5em;
14 | background-color: #f4f4f4;
15 | }
16 |
17 | .hljs,
18 | .hljs-subst {
19 | color: black;
20 | }
21 |
22 | .hljs-string,
23 | .hljs-title,
24 | .hljs-symbol,
25 | .hljs-bullet,
26 | .hljs-attribute,
27 | .hljs-addition,
28 | .hljs-variable,
29 | .hljs-template-tag,
30 | .hljs-template-variable {
31 | color: #050;
32 | }
33 |
34 | .hljs-comment,
35 | .hljs-quote {
36 | color: #777;
37 | }
38 |
39 | .hljs-number,
40 | .hljs-regexp,
41 | .hljs-literal,
42 | .hljs-type,
43 | .hljs-link {
44 | color: #800;
45 | }
46 |
47 | .hljs-deletion,
48 | .hljs-meta {
49 | color: #00e;
50 | }
51 |
52 | .hljs-keyword,
53 | .hljs-selector-tag,
54 | .hljs-doctag,
55 | .hljs-title,
56 | .hljs-section,
57 | .hljs-built_in,
58 | .hljs-tag,
59 | .hljs-name {
60 | font-weight: bold;
61 | color: navy;
62 | }
63 |
64 | .hljs-emphasis {
65 | font-style: italic;
66 | }
67 |
68 | .hljs-strong {
69 | font-weight: bold;
70 | }
71 |
--------------------------------------------------------------------------------
/projects/core/src/lib/interfaces/wp-media.interface.ts:
--------------------------------------------------------------------------------
1 | export interface WpMedia {
2 | id: number;
3 | date: Date;
4 | slug: string;
5 | type: string;
6 | link: string;
7 | title: string;
8 | author: number;
9 | caption: any;
10 | alt_text: string;
11 | media_type: string;
12 | mime_type: string;
13 | media_details: WpMediaDetails;
14 | source_url: string;
15 | _links: any;
16 | }
17 |
18 | export interface WpMediaDetails {
19 | width: number;
20 | height: number;
21 | file: string;
22 | sizes: WpMediaSizes;
23 | image_meta: WpImageMeta;
24 | }
25 |
26 | export interface WpMediaSize {
27 | file: string;
28 | width: number;
29 | height: number;
30 | mime_type: string;
31 | source_url: string;
32 | }
33 |
34 | export interface WpMediaSizes {
35 | [key: string]: WpMediaSize;
36 | thumbnail?: WpMediaSize;
37 | medium?: WpMediaSize;
38 | full?: WpMediaSize;
39 | }
40 |
41 | export interface WpImageMeta {
42 | aperture: string;
43 | credit: string;
44 | camera: string;
45 | caption: string;
46 | created_timestamp: string;
47 | copyright: string;
48 | focal_length: string;
49 | iso: string;
50 | shutter_speed: string;
51 | title: string;
52 | orientation: string;
53 | keywords: any[];
54 | }
55 |
56 |
--------------------------------------------------------------------------------
/projects/core/src/lib/interfaces/wp-post.interface.ts:
--------------------------------------------------------------------------------
1 | import { WpUser } from './wp-user.interface';
2 | import { WpTerm } from './wp-term.interface';
3 |
4 | export interface WpPost {
5 | id?: number;
6 | slug?: string;
7 | name?: string;
8 | title?: string | any;
9 | content?: string | any;
10 | excerpt?: string | any;
11 | featured_media?: number;
12 | tags?: WpTerm[] | number[];
13 | categories?: WpTerm[] | number[];
14 | author?: WpUser | number | number[];
15 | status?: WpStatus;
16 | format?: WpFormat;
17 | comment_status?: WpToggleStatus;
18 | ping_status?: WpToggleStatus;
19 | date?: string;
20 | date_gmt?: string;
21 | modified?: string;
22 | modified_gmt?: string;
23 | link?: string;
24 | type?: string;
25 | sticky?: boolean;
26 | guid?: any;
27 | _embedded?: any;
28 | }
29 |
30 | export enum WpFormat {
31 | standard = 'standard',
32 | aside = 'aside',
33 | image = 'image',
34 | video = 'video',
35 | quote = 'quote',
36 | link = 'link',
37 | gallery = 'gallery',
38 | audio = 'audio'
39 | }
40 |
41 | export enum WpStatus {
42 | publish = 'publish',
43 | pending = 'publish',
44 | draft = 'draft'
45 | }
46 |
47 | export enum WpToggleStatus {
48 | 'open' = 'open',
49 | 'closed' = 'closed'
50 | }
51 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/github-gist.css:
--------------------------------------------------------------------------------
1 | /**
2 | * GitHub Gist Theme
3 | * Author : Louis Barranqueiro - https://github.com/LouisBarranqueiro
4 | */
5 |
6 | .hljs {
7 | display: block;
8 | background: white;
9 | padding: 0.5em;
10 | color: #333333;
11 | overflow-x: auto;
12 | }
13 |
14 | .hljs-comment,
15 | .hljs-meta {
16 | color: #969896;
17 | }
18 |
19 | .hljs-string,
20 | .hljs-variable,
21 | .hljs-template-variable,
22 | .hljs-strong,
23 | .hljs-emphasis,
24 | .hljs-quote {
25 | color: #df5000;
26 | }
27 |
28 | .hljs-keyword,
29 | .hljs-selector-tag,
30 | .hljs-type {
31 | color: #a71d5d;
32 | }
33 |
34 | .hljs-literal,
35 | .hljs-symbol,
36 | .hljs-bullet,
37 | .hljs-attribute {
38 | color: #0086b3;
39 | }
40 |
41 | .hljs-section,
42 | .hljs-name {
43 | color: #63a35c;
44 | }
45 |
46 | .hljs-tag {
47 | color: #333333;
48 | }
49 |
50 | .hljs-title,
51 | .hljs-attr,
52 | .hljs-selector-id,
53 | .hljs-selector-class,
54 | .hljs-selector-attr,
55 | .hljs-selector-pseudo {
56 | color: #795da3;
57 | }
58 |
59 | .hljs-addition {
60 | color: #55a532;
61 | background-color: #eaffea;
62 | }
63 |
64 | .hljs-deletion {
65 | color: #bd2c00;
66 | background-color: #ffecec;
67 | }
68 |
69 | .hljs-link {
70 | text-decoration: underline;
71 | }
72 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/monokai.css:
--------------------------------------------------------------------------------
1 | /*
2 | Monokai style - ported by Luigi Maselli - http://grigio.org
3 | */
4 |
5 | .hljs {
6 | display: block;
7 | overflow-x: auto;
8 | padding: 0.5em;
9 | background: #272822; color: #ddd;
10 | }
11 |
12 | .hljs-tag,
13 | .hljs-keyword,
14 | .hljs-selector-tag,
15 | .hljs-literal,
16 | .hljs-strong,
17 | .hljs-name {
18 | color: #f92672;
19 | }
20 |
21 | .hljs-code {
22 | color: #66d9ef;
23 | }
24 |
25 | .hljs-class .hljs-title {
26 | color: white;
27 | }
28 |
29 | .hljs-attribute,
30 | .hljs-symbol,
31 | .hljs-regexp,
32 | .hljs-link {
33 | color: #bf79db;
34 | }
35 |
36 | .hljs-string,
37 | .hljs-bullet,
38 | .hljs-subst,
39 | .hljs-title,
40 | .hljs-section,
41 | .hljs-emphasis,
42 | .hljs-type,
43 | .hljs-built_in,
44 | .hljs-builtin-name,
45 | .hljs-selector-attr,
46 | .hljs-selector-pseudo,
47 | .hljs-addition,
48 | .hljs-variable,
49 | .hljs-template-tag,
50 | .hljs-template-variable {
51 | color: #a6e22e;
52 | }
53 |
54 | .hljs-comment,
55 | .hljs-quote,
56 | .hljs-deletion,
57 | .hljs-meta {
58 | color: #75715e;
59 | }
60 |
61 | .hljs-keyword,
62 | .hljs-selector-tag,
63 | .hljs-literal,
64 | .hljs-doctag,
65 | .hljs-title,
66 | .hljs-section,
67 | .hljs-type,
68 | .hljs-selector-id {
69 | font-weight: bold;
70 | }
71 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/darcula.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Darcula color scheme from the JetBrains family of IDEs
4 |
5 | */
6 |
7 |
8 | .hljs {
9 | display: block;
10 | overflow-x: auto;
11 | padding: 0.5em;
12 | background: #2b2b2b;
13 | }
14 |
15 | .hljs {
16 | color: #bababa;
17 | }
18 |
19 | .hljs-strong,
20 | .hljs-emphasis {
21 | color: #a8a8a2;
22 | }
23 |
24 | .hljs-bullet,
25 | .hljs-quote,
26 | .hljs-link,
27 | .hljs-number,
28 | .hljs-regexp,
29 | .hljs-literal {
30 | color: #6896ba;
31 | }
32 |
33 | .hljs-code,
34 | .hljs-selector-class {
35 | color: #a6e22e;
36 | }
37 |
38 | .hljs-emphasis {
39 | font-style: italic;
40 | }
41 |
42 | .hljs-keyword,
43 | .hljs-selector-tag,
44 | .hljs-section,
45 | .hljs-attribute,
46 | .hljs-name,
47 | .hljs-variable {
48 | color: #cb7832;
49 | }
50 |
51 | .hljs-params {
52 | color: #b9b9b9;
53 | }
54 |
55 | .hljs-string {
56 | color: #6a8759;
57 | }
58 |
59 | .hljs-subst,
60 | .hljs-type,
61 | .hljs-built_in,
62 | .hljs-builtin-name,
63 | .hljs-symbol,
64 | .hljs-selector-id,
65 | .hljs-selector-attr,
66 | .hljs-selector-pseudo,
67 | .hljs-template-tag,
68 | .hljs-template-variable,
69 | .hljs-addition {
70 | color: #e0c46c;
71 | }
72 |
73 | .hljs-comment,
74 | .hljs-deletion,
75 | .hljs-meta {
76 | color: #7f7f7f;
77 | }
78 |
--------------------------------------------------------------------------------
/src/app/home/home-page/home-page.component.scss:
--------------------------------------------------------------------------------
1 | clr-icon {
2 | color: #48960c;
3 | }
4 | section {
5 | position: relative;
6 | margin-top: 0;
7 | padding-top: 60px;
8 | padding-bottom: 72px;
9 | max-width: 1248px;
10 | width: 100%;
11 | margin: 0 auto;
12 | padding-top: 60px;
13 | padding-bottom: 72px;
14 | }
15 | .jumbo {
16 | height: 596px;
17 | h1 {
18 | font-size: 64px;
19 | margin-top: -6px;
20 | font-weight: 200;
21 | letter-spacing: -0.02em;
22 | line-height: 72px;
23 | font-size: 64px;
24 | margin-bottom: 12px;
25 | }
26 | clr-icon {
27 | position: absolute;
28 | right: 1em;
29 | bottom: 0;
30 | }
31 | }
32 | .card {
33 | background-color: #fff;
34 | width: 100%;
35 | text-align: center;
36 | padding: 0 0 24px;
37 | border-radius: 3px;
38 | margin-top: -168px;
39 | border: 1px solid #d7d7d7;
40 | box-shadow: 0 3px 0 0 #d7d7d7;
41 | }
42 | .head {
43 | font-size: 18px;
44 | font-weight: 200;
45 | line-height: 36px;
46 | margin: 6px 5px;
47 | color: #000;
48 | max-width: 624px;
49 | }
50 | .btn {
51 | width: 168px;
52 | height: 48px;
53 | line-height: 47px;
54 | margin: 0 18px 0 0;
55 | font-weight: 400;
56 | }
57 | .home-hero-btn {
58 | margin: 36px 0 24px;
59 | padding-left: 5px;
60 | }
61 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/tomorrow.css:
--------------------------------------------------------------------------------
1 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
2 |
3 | /* Tomorrow Comment */
4 | .hljs-comment,
5 | .hljs-quote {
6 | color: #8e908c;
7 | }
8 |
9 | /* Tomorrow Red */
10 | .hljs-variable,
11 | .hljs-template-variable,
12 | .hljs-tag,
13 | .hljs-name,
14 | .hljs-selector-id,
15 | .hljs-selector-class,
16 | .hljs-regexp,
17 | .hljs-deletion {
18 | color: #c82829;
19 | }
20 |
21 | /* Tomorrow Orange */
22 | .hljs-number,
23 | .hljs-built_in,
24 | .hljs-builtin-name,
25 | .hljs-literal,
26 | .hljs-type,
27 | .hljs-params,
28 | .hljs-meta,
29 | .hljs-link {
30 | color: #f5871f;
31 | }
32 |
33 | /* Tomorrow Yellow */
34 | .hljs-attribute {
35 | color: #eab700;
36 | }
37 |
38 | /* Tomorrow Green */
39 | .hljs-string,
40 | .hljs-symbol,
41 | .hljs-bullet,
42 | .hljs-addition {
43 | color: #718c00;
44 | }
45 |
46 | /* Tomorrow Blue */
47 | .hljs-title,
48 | .hljs-section {
49 | color: #4271ae;
50 | }
51 |
52 | /* Tomorrow Purple */
53 | .hljs-keyword,
54 | .hljs-selector-tag {
55 | color: #8959a8;
56 | }
57 |
58 | .hljs {
59 | display: block;
60 | overflow-x: auto;
61 | background: white;
62 | color: #4d4d4c;
63 | padding: 0.5em;
64 | }
65 |
66 | .hljs-emphasis {
67 | font-style: italic;
68 | }
69 |
70 | .hljs-strong {
71 | font-weight: bold;
72 | }
73 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/zenburn.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov
4 | based on dark.css by Ivan Sagalaev
5 |
6 | */
7 |
8 | .hljs {
9 | display: block;
10 | overflow-x: auto;
11 | padding: 0.5em;
12 | background: #3f3f3f;
13 | color: #dcdcdc;
14 | }
15 |
16 | .hljs-keyword,
17 | .hljs-selector-tag,
18 | .hljs-tag {
19 | color: #e3ceab;
20 | }
21 |
22 | .hljs-template-tag {
23 | color: #dcdcdc;
24 | }
25 |
26 | .hljs-number {
27 | color: #8cd0d3;
28 | }
29 |
30 | .hljs-variable,
31 | .hljs-template-variable,
32 | .hljs-attribute {
33 | color: #efdcbc;
34 | }
35 |
36 | .hljs-literal {
37 | color: #efefaf;
38 | }
39 |
40 | .hljs-subst {
41 | color: #8f8f8f;
42 | }
43 |
44 | .hljs-title,
45 | .hljs-name,
46 | .hljs-selector-id,
47 | .hljs-selector-class,
48 | .hljs-section,
49 | .hljs-type {
50 | color: #efef8f;
51 | }
52 |
53 | .hljs-symbol,
54 | .hljs-bullet,
55 | .hljs-link {
56 | color: #dca3a3;
57 | }
58 |
59 | .hljs-deletion,
60 | .hljs-string,
61 | .hljs-built_in,
62 | .hljs-builtin-name {
63 | color: #cc9393;
64 | }
65 |
66 | .hljs-addition,
67 | .hljs-comment,
68 | .hljs-quote,
69 | .hljs-meta {
70 | color: #7f9f7f;
71 | }
72 |
73 |
74 | .hljs-emphasis {
75 | font-style: italic;
76 | }
77 |
78 | .hljs-strong {
79 | font-weight: bold;
80 | }
81 |
--------------------------------------------------------------------------------
/src/app/auth/auth-page/auth-page.component.ts:
--------------------------------------------------------------------------------
1 | import { ChangeDetectionStrategy, Component } from '@angular/core';
2 | import { ClrLoadingState } from '@clr/angular';
3 | import { WpAuth, WpAuthRef } from '@ngx-wordpress/core';
4 |
5 | @Component({
6 | selector: 'app-auth-page',
7 | templateUrl: './auth-page.component.html',
8 | styleUrls: ['./auth-page.component.scss'],
9 | changeDetection: ChangeDetectionStrategy.OnPush
10 | })
11 | export class AuthPageComponent {
12 | @WpAuth()
13 | auth: WpAuthRef;
14 |
15 | username = 'admin';
16 | password = 'xxxxxxxx';
17 |
18 | validateLoading: ClrLoadingState = ClrLoadingState.DEFAULT;
19 | signInLoading: ClrLoadingState = ClrLoadingState.DEFAULT;
20 |
21 | signIn() {
22 | this.signInLoading = ClrLoadingState.LOADING;
23 | this.auth.signIn(this.username, this.password).subscribe(res => {
24 | this.signInLoading = res.error
25 | ? ClrLoadingState.ERROR
26 | : ClrLoadingState.SUCCESS;
27 | });
28 | }
29 |
30 | validate() {
31 | this.validateLoading = ClrLoadingState.LOADING;
32 | this.auth.validateToken().subscribe(res => {
33 | this.validateLoading = res.error
34 | ? ClrLoadingState.ERROR
35 | : ClrLoadingState.SUCCESS;
36 | });
37 | }
38 |
39 | signOut() {
40 | this.auth.signOut().subscribe();
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/school-book.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | School Book style from goldblog.com.ua (c) Zaripov Yura
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 15px 0.5em 0.5em 30px;
11 | font-size: 11px;
12 | line-height:16px;
13 | }
14 |
15 | pre{
16 | background:#f6f6ae url(./school-book.png);
17 | border-top: solid 2px #d2e8b9;
18 | border-bottom: solid 1px #d2e8b9;
19 | }
20 |
21 | .hljs-keyword,
22 | .hljs-selector-tag,
23 | .hljs-literal {
24 | color:#005599;
25 | font-weight:bold;
26 | }
27 |
28 | .hljs,
29 | .hljs-subst {
30 | color: #3e5915;
31 | }
32 |
33 | .hljs-string,
34 | .hljs-title,
35 | .hljs-section,
36 | .hljs-type,
37 | .hljs-symbol,
38 | .hljs-bullet,
39 | .hljs-attribute,
40 | .hljs-built_in,
41 | .hljs-builtin-name,
42 | .hljs-addition,
43 | .hljs-variable,
44 | .hljs-template-tag,
45 | .hljs-template-variable,
46 | .hljs-link {
47 | color: #2c009f;
48 | }
49 |
50 | .hljs-comment,
51 | .hljs-quote,
52 | .hljs-deletion,
53 | .hljs-meta {
54 | color: #e60415;
55 | }
56 |
57 | .hljs-keyword,
58 | .hljs-selector-tag,
59 | .hljs-literal,
60 | .hljs-doctag,
61 | .hljs-title,
62 | .hljs-section,
63 | .hljs-type,
64 | .hljs-name,
65 | .hljs-selector-id,
66 | .hljs-strong {
67 | font-weight: bold;
68 | }
69 |
70 | .hljs-emphasis {
71 | font-style: italic;
72 | }
73 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/ocean.css:
--------------------------------------------------------------------------------
1 | /* Ocean Dark Theme */
2 | /* https://github.com/gavsiu */
3 | /* Original theme - https://github.com/chriskempson/base16 */
4 |
5 | /* Ocean Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #65737e;
9 | }
10 |
11 | /* Ocean Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-tag,
15 | .hljs-name,
16 | .hljs-selector-id,
17 | .hljs-selector-class,
18 | .hljs-regexp,
19 | .hljs-deletion {
20 | color: #bf616a;
21 | }
22 |
23 | /* Ocean Orange */
24 | .hljs-number,
25 | .hljs-built_in,
26 | .hljs-builtin-name,
27 | .hljs-literal,
28 | .hljs-type,
29 | .hljs-params,
30 | .hljs-meta,
31 | .hljs-link {
32 | color: #d08770;
33 | }
34 |
35 | /* Ocean Yellow */
36 | .hljs-attribute {
37 | color: #ebcb8b;
38 | }
39 |
40 | /* Ocean Green */
41 | .hljs-string,
42 | .hljs-symbol,
43 | .hljs-bullet,
44 | .hljs-addition {
45 | color: #a3be8c;
46 | }
47 |
48 | /* Ocean Blue */
49 | .hljs-title,
50 | .hljs-section {
51 | color: #8fa1b3;
52 | }
53 |
54 | /* Ocean Purple */
55 | .hljs-keyword,
56 | .hljs-selector-tag {
57 | color: #b48ead;
58 | }
59 |
60 | .hljs {
61 | display: block;
62 | overflow-x: auto;
63 | background: #2b303b;
64 | color: #c0c5ce;
65 | padding: 0.5em;
66 | }
67 |
68 | .hljs-emphasis {
69 | font-style: italic;
70 | }
71 |
72 | .hljs-strong {
73 | font-weight: bold;
74 | }
75 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/paraiso-dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | Paraíso (dark)
3 | Created by Jan T. Sott (http://github.com/idleberg)
4 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
5 | */
6 |
7 | /* Paraíso Comment */
8 | .hljs-comment,
9 | .hljs-quote {
10 | color: #8d8687;
11 | }
12 |
13 | /* Paraíso Red */
14 | .hljs-variable,
15 | .hljs-template-variable,
16 | .hljs-tag,
17 | .hljs-name,
18 | .hljs-selector-id,
19 | .hljs-selector-class,
20 | .hljs-regexp,
21 | .hljs-link,
22 | .hljs-meta {
23 | color: #ef6155;
24 | }
25 |
26 | /* Paraíso Orange */
27 | .hljs-number,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params,
33 | .hljs-deletion {
34 | color: #f99b15;
35 | }
36 |
37 | /* Paraíso Yellow */
38 | .hljs-title,
39 | .hljs-section,
40 | .hljs-attribute {
41 | color: #fec418;
42 | }
43 |
44 | /* Paraíso Green */
45 | .hljs-string,
46 | .hljs-symbol,
47 | .hljs-bullet,
48 | .hljs-addition {
49 | color: #48b685;
50 | }
51 |
52 | /* Paraíso Purple */
53 | .hljs-keyword,
54 | .hljs-selector-tag {
55 | color: #815ba4;
56 | }
57 |
58 | .hljs {
59 | display: block;
60 | overflow-x: auto;
61 | background: #2f1e2e;
62 | color: #a39e9b;
63 | padding: 0.5em;
64 | }
65 |
66 | .hljs-emphasis {
67 | font-style: italic;
68 | }
69 |
70 | .hljs-strong {
71 | font-weight: bold;
72 | }
73 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/paraiso-light.css:
--------------------------------------------------------------------------------
1 | /*
2 | Paraíso (light)
3 | Created by Jan T. Sott (http://github.com/idleberg)
4 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
5 | */
6 |
7 | /* Paraíso Comment */
8 | .hljs-comment,
9 | .hljs-quote {
10 | color: #776e71;
11 | }
12 |
13 | /* Paraíso Red */
14 | .hljs-variable,
15 | .hljs-template-variable,
16 | .hljs-tag,
17 | .hljs-name,
18 | .hljs-selector-id,
19 | .hljs-selector-class,
20 | .hljs-regexp,
21 | .hljs-link,
22 | .hljs-meta {
23 | color: #ef6155;
24 | }
25 |
26 | /* Paraíso Orange */
27 | .hljs-number,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params,
33 | .hljs-deletion {
34 | color: #f99b15;
35 | }
36 |
37 | /* Paraíso Yellow */
38 | .hljs-title,
39 | .hljs-section,
40 | .hljs-attribute {
41 | color: #fec418;
42 | }
43 |
44 | /* Paraíso Green */
45 | .hljs-string,
46 | .hljs-symbol,
47 | .hljs-bullet,
48 | .hljs-addition {
49 | color: #48b685;
50 | }
51 |
52 | /* Paraíso Purple */
53 | .hljs-keyword,
54 | .hljs-selector-tag {
55 | color: #815ba4;
56 | }
57 |
58 | .hljs {
59 | display: block;
60 | overflow-x: auto;
61 | background: #e7e9db;
62 | color: #4f424c;
63 | padding: 0.5em;
64 | }
65 |
66 | .hljs-emphasis {
67 | font-style: italic;
68 | }
69 |
70 | .hljs-strong {
71 | font-weight: bold;
72 | }
73 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/dracula.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Dracula Theme v1.2.0
4 |
5 | https://github.com/zenorocha/dracula-theme
6 |
7 | Copyright 2015, All rights reserved
8 |
9 | Code licensed under the MIT license
10 | http://zenorocha.mit-license.org
11 |
12 | @author Éverton Ribeiro
13 | @author Zeno Rocha
14 |
15 | */
16 |
17 | .hljs {
18 | display: block;
19 | overflow-x: auto;
20 | padding: 0.5em;
21 | background: #282a36;
22 | }
23 |
24 | .hljs-keyword,
25 | .hljs-selector-tag,
26 | .hljs-literal,
27 | .hljs-section,
28 | .hljs-link {
29 | color: #8be9fd;
30 | }
31 |
32 | .hljs-function .hljs-keyword {
33 | color: #ff79c6;
34 | }
35 |
36 | .hljs,
37 | .hljs-subst {
38 | color: #f8f8f2;
39 | }
40 |
41 | .hljs-string,
42 | .hljs-title,
43 | .hljs-name,
44 | .hljs-type,
45 | .hljs-attribute,
46 | .hljs-symbol,
47 | .hljs-bullet,
48 | .hljs-addition,
49 | .hljs-variable,
50 | .hljs-template-tag,
51 | .hljs-template-variable {
52 | color: #f1fa8c;
53 | }
54 |
55 | .hljs-comment,
56 | .hljs-quote,
57 | .hljs-deletion,
58 | .hljs-meta {
59 | color: #6272a4;
60 | }
61 |
62 | .hljs-keyword,
63 | .hljs-selector-tag,
64 | .hljs-literal,
65 | .hljs-title,
66 | .hljs-section,
67 | .hljs-doctag,
68 | .hljs-type,
69 | .hljs-name,
70 | .hljs-strong {
71 | font-weight: bold;
72 | }
73 |
74 | .hljs-emphasis {
75 | font-style: italic;
76 | }
77 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/qtcreator_dark.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Qt Creator dark color scheme
4 |
5 | */
6 |
7 |
8 | .hljs {
9 | display: block;
10 | overflow-x: auto;
11 | padding: 0.5em;
12 | background: #000000;
13 | }
14 |
15 | .hljs,
16 | .hljs-subst,
17 | .hljs-tag,
18 | .hljs-title {
19 | color: #aaaaaa;
20 | }
21 |
22 | .hljs-strong,
23 | .hljs-emphasis {
24 | color: #a8a8a2;
25 | }
26 |
27 | .hljs-bullet,
28 | .hljs-quote,
29 | .hljs-number,
30 | .hljs-regexp,
31 | .hljs-literal {
32 | color: #ff55ff;
33 | }
34 |
35 | .hljs-code
36 | .hljs-selector-class {
37 | color: #aaaaff;
38 | }
39 |
40 | .hljs-emphasis,
41 | .hljs-stronge,
42 | .hljs-type {
43 | font-style: italic;
44 | }
45 |
46 | .hljs-keyword,
47 | .hljs-selector-tag,
48 | .hljs-function,
49 | .hljs-section,
50 | .hljs-symbol,
51 | .hljs-name {
52 | color: #ffff55;
53 | }
54 |
55 | .hljs-attribute {
56 | color: #ff5555;
57 | }
58 |
59 | .hljs-variable,
60 | .hljs-params,
61 | .hljs-class .hljs-title {
62 | color: #8888ff;
63 | }
64 |
65 | .hljs-string,
66 | .hljs-selector-id,
67 | .hljs-selector-attr,
68 | .hljs-selector-pseudo,
69 | .hljs-type,
70 | .hljs-built_in,
71 | .hljs-builtin-name,
72 | .hljs-template-tag,
73 | .hljs-template-variable,
74 | .hljs-addition,
75 | .hljs-link {
76 | color: #ff55ff;
77 | }
78 |
79 | .hljs-comment,
80 | .hljs-meta,
81 | .hljs-deletion {
82 | color: #55ffff;
83 | }
84 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/qtcreator_light.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Qt Creator light color scheme
4 |
5 | */
6 |
7 |
8 | .hljs {
9 | display: block;
10 | overflow-x: auto;
11 | padding: 0.5em;
12 | background: #ffffff;
13 | }
14 |
15 | .hljs,
16 | .hljs-subst,
17 | .hljs-tag,
18 | .hljs-title {
19 | color: #000000;
20 | }
21 |
22 | .hljs-strong,
23 | .hljs-emphasis {
24 | color: #000000;
25 | }
26 |
27 | .hljs-bullet,
28 | .hljs-quote,
29 | .hljs-number,
30 | .hljs-regexp,
31 | .hljs-literal {
32 | color: #000080;
33 | }
34 |
35 | .hljs-code
36 | .hljs-selector-class {
37 | color: #800080;
38 | }
39 |
40 | .hljs-emphasis,
41 | .hljs-stronge,
42 | .hljs-type {
43 | font-style: italic;
44 | }
45 |
46 | .hljs-keyword,
47 | .hljs-selector-tag,
48 | .hljs-function,
49 | .hljs-section,
50 | .hljs-symbol,
51 | .hljs-name {
52 | color: #808000;
53 | }
54 |
55 | .hljs-attribute {
56 | color: #800000;
57 | }
58 |
59 | .hljs-variable,
60 | .hljs-params,
61 | .hljs-class .hljs-title {
62 | color: #0055AF;
63 | }
64 |
65 | .hljs-string,
66 | .hljs-selector-id,
67 | .hljs-selector-attr,
68 | .hljs-selector-pseudo,
69 | .hljs-type,
70 | .hljs-built_in,
71 | .hljs-builtin-name,
72 | .hljs-template-tag,
73 | .hljs-template-variable,
74 | .hljs-addition,
75 | .hljs-link {
76 | color: #008000;
77 | }
78 |
79 | .hljs-comment,
80 | .hljs-meta,
81 | .hljs-deletion {
82 | color: #008000;
83 | }
84 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/rainbow.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Style with support for rainbow parens
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #474949;
12 | color: #d1d9e1;
13 | }
14 |
15 |
16 | .hljs-comment,
17 | .hljs-quote {
18 | color: #969896;
19 | font-style: italic;
20 | }
21 |
22 | .hljs-keyword,
23 | .hljs-selector-tag,
24 | .hljs-literal,
25 | .hljs-type,
26 | .hljs-addition {
27 | color: #cc99cc;
28 | }
29 |
30 | .hljs-number,
31 | .hljs-selector-attr,
32 | .hljs-selector-pseudo {
33 | color: #f99157;
34 | }
35 |
36 | .hljs-string,
37 | .hljs-doctag,
38 | .hljs-regexp {
39 | color: #8abeb7;
40 | }
41 |
42 | .hljs-title,
43 | .hljs-name,
44 | .hljs-section,
45 | .hljs-built_in {
46 | color: #b5bd68;
47 | }
48 |
49 | .hljs-variable,
50 | .hljs-template-variable,
51 | .hljs-selector-id,
52 | .hljs-class .hljs-title {
53 | color: #ffcc66;
54 | }
55 |
56 | .hljs-section,
57 | .hljs-name,
58 | .hljs-strong {
59 | font-weight: bold;
60 | }
61 |
62 | .hljs-symbol,
63 | .hljs-bullet,
64 | .hljs-subst,
65 | .hljs-meta,
66 | .hljs-link {
67 | color: #f99157;
68 | }
69 |
70 | .hljs-deletion {
71 | color: #dc322f;
72 | }
73 |
74 | .hljs-formula {
75 | background: #eee8d5;
76 | }
77 |
78 | .hljs-attr,
79 | .hljs-attribute {
80 | color: #81a2be;
81 | }
82 |
83 | .hljs-emphasis {
84 | font-style: italic;
85 | }
86 |
--------------------------------------------------------------------------------
/projects/core/src/lib/cache/cache.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { HttpRequest, HttpResponse } from '@angular/common/http';
3 |
4 | export interface RequestCacheEntry {
5 | url: string;
6 | response: HttpResponse;
7 | lastRead: number;
8 | }
9 |
10 | export abstract class RequestCache {
11 | abstract get(req: HttpRequest): HttpResponse | undefined;
12 |
13 | abstract put(req: HttpRequest, response: HttpResponse): void;
14 | }
15 |
16 | const maxAge = 30000; // maximum cache age (ms)
17 |
18 | @Injectable()
19 | export class RequestCacheWithMap implements RequestCache {
20 | cache = new Map();
21 |
22 | get(req: HttpRequest): HttpResponse | undefined {
23 | const url = req.urlWithParams;
24 | const cached = this.cache.get(url);
25 |
26 | if (!cached) {
27 | return undefined;
28 | }
29 | return cached.response;
30 | }
31 |
32 | put(req: HttpRequest, response: HttpResponse): void {
33 | const url = req.urlWithParams;
34 |
35 | const entry = {url, response, lastRead: Date.now()};
36 | this.cache.set(url, entry);
37 |
38 | // remove expired cache entries
39 | const expired = Date.now() - maxAge;
40 | this.cache.forEach((entry: any) => {
41 | if (entry.lastRead < expired) {
42 | this.cache.delete(entry.url);
43 | }
44 | });
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/kimbie.dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | Name: Kimbie (dark)
3 | Author: Jan T. Sott
4 | License: Creative Commons Attribution-ShareAlike 4.0 Unported License
5 | URL: https://github.com/idleberg/Kimbie-highlight.js
6 | */
7 |
8 | /* Kimbie Comment */
9 | .hljs-comment,
10 | .hljs-quote {
11 | color: #d6baad;
12 | }
13 |
14 | /* Kimbie Red */
15 | .hljs-variable,
16 | .hljs-template-variable,
17 | .hljs-tag,
18 | .hljs-name,
19 | .hljs-selector-id,
20 | .hljs-selector-class,
21 | .hljs-regexp,
22 | .hljs-meta {
23 | color: #dc3958;
24 | }
25 |
26 | /* Kimbie Orange */
27 | .hljs-number,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params,
33 | .hljs-deletion,
34 | .hljs-link {
35 | color: #f79a32;
36 | }
37 |
38 | /* Kimbie Yellow */
39 | .hljs-title,
40 | .hljs-section,
41 | .hljs-attribute {
42 | color: #f06431;
43 | }
44 |
45 | /* Kimbie Green */
46 | .hljs-string,
47 | .hljs-symbol,
48 | .hljs-bullet,
49 | .hljs-addition {
50 | color: #889b4a;
51 | }
52 |
53 | /* Kimbie Purple */
54 | .hljs-keyword,
55 | .hljs-selector-tag,
56 | .hljs-function {
57 | color: #98676a;
58 | }
59 |
60 | .hljs {
61 | display: block;
62 | overflow-x: auto;
63 | background: #221a0f;
64 | color: #d3af86;
65 | padding: 0.5em;
66 | }
67 |
68 | .hljs-emphasis {
69 | font-style: italic;
70 | }
71 |
72 | .hljs-strong {
73 | font-weight: bold;
74 | }
75 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/kimbie.light.css:
--------------------------------------------------------------------------------
1 | /*
2 | Name: Kimbie (light)
3 | Author: Jan T. Sott
4 | License: Creative Commons Attribution-ShareAlike 4.0 Unported License
5 | URL: https://github.com/idleberg/Kimbie-highlight.js
6 | */
7 |
8 | /* Kimbie Comment */
9 | .hljs-comment,
10 | .hljs-quote {
11 | color: #a57a4c;
12 | }
13 |
14 | /* Kimbie Red */
15 | .hljs-variable,
16 | .hljs-template-variable,
17 | .hljs-tag,
18 | .hljs-name,
19 | .hljs-selector-id,
20 | .hljs-selector-class,
21 | .hljs-regexp,
22 | .hljs-meta {
23 | color: #dc3958;
24 | }
25 |
26 | /* Kimbie Orange */
27 | .hljs-number,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params,
33 | .hljs-deletion,
34 | .hljs-link {
35 | color: #f79a32;
36 | }
37 |
38 | /* Kimbie Yellow */
39 | .hljs-title,
40 | .hljs-section,
41 | .hljs-attribute {
42 | color: #f06431;
43 | }
44 |
45 | /* Kimbie Green */
46 | .hljs-string,
47 | .hljs-symbol,
48 | .hljs-bullet,
49 | .hljs-addition {
50 | color: #889b4a;
51 | }
52 |
53 | /* Kimbie Purple */
54 | .hljs-keyword,
55 | .hljs-selector-tag,
56 | .hljs-function {
57 | color: #98676a;
58 | }
59 |
60 | .hljs {
61 | display: block;
62 | overflow-x: auto;
63 | background: #fbebd4;
64 | color: #84613d;
65 | padding: 0.5em;
66 | }
67 |
68 | .hljs-emphasis {
69 | font-style: italic;
70 | }
71 |
72 | .hljs-strong {
73 | font-weight: bold;
74 | }
75 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-dune-dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Dune Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Dune Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #999580;
9 | }
10 |
11 | /* Atelier-Dune Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #d73737;
23 | }
24 |
25 | /* Atelier-Dune Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #b65611;
34 | }
35 |
36 | /* Atelier-Dune Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #60ac39;
41 | }
42 |
43 | /* Atelier-Dune Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #6684e1;
47 | }
48 |
49 | /* Atelier-Dune Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #b854d4;
53 | }
54 |
55 | .hljs {
56 | display: block;
57 | overflow-x: auto;
58 | background: #20201d;
59 | color: #a6a28c;
60 | padding: 0.5em;
61 | }
62 |
63 | .hljs-emphasis {
64 | font-style: italic;
65 | }
66 |
67 | .hljs-strong {
68 | font-weight: bold;
69 | }
70 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/monokai-sublime.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #23241f;
12 | }
13 |
14 | .hljs,
15 | .hljs-tag,
16 | .hljs-subst {
17 | color: #f8f8f2;
18 | }
19 |
20 | .hljs-strong,
21 | .hljs-emphasis {
22 | color: #a8a8a2;
23 | }
24 |
25 | .hljs-bullet,
26 | .hljs-quote,
27 | .hljs-number,
28 | .hljs-regexp,
29 | .hljs-literal,
30 | .hljs-link {
31 | color: #ae81ff;
32 | }
33 |
34 | .hljs-code,
35 | .hljs-title,
36 | .hljs-section,
37 | .hljs-selector-class {
38 | color: #a6e22e;
39 | }
40 |
41 | .hljs-strong {
42 | font-weight: bold;
43 | }
44 |
45 | .hljs-emphasis {
46 | font-style: italic;
47 | }
48 |
49 | .hljs-keyword,
50 | .hljs-selector-tag,
51 | .hljs-name,
52 | .hljs-attr {
53 | color: #f92672;
54 | }
55 |
56 | .hljs-symbol,
57 | .hljs-attribute {
58 | color: #66d9ef;
59 | }
60 |
61 | .hljs-params,
62 | .hljs-class .hljs-title {
63 | color: #f8f8f2;
64 | }
65 |
66 | .hljs-string,
67 | .hljs-type,
68 | .hljs-built_in,
69 | .hljs-builtin-name,
70 | .hljs-selector-id,
71 | .hljs-selector-attr,
72 | .hljs-selector-pseudo,
73 | .hljs-addition,
74 | .hljs-variable,
75 | .hljs-template-variable {
76 | color: #e6db74;
77 | }
78 |
79 | .hljs-comment,
80 | .hljs-deletion,
81 | .hljs-meta {
82 | color: #75715e;
83 | }
84 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-dune-light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Dune Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Dune Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #7d7a68;
9 | }
10 |
11 | /* Atelier-Dune Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #d73737;
23 | }
24 |
25 | /* Atelier-Dune Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #b65611;
34 | }
35 |
36 | /* Atelier-Dune Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #60ac39;
41 | }
42 |
43 | /* Atelier-Dune Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #6684e1;
47 | }
48 |
49 | /* Atelier-Dune Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #b854d4;
53 | }
54 |
55 | .hljs {
56 | display: block;
57 | overflow-x: auto;
58 | background: #fefbec;
59 | color: #6e6b5e;
60 | padding: 0.5em;
61 | }
62 |
63 | .hljs-emphasis {
64 | font-style: italic;
65 | }
66 |
67 | .hljs-strong {
68 | font-weight: bold;
69 | }
70 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-heath-dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Heath Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Heath Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #9e8f9e;
9 | }
10 |
11 | /* Atelier-Heath Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #ca402b;
23 | }
24 |
25 | /* Atelier-Heath Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #a65926;
34 | }
35 |
36 | /* Atelier-Heath Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #918b3b;
41 | }
42 |
43 | /* Atelier-Heath Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #516aec;
47 | }
48 |
49 | /* Atelier-Heath Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #7b59c0;
53 | }
54 |
55 | .hljs {
56 | display: block;
57 | overflow-x: auto;
58 | background: #1b181b;
59 | color: #ab9bab;
60 | padding: 0.5em;
61 | }
62 |
63 | .hljs-emphasis {
64 | font-style: italic;
65 | }
66 |
67 | .hljs-strong {
68 | font-weight: bold;
69 | }
70 |
--------------------------------------------------------------------------------
/projects/core/src/lib/wordpress.module.ts:
--------------------------------------------------------------------------------
1 | import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';
2 | import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
3 |
4 | import { WordPress } from './wordpress.service';
5 | // Avoid circular dependency error by NOT using barrel imports.
6 | import { JwtInterceptor } from './jwt/jwt.interceptor';
7 | import { RequestCache, RequestCacheWithMap } from './cache/cache.service';
8 | import { CachingInterceptor } from './cache/cache.interceptor';
9 | import { WP_CONFIG, WpConfig } from './interfaces/wp-config.interface';
10 |
11 | @NgModule({
12 | imports: [
13 | HttpClientModule
14 | ]
15 | })
16 | export class WordPressModule {
17 |
18 | constructor(@Optional() @SkipSelf() parentModule: WordPressModule, wp: WordPress) {
19 | if (parentModule) {
20 | throw new Error('WordPressModule is already loaded. It should only be imported in your application\'s main module.');
21 | }
22 | }
23 |
24 | static forRoot(config?: WpConfig): ModuleWithProviders {
25 | return {
26 | ngModule: WordPressModule,
27 | providers: [
28 | {provide: WP_CONFIG, useValue: config},
29 | {provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true},
30 | {provide: RequestCache, useClass: RequestCacheWithMap},
31 | {provide: HTTP_INTERCEPTORS, useClass: CachingInterceptor, multi: true}
32 | ]
33 | };
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-heath-light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Heath Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Heath Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #776977;
9 | }
10 |
11 | /* Atelier-Heath Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #ca402b;
23 | }
24 |
25 | /* Atelier-Heath Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #a65926;
34 | }
35 |
36 | /* Atelier-Heath Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #918b3b;
41 | }
42 |
43 | /* Atelier-Heath Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #516aec;
47 | }
48 |
49 | /* Atelier-Heath Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #7b59c0;
53 | }
54 |
55 | .hljs {
56 | display: block;
57 | overflow-x: auto;
58 | background: #f7f3f7;
59 | color: #695d69;
60 | padding: 0.5em;
61 | }
62 |
63 | .hljs-emphasis {
64 | font-style: italic;
65 | }
66 |
67 | .hljs-strong {
68 | font-weight: bold;
69 | }
70 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-forest-dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Forest Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Forest Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #9c9491;
9 | }
10 |
11 | /* Atelier-Forest Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #f22c40;
23 | }
24 |
25 | /* Atelier-Forest Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #df5320;
34 | }
35 |
36 | /* Atelier-Forest Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #7b9726;
41 | }
42 |
43 | /* Atelier-Forest Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #407ee7;
47 | }
48 |
49 | /* Atelier-Forest Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #6666ea;
53 | }
54 |
55 | .hljs {
56 | display: block;
57 | overflow-x: auto;
58 | background: #1b1918;
59 | color: #a8a19f;
60 | padding: 0.5em;
61 | }
62 |
63 | .hljs-emphasis {
64 | font-style: italic;
65 | }
66 |
67 | .hljs-strong {
68 | font-weight: bold;
69 | }
70 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-forest-light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Forest Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Forest Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #766e6b;
9 | }
10 |
11 | /* Atelier-Forest Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #f22c40;
23 | }
24 |
25 | /* Atelier-Forest Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #df5320;
34 | }
35 |
36 | /* Atelier-Forest Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #7b9726;
41 | }
42 |
43 | /* Atelier-Forest Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #407ee7;
47 | }
48 |
49 | /* Atelier-Forest Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #6666ea;
53 | }
54 |
55 | .hljs {
56 | display: block;
57 | overflow-x: auto;
58 | background: #f1efee;
59 | color: #68615e;
60 | padding: 0.5em;
61 | }
62 |
63 | .hljs-emphasis {
64 | font-style: italic;
65 | }
66 |
67 | .hljs-strong {
68 | font-weight: bold;
69 | }
70 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/tomorrow-night-bright.css:
--------------------------------------------------------------------------------
1 | /* Tomorrow Night Bright Theme */
2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
3 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
4 |
5 | /* Tomorrow Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #969896;
9 | }
10 |
11 | /* Tomorrow Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-tag,
15 | .hljs-name,
16 | .hljs-selector-id,
17 | .hljs-selector-class,
18 | .hljs-regexp,
19 | .hljs-deletion {
20 | color: #d54e53;
21 | }
22 |
23 | /* Tomorrow Orange */
24 | .hljs-number,
25 | .hljs-built_in,
26 | .hljs-builtin-name,
27 | .hljs-literal,
28 | .hljs-type,
29 | .hljs-params,
30 | .hljs-meta,
31 | .hljs-link {
32 | color: #e78c45;
33 | }
34 |
35 | /* Tomorrow Yellow */
36 | .hljs-attribute {
37 | color: #e7c547;
38 | }
39 |
40 | /* Tomorrow Green */
41 | .hljs-string,
42 | .hljs-symbol,
43 | .hljs-bullet,
44 | .hljs-addition {
45 | color: #b9ca4a;
46 | }
47 |
48 | /* Tomorrow Blue */
49 | .hljs-title,
50 | .hljs-section {
51 | color: #7aa6da;
52 | }
53 |
54 | /* Tomorrow Purple */
55 | .hljs-keyword,
56 | .hljs-selector-tag {
57 | color: #c397d8;
58 | }
59 |
60 | .hljs {
61 | display: block;
62 | overflow-x: auto;
63 | background: black;
64 | color: #eaeaea;
65 | padding: 0.5em;
66 | }
67 |
68 | .hljs-emphasis {
69 | font-style: italic;
70 | }
71 |
72 | .hljs-strong {
73 | font-weight: bold;
74 | }
75 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/tomorrow-night-eighties.css:
--------------------------------------------------------------------------------
1 | /* Tomorrow Night Eighties Theme */
2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
3 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
4 |
5 | /* Tomorrow Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #999999;
9 | }
10 |
11 | /* Tomorrow Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-tag,
15 | .hljs-name,
16 | .hljs-selector-id,
17 | .hljs-selector-class,
18 | .hljs-regexp,
19 | .hljs-deletion {
20 | color: #f2777a;
21 | }
22 |
23 | /* Tomorrow Orange */
24 | .hljs-number,
25 | .hljs-built_in,
26 | .hljs-builtin-name,
27 | .hljs-literal,
28 | .hljs-type,
29 | .hljs-params,
30 | .hljs-meta,
31 | .hljs-link {
32 | color: #f99157;
33 | }
34 |
35 | /* Tomorrow Yellow */
36 | .hljs-attribute {
37 | color: #ffcc66;
38 | }
39 |
40 | /* Tomorrow Green */
41 | .hljs-string,
42 | .hljs-symbol,
43 | .hljs-bullet,
44 | .hljs-addition {
45 | color: #99cc99;
46 | }
47 |
48 | /* Tomorrow Blue */
49 | .hljs-title,
50 | .hljs-section {
51 | color: #6699cc;
52 | }
53 |
54 | /* Tomorrow Purple */
55 | .hljs-keyword,
56 | .hljs-selector-tag {
57 | color: #cc99cc;
58 | }
59 |
60 | .hljs {
61 | display: block;
62 | overflow-x: auto;
63 | background: #2d2d2d;
64 | color: #cccccc;
65 | padding: 0.5em;
66 | }
67 |
68 | .hljs-emphasis {
69 | font-style: italic;
70 | }
71 |
72 | .hljs-strong {
73 | font-weight: bold;
74 | }
75 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-seaside-dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Seaside Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Seaside Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #809980;
9 | }
10 |
11 | /* Atelier-Seaside Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #e6193c;
23 | }
24 |
25 | /* Atelier-Seaside Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #87711d;
34 | }
35 |
36 | /* Atelier-Seaside Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #29a329;
41 | }
42 |
43 | /* Atelier-Seaside Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #3d62f5;
47 | }
48 |
49 | /* Atelier-Seaside Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #ad2bee;
53 | }
54 |
55 | .hljs {
56 | display: block;
57 | overflow-x: auto;
58 | background: #131513;
59 | color: #8ca68c;
60 | padding: 0.5em;
61 | }
62 |
63 | .hljs-emphasis {
64 | font-style: italic;
65 | }
66 |
67 | .hljs-strong {
68 | font-weight: bold;
69 | }
70 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-seaside-light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Seaside Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Seaside Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #687d68;
9 | }
10 |
11 | /* Atelier-Seaside Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #e6193c;
23 | }
24 |
25 | /* Atelier-Seaside Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #87711d;
34 | }
35 |
36 | /* Atelier-Seaside Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #29a329;
41 | }
42 |
43 | /* Atelier-Seaside Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #3d62f5;
47 | }
48 |
49 | /* Atelier-Seaside Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #ad2bee;
53 | }
54 |
55 | .hljs {
56 | display: block;
57 | overflow-x: auto;
58 | background: #f4fbf4;
59 | color: #5e6e5e;
60 | padding: 0.5em;
61 | }
62 |
63 | .hljs-emphasis {
64 | font-style: italic;
65 | }
66 |
67 | .hljs-strong {
68 | font-weight: bold;
69 | }
70 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/hopscotch.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Hopscotch
3 | * by Jan T. Sott
4 | * https://github.com/idleberg/Hopscotch
5 | *
6 | * This work is licensed under the Creative Commons CC0 1.0 Universal License
7 | */
8 |
9 | /* Comment */
10 | .hljs-comment,
11 | .hljs-quote {
12 | color: #989498;
13 | }
14 |
15 | /* Red */
16 | .hljs-variable,
17 | .hljs-template-variable,
18 | .hljs-attribute,
19 | .hljs-tag,
20 | .hljs-name,
21 | .hljs-selector-id,
22 | .hljs-selector-class,
23 | .hljs-regexp,
24 | .hljs-link,
25 | .hljs-deletion {
26 | color: #dd464c;
27 | }
28 |
29 | /* Orange */
30 | .hljs-number,
31 | .hljs-built_in,
32 | .hljs-builtin-name,
33 | .hljs-literal,
34 | .hljs-type,
35 | .hljs-params {
36 | color: #fd8b19;
37 | }
38 |
39 | /* Yellow */
40 | .hljs-class .hljs-title {
41 | color: #fdcc59;
42 | }
43 |
44 | /* Green */
45 | .hljs-string,
46 | .hljs-symbol,
47 | .hljs-bullet,
48 | .hljs-addition {
49 | color: #8fc13e;
50 | }
51 |
52 | /* Aqua */
53 | .hljs-meta {
54 | color: #149b93;
55 | }
56 |
57 | /* Blue */
58 | .hljs-function,
59 | .hljs-section,
60 | .hljs-title {
61 | color: #1290bf;
62 | }
63 |
64 | /* Purple */
65 | .hljs-keyword,
66 | .hljs-selector-tag {
67 | color: #c85e7c;
68 | }
69 |
70 | .hljs {
71 | display: block;
72 | background: #322931;
73 | color: #b9b5b8;
74 | padding: 0.5em;
75 | }
76 |
77 | .hljs-emphasis {
78 | font-style: italic;
79 | }
80 |
81 | .hljs-strong {
82 | font-weight: bold;
83 | }
84 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-lakeside-dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Lakeside Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Lakeside Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #7195a8;
9 | }
10 |
11 | /* Atelier-Lakeside Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #d22d72;
23 | }
24 |
25 | /* Atelier-Lakeside Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #935c25;
34 | }
35 |
36 | /* Atelier-Lakeside Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #568c3b;
41 | }
42 |
43 | /* Atelier-Lakeside Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #257fad;
47 | }
48 |
49 | /* Atelier-Lakeside Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #6b6bb8;
53 | }
54 |
55 | .hljs {
56 | display: block;
57 | overflow-x: auto;
58 | background: #161b1d;
59 | color: #7ea2b4;
60 | padding: 0.5em;
61 | }
62 |
63 | .hljs-emphasis {
64 | font-style: italic;
65 | }
66 |
67 | .hljs-strong {
68 | font-weight: bold;
69 | }
70 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-lakeside-light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Lakeside Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Lakeside Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #5a7b8c;
9 | }
10 |
11 | /* Atelier-Lakeside Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #d22d72;
23 | }
24 |
25 | /* Atelier-Lakeside Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #935c25;
34 | }
35 |
36 | /* Atelier-Lakeside Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #568c3b;
41 | }
42 |
43 | /* Atelier-Lakeside Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #257fad;
47 | }
48 |
49 | /* Atelier-Lakeside Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #6b6bb8;
53 | }
54 |
55 | .hljs {
56 | display: block;
57 | overflow-x: auto;
58 | background: #ebf8ff;
59 | color: #516d7b;
60 | padding: 0.5em;
61 | }
62 |
63 | .hljs-emphasis {
64 | font-style: italic;
65 | }
66 |
67 | .hljs-strong {
68 | font-weight: bold;
69 | }
70 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/arduino-light.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Arduino® Light Theme - Stefania Mellai
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #FFFFFF;
12 | }
13 |
14 | .hljs,
15 | .hljs-subst {
16 | color: #434f54;
17 | }
18 |
19 | .hljs-keyword,
20 | .hljs-attribute,
21 | .hljs-selector-tag,
22 | .hljs-doctag,
23 | .hljs-name {
24 | color: #00979D;
25 | }
26 |
27 | .hljs-built_in,
28 | .hljs-literal,
29 | .hljs-bullet,
30 | .hljs-code,
31 | .hljs-addition {
32 | color: #D35400;
33 | }
34 |
35 | .hljs-regexp,
36 | .hljs-symbol,
37 | .hljs-variable,
38 | .hljs-template-variable,
39 | .hljs-link,
40 | .hljs-selector-attr,
41 | .hljs-selector-pseudo {
42 | color: #00979D;
43 | }
44 |
45 | .hljs-type,
46 | .hljs-string,
47 | .hljs-selector-id,
48 | .hljs-selector-class,
49 | .hljs-quote,
50 | .hljs-template-tag,
51 | .hljs-deletion {
52 | color: #005C5F;
53 | }
54 |
55 | .hljs-title,
56 | .hljs-section {
57 | color: #880000;
58 | font-weight: bold;
59 | }
60 |
61 | .hljs-comment {
62 | color: rgba(149,165,166,.8);
63 | }
64 |
65 | .hljs-meta-keyword {
66 | color: #728E00;
67 | }
68 |
69 | .hljs-meta {
70 | color: #728E00;
71 | color: #434f54;
72 | }
73 |
74 | .hljs-emphasis {
75 | font-style: italic;
76 | }
77 |
78 | .hljs-strong {
79 | font-weight: bold;
80 | }
81 |
82 | .hljs-function {
83 | color: #728E00;
84 | }
85 |
86 | .hljs-number {
87 | color: #8A7B52;
88 | }
89 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/googlecode.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Google Code style (c) Aahan Krish
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: white;
12 | color: black;
13 | }
14 |
15 | .hljs-comment,
16 | .hljs-quote {
17 | color: #800;
18 | }
19 |
20 | .hljs-keyword,
21 | .hljs-selector-tag,
22 | .hljs-section,
23 | .hljs-title,
24 | .hljs-name {
25 | color: #008;
26 | }
27 |
28 | .hljs-variable,
29 | .hljs-template-variable {
30 | color: #660;
31 | }
32 |
33 | .hljs-string,
34 | .hljs-selector-attr,
35 | .hljs-selector-pseudo,
36 | .hljs-regexp {
37 | color: #080;
38 | }
39 |
40 | .hljs-literal,
41 | .hljs-symbol,
42 | .hljs-bullet,
43 | .hljs-meta,
44 | .hljs-number,
45 | .hljs-link {
46 | color: #066;
47 | }
48 |
49 | .hljs-title,
50 | .hljs-doctag,
51 | .hljs-type,
52 | .hljs-attr,
53 | .hljs-built_in,
54 | .hljs-builtin-name,
55 | .hljs-params {
56 | color: #606;
57 | }
58 |
59 | .hljs-attribute,
60 | .hljs-subst {
61 | color: #000;
62 | }
63 |
64 | .hljs-formula {
65 | background-color: #eee;
66 | font-style: italic;
67 | }
68 |
69 | .hljs-selector-id,
70 | .hljs-selector-class {
71 | color: #9B703F
72 | }
73 |
74 | .hljs-addition {
75 | background-color: #baeeba;
76 | }
77 |
78 | .hljs-deletion {
79 | background-color: #ffc8bd;
80 | }
81 |
82 | .hljs-doctag,
83 | .hljs-strong {
84 | font-weight: bold;
85 | }
86 |
87 | .hljs-emphasis {
88 | font-style: italic;
89 | }
90 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/xt256.css:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | xt256.css
4 |
5 | Contact: initbar [at] protonmail [dot] ch
6 | : github.com/initbar
7 | */
8 |
9 | .hljs {
10 | display: block;
11 | overflow-x: auto;
12 | color: #eaeaea;
13 | background: #000;
14 | padding: 0.5;
15 | }
16 |
17 | .hljs-subst {
18 | color: #eaeaea;
19 | }
20 |
21 | .hljs-emphasis {
22 | font-style: italic;
23 | }
24 |
25 | .hljs-strong {
26 | font-weight: bold;
27 | }
28 |
29 | .hljs-builtin-name,
30 | .hljs-type {
31 | color: #eaeaea;
32 | }
33 |
34 | .hljs-params {
35 | color: #da0000;
36 | }
37 |
38 | .hljs-literal,
39 | .hljs-number,
40 | .hljs-name {
41 | color: #ff0000;
42 | font-weight: bolder;
43 | }
44 |
45 | .hljs-comment {
46 | color: #969896;
47 | }
48 |
49 | .hljs-selector-id,
50 | .hljs-quote {
51 | color: #00ffff;
52 | }
53 |
54 | .hljs-template-variable,
55 | .hljs-variable,
56 | .hljs-title {
57 | color: #00ffff;
58 | font-weight: bold;
59 | }
60 |
61 | .hljs-selector-class,
62 | .hljs-keyword,
63 | .hljs-symbol {
64 | color: #fff000;
65 | }
66 |
67 | .hljs-string,
68 | .hljs-bullet {
69 | color: #00ff00;
70 | }
71 |
72 | .hljs-tag,
73 | .hljs-section {
74 | color: #000fff;
75 | }
76 |
77 | .hljs-selector-tag {
78 | color: #000fff;
79 | font-weight: bold;
80 | }
81 |
82 | .hljs-attribute,
83 | .hljs-built_in,
84 | .hljs-regexp,
85 | .hljs-link {
86 | color: #ff00ff;
87 | }
88 |
89 | .hljs-meta {
90 | color: #fff;
91 | font-weight: bolder;
92 | }
93 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-sulphurpool-dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Sulphurpool Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Sulphurpool Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #898ea4;
9 | }
10 |
11 | /* Atelier-Sulphurpool Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #c94922;
23 | }
24 |
25 | /* Atelier-Sulphurpool Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #c76b29;
34 | }
35 |
36 | /* Atelier-Sulphurpool Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #ac9739;
41 | }
42 |
43 | /* Atelier-Sulphurpool Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #3d8fd1;
47 | }
48 |
49 | /* Atelier-Sulphurpool Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #6679cc;
53 | }
54 |
55 | .hljs {
56 | display: block;
57 | overflow-x: auto;
58 | background: #202746;
59 | color: #979db4;
60 | padding: 0.5em;
61 | }
62 |
63 | .hljs-emphasis {
64 | font-style: italic;
65 | }
66 |
67 | .hljs-strong {
68 | font-weight: bold;
69 | }
70 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-sulphurpool-light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Sulphurpool Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Sulphurpool Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #6b7394;
9 | }
10 |
11 | /* Atelier-Sulphurpool Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #c94922;
23 | }
24 |
25 | /* Atelier-Sulphurpool Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #c76b29;
34 | }
35 |
36 | /* Atelier-Sulphurpool Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #ac9739;
41 | }
42 |
43 | /* Atelier-Sulphurpool Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #3d8fd1;
47 | }
48 |
49 | /* Atelier-Sulphurpool Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #6679cc;
53 | }
54 |
55 | .hljs {
56 | display: block;
57 | overflow-x: auto;
58 | background: #f5f7ff;
59 | color: #5e6687;
60 | padding: 0.5em;
61 | }
62 |
63 | .hljs-emphasis {
64 | font-style: italic;
65 | }
66 |
67 | .hljs-strong {
68 | font-weight: bold;
69 | }
70 |
--------------------------------------------------------------------------------
/src/app/home/home-page/home-page.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Ngx WordPress
4 |
UX guidelines, HTML/CSS framework, and Angular components working together to craft exceptional
5 | experiences
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
Designed for designers and built for developers
19 |
20 |
21 |
22 | Observable based library
23 |
24 |
25 | Decorators made it even simpler
26 |
27 |
28 | Caching requests support
29 |
30 |
31 | Pagination support
32 |
33 |
34 | JWT Authentication system
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/obsidian.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Obsidian style
3 | * ported by Alexander Marenin (http://github.com/ioncreature)
4 | */
5 |
6 | .hljs {
7 | display: block;
8 | overflow-x: auto;
9 | padding: 0.5em;
10 | background: #282b2e;
11 | }
12 |
13 | .hljs-keyword,
14 | .hljs-selector-tag,
15 | .hljs-literal,
16 | .hljs-selector-id {
17 | color: #93c763;
18 | }
19 |
20 | .hljs-number {
21 | color: #ffcd22;
22 | }
23 |
24 | .hljs {
25 | color: #e0e2e4;
26 | }
27 |
28 | .hljs-attribute {
29 | color: #668bb0;
30 | }
31 |
32 | .hljs-code,
33 | .hljs-class .hljs-title,
34 | .hljs-section {
35 | color: white;
36 | }
37 |
38 | .hljs-regexp,
39 | .hljs-link {
40 | color: #d39745;
41 | }
42 |
43 | .hljs-meta {
44 | color: #557182;
45 | }
46 |
47 | .hljs-tag,
48 | .hljs-name,
49 | .hljs-bullet,
50 | .hljs-subst,
51 | .hljs-emphasis,
52 | .hljs-type,
53 | .hljs-built_in,
54 | .hljs-selector-attr,
55 | .hljs-selector-pseudo,
56 | .hljs-addition,
57 | .hljs-variable,
58 | .hljs-template-tag,
59 | .hljs-template-variable {
60 | color: #8cbbad;
61 | }
62 |
63 | .hljs-string,
64 | .hljs-symbol {
65 | color: #ec7600;
66 | }
67 |
68 | .hljs-comment,
69 | .hljs-quote,
70 | .hljs-deletion {
71 | color: #818e96;
72 | }
73 |
74 | .hljs-selector-class {
75 | color: #A082BD
76 | }
77 |
78 | .hljs-keyword,
79 | .hljs-selector-tag,
80 | .hljs-literal,
81 | .hljs-doctag,
82 | .hljs-title,
83 | .hljs-section,
84 | .hljs-type,
85 | .hljs-name,
86 | .hljs-strong {
87 | font-weight: bold;
88 | }
89 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/foundation.css:
--------------------------------------------------------------------------------
1 | /*
2 | Description: Foundation 4 docs style for highlight.js
3 | Author: Dan Allen
4 | Website: http://foundation.zurb.com/docs/
5 | Version: 1.0
6 | Date: 2013-04-02
7 | */
8 |
9 | .hljs {
10 | display: block;
11 | overflow-x: auto;
12 | padding: 0.5em;
13 | background: #eee; color: black;
14 | }
15 |
16 | .hljs-link,
17 | .hljs-emphasis,
18 | .hljs-attribute,
19 | .hljs-addition {
20 | color: #070;
21 | }
22 |
23 | .hljs-emphasis {
24 | font-style: italic;
25 | }
26 |
27 | .hljs-strong,
28 | .hljs-string,
29 | .hljs-deletion {
30 | color: #d14;
31 | }
32 |
33 | .hljs-strong {
34 | font-weight: bold;
35 | }
36 |
37 | .hljs-quote,
38 | .hljs-comment {
39 | color: #998;
40 | font-style: italic;
41 | }
42 |
43 | .hljs-section,
44 | .hljs-title {
45 | color: #900;
46 | }
47 |
48 | .hljs-class .hljs-title,
49 | .hljs-type {
50 | color: #458;
51 | }
52 |
53 | .hljs-variable,
54 | .hljs-template-variable {
55 | color: #336699;
56 | }
57 |
58 | .hljs-bullet {
59 | color: #997700;
60 | }
61 |
62 | .hljs-meta {
63 | color: #3344bb;
64 | }
65 |
66 | .hljs-code,
67 | .hljs-number,
68 | .hljs-literal,
69 | .hljs-keyword,
70 | .hljs-selector-tag {
71 | color: #099;
72 | }
73 |
74 | .hljs-regexp {
75 | background-color: #fff0ff;
76 | color: #880088;
77 | }
78 |
79 | .hljs-symbol {
80 | color: #990073;
81 | }
82 |
83 | .hljs-tag,
84 | .hljs-name,
85 | .hljs-selector-id,
86 | .hljs-selector-class {
87 | color: #007700;
88 | }
89 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/tomorrow-night.css:
--------------------------------------------------------------------------------
1 | /* Tomorrow Night Theme */
2 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
3 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
4 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
5 |
6 | /* Tomorrow Comment */
7 | .hljs-comment,
8 | .hljs-quote {
9 | color: #969896;
10 | }
11 |
12 | /* Tomorrow Red */
13 | .hljs-variable,
14 | .hljs-template-variable,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-selector-id,
18 | .hljs-selector-class,
19 | .hljs-regexp,
20 | .hljs-deletion {
21 | color: #cc6666;
22 | }
23 |
24 | /* Tomorrow Orange */
25 | .hljs-number,
26 | .hljs-built_in,
27 | .hljs-builtin-name,
28 | .hljs-literal,
29 | .hljs-type,
30 | .hljs-params,
31 | .hljs-meta,
32 | .hljs-link {
33 | color: #de935f;
34 | }
35 |
36 | /* Tomorrow Yellow */
37 | .hljs-attribute {
38 | color: #f0c674;
39 | }
40 |
41 | /* Tomorrow Green */
42 | .hljs-string,
43 | .hljs-symbol,
44 | .hljs-bullet,
45 | .hljs-addition {
46 | color: #b5bd68;
47 | }
48 |
49 | /* Tomorrow Blue */
50 | .hljs-title,
51 | .hljs-section {
52 | color: #81a2be;
53 | }
54 |
55 | /* Tomorrow Purple */
56 | .hljs-keyword,
57 | .hljs-selector-tag {
58 | color: #b294bb;
59 | }
60 |
61 | .hljs {
62 | display: block;
63 | overflow-x: auto;
64 | background: #1d1f21;
65 | color: #c5c8c6;
66 | padding: 0.5em;
67 | }
68 |
69 | .hljs-emphasis {
70 | font-style: italic;
71 | }
72 |
73 | .hljs-strong {
74 | font-weight: bold;
75 | }
76 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/xcode.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | XCode style (c) Angel Garcia
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #fff;
12 | color: black;
13 | }
14 |
15 | .hljs-comment,
16 | .hljs-quote {
17 | color: #006a00;
18 | }
19 |
20 | .hljs-keyword,
21 | .hljs-selector-tag,
22 | .hljs-literal {
23 | color: #aa0d91;
24 | }
25 |
26 | .hljs-name {
27 | color: #008;
28 | }
29 |
30 | .hljs-variable,
31 | .hljs-template-variable {
32 | color: #660;
33 | }
34 |
35 | .hljs-string {
36 | color: #c41a16;
37 | }
38 |
39 | .hljs-regexp,
40 | .hljs-link {
41 | color: #080;
42 | }
43 |
44 | .hljs-title,
45 | .hljs-tag,
46 | .hljs-symbol,
47 | .hljs-bullet,
48 | .hljs-number,
49 | .hljs-meta {
50 | color: #1c00cf;
51 | }
52 |
53 | .hljs-section,
54 | .hljs-class .hljs-title,
55 | .hljs-type,
56 | .hljs-attr,
57 | .hljs-built_in,
58 | .hljs-builtin-name,
59 | .hljs-params {
60 | color: #5c2699;
61 | }
62 |
63 | .hljs-attribute,
64 | .hljs-subst {
65 | color: #000;
66 | }
67 |
68 | .hljs-formula {
69 | background-color: #eee;
70 | font-style: italic;
71 | }
72 |
73 | .hljs-addition {
74 | background-color: #baeeba;
75 | }
76 |
77 | .hljs-deletion {
78 | background-color: #ffc8bd;
79 | }
80 |
81 | .hljs-selector-id,
82 | .hljs-selector-class {
83 | color: #9b703f;
84 | }
85 |
86 | .hljs-doctag,
87 | .hljs-strong {
88 | font-weight: bold;
89 | }
90 |
91 | .hljs-emphasis {
92 | font-style: italic;
93 | }
94 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/tomorrow-night-blue.css:
--------------------------------------------------------------------------------
1 | /* Tomorrow Night Blue Theme */
2 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
3 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
4 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
5 |
6 | /* Tomorrow Comment */
7 | .hljs-comment,
8 | .hljs-quote {
9 | color: #7285b7;
10 | }
11 |
12 | /* Tomorrow Red */
13 | .hljs-variable,
14 | .hljs-template-variable,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-selector-id,
18 | .hljs-selector-class,
19 | .hljs-regexp,
20 | .hljs-deletion {
21 | color: #ff9da4;
22 | }
23 |
24 | /* Tomorrow Orange */
25 | .hljs-number,
26 | .hljs-built_in,
27 | .hljs-builtin-name,
28 | .hljs-literal,
29 | .hljs-type,
30 | .hljs-params,
31 | .hljs-meta,
32 | .hljs-link {
33 | color: #ffc58f;
34 | }
35 |
36 | /* Tomorrow Yellow */
37 | .hljs-attribute {
38 | color: #ffeead;
39 | }
40 |
41 | /* Tomorrow Green */
42 | .hljs-string,
43 | .hljs-symbol,
44 | .hljs-bullet,
45 | .hljs-addition {
46 | color: #d1f1a9;
47 | }
48 |
49 | /* Tomorrow Blue */
50 | .hljs-title,
51 | .hljs-section {
52 | color: #bbdaff;
53 | }
54 |
55 | /* Tomorrow Purple */
56 | .hljs-keyword,
57 | .hljs-selector-tag {
58 | color: #ebbbff;
59 | }
60 |
61 | .hljs {
62 | display: block;
63 | overflow-x: auto;
64 | background: #002451;
65 | color: white;
66 | padding: 0.5em;
67 | }
68 |
69 | .hljs-emphasis {
70 | font-style: italic;
71 | }
72 |
73 | .hljs-strong {
74 | font-weight: bold;
75 | }
76 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/pojoaque.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Pojoaque Style by Jason Tate
4 | http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html
5 | Based on Solarized Style from http://ethanschoonover.com/solarized
6 |
7 | */
8 |
9 | .hljs {
10 | display: block;
11 | overflow-x: auto;
12 | padding: 0.5em;
13 | color: #dccf8f;
14 | background: url(./pojoaque.jpg) repeat scroll left top #181914;
15 | }
16 |
17 | .hljs-comment,
18 | .hljs-quote {
19 | color: #586e75;
20 | font-style: italic;
21 | }
22 |
23 | .hljs-keyword,
24 | .hljs-selector-tag,
25 | .hljs-literal,
26 | .hljs-addition {
27 | color: #b64926;
28 | }
29 |
30 | .hljs-number,
31 | .hljs-string,
32 | .hljs-doctag,
33 | .hljs-regexp {
34 | color: #468966;
35 | }
36 |
37 | .hljs-title,
38 | .hljs-section,
39 | .hljs-built_in,
40 | .hljs-name {
41 | color: #ffb03b;
42 | }
43 |
44 | .hljs-variable,
45 | .hljs-template-variable,
46 | .hljs-class .hljs-title,
47 | .hljs-type,
48 | .hljs-tag {
49 | color: #b58900;
50 | }
51 |
52 | .hljs-attribute {
53 | color: #b89859;
54 | }
55 |
56 | .hljs-symbol,
57 | .hljs-bullet,
58 | .hljs-link,
59 | .hljs-subst,
60 | .hljs-meta {
61 | color: #cb4b16;
62 | }
63 |
64 | .hljs-deletion {
65 | color: #dc322f;
66 | }
67 |
68 | .hljs-selector-id,
69 | .hljs-selector-class {
70 | color: #d3a60c;
71 | }
72 |
73 | .hljs-formula {
74 | background: #073642;
75 | }
76 |
77 | .hljs-emphasis {
78 | font-style: italic;
79 | }
80 |
81 | .hljs-strong {
82 | font-weight: bold;
83 | }
84 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/solarized-dark.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #002b36;
12 | color: #839496;
13 | }
14 |
15 | .hljs-comment,
16 | .hljs-quote {
17 | color: #586e75;
18 | }
19 |
20 | /* Solarized Green */
21 | .hljs-keyword,
22 | .hljs-selector-tag,
23 | .hljs-addition {
24 | color: #859900;
25 | }
26 |
27 | /* Solarized Cyan */
28 | .hljs-number,
29 | .hljs-string,
30 | .hljs-meta .hljs-meta-string,
31 | .hljs-literal,
32 | .hljs-doctag,
33 | .hljs-regexp {
34 | color: #2aa198;
35 | }
36 |
37 | /* Solarized Blue */
38 | .hljs-title,
39 | .hljs-section,
40 | .hljs-name,
41 | .hljs-selector-id,
42 | .hljs-selector-class {
43 | color: #268bd2;
44 | }
45 |
46 | /* Solarized Yellow */
47 | .hljs-attribute,
48 | .hljs-attr,
49 | .hljs-variable,
50 | .hljs-template-variable,
51 | .hljs-class .hljs-title,
52 | .hljs-type {
53 | color: #b58900;
54 | }
55 |
56 | /* Solarized Orange */
57 | .hljs-symbol,
58 | .hljs-bullet,
59 | .hljs-subst,
60 | .hljs-meta,
61 | .hljs-meta .hljs-keyword,
62 | .hljs-selector-attr,
63 | .hljs-selector-pseudo,
64 | .hljs-link {
65 | color: #cb4b16;
66 | }
67 |
68 | /* Solarized Red */
69 | .hljs-built_in,
70 | .hljs-deletion {
71 | color: #dc322f;
72 | }
73 |
74 | .hljs-formula {
75 | background: #073642;
76 | }
77 |
78 | .hljs-emphasis {
79 | font-style: italic;
80 | }
81 |
82 | .hljs-strong {
83 | font-weight: bold;
84 | }
85 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/solarized-light.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #fdf6e3;
12 | color: #657b83;
13 | }
14 |
15 | .hljs-comment,
16 | .hljs-quote {
17 | color: #93a1a1;
18 | }
19 |
20 | /* Solarized Green */
21 | .hljs-keyword,
22 | .hljs-selector-tag,
23 | .hljs-addition {
24 | color: #859900;
25 | }
26 |
27 | /* Solarized Cyan */
28 | .hljs-number,
29 | .hljs-string,
30 | .hljs-meta .hljs-meta-string,
31 | .hljs-literal,
32 | .hljs-doctag,
33 | .hljs-regexp {
34 | color: #2aa198;
35 | }
36 |
37 | /* Solarized Blue */
38 | .hljs-title,
39 | .hljs-section,
40 | .hljs-name,
41 | .hljs-selector-id,
42 | .hljs-selector-class {
43 | color: #268bd2;
44 | }
45 |
46 | /* Solarized Yellow */
47 | .hljs-attribute,
48 | .hljs-attr,
49 | .hljs-variable,
50 | .hljs-template-variable,
51 | .hljs-class .hljs-title,
52 | .hljs-type {
53 | color: #b58900;
54 | }
55 |
56 | /* Solarized Orange */
57 | .hljs-symbol,
58 | .hljs-bullet,
59 | .hljs-subst,
60 | .hljs-meta,
61 | .hljs-meta .hljs-keyword,
62 | .hljs-selector-attr,
63 | .hljs-selector-pseudo,
64 | .hljs-link {
65 | color: #cb4b16;
66 | }
67 |
68 | /* Solarized Red */
69 | .hljs-built_in,
70 | .hljs-deletion {
71 | color: #dc322f;
72 | }
73 |
74 | .hljs-formula {
75 | background: #eee8d5;
76 | }
77 |
78 | .hljs-emphasis {
79 | font-style: italic;
80 | }
81 |
82 | .hljs-strong {
83 | font-weight: bold;
84 | }
85 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2006, Ivan Sagalaev
2 | All rights reserved.
3 | Redistribution and use in source and binary forms, with or without
4 | modification, are permitted provided that the following conditions are met:
5 |
6 | * Redistributions of source code must retain the above copyright
7 | notice, this list of conditions and the following disclaimer.
8 | * Redistributions in binary form must reproduce the above copyright
9 | notice, this list of conditions and the following disclaimer in the
10 | documentation and/or other materials provided with the distribution.
11 | * Neither the name of highlight.js nor the names of its contributors
12 | may be used to endorse or promote products derived from this software
13 | without specific prior written permission.
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
16 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
--------------------------------------------------------------------------------
/projects/core/src/lib/collection/wp-collection.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { HttpClient, HttpResponse } from '@angular/common/http';
3 | import { Observable } from 'rxjs';
4 | import { map } from 'rxjs/operators';
5 | import { serializeQuery } from '../utilities';
6 | import { WpCollectionState, WpQuery } from './wp-collection.interface';
7 |
8 | @Injectable({
9 | providedIn: 'root'
10 | })
11 | export class WpCollectionService {
12 |
13 | constructor(private http: HttpClient) {
14 | }
15 |
16 | /**
17 | * Fetch data from wp api
18 | */
19 | get(endpoint: string, query: WpQuery): Observable {
20 | const url = endpoint + '?' + serializeQuery(query);
21 | return this.http.get(url, {observe: 'response'}).pipe(
22 | map((res: HttpResponse) => this._onPaginate(res, query.page))
23 | );
24 | }
25 |
26 | /**
27 | * Get pagination data from response headers
28 | */
29 | private _onPaginate(res: HttpResponse, currentPage: number): WpCollectionState {
30 |
31 | /** convert headers props keys to lower case keys */
32 | const headers: any = res.headers.keys().reduce((c, k) => (c[k.toLowerCase()] = res.headers.get(k), c), {});
33 |
34 | const totalPages = +headers['x-wp-totalpages'];
35 | const totalObjects = +headers['x-wp-total'];
36 | return {
37 | data: res.body,
38 | pagination: {
39 | currentPage,
40 | totalPages,
41 | totalObjects,
42 | hasPrev: currentPage > 1,
43 | hasMore: currentPage < totalPages
44 | }
45 | };
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/docco.css:
--------------------------------------------------------------------------------
1 | /*
2 | Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars)
3 | */
4 |
5 | .hljs {
6 | display: block;
7 | overflow-x: auto;
8 | padding: 0.5em;
9 | color: #000;
10 | background: #f8f8ff;
11 | }
12 |
13 | .hljs-comment,
14 | .hljs-quote {
15 | color: #408080;
16 | font-style: italic;
17 | }
18 |
19 | .hljs-keyword,
20 | .hljs-selector-tag,
21 | .hljs-literal,
22 | .hljs-subst {
23 | color: #954121;
24 | }
25 |
26 | .hljs-number {
27 | color: #40a070;
28 | }
29 |
30 | .hljs-string,
31 | .hljs-doctag {
32 | color: #219161;
33 | }
34 |
35 | .hljs-selector-id,
36 | .hljs-selector-class,
37 | .hljs-section,
38 | .hljs-type {
39 | color: #19469d;
40 | }
41 |
42 | .hljs-params {
43 | color: #00f;
44 | }
45 |
46 | .hljs-title {
47 | color: #458;
48 | font-weight: bold;
49 | }
50 |
51 | .hljs-tag,
52 | .hljs-name,
53 | .hljs-attribute {
54 | color: #000080;
55 | font-weight: normal;
56 | }
57 |
58 | .hljs-variable,
59 | .hljs-template-variable {
60 | color: #008080;
61 | }
62 |
63 | .hljs-regexp,
64 | .hljs-link {
65 | color: #b68;
66 | }
67 |
68 | .hljs-symbol,
69 | .hljs-bullet {
70 | color: #990073;
71 | }
72 |
73 | .hljs-built_in,
74 | .hljs-builtin-name {
75 | color: #0086b3;
76 | }
77 |
78 | .hljs-meta {
79 | color: #999;
80 | font-weight: bold;
81 | }
82 |
83 | .hljs-deletion {
84 | background: #fdd;
85 | }
86 |
87 | .hljs-addition {
88 | background: #dfd;
89 | }
90 |
91 | .hljs-emphasis {
92 | font-style: italic;
93 | }
94 |
95 | .hljs-strong {
96 | font-weight: bold;
97 | }
98 |
--------------------------------------------------------------------------------
/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { BrowserModule } from '@angular/platform-browser';
2 | import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
3 | import { NgModule } from '@angular/core';
4 | import { FormsModule } from '@angular/forms';
5 | import { ClarityModule, ClrFormsNextModule } from '@clr/angular';
6 | import { HighlightModule } from 'ngx-highlightjs';
7 | import { NgProgressModule } from '@ngx-progressbar/core';
8 | import { NgProgressHttpModule } from '@ngx-progressbar/http';
9 | import { NgProgressRouterModule } from '@ngx-progressbar/router';
10 |
11 | import { WordPressModule } from '@ngx-wordpress/core';
12 |
13 | import { AppComponent } from './app.component';
14 | import { AppRoutingModule } from './app-routing.module';
15 | import { AlertsComponent } from './alerts/alerts.component';
16 | import { HeaderComponent } from './header/header.component';
17 | import { SidenavComponent } from './sidenav/sidenav.component';
18 |
19 | @NgModule({
20 | declarations: [
21 | AppComponent,
22 | HeaderComponent,
23 | SidenavComponent,
24 | AlertsComponent
25 | ],
26 | imports: [
27 | BrowserModule,
28 | FormsModule,
29 | AppRoutingModule,
30 | ClarityModule,
31 | ClrFormsNextModule,
32 | BrowserAnimationsModule,
33 | HighlightModule.forRoot(),
34 | NgProgressModule.forRoot(),
35 | NgProgressHttpModule.forRoot(),
36 | NgProgressRouterModule.forRoot(),
37 | WordPressModule.forRoot({
38 | baseUrl: 'https://wordpress-site.com',
39 | })
40 | ],
41 | providers: [],
42 | bootstrap: [AppComponent]
43 | })
44 | export class AppModule {
45 | }
46 |
47 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/idea.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Intellij Idea-like styling (c) Vasily Polovnyov
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | color: #000;
12 | background: #fff;
13 | }
14 |
15 | .hljs-subst,
16 | .hljs-title {
17 | font-weight: normal;
18 | color: #000;
19 | }
20 |
21 | .hljs-comment,
22 | .hljs-quote {
23 | color: #808080;
24 | font-style: italic;
25 | }
26 |
27 | .hljs-meta {
28 | color: #808000;
29 | }
30 |
31 | .hljs-tag {
32 | background: #efefef;
33 | }
34 |
35 | .hljs-section,
36 | .hljs-name,
37 | .hljs-literal,
38 | .hljs-keyword,
39 | .hljs-selector-tag,
40 | .hljs-type,
41 | .hljs-selector-id,
42 | .hljs-selector-class {
43 | font-weight: bold;
44 | color: #000080;
45 | }
46 |
47 | .hljs-attribute,
48 | .hljs-number,
49 | .hljs-regexp,
50 | .hljs-link {
51 | font-weight: bold;
52 | color: #0000ff;
53 | }
54 |
55 | .hljs-number,
56 | .hljs-regexp,
57 | .hljs-link {
58 | font-weight: normal;
59 | }
60 |
61 | .hljs-string {
62 | color: #008000;
63 | font-weight: bold;
64 | }
65 |
66 | .hljs-symbol,
67 | .hljs-bullet,
68 | .hljs-formula {
69 | color: #000;
70 | background: #d0eded;
71 | font-style: italic;
72 | }
73 |
74 | .hljs-doctag {
75 | text-decoration: underline;
76 | }
77 |
78 | .hljs-variable,
79 | .hljs-template-variable {
80 | color: #660e7a;
81 | }
82 |
83 | .hljs-addition {
84 | background: #baeeba;
85 | }
86 |
87 | .hljs-deletion {
88 | background: #ffc8bd;
89 | }
90 |
91 | .hljs-emphasis {
92 | font-style: italic;
93 | }
94 |
95 | .hljs-strong {
96 | font-weight: bold;
97 | }
98 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-cave-dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Cave Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Cave Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #7e7887;
9 | }
10 |
11 | /* Atelier-Cave Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-regexp,
16 | .hljs-link,
17 | .hljs-tag,
18 | .hljs-name,
19 | .hljs-selector-id,
20 | .hljs-selector-class {
21 | color: #be4678;
22 | }
23 |
24 | /* Atelier-Cave Orange */
25 | .hljs-number,
26 | .hljs-meta,
27 | .hljs-built_in,
28 | .hljs-builtin-name,
29 | .hljs-literal,
30 | .hljs-type,
31 | .hljs-params {
32 | color: #aa573c;
33 | }
34 |
35 | /* Atelier-Cave Green */
36 | .hljs-string,
37 | .hljs-symbol,
38 | .hljs-bullet {
39 | color: #2a9292;
40 | }
41 |
42 | /* Atelier-Cave Blue */
43 | .hljs-title,
44 | .hljs-section {
45 | color: #576ddb;
46 | }
47 |
48 | /* Atelier-Cave Purple */
49 | .hljs-keyword,
50 | .hljs-selector-tag {
51 | color: #955ae7;
52 | }
53 |
54 | .hljs-deletion,
55 | .hljs-addition {
56 | color: #19171c;
57 | display: inline-block;
58 | width: 100%;
59 | }
60 |
61 | .hljs-deletion {
62 | background-color: #be4678;
63 | }
64 |
65 | .hljs-addition {
66 | background-color: #2a9292;
67 | }
68 |
69 | .hljs {
70 | display: block;
71 | overflow-x: auto;
72 | background: #19171c;
73 | color: #8b8792;
74 | padding: 0.5em;
75 | }
76 |
77 | .hljs-emphasis {
78 | font-style: italic;
79 | }
80 |
81 | .hljs-strong {
82 | font-weight: bold;
83 | }
84 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-cave-light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Cave Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Cave Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #655f6d;
9 | }
10 |
11 | /* Atelier-Cave Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-name,
21 | .hljs-selector-id,
22 | .hljs-selector-class {
23 | color: #be4678;
24 | }
25 |
26 | /* Atelier-Cave Orange */
27 | .hljs-number,
28 | .hljs-meta,
29 | .hljs-built_in,
30 | .hljs-builtin-name,
31 | .hljs-literal,
32 | .hljs-type,
33 | .hljs-params {
34 | color: #aa573c;
35 | }
36 |
37 | /* Atelier-Cave Green */
38 | .hljs-string,
39 | .hljs-symbol,
40 | .hljs-bullet {
41 | color: #2a9292;
42 | }
43 |
44 | /* Atelier-Cave Blue */
45 | .hljs-title,
46 | .hljs-section {
47 | color: #576ddb;
48 | }
49 |
50 | /* Atelier-Cave Purple */
51 | .hljs-keyword,
52 | .hljs-selector-tag {
53 | color: #955ae7;
54 | }
55 |
56 | .hljs-deletion,
57 | .hljs-addition {
58 | color: #19171c;
59 | display: inline-block;
60 | width: 100%;
61 | }
62 |
63 | .hljs-deletion {
64 | background-color: #be4678;
65 | }
66 |
67 | .hljs-addition {
68 | background-color: #2a9292;
69 | }
70 |
71 | .hljs {
72 | display: block;
73 | overflow-x: auto;
74 | background: #efecf4;
75 | color: #585260;
76 | padding: 0.5em;
77 | }
78 |
79 | .hljs-emphasis {
80 | font-style: italic;
81 | }
82 |
83 | .hljs-strong {
84 | font-weight: bold;
85 | }
86 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-estuary-dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Estuary Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Estuary Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #878573;
9 | }
10 |
11 | /* Atelier-Estuary Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #ba6236;
23 | }
24 |
25 | /* Atelier-Estuary Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #ae7313;
34 | }
35 |
36 | /* Atelier-Estuary Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #7d9726;
41 | }
42 |
43 | /* Atelier-Estuary Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #36a166;
47 | }
48 |
49 | /* Atelier-Estuary Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #5f9182;
53 | }
54 |
55 | .hljs-deletion,
56 | .hljs-addition {
57 | color: #22221b;
58 | display: inline-block;
59 | width: 100%;
60 | }
61 |
62 | .hljs-deletion {
63 | background-color: #ba6236;
64 | }
65 |
66 | .hljs-addition {
67 | background-color: #7d9726;
68 | }
69 |
70 | .hljs {
71 | display: block;
72 | overflow-x: auto;
73 | background: #22221b;
74 | color: #929181;
75 | padding: 0.5em;
76 | }
77 |
78 | .hljs-emphasis {
79 | font-style: italic;
80 | }
81 |
82 | .hljs-strong {
83 | font-weight: bold;
84 | }
85 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-plateau-dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Plateau Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Plateau Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #7e7777;
9 | }
10 |
11 | /* Atelier-Plateau Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #ca4949;
23 | }
24 |
25 | /* Atelier-Plateau Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #b45a3c;
34 | }
35 |
36 | /* Atelier-Plateau Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #4b8b8b;
41 | }
42 |
43 | /* Atelier-Plateau Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #7272ca;
47 | }
48 |
49 | /* Atelier-Plateau Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #8464c4;
53 | }
54 |
55 | .hljs-deletion,
56 | .hljs-addition {
57 | color: #1b1818;
58 | display: inline-block;
59 | width: 100%;
60 | }
61 |
62 | .hljs-deletion {
63 | background-color: #ca4949;
64 | }
65 |
66 | .hljs-addition {
67 | background-color: #4b8b8b;
68 | }
69 |
70 | .hljs {
71 | display: block;
72 | overflow-x: auto;
73 | background: #1b1818;
74 | color: #8a8585;
75 | padding: 0.5em;
76 | }
77 |
78 | .hljs-emphasis {
79 | font-style: italic;
80 | }
81 |
82 | .hljs-strong {
83 | font-weight: bold;
84 | }
85 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-savanna-dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Savanna Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Savanna Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #78877d;
9 | }
10 |
11 | /* Atelier-Savanna Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #b16139;
23 | }
24 |
25 | /* Atelier-Savanna Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #9f713c;
34 | }
35 |
36 | /* Atelier-Savanna Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #489963;
41 | }
42 |
43 | /* Atelier-Savanna Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #478c90;
47 | }
48 |
49 | /* Atelier-Savanna Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #55859b;
53 | }
54 |
55 | .hljs-deletion,
56 | .hljs-addition {
57 | color: #171c19;
58 | display: inline-block;
59 | width: 100%;
60 | }
61 |
62 | .hljs-deletion {
63 | background-color: #b16139;
64 | }
65 |
66 | .hljs-addition {
67 | background-color: #489963;
68 | }
69 |
70 | .hljs {
71 | display: block;
72 | overflow-x: auto;
73 | background: #171c19;
74 | color: #87928a;
75 | padding: 0.5em;
76 | }
77 |
78 | .hljs-emphasis {
79 | font-style: italic;
80 | }
81 |
82 | .hljs-strong {
83 | font-weight: bold;
84 | }
85 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/github.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | github.com style (c) Vasily Polovnyov
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | color: #333;
12 | background: #f8f8f8;
13 | }
14 |
15 | .hljs-comment,
16 | .hljs-quote {
17 | color: #998;
18 | font-style: italic;
19 | }
20 |
21 | .hljs-keyword,
22 | .hljs-selector-tag,
23 | .hljs-subst {
24 | color: #333;
25 | font-weight: bold;
26 | }
27 |
28 | .hljs-number,
29 | .hljs-literal,
30 | .hljs-variable,
31 | .hljs-template-variable,
32 | .hljs-tag .hljs-attr {
33 | color: #008080;
34 | }
35 |
36 | .hljs-string,
37 | .hljs-doctag {
38 | color: #d14;
39 | }
40 |
41 | .hljs-title,
42 | .hljs-section,
43 | .hljs-selector-id {
44 | color: #900;
45 | font-weight: bold;
46 | }
47 |
48 | .hljs-subst {
49 | font-weight: normal;
50 | }
51 |
52 | .hljs-type,
53 | .hljs-class .hljs-title {
54 | color: #458;
55 | font-weight: bold;
56 | }
57 |
58 | .hljs-tag,
59 | .hljs-name,
60 | .hljs-attribute {
61 | color: #000080;
62 | font-weight: normal;
63 | }
64 |
65 | .hljs-regexp,
66 | .hljs-link {
67 | color: #009926;
68 | }
69 |
70 | .hljs-symbol,
71 | .hljs-bullet {
72 | color: #990073;
73 | }
74 |
75 | .hljs-built_in,
76 | .hljs-builtin-name {
77 | color: #0086b3;
78 | }
79 |
80 | .hljs-meta {
81 | color: #999;
82 | font-weight: bold;
83 | }
84 |
85 | .hljs-deletion {
86 | background: #fdd;
87 | }
88 |
89 | .hljs-addition {
90 | background: #dfd;
91 | }
92 |
93 | .hljs-emphasis {
94 | font-style: italic;
95 | }
96 |
97 | .hljs-strong {
98 | font-weight: bold;
99 | }
100 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-estuary-light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Estuary Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Estuary Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #6c6b5a;
9 | }
10 |
11 | /* Atelier-Estuary Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #ba6236;
23 | }
24 |
25 | /* Atelier-Estuary Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #ae7313;
34 | }
35 |
36 | /* Atelier-Estuary Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #7d9726;
41 | }
42 |
43 | /* Atelier-Estuary Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #36a166;
47 | }
48 |
49 | /* Atelier-Estuary Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #5f9182;
53 | }
54 |
55 | .hljs-deletion,
56 | .hljs-addition {
57 | color: #22221b;
58 | display: inline-block;
59 | width: 100%;
60 | }
61 |
62 | .hljs-deletion {
63 | background-color: #ba6236;
64 | }
65 |
66 | .hljs-addition {
67 | background-color: #7d9726;
68 | }
69 |
70 | .hljs {
71 | display: block;
72 | overflow-x: auto;
73 | background: #f4f3ec;
74 | color: #5f5e4e;
75 | padding: 0.5em;
76 | }
77 |
78 | .hljs-emphasis {
79 | font-style: italic;
80 | }
81 |
82 | .hljs-strong {
83 | font-weight: bold;
84 | }
85 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-plateau-light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Plateau Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Plateau Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #655d5d;
9 | }
10 |
11 | /* Atelier-Plateau Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #ca4949;
23 | }
24 |
25 | /* Atelier-Plateau Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #b45a3c;
34 | }
35 |
36 | /* Atelier-Plateau Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #4b8b8b;
41 | }
42 |
43 | /* Atelier-Plateau Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #7272ca;
47 | }
48 |
49 | /* Atelier-Plateau Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #8464c4;
53 | }
54 |
55 | .hljs-deletion,
56 | .hljs-addition {
57 | color: #1b1818;
58 | display: inline-block;
59 | width: 100%;
60 | }
61 |
62 | .hljs-deletion {
63 | background-color: #ca4949;
64 | }
65 |
66 | .hljs-addition {
67 | background-color: #4b8b8b;
68 | }
69 |
70 | .hljs {
71 | display: block;
72 | overflow-x: auto;
73 | background: #f4ecec;
74 | color: #585050;
75 | padding: 0.5em;
76 | }
77 |
78 | .hljs-emphasis {
79 | font-style: italic;
80 | }
81 |
82 | .hljs-strong {
83 | font-weight: bold;
84 | }
85 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atelier-savanna-light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Savanna Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 |
5 | /* Atelier-Savanna Comment */
6 | .hljs-comment,
7 | .hljs-quote {
8 | color: #5f6d64;
9 | }
10 |
11 | /* Atelier-Savanna Red */
12 | .hljs-variable,
13 | .hljs-template-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-name,
17 | .hljs-regexp,
18 | .hljs-link,
19 | .hljs-name,
20 | .hljs-selector-id,
21 | .hljs-selector-class {
22 | color: #b16139;
23 | }
24 |
25 | /* Atelier-Savanna Orange */
26 | .hljs-number,
27 | .hljs-meta,
28 | .hljs-built_in,
29 | .hljs-builtin-name,
30 | .hljs-literal,
31 | .hljs-type,
32 | .hljs-params {
33 | color: #9f713c;
34 | }
35 |
36 | /* Atelier-Savanna Green */
37 | .hljs-string,
38 | .hljs-symbol,
39 | .hljs-bullet {
40 | color: #489963;
41 | }
42 |
43 | /* Atelier-Savanna Blue */
44 | .hljs-title,
45 | .hljs-section {
46 | color: #478c90;
47 | }
48 |
49 | /* Atelier-Savanna Purple */
50 | .hljs-keyword,
51 | .hljs-selector-tag {
52 | color: #55859b;
53 | }
54 |
55 | .hljs-deletion,
56 | .hljs-addition {
57 | color: #171c19;
58 | display: inline-block;
59 | width: 100%;
60 | }
61 |
62 | .hljs-deletion {
63 | background-color: #b16139;
64 | }
65 |
66 | .hljs-addition {
67 | background-color: #489963;
68 | }
69 |
70 | .hljs {
71 | display: block;
72 | overflow-x: auto;
73 | background: #ecf4ee;
74 | color: #526057;
75 | padding: 0.5em;
76 | }
77 |
78 | .hljs-emphasis {
79 | font-style: italic;
80 | }
81 |
82 | .hljs-strong {
83 | font-weight: bold;
84 | }
85 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atom-one-dark.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Atom One Dark by Daniel Gamage
4 | Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax
5 |
6 | base: #282c34
7 | mono-1: #abb2bf
8 | mono-2: #818896
9 | mono-3: #5c6370
10 | hue-1: #56b6c2
11 | hue-2: #61aeee
12 | hue-3: #c678dd
13 | hue-4: #98c379
14 | hue-5: #e06c75
15 | hue-5-2: #be5046
16 | hue-6: #d19a66
17 | hue-6-2: #e6c07b
18 |
19 | */
20 |
21 | .hljs {
22 | display: block;
23 | overflow-x: auto;
24 | padding: 0.5em;
25 | color: #abb2bf;
26 | background: #282c34;
27 | }
28 |
29 | .hljs-comment,
30 | .hljs-quote {
31 | color: #5c6370;
32 | font-style: italic;
33 | }
34 |
35 | .hljs-doctag,
36 | .hljs-keyword,
37 | .hljs-formula {
38 | color: #c678dd;
39 | }
40 |
41 | .hljs-section,
42 | .hljs-name,
43 | .hljs-selector-tag,
44 | .hljs-deletion,
45 | .hljs-subst {
46 | color: #e06c75;
47 | }
48 |
49 | .hljs-literal {
50 | color: #56b6c2;
51 | }
52 |
53 | .hljs-string,
54 | .hljs-regexp,
55 | .hljs-addition,
56 | .hljs-attribute,
57 | .hljs-meta-string {
58 | color: #98c379;
59 | }
60 |
61 | .hljs-built_in,
62 | .hljs-class .hljs-title {
63 | color: #e6c07b;
64 | }
65 |
66 | .hljs-attr,
67 | .hljs-variable,
68 | .hljs-template-variable,
69 | .hljs-type,
70 | .hljs-selector-class,
71 | .hljs-selector-attr,
72 | .hljs-selector-pseudo,
73 | .hljs-number {
74 | color: #d19a66;
75 | }
76 |
77 | .hljs-symbol,
78 | .hljs-bullet,
79 | .hljs-link,
80 | .hljs-meta,
81 | .hljs-selector-id,
82 | .hljs-title {
83 | color: #61aeee;
84 | }
85 |
86 | .hljs-emphasis {
87 | font-style: italic;
88 | }
89 |
90 | .hljs-strong {
91 | font-weight: bold;
92 | }
93 |
94 | .hljs-link {
95 | text-decoration: underline;
96 | }
97 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/default.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Original highlight.js style (c) Ivan Sagalaev
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #F0F0F0;
12 | }
13 |
14 |
15 | /* Base color: saturation 0; */
16 |
17 | .hljs,
18 | .hljs-subst {
19 | color: #444;
20 | }
21 |
22 | .hljs-comment {
23 | color: #888888;
24 | }
25 |
26 | .hljs-keyword,
27 | .hljs-attribute,
28 | .hljs-selector-tag,
29 | .hljs-meta-keyword,
30 | .hljs-doctag,
31 | .hljs-name {
32 | font-weight: bold;
33 | }
34 |
35 |
36 | /* User color: hue: 0 */
37 |
38 | .hljs-type,
39 | .hljs-string,
40 | .hljs-number,
41 | .hljs-selector-id,
42 | .hljs-selector-class,
43 | .hljs-quote,
44 | .hljs-template-tag,
45 | .hljs-deletion {
46 | color: #880000;
47 | }
48 |
49 | .hljs-title,
50 | .hljs-section {
51 | color: #880000;
52 | font-weight: bold;
53 | }
54 |
55 | .hljs-regexp,
56 | .hljs-symbol,
57 | .hljs-variable,
58 | .hljs-template-variable,
59 | .hljs-link,
60 | .hljs-selector-attr,
61 | .hljs-selector-pseudo {
62 | color: #BC6060;
63 | }
64 |
65 |
66 | /* Language color: hue: 90; */
67 |
68 | .hljs-literal {
69 | color: #78A960;
70 | }
71 |
72 | .hljs-built_in,
73 | .hljs-bullet,
74 | .hljs-code,
75 | .hljs-addition {
76 | color: #397300;
77 | }
78 |
79 |
80 | /* Meta color: hue: 200 */
81 |
82 | .hljs-meta {
83 | color: #1f7199;
84 | }
85 |
86 | .hljs-meta-string {
87 | color: #4d99bf;
88 | }
89 |
90 |
91 | /* Misc effects */
92 |
93 | .hljs-emphasis {
94 | font-style: italic;
95 | }
96 |
97 | .hljs-strong {
98 | font-weight: bold;
99 | }
100 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/atom-one-light.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Atom One Light by Daniel Gamage
4 | Original One Light Syntax theme from https://github.com/atom/one-light-syntax
5 |
6 | base: #fafafa
7 | mono-1: #383a42
8 | mono-2: #686b77
9 | mono-3: #a0a1a7
10 | hue-1: #0184bb
11 | hue-2: #4078f2
12 | hue-3: #a626a4
13 | hue-4: #50a14f
14 | hue-5: #e45649
15 | hue-5-2: #c91243
16 | hue-6: #986801
17 | hue-6-2: #c18401
18 |
19 | */
20 |
21 | .hljs {
22 | display: block;
23 | overflow-x: auto;
24 | padding: 0.5em;
25 | color: #383a42;
26 | background: #fafafa;
27 | }
28 |
29 | .hljs-comment,
30 | .hljs-quote {
31 | color: #a0a1a7;
32 | font-style: italic;
33 | }
34 |
35 | .hljs-doctag,
36 | .hljs-keyword,
37 | .hljs-formula {
38 | color: #a626a4;
39 | }
40 |
41 | .hljs-section,
42 | .hljs-name,
43 | .hljs-selector-tag,
44 | .hljs-deletion,
45 | .hljs-subst {
46 | color: #e45649;
47 | }
48 |
49 | .hljs-literal {
50 | color: #0184bb;
51 | }
52 |
53 | .hljs-string,
54 | .hljs-regexp,
55 | .hljs-addition,
56 | .hljs-attribute,
57 | .hljs-meta-string {
58 | color: #50a14f;
59 | }
60 |
61 | .hljs-built_in,
62 | .hljs-class .hljs-title {
63 | color: #c18401;
64 | }
65 |
66 | .hljs-attr,
67 | .hljs-variable,
68 | .hljs-template-variable,
69 | .hljs-type,
70 | .hljs-selector-class,
71 | .hljs-selector-attr,
72 | .hljs-selector-pseudo,
73 | .hljs-number {
74 | color: #986801;
75 | }
76 |
77 | .hljs-symbol,
78 | .hljs-bullet,
79 | .hljs-link,
80 | .hljs-meta,
81 | .hljs-selector-id,
82 | .hljs-title {
83 | color: #4078f2;
84 | }
85 |
86 | .hljs-emphasis {
87 | font-style: italic;
88 | }
89 |
90 | .hljs-strong {
91 | font-weight: bold;
92 | }
93 |
94 | .hljs-link {
95 | text-decoration: underline;
96 | }
97 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/sunburst.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Sunburst-like style (c) Vasily Polovnyov
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #000;
12 | color: #f8f8f8;
13 | }
14 |
15 | .hljs-comment,
16 | .hljs-quote {
17 | color: #aeaeae;
18 | font-style: italic;
19 | }
20 |
21 | .hljs-keyword,
22 | .hljs-selector-tag,
23 | .hljs-type {
24 | color: #e28964;
25 | }
26 |
27 | .hljs-string {
28 | color: #65b042;
29 | }
30 |
31 | .hljs-subst {
32 | color: #daefa3;
33 | }
34 |
35 | .hljs-regexp,
36 | .hljs-link {
37 | color: #e9c062;
38 | }
39 |
40 | .hljs-title,
41 | .hljs-section,
42 | .hljs-tag,
43 | .hljs-name {
44 | color: #89bdff;
45 | }
46 |
47 | .hljs-class .hljs-title,
48 | .hljs-doctag {
49 | text-decoration: underline;
50 | }
51 |
52 | .hljs-symbol,
53 | .hljs-bullet,
54 | .hljs-number {
55 | color: #3387cc;
56 | }
57 |
58 | .hljs-params,
59 | .hljs-variable,
60 | .hljs-template-variable {
61 | color: #3e87e3;
62 | }
63 |
64 | .hljs-attribute {
65 | color: #cda869;
66 | }
67 |
68 | .hljs-meta {
69 | color: #8996a8;
70 | }
71 |
72 | .hljs-formula {
73 | background-color: #0e2231;
74 | color: #f8f8f8;
75 | font-style: italic;
76 | }
77 |
78 | .hljs-addition {
79 | background-color: #253b22;
80 | color: #f8f8f8;
81 | }
82 |
83 | .hljs-deletion {
84 | background-color: #420e09;
85 | color: #f8f8f8;
86 | }
87 |
88 | .hljs-selector-class {
89 | color: #9b703f;
90 | }
91 |
92 | .hljs-selector-id {
93 | color: #8b98ab;
94 | }
95 |
96 | .hljs-emphasis {
97 | font-style: italic;
98 | }
99 |
100 | .hljs-strong {
101 | font-weight: bold;
102 | }
103 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Angular WordPress Module
4 |
5 |
6 | This library is designed to make it easy for your Angular application to request specific resources from a WordPress install.
7 |
8 | [](https://www.npmjs.com/package/@ngx-wordpress/core)
9 | [](https://travis-ci.org/MurhafSousli/ngx-wordpress)
10 | [](https://www.npmjs.com/package/@ngx-wordpress/core)
11 | [](/LICENSE)
12 |
13 | **[Wiki Documentation](https://github.com/MurhafSousli/ngx-wordpress/wiki)**
14 |
15 | ## Packages
16 |
17 | - `@ngx-wordpress/core` WordPress module Beta
18 | - `@ngx-wordpress/ngxs` NGXS integration (under development)
19 | - `@ngx-wordpress/mock` WordPress mock data interceptor (under development)
20 |
21 | ## Author
22 |
23 | **[Murhaf Sousli](http://murhafsousli.com)**
24 |
25 | - [github/murhafsousli](https://github.com/MurhafSousli)
26 | - [twitter/murhafsousli](https://twitter.com/MurhafSousli)
27 |
28 | ## More plugins
29 |
30 | - ☄ [Progress bar](https://github.com/MurhafSousli/ngx-progressbar) for requests
31 | - ☂ [Sharebuttons](https://github.com/MurhafSousli/ngx-sharebuttons) for posts
32 | - 💬 [Disqus](https://github.com/MurhafSousli/ngx-disqus) for Disqus comment system
33 | - 🖼 [Gallery (lightbox)](https://github.com/MurhafSousli/ngx-gallery) for lightbox galleries
34 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/railscasts.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Railscasts-like style (c) Visoft, Inc. (Damien White)
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #232323;
12 | color: #e6e1dc;
13 | }
14 |
15 | .hljs-comment,
16 | .hljs-quote {
17 | color: #bc9458;
18 | font-style: italic;
19 | }
20 |
21 | .hljs-keyword,
22 | .hljs-selector-tag {
23 | color: #c26230;
24 | }
25 |
26 | .hljs-string,
27 | .hljs-number,
28 | .hljs-regexp,
29 | .hljs-variable,
30 | .hljs-template-variable {
31 | color: #a5c261;
32 | }
33 |
34 | .hljs-subst {
35 | color: #519f50;
36 | }
37 |
38 | .hljs-tag,
39 | .hljs-name {
40 | color: #e8bf6a;
41 | }
42 |
43 | .hljs-type {
44 | color: #da4939;
45 | }
46 |
47 |
48 | .hljs-symbol,
49 | .hljs-bullet,
50 | .hljs-built_in,
51 | .hljs-builtin-name,
52 | .hljs-attr,
53 | .hljs-link {
54 | color: #6d9cbe;
55 | }
56 |
57 | .hljs-params {
58 | color: #d0d0ff;
59 | }
60 |
61 | .hljs-attribute {
62 | color: #cda869;
63 | }
64 |
65 | .hljs-meta {
66 | color: #9b859d;
67 | }
68 |
69 | .hljs-title,
70 | .hljs-section {
71 | color: #ffc66d;
72 | }
73 |
74 | .hljs-addition {
75 | background-color: #144212;
76 | color: #e6e1dc;
77 | display: inline-block;
78 | width: 100%;
79 | }
80 |
81 | .hljs-deletion {
82 | background-color: #600;
83 | color: #e6e1dc;
84 | display: inline-block;
85 | width: 100%;
86 | }
87 |
88 | .hljs-selector-class {
89 | color: #9b703f;
90 | }
91 |
92 | .hljs-selector-id {
93 | color: #8b98ab;
94 | }
95 |
96 | .hljs-emphasis {
97 | font-style: italic;
98 | }
99 |
100 | .hljs-strong {
101 | font-weight: bold;
102 | }
103 |
104 | .hljs-link {
105 | text-decoration: underline;
106 | }
107 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/routeros.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | highlight.js style for Microtik RouterOS script
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #F0F0F0;
12 | }
13 |
14 | /* Base color: saturation 0; */
15 |
16 | .hljs,
17 | .hljs-subst {
18 | color: #444;
19 | }
20 |
21 | .hljs-comment {
22 | color: #888888;
23 | }
24 |
25 | .hljs-keyword,
26 | .hljs-selector-tag,
27 | .hljs-meta-keyword,
28 | .hljs-doctag,
29 | .hljs-name {
30 | font-weight: bold;
31 | }
32 |
33 | .hljs-attribute {
34 | color: #0E9A00;
35 | }
36 |
37 | .hljs-function {
38 | color: #99069A;
39 | }
40 |
41 | .hljs-builtin-name {
42 | color: #99069A;
43 | }
44 |
45 | /* User color: hue: 0 */
46 |
47 | .hljs-type,
48 | .hljs-string,
49 | .hljs-number,
50 | .hljs-selector-id,
51 | .hljs-selector-class,
52 | .hljs-quote,
53 | .hljs-template-tag,
54 | .hljs-deletion {
55 | color: #880000;
56 | }
57 |
58 | .hljs-title,
59 | .hljs-section {
60 | color: #880000;
61 | font-weight: bold;
62 | }
63 |
64 | .hljs-regexp,
65 | .hljs-symbol,
66 | .hljs-variable,
67 | .hljs-template-variable,
68 | .hljs-link,
69 | .hljs-selector-attr,
70 | .hljs-selector-pseudo {
71 | color: #BC6060;
72 | }
73 |
74 |
75 | /* Language color: hue: 90; */
76 |
77 | .hljs-literal {
78 | color: #78A960;
79 | }
80 |
81 | .hljs-built_in,
82 | .hljs-bullet,
83 | .hljs-code,
84 | .hljs-addition {
85 | color: #0C9A9A;
86 | }
87 |
88 |
89 | /* Meta color: hue: 200 */
90 |
91 | .hljs-meta {
92 | color: #1f7199;
93 | }
94 |
95 | .hljs-meta-string {
96 | color: #4d99bf;
97 | }
98 |
99 |
100 | /* Misc effects */
101 |
102 | .hljs-emphasis {
103 | font-style: italic;
104 | }
105 |
106 | .hljs-strong {
107 | font-weight: bold;
108 | }
109 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/agate.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Agate by Taufik Nurrohman
3 | * ----------------------------------------------------
4 | *
5 | * #ade5fc
6 | * #a2fca2
7 | * #c6b4f0
8 | * #d36363
9 | * #fcc28c
10 | * #fc9b9b
11 | * #ffa
12 | * #fff
13 | * #333
14 | * #62c8f3
15 | * #888
16 | *
17 | */
18 |
19 | .hljs {
20 | display: block;
21 | overflow-x: auto;
22 | padding: 0.5em;
23 | background: #333;
24 | color: white;
25 | }
26 |
27 | .hljs-name,
28 | .hljs-strong {
29 | font-weight: bold;
30 | }
31 |
32 | .hljs-code,
33 | .hljs-emphasis {
34 | font-style: italic;
35 | }
36 |
37 | .hljs-tag {
38 | color: #62c8f3;
39 | }
40 |
41 | .hljs-variable,
42 | .hljs-template-variable,
43 | .hljs-selector-id,
44 | .hljs-selector-class {
45 | color: #ade5fc;
46 | }
47 |
48 | .hljs-string,
49 | .hljs-bullet {
50 | color: #a2fca2;
51 | }
52 |
53 | .hljs-type,
54 | .hljs-title,
55 | .hljs-section,
56 | .hljs-attribute,
57 | .hljs-quote,
58 | .hljs-built_in,
59 | .hljs-builtin-name {
60 | color: #ffa;
61 | }
62 |
63 | .hljs-number,
64 | .hljs-symbol,
65 | .hljs-bullet {
66 | color: #d36363;
67 | }
68 |
69 | .hljs-keyword,
70 | .hljs-selector-tag,
71 | .hljs-literal {
72 | color: #fcc28c;
73 | }
74 |
75 | .hljs-comment,
76 | .hljs-deletion,
77 | .hljs-code {
78 | color: #888;
79 | }
80 |
81 | .hljs-regexp,
82 | .hljs-link {
83 | color: #c6b4f0;
84 | }
85 |
86 | .hljs-meta {
87 | color: #fc9b9b;
88 | }
89 |
90 | .hljs-deletion {
91 | background-color: #fc9b9b;
92 | color: #333;
93 | }
94 |
95 | .hljs-addition {
96 | background-color: #a2fca2;
97 | color: #333;
98 | }
99 |
100 | .hljs a {
101 | color: inherit;
102 | }
103 |
104 | .hljs a:focus,
105 | .hljs a:hover {
106 | color: inherit;
107 | text-decoration: underline;
108 | }
109 |
--------------------------------------------------------------------------------
/src/app/auth/auth-page/auth-page.component.html:
--------------------------------------------------------------------------------
1 | Authentication
2 |
3 |
4 |
To get the authentication to work, you must install and activate the following plugins:
5 |
6 |
15 |
16 |
17 |
18 |
19 |
48 |
49 |
50 |
State
51 |
52 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/hybrid.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid)
4 |
5 | */
6 |
7 | /*background color*/
8 | .hljs {
9 | display: block;
10 | overflow-x: auto;
11 | padding: 0.5em;
12 | background: #1d1f21;
13 | }
14 |
15 | /*selection color*/
16 | .hljs::selection,
17 | .hljs span::selection {
18 | background: #373b41;
19 | }
20 |
21 | .hljs::-moz-selection,
22 | .hljs span::-moz-selection {
23 | background: #373b41;
24 | }
25 |
26 | /*foreground color*/
27 | .hljs {
28 | color: #c5c8c6;
29 | }
30 |
31 | /*color: fg_yellow*/
32 | .hljs-title,
33 | .hljs-name {
34 | color: #f0c674;
35 | }
36 |
37 | /*color: fg_comment*/
38 | .hljs-comment,
39 | .hljs-meta,
40 | .hljs-meta .hljs-keyword {
41 | color: #707880;
42 | }
43 |
44 | /*color: fg_red*/
45 | .hljs-number,
46 | .hljs-symbol,
47 | .hljs-literal,
48 | .hljs-deletion,
49 | .hljs-link {
50 | color: #cc6666
51 | }
52 |
53 | /*color: fg_green*/
54 | .hljs-string,
55 | .hljs-doctag,
56 | .hljs-addition,
57 | .hljs-regexp,
58 | .hljs-selector-attr,
59 | .hljs-selector-pseudo {
60 | color: #b5bd68;
61 | }
62 |
63 | /*color: fg_purple*/
64 | .hljs-attribute,
65 | .hljs-code,
66 | .hljs-selector-id {
67 | color: #b294bb;
68 | }
69 |
70 | /*color: fg_blue*/
71 | .hljs-keyword,
72 | .hljs-selector-tag,
73 | .hljs-bullet,
74 | .hljs-tag {
75 | color: #81a2be;
76 | }
77 |
78 | /*color: fg_aqua*/
79 | .hljs-subst,
80 | .hljs-variable,
81 | .hljs-template-tag,
82 | .hljs-template-variable {
83 | color: #8abeb7;
84 | }
85 |
86 | /*color: fg_orange*/
87 | .hljs-type,
88 | .hljs-built_in,
89 | .hljs-builtin-name,
90 | .hljs-quote,
91 | .hljs-section,
92 | .hljs-selector-class {
93 | color: #de935f;
94 | }
95 |
96 | .hljs-emphasis {
97 | font-style: italic;
98 | }
99 |
100 | .hljs-strong {
101 | font-weight: bold;
102 | }
103 |
--------------------------------------------------------------------------------
/src/app/collection/collection-page/collection-page.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';
2 | import { WpCollection, WpCollectionRef } from '@ngx-wordpress/core';
3 | import { ClrLoadingState } from '@clr/angular';
4 |
5 | @Component({
6 | selector: 'app-collection-page',
7 | templateUrl: './collection-page.component.html',
8 | styleUrls: ['./collection-page.component.scss'],
9 | changeDetection: ChangeDetectionStrategy.OnPush
10 | })
11 | export class CollectionPageComponent implements OnInit {
12 |
13 | @WpCollection('posts') posts: WpCollectionRef;
14 |
15 | searchKey: string;
16 | getLoading: ClrLoadingState = ClrLoadingState.DEFAULT;
17 | moreLoading: ClrLoadingState = ClrLoadingState.DEFAULT;
18 | nextLoading: ClrLoadingState = ClrLoadingState.DEFAULT;
19 | prevLoading: ClrLoadingState = ClrLoadingState.DEFAULT;
20 |
21 | get() {
22 | this.getLoading = ClrLoadingState.LOADING;
23 | this.posts.get({search: this.searchKey}).subscribe(res => {
24 | this.getLoading = res.error
25 | ? ClrLoadingState.ERROR
26 | : ClrLoadingState.SUCCESS;
27 | });
28 | }
29 |
30 | more() {
31 | this.moreLoading = ClrLoadingState.LOADING;
32 | this.posts.more().subscribe(res => {
33 | this.moreLoading = res.error
34 | ? ClrLoadingState.ERROR
35 | : ClrLoadingState.SUCCESS;
36 | });
37 | }
38 |
39 | next() {
40 | this.nextLoading = ClrLoadingState.LOADING;
41 | this.posts.next().subscribe(res => {
42 | this.nextLoading = res.error
43 | ? ClrLoadingState.ERROR
44 | : ClrLoadingState.SUCCESS;
45 | });
46 | }
47 |
48 | prev() {
49 | this.prevLoading = ClrLoadingState.LOADING;
50 | this.posts.prev().subscribe(res => {
51 | this.prevLoading = res.error
52 | ? ClrLoadingState.ERROR
53 | : ClrLoadingState.SUCCESS;
54 | });
55 | }
56 |
57 | ngOnInit() {
58 | this.get();
59 | }
60 |
61 | }
62 |
--------------------------------------------------------------------------------
/projects/mock/src/lib/users.data.ts:
--------------------------------------------------------------------------------
1 | import { WpUser } from '@ngx-wordpress/core';
2 |
3 | export const usersAuthData: {username: string, password: string}[] = [
4 | {
5 | username: 'admin',
6 | password: '0000'
7 | },
8 | {
9 | username: 'demoadmin',
10 | password: '1234'
11 | }
12 | ];
13 |
14 | export const usersData: WpUser[] = [
15 | {
16 | id: 1,
17 | name: 'Murhaf Sousli',
18 | url: '',
19 | description: '',
20 | link: 'https://my-wordpress-site.com/author/admin/',
21 | slug: 'admin',
22 | avatar_urls: {
23 | '24': 'https://secure.gravatar.com/avatar/56cfeed2f08834a396d7862b8b8a2107?s=24&d=mm&r=g',
24 | '48': 'https://secure.gravatar.com/avatar/56cfeed2f08834a396d7862b8b8a2107?s=48&d=mm&r=g',
25 | '96': 'https://secure.gravatar.com/avatar/56cfeed2f08834a396d7862b8b8a2107?s=96&d=mm&r=g'
26 | },
27 | meta: [],
28 | _links: {
29 | self: [
30 | {
31 | href: 'https://my-wordpress-site.com/wp-json/wp/v2/users/1'
32 | }
33 | ],
34 | collection: [
35 | {
36 | href: 'https://my-wordpress-site.com/wp-json/wp/v2/users'
37 | }
38 | ]
39 | }
40 | },
41 | {
42 | id: 2,
43 | name: 'Pavel Ciorici',
44 | url: '',
45 | description: '',
46 | link: 'https://my-wordpress-site.com/author/demoadmin/',
47 | slug: 'demoadmin',
48 | avatar_urls: {
49 | '24': 'https://secure.gravatar.com/avatar/a2c20358cff8a7162927df1441e0826e?s=24&d=mm&r=g',
50 | '48': 'https://secure.gravatar.com/avatar/a2c20358cff8a7162927df1441e0826e?s=48&d=mm&r=g',
51 | '96': 'https://secure.gravatar.com/avatar/a2c20358cff8a7162927df1441e0826e?s=96&d=mm&r=g'
52 | },
53 | meta: [],
54 | _links: {
55 | self: [
56 | {
57 | href: 'https://my-wordpress-site.com/wp-json/wp/v2/users/2'
58 | }
59 | ],
60 | collection: [
61 | {
62 | href: 'https://my-wordpress-site.com/wp-json/wp/v2/users'
63 | }
64 | ]
65 | }
66 | }
67 | ];
68 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/gruvbox-dark.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Gruvbox style (dark) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox)
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #282828;
12 | }
13 |
14 | .hljs,
15 | .hljs-subst {
16 | color: #ebdbb2;
17 | }
18 |
19 | /* Gruvbox Red */
20 | .hljs-deletion,
21 | .hljs-formula,
22 | .hljs-keyword,
23 | .hljs-link,
24 | .hljs-selector-tag {
25 | color: #fb4934;
26 | }
27 |
28 | /* Gruvbox Blue */
29 | .hljs-built_in,
30 | .hljs-emphasis,
31 | .hljs-name,
32 | .hljs-quote,
33 | .hljs-strong,
34 | .hljs-title,
35 | .hljs-variable {
36 | color: #83a598;
37 | }
38 |
39 | /* Gruvbox Yellow */
40 | .hljs-attr,
41 | .hljs-params,
42 | .hljs-template-tag,
43 | .hljs-type {
44 | color: #fabd2f;
45 | }
46 |
47 | /* Gruvbox Purple */
48 | .hljs-builtin-name,
49 | .hljs-doctag,
50 | .hljs-literal,
51 | .hljs-number {
52 | color: #8f3f71;
53 | }
54 |
55 | /* Gruvbox Orange */
56 | .hljs-code,
57 | .hljs-meta,
58 | .hljs-regexp,
59 | .hljs-selector-id,
60 | .hljs-template-variable {
61 | color: #fe8019;
62 | }
63 |
64 | /* Gruvbox Green */
65 | .hljs-addition,
66 | .hljs-meta-string,
67 | .hljs-section,
68 | .hljs-selector-attr,
69 | .hljs-selector-class,
70 | .hljs-string,
71 | .hljs-symbol {
72 | color: #b8bb26;
73 | }
74 |
75 | /* Gruvbox Aqua */
76 | .hljs-attribute,
77 | .hljs-bullet,
78 | .hljs-class,
79 | .hljs-function,
80 | .hljs-function .hljs-keyword,
81 | .hljs-meta-keyword,
82 | .hljs-selector-pseudo,
83 | .hljs-tag {
84 | color: #8ec07c;
85 | }
86 |
87 | /* Gruvbox Gray */
88 | .hljs-comment {
89 | color: #928374;
90 | }
91 |
92 | /* Gruvbox Purple */
93 | .hljs-link_label,
94 | .hljs-literal,
95 | .hljs-number {
96 | color: #d3869b;
97 | }
98 |
99 | .hljs-comment,
100 | .hljs-emphasis {
101 | font-style: italic;
102 | }
103 |
104 | .hljs-section,
105 | .hljs-strong,
106 | .hljs-tag {
107 | font-weight: bold;
108 | }
109 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/gruvbox-light.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Gruvbox style (light) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox)
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #fbf1c7;
12 | }
13 |
14 | .hljs,
15 | .hljs-subst {
16 | color: #3c3836;
17 | }
18 |
19 | /* Gruvbox Red */
20 | .hljs-deletion,
21 | .hljs-formula,
22 | .hljs-keyword,
23 | .hljs-link,
24 | .hljs-selector-tag {
25 | color: #9d0006;
26 | }
27 |
28 | /* Gruvbox Blue */
29 | .hljs-built_in,
30 | .hljs-emphasis,
31 | .hljs-name,
32 | .hljs-quote,
33 | .hljs-strong,
34 | .hljs-title,
35 | .hljs-variable {
36 | color: #076678;
37 | }
38 |
39 | /* Gruvbox Yellow */
40 | .hljs-attr,
41 | .hljs-params,
42 | .hljs-template-tag,
43 | .hljs-type {
44 | color: #b57614;
45 | }
46 |
47 | /* Gruvbox Purple */
48 | .hljs-builtin-name,
49 | .hljs-doctag,
50 | .hljs-literal,
51 | .hljs-number {
52 | color: #8f3f71;
53 | }
54 |
55 | /* Gruvbox Orange */
56 | .hljs-code,
57 | .hljs-meta,
58 | .hljs-regexp,
59 | .hljs-selector-id,
60 | .hljs-template-variable {
61 | color: #af3a03;
62 | }
63 |
64 | /* Gruvbox Green */
65 | .hljs-addition,
66 | .hljs-meta-string,
67 | .hljs-section,
68 | .hljs-selector-attr,
69 | .hljs-selector-class,
70 | .hljs-string,
71 | .hljs-symbol {
72 | color: #79740e;
73 | }
74 |
75 | /* Gruvbox Aqua */
76 | .hljs-attribute,
77 | .hljs-bullet,
78 | .hljs-class,
79 | .hljs-function,
80 | .hljs-function .hljs-keyword,
81 | .hljs-meta-keyword,
82 | .hljs-selector-pseudo,
83 | .hljs-tag {
84 | color: #427b58;
85 | }
86 |
87 | /* Gruvbox Gray */
88 | .hljs-comment {
89 | color: #928374;
90 | }
91 |
92 | /* Gruvbox Purple */
93 | .hljs-link_label,
94 | .hljs-literal,
95 | .hljs-number {
96 | color: #8f3f71;
97 | }
98 |
99 | .hljs-comment,
100 | .hljs-emphasis {
101 | font-style: italic;
102 | }
103 |
104 | .hljs-section,
105 | .hljs-strong,
106 | .hljs-tag {
107 | font-weight: bold;
108 | }
109 |
--------------------------------------------------------------------------------
/src/app/model/model-page/model-page.component.ts:
--------------------------------------------------------------------------------
1 | import { ChangeDetectionStrategy, Component } from '@angular/core';
2 | import { ClrLoadingState } from '@clr/angular';
3 | import { WpModel, WpModelRef } from '@ngx-wordpress/core';
4 |
5 | @Component({
6 | selector: 'app-model-page',
7 | templateUrl: './model-page.component.html',
8 | styleUrls: ['./model-page.component.scss'],
9 | changeDetection: ChangeDetectionStrategy.OnPush
10 | })
11 | export class ModelPageComponent {
12 |
13 | @WpModel('posts') posts: WpModelRef;
14 | id = 17;
15 | getLoading: ClrLoadingState = ClrLoadingState.DEFAULT;
16 | createLoading: ClrLoadingState = ClrLoadingState.DEFAULT;
17 | updateLoading: ClrLoadingState = ClrLoadingState.DEFAULT;
18 | deleteLoading: ClrLoadingState = ClrLoadingState.DEFAULT;
19 |
20 | createDialog = false;
21 | updateDialog = false;
22 | deleteDialog = false;
23 |
24 | get() {
25 | this.getLoading = ClrLoadingState.LOADING;
26 | this.posts.get(this.id).subscribe(res => {
27 | this.getLoading = res.error
28 | ? ClrLoadingState.ERROR
29 | : ClrLoadingState.SUCCESS;
30 | });
31 | }
32 |
33 | create(body: any) {
34 | this.createDialog = false;
35 | this.createLoading = ClrLoadingState.LOADING;
36 | this.posts.create(body).subscribe(res => {
37 | this.createLoading = res.error
38 | ? ClrLoadingState.ERROR
39 | : ClrLoadingState.SUCCESS;
40 | });
41 | }
42 |
43 | update(body: any) {
44 | this.updateDialog = false;
45 | this.updateLoading = ClrLoadingState.LOADING;
46 | this.posts.update(this.id, body).subscribe(res => {
47 | this.updateLoading = res.error
48 | ? ClrLoadingState.ERROR
49 | : ClrLoadingState.SUCCESS;
50 | });
51 | }
52 |
53 | delete() {
54 | this.deleteDialog = false;
55 | this.deleteLoading = ClrLoadingState.LOADING;
56 | this.posts.delete(this.id).subscribe(res => {
57 | this.deleteLoading = res.error
58 | ? ClrLoadingState.ERROR
59 | : ClrLoadingState.SUCCESS;
60 | });
61 | }
62 |
63 | }
64 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/vs2015.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Visual Studio 2015 dark style
3 | * Author: Nicolas LLOBERA
4 | */
5 |
6 | .hljs {
7 | display: block;
8 | overflow-x: auto;
9 | padding: 0.5em;
10 | background: #1E1E1E;
11 | color: #DCDCDC;
12 | }
13 |
14 | .hljs-keyword,
15 | .hljs-literal,
16 | .hljs-symbol,
17 | .hljs-name {
18 | color: #569CD6;
19 | }
20 | .hljs-link {
21 | color: #569CD6;
22 | text-decoration: underline;
23 | }
24 |
25 | .hljs-built_in,
26 | .hljs-type {
27 | color: #4EC9B0;
28 | }
29 |
30 | .hljs-number,
31 | .hljs-class {
32 | color: #B8D7A3;
33 | }
34 |
35 | .hljs-string,
36 | .hljs-meta-string {
37 | color: #D69D85;
38 | }
39 |
40 | .hljs-regexp,
41 | .hljs-template-tag {
42 | color: #9A5334;
43 | }
44 |
45 | .hljs-subst,
46 | .hljs-function,
47 | .hljs-title,
48 | .hljs-params,
49 | .hljs-formula {
50 | color: #DCDCDC;
51 | }
52 |
53 | .hljs-comment,
54 | .hljs-quote {
55 | color: #57A64A;
56 | font-style: italic;
57 | }
58 |
59 | .hljs-doctag {
60 | color: #608B4E;
61 | }
62 |
63 | .hljs-meta,
64 | .hljs-meta-keyword,
65 | .hljs-tag {
66 | color: #9B9B9B;
67 | }
68 |
69 | .hljs-variable,
70 | .hljs-template-variable {
71 | color: #BD63C5;
72 | }
73 |
74 | .hljs-attr,
75 | .hljs-attribute,
76 | .hljs-builtin-name {
77 | color: #9CDCFE;
78 | }
79 |
80 | .hljs-section {
81 | color: gold;
82 | }
83 |
84 | .hljs-emphasis {
85 | font-style: italic;
86 | }
87 |
88 | .hljs-strong {
89 | font-weight: bold;
90 | }
91 |
92 | /*.hljs-code {
93 | font-family:'Monospace';
94 | }*/
95 |
96 | .hljs-bullet,
97 | .hljs-selector-tag,
98 | .hljs-selector-id,
99 | .hljs-selector-class,
100 | .hljs-selector-attr,
101 | .hljs-selector-pseudo {
102 | color: #D7BA7D;
103 | }
104 |
105 | .hljs-addition {
106 | background-color: #144212;
107 | display: inline-block;
108 | width: 100%;
109 | }
110 |
111 | .hljs-deletion {
112 | background-color: #600;
113 | display: inline-block;
114 | width: 100%;
115 | }
116 |
--------------------------------------------------------------------------------
/projects/core/src/lib/cache/cache.interceptor.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { HttpEvent, HttpHandler, HttpRequest, HttpResponse, HttpInterceptor } from '@angular/common/http';
3 |
4 | import { Observable, of } from 'rxjs';
5 | import { startWith, tap } from 'rxjs/operators';
6 |
7 | import { RequestCache } from './cache.service';
8 |
9 | /**
10 | * If request is cachable (e.g., package search) and
11 | * response is in cache return the cached response as observable.
12 | *
13 | * If not in cache or not cachable,
14 | * pass request through to next()
15 | */
16 |
17 | @Injectable()
18 | export class CachingInterceptor implements HttpInterceptor {
19 | constructor(private cache: RequestCache) {
20 | }
21 |
22 | intercept(req: HttpRequest, next: HttpHandler) {
23 | // continue if not cachable.
24 | if (!isCachable(req)) {
25 | return next.handle(req);
26 | }
27 |
28 | const cachedResponse = this.cache.get(req);
29 |
30 | // cache-then-refresh
31 | if (req.headers.get('x-refresh')) {
32 | const results$ = sendRequest(req, next, this.cache);
33 | return cachedResponse
34 | ? results$.pipe(startWith(cachedResponse))
35 | : results$;
36 | }
37 | // cache-or-fetch
38 | return cachedResponse
39 | ? of(cachedResponse)
40 | : sendRequest(req, next, this.cache);
41 | }
42 | }
43 |
44 | /** Is this request cachable? */
45 | function isCachable(req: HttpRequest) {
46 | // Only GET requests are cachable
47 | return req.method === 'GET';
48 | }
49 |
50 | /**
51 | * Get server response observable by sending request to `next()`.
52 | * Will add the response to the cache on the way out.
53 | */
54 | function sendRequest(req: HttpRequest, next: HttpHandler, cache: RequestCache): Observable> {
55 |
56 | return next.handle(req).pipe(
57 | tap(event => {
58 | // There may be other events besides the response.
59 | if (event instanceof HttpResponse) {
60 | cache.put(req, event); // Update the cache.
61 | }
62 | })
63 | );
64 | }
65 |
--------------------------------------------------------------------------------
/src/app/collection/collection-page/collection-page.component.html:
--------------------------------------------------------------------------------
1 | Collection
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | Get
18 | More
19 | Next
20 | Prev
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | {{category}}
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
State
51 |
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/grayscale.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | grayscale style (c) MY Sun
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | color: #333;
12 | background: #fff;
13 | }
14 |
15 | .hljs-comment,
16 | .hljs-quote {
17 | color: #777;
18 | font-style: italic;
19 | }
20 |
21 | .hljs-keyword,
22 | .hljs-selector-tag,
23 | .hljs-subst {
24 | color: #333;
25 | font-weight: bold;
26 | }
27 |
28 | .hljs-number,
29 | .hljs-literal {
30 | color: #777;
31 | }
32 |
33 | .hljs-string,
34 | .hljs-doctag,
35 | .hljs-formula {
36 | color: #333;
37 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC) repeat;
38 | }
39 |
40 | .hljs-title,
41 | .hljs-section,
42 | .hljs-selector-id {
43 | color: #000;
44 | font-weight: bold;
45 | }
46 |
47 | .hljs-subst {
48 | font-weight: normal;
49 | }
50 |
51 | .hljs-class .hljs-title,
52 | .hljs-type,
53 | .hljs-name {
54 | color: #333;
55 | font-weight: bold;
56 | }
57 |
58 | .hljs-tag {
59 | color: #333;
60 | }
61 |
62 | .hljs-regexp {
63 | color: #333;
64 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat;
65 | }
66 |
67 | .hljs-symbol,
68 | .hljs-bullet,
69 | .hljs-link {
70 | color: #000;
71 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat;
72 | }
73 |
74 | .hljs-built_in,
75 | .hljs-builtin-name {
76 | color: #000;
77 | text-decoration: underline;
78 | }
79 |
80 | .hljs-meta {
81 | color: #999;
82 | font-weight: bold;
83 | }
84 |
85 | .hljs-deletion {
86 | color: #fff;
87 | background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat;
88 | }
89 |
90 | .hljs-addition {
91 | color: #000;
92 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat;
93 | }
94 |
95 | .hljs-emphasis {
96 | font-style: italic;
97 | }
98 |
99 | .hljs-strong {
100 | font-weight: bold;
101 | }
102 |
--------------------------------------------------------------------------------
/projects/core/src/lib/utilities/helper.ts:
--------------------------------------------------------------------------------
1 | import { isPlatformBrowser } from '@angular/common';
2 | import { of } from 'rxjs';
3 | import { mapAuthor, mapCategories, mapFeaturedMedia, mapImageSizesSrcUrls, mapRemoveLinks, mapRendered, mapTags } from './filters';
4 | import { WpConfig } from '../interfaces';
5 |
6 | export function getDefaultWpConfig(platform: Object): WpConfig {
7 | return {
8 | restUrl: '/wp-json/wp/v2/',
9 | authUrl: '/wp-json/jwt-auth/v1/token',
10 | validateAuthUrl: '/wp-json/jwt-auth/v1/token/validate',
11 | filters: {
12 | posts: {
13 | title: [mapRendered],
14 | content: [mapRendered],
15 | excerpt: [mapRendered, mapRemoveLinks],
16 | categories: [mapCategories],
17 | tags: [mapTags],
18 | author: [mapAuthor],
19 | featured_media: [mapFeaturedMedia, mapImageSizesSrcUrls]
20 | }
21 | },
22 | jwtOptions: {
23 | tokenGetter: () => of(isPlatformBrowser(platform) ? localStorage.getItem('token') : null),
24 | tokenSetter: (token: string) => of(isPlatformBrowser(platform) ? localStorage.setItem('token', token) : null),
25 | tokenRemover: () => of(isPlatformBrowser(platform) ? localStorage.removeItem('token') : null)
26 | }
27 | };
28 | }
29 |
30 | /**
31 | * Simple object check.
32 | */
33 | function isObject(item): boolean {
34 | return (item && typeof item === 'object' && !Array.isArray(item));
35 | }
36 |
37 | /**
38 | * Deep merge two objects.
39 | */
40 | export function mergeDeep(target, ...sources) {
41 | if (!sources.length) {
42 | return target;
43 | }
44 | const source = sources.shift();
45 |
46 | if (isObject(target) && isObject(source)) {
47 | for (const key in source) {
48 | if (isObject(source[key])) {
49 | if (!target[key]) {
50 | Object.assign(target, {[key]: {}});
51 | }
52 | mergeDeep(target[key], source[key]);
53 | } else {
54 | Object.assign(target, {[key]: source[key]});
55 | }
56 | }
57 | }
58 |
59 | return mergeDeep(target, ...sources);
60 | }
61 |
62 | /**
63 | * Serialize WpCollection query
64 | */
65 | export const serializeQuery = (obj: any, prefix?: string): string => {
66 | const str = [];
67 | for (const p in obj) {
68 | if (obj.hasOwnProperty(p) && obj[p]) {
69 | const k = prefix ? prefix + '[' + p + ']' : p, v = obj[p];
70 | str.push(typeof v === 'object' ?
71 | serializeQuery(v, k) :
72 | encodeURIComponent(k) + '=' + encodeURIComponent(v));
73 | }
74 | }
75 | return str.join('&');
76 | };
77 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ngx-wordpress",
3 | "version": "0.0.0",
4 | "scripts": {
5 | "ng": "ng",
6 | "start": "ng serve",
7 | "build": "ng build",
8 | "build-aot": "ng build --aot",
9 | "test": "ng test",
10 | "lint": "ng lint",
11 | "e2e": "ng e2e",
12 | "build-all": "ng build core --prod",
13 | "build-core": "ng build core",
14 | "build-ngxs": "ng build ngxs",
15 | "link-core": "npm link dist/core && npm link @ngx-wordpress/core",
16 | "link-ngxs": "npm link dist/ngxs && npm link @ngx-wordpress/ngxs",
17 | "build-lib-serve": "ng build core --prod && ng serve --aot",
18 | "build-ngxs-serve": "ng build ngxs && ng serve --aot"
19 | },
20 | "private": true,
21 | "dependencies": {
22 | "@angular/animations": "^6.1.0",
23 | "@angular/common": "^6.1.0",
24 | "@angular/compiler": "^6.1.0",
25 | "@angular/core": "^6.1.0",
26 | "@angular/forms": "^6.1.0",
27 | "@angular/http": "^6.1.0",
28 | "@angular/platform-browser": "^6.1.0",
29 | "@angular/platform-browser-dynamic": "^6.1.0",
30 | "@angular/platform-webworker": "^6.1.9",
31 | "@angular/router": "^6.1.0",
32 | "@clr/angular": "^0.13.2",
33 | "@clr/icons": "^0.13.2",
34 | "@clr/ui": "^0.13.2",
35 | "@ngx-progressbar/core": "^5.1.2",
36 | "@ngx-progressbar/http": "^5.1.2",
37 | "@ngx-progressbar/router": "^5.1.2",
38 | "@ngx-pwa/local-storage": "^6.1.0",
39 | "@ngxs/store": "^3.2.0",
40 | "@webcomponents/custom-elements": "^1.0.0",
41 | "core-js": "^2.5.4",
42 | "ngx-highlightjs": "^2.1.1",
43 | "rxjs": "~6.2.0",
44 | "zone.js": "~0.8.26"
45 | },
46 | "devDependencies": {
47 | "@angular-devkit/build-angular": "~0.8.0",
48 | "@angular-devkit/build-ng-packagr": "~0.8.0",
49 | "@angular/cli": "~6.2.1",
50 | "@angular/compiler-cli": "^6.1.0",
51 | "@angular/language-service": "^6.1.0",
52 | "@ngxs/devtools-plugin": "^3.2.0",
53 | "@types/jasmine": "~2.8.8",
54 | "@types/jasminewd2": "~2.0.3",
55 | "@types/node": "~8.9.4",
56 | "codelyzer": "~4.3.0",
57 | "jasmine-core": "~2.99.1",
58 | "jasmine-spec-reporter": "~4.2.1",
59 | "karma": "~3.0.0",
60 | "karma-chrome-launcher": "~2.2.0",
61 | "karma-coverage-istanbul-reporter": "~2.0.1",
62 | "karma-jasmine": "~1.1.2",
63 | "karma-jasmine-html-reporter": "^0.2.2",
64 | "ng-packagr": "^4.1.0",
65 | "protractor": "~5.4.0",
66 | "ts-node": "~7.0.0",
67 | "tsickle": ">=0.29.0",
68 | "tslib": "^1.9.0",
69 | "tslint": "~5.11.0",
70 | "typescript": "~2.9.2"
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/src/assets/lib/hljs/styles/purebasic.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | PureBASIC native IDE style ( version 1.0 - April 2016 )
4 |
5 | by Tristano Ajmone
6 |
7 | Public Domain
8 |
9 | NOTE_1: PureBASIC code syntax highlighting only applies the following classes:
10 | .hljs-comment
11 | .hljs-function
12 | .hljs-keywords
13 | .hljs-string
14 | .hljs-symbol
15 |
16 | Other classes are added here for the benefit of styling other languages with the look and feel of PureBASIC native IDE style.
17 | If you need to customize a stylesheet for PureBASIC only, remove all non-relevant classes -- PureBASIC-related classes are followed by
18 | a "--- used for PureBASIC ... ---" comment on same line.
19 |
20 | NOTE_2: Color names provided in comments were derived using "Name that Color" online tool:
21 | http://chir.ag/projects/name-that-color
22 | */
23 |
24 | .hljs { /* Common set of rules required by highlight.js (don'r remove!) */
25 | display: block;
26 | overflow-x: auto;
27 | padding: 0.5em;
28 | background: #FFFFDF; /* Half and Half (approx.) */
29 | /* --- Uncomment to add PureBASIC native IDE styled font!
30 | font-family: Consolas;
31 | */
32 | }
33 |
34 | .hljs, /* --- used for PureBASIC base color --- */
35 | .hljs-type, /* --- used for PureBASIC Procedures return type --- */
36 | .hljs-function, /* --- used for wrapping PureBASIC Procedures definitions --- */
37 | .hljs-name,
38 | .hljs-number,
39 | .hljs-attr,
40 | .hljs-params,
41 | .hljs-subst {
42 | color: #000000; /* Black */
43 | }
44 |
45 | .hljs-comment, /* --- used for PureBASIC Comments --- */
46 | .hljs-regexp,
47 | .hljs-section,
48 | .hljs-selector-pseudo,
49 | .hljs-addition {
50 | color: #00AAAA; /* Persian Green (approx.) */
51 | }
52 |
53 | .hljs-title, /* --- used for PureBASIC Procedures Names --- */
54 | .hljs-tag,
55 | .hljs-variable,
56 | .hljs-code {
57 | color: #006666; /* Blue Stone (approx.) */
58 | }
59 |
60 | .hljs-keyword, /* --- used for PureBASIC Keywords --- */
61 | .hljs-class,
62 | .hljs-meta-keyword,
63 | .hljs-selector-class,
64 | .hljs-built_in,
65 | .hljs-builtin-name {
66 | color: #006666; /* Blue Stone (approx.) */
67 | font-weight: bold;
68 | }
69 |
70 | .hljs-string, /* --- used for PureBASIC Strings --- */
71 | .hljs-selector-attr {
72 | color: #0080FF; /* Azure Radiance (approx.) */
73 | }
74 |
75 | .hljs-symbol, /* --- used for PureBASIC Constants --- */
76 | .hljs-link,
77 | .hljs-deletion,
78 | .hljs-attribute {
79 | color: #924B72; /* Cannon Pink (approx.) */
80 | }
81 |
82 | .hljs-meta,
83 | .hljs-literal,
84 | .hljs-selector-id {
85 | color: #924B72; /* Cannon Pink (approx.) */
86 | font-weight: bold;
87 | }
88 |
89 | .hljs-strong,
90 | .hljs-name {
91 | font-weight: bold;
92 | }
93 |
94 | .hljs-emphasis {
95 | font-style: italic;
96 | }
97 |
--------------------------------------------------------------------------------