@firestitch/content 12.2.1 → 12.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/modules/content-layouts/components/content-layouts/content-layouts.component.d.ts +1 -1
 - package/app/modules/editor/components/editor/editor.component.d.ts +15 -6
 - package/bundles/firestitch-content.umd.js +25 -8
 - package/bundles/firestitch-content.umd.js.map +1 -1
 - package/esm2015/app/modules/content-layouts/components/content-layouts/content-layouts.component.js +13 -12
 - package/esm2015/app/modules/content-pages/components/content-pages/content-pages.component.js +5 -1
 - package/esm2015/app/modules/editor/components/editor/editor.component.js +15 -4
 - package/fesm2015/firestitch-content.js +25 -8
 - package/fesm2015/firestitch-content.js.map +1 -1
 - package/package.json +1 -1
 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"firestitch-content.js","sources":["../../src/app/enums/page-type.enum.ts","../../src/app/consts/page-types.const.ts","../../src/app/injectors/content-config.injector.ts","../../src/app/modules/content-pages/components/content-page/content-page.component.ts","../../src/app/modules/content-pages/components/content-page/content-page.component.html","../../src/app/modules/editor/components/editor/editor.component.ts","../../src/app/modules/editor/components/editor/editor.component.html","../../src/app/modules/editor/fs-content-editor.module.ts","../../src/app/modules/content-pages/components/content-pages/content-pages.component.ts","../../src/app/modules/content-pages/components/content-pages/content-pages.component.html","../../src/app/modules/content-pages/fs-content-pages.module.ts","../../src/app/modules/content-layouts/components/content-layout/content-layout.component.ts","../../src/app/modules/content-layouts/components/content-layout/content-layout.component.html","../../src/app/modules/content-layouts/components/content-layouts/content-layouts.component.ts","../../src/app/modules/content-layouts/components/content-layouts/content-layouts.component.html","../../src/app/modules/content-layouts/fs-content-layouts.module.ts","../../src/app/modules/content/components/content-renderer/content-renderer.component.ts","../../src/app/modules/content/components/content-renderer/content-renderer.component.html","../../src/app/modules/content/components/content/content.component.ts","../../src/app/modules/content/components/content/content.component.html","../../src/app/modules/content/fs-content.module.ts","../../src/firestitch-content.ts"],"sourcesContent":["export enum PageType {\n  StandardPage = 'standardPage',\n  BlogPost = 'blogPost',\n  HomePage = 'homePage',\n  NotFoundPage = 'notFoundPage',\n}\n","import { PageType } from '../enums';\n\nexport const PageTypes = [\n  { name: 'Standard Page', value: PageType.StandardPage },\n  { name: 'Home Page', value: PageType.HomePage },\n  { name: 'Not Found Page', value: PageType.NotFoundPage },\n  { name: 'Blog Post', value: PageType.BlogPost },\n];\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_CONTENT_CONFIG = new InjectionToken<any>('fs-content-config');\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Inject,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  ViewChildren,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject, of } from 'rxjs';\nimport { switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { PageTypes } from '../../../../consts';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n  templateUrl: './content-page.component.html',\n  styleUrls: ['./content-page.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentPageComponent implements OnInit, OnDestroy {\n\n  @ViewChildren(FsTextEditorComponent)\n  public textEditors: QueryList<FsTextEditorComponent>;\n\n  public contentPage = null;\n  public PageTypes = PageTypes;\n  public contentLayouts;\n  public editors = { content: true, styles: true };\n\n  private _destroy$ = new Subject<void>();\n\n  constructor(\n    @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n    @Inject(MAT_DIALOG_DATA) private _data: any,\n    private _dialogRef: MatDialogRef<ContentPageComponent>,\n    private _message: FsMessage,\n    private _cdRef: ChangeDetectorRef,\n  ) {}\n\n  public ngOnInit(): void {\n    this._dialogRef.updateSize('600px');\n    this._fetchData();\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  public save = () => {\n    return this._config.saveContentPage(this.contentPage)\n      .pipe(\n        tap((contentPage) => {\n          this._message.success('Saved Changes');\n          this._dialogRef.close(contentPage);\n        }),\n      );\n  };\n\n  private _fetchData(): void {\n    this._config.loadContentLayouts()\n      .subscribe((contentLayouts) => {\n        this.contentLayouts = contentLayouts;\n        this._cdRef.markForCheck();\n      });\n\n    of(this._data.contentPage)\n      .pipe(\n        switchMap((contentPage) => {\n          return of(contentPage);\n        }),\n        takeUntil(this._destroy$),\n      )\n      .subscribe((contentPage) => {\n        this.contentPage = {\n          ...contentPage,\n        };\n\n        this._cdRef.markForCheck();\n      });\n  }\n\n}\n","<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentPage\">\n  <fs-dialog>\n    <h1 mat-dialog-title>{{contentPage.id ? 'Page' : 'Create Page'}}</h1>\n    <div mat-dialog-content>\n      <div class=\"fs-column\">\n        <mat-form-field>\n          <mat-select\n              [(ngModel)]=\"contentPage.type\"\n              name=\"type\"\n              required\n              placeholder=\"Type\">\n            <mat-option\n                *ngFor=\"let item of PageTypes\"\n                [value]=\"item.value\">\n              {{ item.name }}\n            </mat-option>\n          </mat-select>\n        </mat-form-field>\n        <mat-form-field *ngIf=\"contentLayouts\">\n          <mat-select\n            [(ngModel)]=\"contentPage.contentLayoutId\"\n            required\n            name=\"contentLayoutId\"\n            placeholder=\"Layout\">\n              <mat-option\n                *ngFor=\"let item of contentLayouts\"\n                [value]=\"item.id\">\n                  {{ item.name }}\n              </mat-option>\n          </mat-select>\n        </mat-form-field>\n        <mat-form-field>\n          <input\n            matInput\n            [(ngModel)]=\"contentPage.name\"\n            name=\"name\"\n            required\n            placeholder=\"Name\">\n        </mat-form-field>\n        <mat-form-field>\n          <input\n            matInput\n            [(ngModel)]=\"contentPage.path\"\n            name=\"path\"\n            required\n            placeholder=\"Path\">\n        </mat-form-field>\n        <mat-form-field>\n          <input\n            matInput\n            [(ngModel)]=\"contentPage.title\"\n            name=\"title\"\n            placeholder=\"Title\">\n        </mat-form-field>\n      </div>\n    </div>\n\n    <div mat-dialog-actions>\n      <fs-form-dialog-actions>\n      </fs-form-dialog-actions>\n    </div>\n  </fs-dialog>\n</form>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Inject,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n} from '@angular/core';\n\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsFormDirective } from '@firestitch/form';\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject, fromEvent } from 'rxjs';\nimport { finalize, take, takeUntil, tap } from 'rxjs/operators';\n\nimport { FsContentConfig } from '../../../../interfaces';\nimport { ContentPageComponent } from '../../../content-pages/components/content-page';\n\n\n@Component({\n  templateUrl: './editor.component.html',\n  styleUrls: ['./editor.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorComponent implements OnInit, OnDestroy {\n\n  @ViewChild(FsFormDirective)\n  public form: FsFormDirective;\n\n  @ViewChild('styleEditor')\n  public styleEditor: FsTextEditorComponent;\n\n  @ViewChild('contentEditor')\n  public contentEditor: FsTextEditorComponent;\n\n  @ViewChild('separator', { static: true, read: ElementRef })\n  public separator: ElementRef;\n\n  @ViewChild('contentContainer', { static: true, read: ElementRef })\n  public contentContainer: ElementRef;\n\n  @ViewChild('styleContainer', { static: true, read: ElementRef })\n  public styleContainer: ElementRef;\n\n  public contentPage;\n  public resizing = false;\n  public editors = { content: true, styles: true };\n\n  private _config: FsContentConfig;\n  private _destroy$ = new Subject<void>();\n\n  constructor(\n    @Inject(MAT_DIALOG_DATA) private _data: { contentPage: any; config: FsContentConfig },\n    private _dialogRef: MatDialogRef<EditorComponent>,\n    private _dialog: MatDialog,\n    private _message: FsMessage,\n    private _cdRef: ChangeDetectorRef,\n  ) {}\n\n  public ngOnInit(): void {\n    this.contentPage = this._data.contentPage;\n    this._config = this._data.config;\n    this._initSeparator();\n  }\n\n  public editorToggleChange(event: MatButtonToggleChange): void {\n    this.editors[event.value] = !this.editors[event.value];\n    this.updateEditorLayouts();\n  }\n\n  public updateEditorLayouts(): void {\n    setTimeout(() => {\n      if(this.editors.content) {\n        this.contentEditor.updateLayout();\n      }\n\n      if(this.editors.styles) {\n        this.styleEditor.updateLayout();\n      }\n    });\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  public stylesChanged() {\n    this.form.triggerSubmit();\n  }\n\n  public contentChanged() {\n    this.form.triggerSubmit();\n  }\n\n  public save = () => {\n    return this._config.saveContentPage({\n      id: this.contentPage.id,\n      styles: this.contentPage.styles,\n      content: this.contentPage.content,\n    })\n      .pipe(\n        tap((contentPage) => {\n          this.contentPage = {\n            ...this.contentPage,\n            ...contentPage,\n          };\n          this._cdRef.markForCheck();\n          this._message.success('Saved Changes');\n        }),\n      );\n  };\n\n  public openSettings(): void {\n    this._dialog.open(ContentPageComponent, {\n      data: {\n        contentPage: this.contentPage,\n      },\n    })\n      .afterClosed()\n      .pipe(\n        takeUntil(this._destroy$),\n      )\n      .subscribe((contentPage) => {\n        this.contentPage = {\n          ...this.contentPage,\n          ...contentPage,\n        };\n        this._cdRef.markForCheck();\n      });\n  }\n\n\n  private _initSeparator(): void {\n    fromEvent(this.separator.nativeElement, 'mousedown')\n      .pipe(\n        takeUntil(this._destroy$),\n      )\n      .subscribe((e) => {\n        this._moveSeparator(e);\n      });\n  }\n\n  private _moveSeparator(separatorEvent): void {\n    let mouseDown = {\n      clientX: separatorEvent.clientX,\n      clientY: separatorEvent.clientY,\n      offsetLeft:  Number(this.separator.nativeElement.offsetLeft),\n      offsetTop:   Number(this.separator.nativeElement.offsetTop),\n      firstWidth:  Number(this.contentContainer.nativeElement.offsetWidth),\n      secondWidth: Number(this.styleContainer.nativeElement.offsetWidth),\n    };\n\n    this.resizing = true;\n    this._cdRef.markForCheck();\n\n    fromEvent(document, 'mousemove')\n      .pipe(\n        finalize(() => {\n          mouseDown = null;\n          this.resizing = false;\n          this._cdRef.markForCheck();\n          this.updateEditorLayouts();\n        }),\n        takeUntil(\n          fromEvent(this.separator.nativeElement, 'mouseup')\n            .pipe(\n              take(1),\n              takeUntil(this._destroy$),\n            ),\n        ),\n        takeUntil(this._destroy$),\n      )\n      .subscribe((e: any) => {\n        const delta = { x: e.clientX - mouseDown.clientX,\n          y: e.clientY - mouseDown.clientY };\n\n        delta.x = Math.min(Math.max(delta.x, -mouseDown.firstWidth),\n          mouseDown.secondWidth);\n\n        this.separator.nativeElement.style.left = `${mouseDown.offsetLeft + delta.x}px`;\n        this.contentContainer.nativeElement.style.width = `${mouseDown.firstWidth + delta.x}px`;\n        this.styleContainer.nativeElement.style.width = `${mouseDown.secondWidth - delta.x}px`;\n      });\n  }\n}\n","<form fsForm [submit]=\"save\">\n  <fs-dialog>\n    <h1 mat-dialog-title>\n      <div class=\"title-container\">\n        <div class=\"title\">\n          Page\n          <div class=\"small\">{{contentPage.name}}</div>   \n        </div>\n        <a\n            (click)=\"openSettings()\"\n            mat-icon-button>\n          <mat-icon>settings</mat-icon>\n        </a>   \n      </div>\n    </h1>\n    <div mat-dialog-content>\n      <div class=\"container\">\n        <div class=\"editors\" [ngClass]=\"{ resizing: resizing, 'separator-enabled': editors.styles && editors.content }\">\n          <div #contentContainer class=\"editor editor-content\" [ngClass]=\"{ 'content-enabled': editors.content }\">\n            <fs-label>Content</fs-label>\n            <div class=\"editor-container\">\n              <fs-text-editor \n                #contentEditor\n                [(ngModel)]=\"contentPage.content\" \n                (blur)=\"contentChanged()\"\n                name=\"content\"\n                [config]=\"{ tabSize: 2, language: 'html' }\">\n              </fs-text-editor>              \n            </div>\n          </div>\n          <div  \n            #separator\n            class=\"separator\">\n            <mat-icon>drag_indicator</mat-icon>\n          </div>\n          <div \n              #styleContainer \n              class=\"editor editor-styles\" \n              [ngClass]=\"{ 'styles-enabled': editors.styles }\"\n              [style.width]=\"'600px'\">\n            <fs-label>Styles</fs-label>\n            <div class=\"editor-container\">\n              <fs-text-editor \n                #styleEditor\n                [(ngModel)]=\"contentPage.styles\" \n                (blur)=\"stylesChanged()\"\n                name=\"styles\"\n                [config]=\"{  tabSize: 2, language: 'scss' }\">\n              </fs-text-editor>    \n            </div>\n          </div>    \n        </div>\n      </div>\n    </div>\n\n    <div mat-dialog-actions>\n      <fs-form-dialog-actions\n        [save]=\"false\"\n        [done]=\"true\">\n      </fs-form-dialog-actions>\n      <div class=\"toggles\">\n        <mat-button-toggle-group multiple>\n          <mat-button-toggle value=\"content\" [checked]=\"editors.content\" (change)=\"editorToggleChange($event)\">Content</mat-button-toggle>\n          <mat-button-toggle value=\"styles\" [checked]=\"editors.styles\" (change)=\"editorToggleChange($event)\">Styles</mat-button-toggle>\n        </mat-button-toggle-group>      \n      </div>\n    </div>\n  </fs-dialog>\n</form>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { EditorComponent } from './components/editor';\n\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n\n    MatDialogModule,\n    MatButtonModule,\n    MatTabsModule,\n    MatIconModule,\n    MatButtonToggleModule,\n\n    FsListModule,\n    FsFormModule,\n    FsLabelModule,\n    FsHtmlEditorModule,\n    FsDialogModule,\n    FsTextEditorModule,\n  ],\n  exports: [\n    EditorComponent,\n  ],\n  declarations: [\n    EditorComponent,\n  ],\n})\nexport class FsContentEditorModule {\n }\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { index } from '@firestitch/common';\nimport { ItemType } from '@firestitch/filter';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\n\nimport { Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\nimport { PageTypes } from '../../../../consts';\nimport { PageType } from '../../../../enums';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { EditorComponent } from '../../../editor/components/editor';\nimport { ContentPageComponent } from '../content-page';\n\n\n@Component({\n  selector: 'fs-content-pages',\n  templateUrl: './content-pages.component.html',\n  styleUrls: ['./content-pages.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentPagesComponent implements OnInit, OnDestroy {\n\n  @Input() public htmlEditorConfig: FsHtmlEditorConfig;\n\n  @ViewChild(FsListComponent)\n  public listComponent: FsListComponent;\n\n  public listConfig: FsListConfig;\n  public pageTypes = index(PageTypes, 'value', 'name');\n\n  private _destroy$ = new Subject<void>();\n\n  constructor(\n    @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n    private _dialog: MatDialog,\n  ) {}\n\n  public ngOnInit(): void {\n    this._initListConfig();\n  }\n\n  public openEditor(contentPage: any): void {\n    this._dialog.open(EditorComponent, {\n      data: {\n        contentPage,\n        config: this._config,\n      },\n      maxWidth: '100vw',\n      maxHeight:  '100vw',\n      width: '100%',\n      height: '100%',\n      autoFocus: false,\n    })\n      .afterClosed()\n      .pipe(\n        filter((_contentPage) => !!_contentPage),\n        takeUntil(this._destroy$),\n      )\n      .subscribe(() => {\n        this.listComponent.reload();\n      });\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  private _initListConfig(): void {\n    this.listConfig = {\n      filters: [\n        {\n          name: 'keyword',\n          type: ItemType.Keyword,\n          label: 'Search',\n        },\n      ],\n      actions: [\n        {\n          label: 'Create',\n          click: () => {\n            this._dialog.open(ContentPageComponent, {\n              data: {\n                contentPage: {\n                  type: PageType.StandardPage,\n                },\n              },\n            })\n              .afterClosed()\n              .pipe(\n                filter((contentPage) => !!contentPage),\n                takeUntil(this._destroy$),\n              )\n              .subscribe((contentPage) => {\n                this.openEditor(contentPage);\n                this.listComponent.reload();\n              });\n          },\n        },\n      ],\n      rowActions: [\n        {\n          click: (data) => {\n            return this._config.deleteContentPage(data);\n          },\n          remove: {\n            title: 'Confirm',\n            template: 'Are you sure you would like to delete this record?',\n          },\n          menu: true,\n          label: 'Delete',\n        },\n      ],\n      fetch: (query) => {\n        return this._config.loadContentPages(query)\n          .pipe(\n            map((response: any) => {\n              return { data: response.contentPages, paging: response.paging };\n            }),\n          );\n      },\n      restore: {\n        query: { state: 'deleted' },\n        filterLabel: 'Show Deleted',\n        menuLabel: 'Restore',\n        reload: true,\n        click: (row) => {\n          return this._config.saveContentPage({ id: row.id, state: 'active' });\n        },\n      },\n    };\n  }\n\n}\n\n\n","<fs-list [config]=\"listConfig\">\n  <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n    <ng-template fs-list-cell let-row=\"row\">\n      <a (click)=\"openEditor(row)\">{{row.name}}</a>\n    </ng-template>\n  </fs-list-column>\n  <fs-list-column name=\"path\" title=\"Path\" [sortable]=\"true\">\n    <ng-template fs-list-cell let-row=\"row\">\n      <a [href]=\"'/' + row.path\" target=\"_black\">/{{row.path}}</a>\n    </ng-template>\n  </fs-list-column>\n  <fs-list-column name=\"type\" title=\"Type\" [sortable]=\"true\">\n    <ng-template fs-list-cell let-row=\"row\">\n      {{pageTypes[row.type]}}\n    </ng-template>\n  </fs-list-column>\n  <fs-list-column name=\"modify_date\" title=\"Modified\" [sortable]=\"true\">\n    <ng-template fs-list-cell let-row=\"row\">\n      {{row.modifyDate | fsDate: 'date-time-yearless'}}\n    </ng-template>\n  </fs-list-column>\n</fs-list>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsListModule } from '@firestitch/list';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { FsContentEditorModule } from '../editor';\nimport { ContentPageComponent } from './components/content-page';\nimport { FsContentPagesComponent } from './components/content-pages';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n\n    MatDialogModule,\n    MatInputModule,\n    MatFormFieldModule,\n    MatButtonModule,\n    MatTabsModule,\n    MatIconModule,\n    MatSelectModule,\n    MatButtonToggleModule,\n\n    FsListModule,\n    FsDateModule,\n    FsFormModule,\n    FsLabelModule,\n    FsSkeletonModule,\n    FsHtmlEditorModule,\n    FsDialogModule,\n    FsTextEditorModule,\n\n    FsContentEditorModule,\n  ],\n  exports: [\n    FsContentPagesComponent,\n  ],\n  declarations: [\n    FsContentPagesComponent,\n    ContentPageComponent,\n  ],\n})\nexport class FsContentPagesModule {\n  static forRoot(): ModuleWithProviders<FsContentPagesModule> {\n    return {\n      ngModule: FsContentPagesModule,\n    };\n  }\n}\n","import {\n  Component,\n  Inject,\n  OnInit,\n  OnDestroy,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  ViewChildren,\n  QueryList,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject, of } from 'rxjs';\nimport { switchMap, tap, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n  templateUrl: './content-layout.component.html',\n  styleUrls: ['./content-layout.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentLayoutComponent implements OnInit, OnDestroy {\n\n  @ViewChildren(FsTextEditorComponent)\n  public textEditors: QueryList<FsTextEditorComponent>;\n\n  public contentLayout = null;\n  public editors = { content: true, styles: true };\n\n  private _destroy$ = new Subject<void>();\n\n  constructor(    \n    @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n    @Inject(MAT_DIALOG_DATA) private _data: any,\n    private _dialogRef: MatDialogRef<ContentLayoutComponent>,\n    private _message: FsMessage,\n    private _cdRef: ChangeDetectorRef,\n  ) {}\n\n  public ngOnInit(): void {\n    this._fetchData();\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  public save = () => {\n    return this._config.saveContentLayout(this.contentLayout)\n      .pipe(\n        tap((contentLayout) => {\n          this._message.success('Saved Changes');\n          this._dialogRef.close(contentLayout);\n        }),\n      );\n  };\n\n  private _fetchData(): void {\n    of(this._data.contentLayout)\n      .pipe(\n        switchMap((contentLayout) => {\n          return of(contentLayout);\n        }),\n        takeUntil(this._destroy$),\n      )\n      .subscribe((contentLayout) => {\n        this.contentLayout = { ...contentLayout };\n\n        this._cdRef.markForCheck();\n      });\n  }\n\n}\n","<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentLayout\">\n  <fs-dialog>\n    <h1 mat-dialog-title>{{contentLayout.id ? 'Layout' : 'Layout Page'}}</h1>\n    <div mat-dialog-content>\n      <div class=\"fs-column\">\n        <mat-form-field>\n          <input\n            matInput\n            [(ngModel)]=\"contentLayout.name\"\n            name=\"name\"\n            required\n            placeholder=\"Name\">\n        </mat-form-field>\n        <mat-form-field>\n          <input\n            matInput\n            [(ngModel)]=\"contentLayout.tag\"\n            name=\"tag\"\n            placeholder=\"Tag\">\n        </mat-form-field>\n      </div>\n    </div>\n\n    <div mat-dialog-actions>\n      <fs-form-dialog-actions>\n      </fs-form-dialog-actions>\n    </div>\n  </fs-dialog>\n</form>\n","import {\n  Component,\n  OnInit,\n  ViewChild,\n  ChangeDetectionStrategy,\n  OnDestroy,\n  Inject,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\n\nimport { map, takeUntil, filter } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { ContentLayoutComponent } from '../../components/content-layout';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { EditorComponent } from '../../../editor/components/editor';\n\n\n@Component({\n  selector: 'fs-content-layouts',\n  templateUrl: './content-layouts.component.html',\n  styleUrls: ['./content-layouts.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentLayoutsComponent implements OnInit, OnDestroy {\n\n  @ViewChild(FsListComponent)\n  public listComponent: FsListComponent;\n\n  public listConfig: FsListConfig;\n\n  private _destroy$ = new Subject<void>();\n\n  constructor(\n    @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n    private _dialog: MatDialog,\n  ) {}\n\n  public ngOnInit(): void {\n    this._initListConfig();\n  }\n\n  public openEditor(contentLayout: any): void {\n    this._dialog.open(EditorComponent, {\n        maxWidth: null,\n        maxHeight: null,      \n        data: {\n          styles: contentLayout.styles,\n          content: contentLayout.content,\n          save: (data) => {\n            return this._config.saveContentLayout({\n              id: contentLayout.id,\n              ...data,\n            });\n          },\n        },\n      })\n        .afterClosed()\n        .pipe(\n          takeUntil(this._destroy$),\n        )        \n        .subscribe(() => {\n          this.listComponent.reload();\n        });\n  }\n\n  public openLayout(contentLayout: any): void {\n    this._dialog.open(ContentLayoutComponent, {\n      data: {\n        contentLayout,\n      },\n    })\n      .afterClosed()\n      .pipe(\n        filter((_contentLayout) => !!_contentLayout),\n        takeUntil(this._destroy$),\n      )\n      .subscribe(() => {\n        this.listComponent.reload();\n      });\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  private _initListConfig(): void {\n    this.listConfig = {\n      paging: false,\n      filters: [\n        {\n          name: 'keyword',\n          type: ItemType.Keyword,\n          label: 'Search',\n        },\n      ],\n      actions: [\n        {\n          label: 'Create',\n          click: () => {\n            this.openLayout({});\n          },\n        },\n      ],\n      rowActions: [\n        {\n          click: (data) => {\n            return this._config.deleteContentLayout(data);\n          },\n          remove: {\n            title: 'Confirm',\n            template: 'Are you sure you would like to delete this record?',\n          },\n          menu: true,\n          label: 'Delete',\n        },\n      ],\n      fetch: (query) => {\n        return this._config.loadContentLayouts(query)\n          .pipe(\n            map((contentLayouts: any) => {\n              return { data: contentLayouts  };\n            }),\n          );\n      },\n      restore: {\n        query: { state: 'deleted' },\n        filterLabel: 'Show Deleted',\n        menuLabel: 'Restore',\n        reload: true,\n        click: (row) => {\n          return this._config.saveContentLayout({ id: row.id, state: 'active' });\n        },\n      },\n    };\n  }\n\n}\n\n","<fs-list [config]=\"listConfig\">\n  <fs-list-column name=\"design\" width=\"1%\">\n    <ng-template fs-list-cell let-row=\"row\">\n      <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n    </ng-template>\n  </fs-list-column>\n  <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n    <ng-template fs-list-cell let-row=\"row\">\n      <a (click)=\"openLayout(row)\">{{row.name}}</a>\n    </ng-template>\n  </fs-list-column>\n  <fs-list-column name=\"modify_date\" title=\"Modified\" [sortable]=\"true\">\n    <ng-template fs-list-cell let-row=\"row\">\n      {{row.modifyDate | fsDate: 'date-time-yearless'}}\n    </ng-template>\n  </fs-list-column>\n</fs-list>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsListModule } from '@firestitch/list';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsContentEditorModule } from '../editor';\nimport { ContentLayoutComponent } from './components/content-layout';\nimport { FsContentLayoutsComponent } from './components/content-layouts';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n\n    MatDialogModule,\n    MatInputModule,\n    MatFormFieldModule,\n    MatButtonModule,\n    MatTabsModule,\n    MatIconModule,\n    MatSelectModule,\n    MatButtonToggleModule,\n\n    FsListModule,\n    FsDateModule,\n    FsFormModule,\n    FsLabelModule,\n    FsSkeletonModule,\n    FsHtmlEditorModule,\n    FsDialogModule,\n    FsTextEditorModule,\n\n    FsContentEditorModule,\n  ],\n  exports: [\n    FsContentLayoutsComponent,\n  ],\n  declarations: [\n    ContentLayoutComponent,\n    FsContentLayoutsComponent,\n  ],\n})\nexport class FsContentLayoutsModule {\n}\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  OnDestroy,\n  ElementRef,\n  Input,\n  AfterViewChecked,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\n\nimport { Subject } from 'rxjs';\n\n\n@Component({\n  selector: 'fs-content-renderer',\n  templateUrl: './content-renderer.component.html',\n  styleUrls: ['./content-renderer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentRendererComponent implements OnDestroy, AfterViewChecked {\n\n  @Input() public set contentPage(contentPage) {\n    if(contentPage) {\n      this.content = this._sanitizer.bypassSecurityTrustHtml(contentPage.content);\n      this.styles = contentPage.styles;\n    }\n  }\n\n  public content;\n  public styles;\n  public _destroy$ = new Subject();\n\n  constructor(\n    private _sanitizer: DomSanitizer,\n    private _router: Router,\n    private _el: ElementRef,\n  ) {}\n\n  public ngAfterViewChecked(): void {\n    let el = document.querySelector('#contentPageStyles');\n    if(!el) {\n      el = document.createElement('style');\n      el.setAttribute('id','contentPageStyles');\n      document.getElementsByTagName('head')[0].appendChild(el);\n    }\n\n    el.innerHTML = this.styles;\n\n    this.registerHrefs();\n  }\n\n  public registerHrefs(): void {\n    Array.from(this.el.querySelectorAll('a[href]'))\n      .filter((el: Element) => {\n        return el.getAttribute('href').match(/^\\//);\n      })\n      .forEach((el: Element) => {\n        el.addEventListener('click',(event: MouseEvent) => {\n          if(!event.shiftKey && !event.ctrlKey) {\n            event.preventDefault();\n            const href = el.getAttribute('href');\n            this._router.navigateByUrl(href);\n          }\n        });\n      });\n  }\n\n  public get el(): any {\n    return this._el.nativeElement;\n  }\n\n  public ngOnDestroy(): void {\n    this.removeStyles();\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  public removeStyles(): void {\n    const el = document.querySelector('#contentPageStyles');\n    if(el) {\n      el.remove();\n    }\n  }\n\n}\n","<div *ngIf=\"content\" [innerHTML]=\"content\"></div>\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  OnInit,\n  OnDestroy,\n  ElementRef,\n  Inject,\n} from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n  selector: 'fs-content',\n  templateUrl: './content.component.html',\n  styleUrls: ['./content.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentComponent implements OnInit, OnDestroy {\n\n  public contentPage;\n  \n  private _destroy$ = new Subject();\n\n  constructor(\n    @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n    private _title: Title,\n    private _cdRef: ChangeDetectorRef,\n    private _router: Router,\n    private _el: ElementRef,\n  ) {}\n\n  public ngOnInit(): void {\n    this.load();\n\n    this._router.events\n      .pipe(\n        filter((e) => e instanceof NavigationEnd),\n        takeUntil(this._destroy$),\n      )\n      .subscribe(() => {\n        this.load();\n      });\n  }\n\n  public load(): void {\n    const path = (window as any).location.pathname;\n    this._config.loadContent(path)\n      .subscribe((contentPage) => {\n        if(contentPage.title) {\n          this._title.setTitle(contentPage.title);\n\n          let ogTitleEl = document.querySelector('head meta[property=\"og:title\"]');\n          if(!ogTitleEl) {\n            ogTitleEl = document.createElement('meta');\n            ogTitleEl.setAttribute('property','og:title');\n            document.getElementsByTagName('head')[0].appendChild(ogTitleEl);\n          }\n\n          ogTitleEl.setAttribute('content',contentPage.title);\n        }\n\n        this.contentPage = contentPage;\n        this._cdRef.markForCheck();\n      });\n  }\n\n  public get el(): any {\n    return this._el.nativeElement;\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next();\n    this._destroy$.complete();\n    this._title.setTitle('');\n  }\n\n}\n","<fs-content-renderer *ngIf=\"contentPage\" [contentPage]=\"contentPage\"></fs-content-renderer>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\n\nimport { FsContentComponent } from './components/content';\nimport { ContentRendererComponent } from './components/content-renderer';\n\n\n\n@NgModule({\n  imports: [\n    CommonModule,\n\n    FsHtmlEditorModule,\n  ],\n  exports: [\n    FsContentComponent,\n  ],\n  declarations: [\n    FsContentComponent,\n    ContentRendererComponent,\n  ],\n})\nexport class FsContentModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"firestitch-content.js","sources":["../../src/app/enums/page-type.enum.ts","../../src/app/consts/page-types.const.ts","../../src/app/injectors/content-config.injector.ts","../../src/app/modules/content-pages/components/content-page/content-page.component.ts","../../src/app/modules/content-pages/components/content-page/content-page.component.html","../../src/app/modules/editor/components/editor/editor.component.ts","../../src/app/modules/editor/components/editor/editor.component.html","../../src/app/modules/editor/fs-content-editor.module.ts","../../src/app/modules/content-pages/components/content-pages/content-pages.component.ts","../../src/app/modules/content-pages/components/content-pages/content-pages.component.html","../../src/app/modules/content-pages/fs-content-pages.module.ts","../../src/app/modules/content-layouts/components/content-layout/content-layout.component.ts","../../src/app/modules/content-layouts/components/content-layout/content-layout.component.html","../../src/app/modules/content-layouts/components/content-layouts/content-layouts.component.ts","../../src/app/modules/content-layouts/components/content-layouts/content-layouts.component.html","../../src/app/modules/content-layouts/fs-content-layouts.module.ts","../../src/app/modules/content/components/content-renderer/content-renderer.component.ts","../../src/app/modules/content/components/content-renderer/content-renderer.component.html","../../src/app/modules/content/components/content/content.component.ts","../../src/app/modules/content/components/content/content.component.html","../../src/app/modules/content/fs-content.module.ts","../../src/firestitch-content.ts"],"sourcesContent":["export enum PageType {\n  StandardPage = 'standardPage',\n  BlogPost = 'blogPost',\n  HomePage = 'homePage',\n  NotFoundPage = 'notFoundPage',\n}\n","import { PageType } from '../enums';\n\nexport const PageTypes = [\n  { name: 'Standard Page', value: PageType.StandardPage },\n  { name: 'Home Page', value: PageType.HomePage },\n  { name: 'Not Found Page', value: PageType.NotFoundPage },\n  { name: 'Blog Post', value: PageType.BlogPost },\n];\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_CONTENT_CONFIG = new InjectionToken<any>('fs-content-config');\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Inject,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  ViewChildren,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject, of } from 'rxjs';\nimport { switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { PageTypes } from '../../../../consts';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n  templateUrl: './content-page.component.html',\n  styleUrls: ['./content-page.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentPageComponent implements OnInit, OnDestroy {\n\n  @ViewChildren(FsTextEditorComponent)\n  public textEditors: QueryList<FsTextEditorComponent>;\n\n  public contentPage = null;\n  public PageTypes = PageTypes;\n  public contentLayouts;\n  public editors = { content: true, styles: true };\n\n  private _destroy$ = new Subject<void>();\n\n  constructor(\n    @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n    @Inject(MAT_DIALOG_DATA) private _data: any,\n    private _dialogRef: MatDialogRef<ContentPageComponent>,\n    private _message: FsMessage,\n    private _cdRef: ChangeDetectorRef,\n  ) {}\n\n  public ngOnInit(): void {\n    this._dialogRef.updateSize('600px');\n    this._fetchData();\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  public save = () => {\n    return this._config.saveContentPage(this.contentPage)\n      .pipe(\n        tap((contentPage) => {\n          this._message.success('Saved Changes');\n          this._dialogRef.close(contentPage);\n        }),\n      );\n  };\n\n  private _fetchData(): void {\n    this._config.loadContentLayouts()\n      .subscribe((contentLayouts) => {\n        this.contentLayouts = contentLayouts;\n        this._cdRef.markForCheck();\n      });\n\n    of(this._data.contentPage)\n      .pipe(\n        switchMap((contentPage) => {\n          return of(contentPage);\n        }),\n        takeUntil(this._destroy$),\n      )\n      .subscribe((contentPage) => {\n        this.contentPage = {\n          ...contentPage,\n        };\n\n        this._cdRef.markForCheck();\n      });\n  }\n\n}\n","<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentPage\">\n  <fs-dialog>\n    <h1 mat-dialog-title>{{contentPage.id ? 'Page' : 'Create Page'}}</h1>\n    <div mat-dialog-content>\n      <div class=\"fs-column\">\n        <mat-form-field>\n          <mat-select\n              [(ngModel)]=\"contentPage.type\"\n              name=\"type\"\n              required\n              placeholder=\"Type\">\n            <mat-option\n                *ngFor=\"let item of PageTypes\"\n                [value]=\"item.value\">\n              {{ item.name }}\n            </mat-option>\n          </mat-select>\n        </mat-form-field>\n        <mat-form-field *ngIf=\"contentLayouts\">\n          <mat-select\n            [(ngModel)]=\"contentPage.contentLayoutId\"\n            required\n            name=\"contentLayoutId\"\n            placeholder=\"Layout\">\n              <mat-option\n                *ngFor=\"let item of contentLayouts\"\n                [value]=\"item.id\">\n                  {{ item.name }}\n              </mat-option>\n          </mat-select>\n        </mat-form-field>\n        <mat-form-field>\n          <input\n            matInput\n            [(ngModel)]=\"contentPage.name\"\n            name=\"name\"\n            required\n            placeholder=\"Name\">\n        </mat-form-field>\n        <mat-form-field>\n          <input\n            matInput\n            [(ngModel)]=\"contentPage.path\"\n            name=\"path\"\n            required\n            placeholder=\"Path\">\n        </mat-form-field>\n        <mat-form-field>\n          <input\n            matInput\n            [(ngModel)]=\"contentPage.title\"\n            name=\"title\"\n            placeholder=\"Title\">\n        </mat-form-field>\n      </div>\n    </div>\n\n    <div mat-dialog-actions>\n      <fs-form-dialog-actions>\n      </fs-form-dialog-actions>\n    </div>\n  </fs-dialog>\n</form>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Inject,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n} from '@angular/core';\n\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsFormDirective } from '@firestitch/form';\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent, FsTextEditorConfig } from '@firestitch/text-editor';\n\nimport { Observable, Subject, fromEvent } from 'rxjs';\nimport { finalize, take, takeUntil, tap } from 'rxjs/operators';\n\n\nimport { ContentPageComponent } from '../../../content-pages/components/content-page';\n\n\n@Component({\n  templateUrl: './editor.component.html',\n  styleUrls: ['./editor.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorComponent implements OnInit, OnDestroy {\n\n  @ViewChild(FsFormDirective)\n  public form: FsFormDirective;\n\n  @ViewChild('styleEditor')\n  public styleEditor: FsTextEditorComponent;\n\n  @ViewChild('contentEditor')\n  public contentEditor: FsTextEditorComponent;\n\n  @ViewChild('separator', { static: true, read: ElementRef })\n  public separator: ElementRef;\n\n  @ViewChild('contentContainer', { static: true, read: ElementRef })\n  public contentContainer: ElementRef;\n\n  @ViewChild('styleContainer', { static: true, read: ElementRef })\n  public styleContainer: ElementRef;\n\n  public contentPage: {\n    id?: number;\n    styles?: string;\n    content?: string;\n    name?: string;\n  };\n\n  public resizing = false;\n  public title;\n  public editors = { content: true, styles: true };\n  public stylesConfig: FsTextEditorConfig;\n  public contentConfig: FsTextEditorConfig;\n\n  private _destroy$ = new Subject<void>();\n  private _save: (data) => Observable<any>;\n\n  constructor(\n    @Inject(MAT_DIALOG_DATA) private _data: {\n      contentPage: any;\n      title: string;\n      save: (data) => Observable<any>;\n    },\n    private _dialogRef: MatDialogRef<EditorComponent>,\n    private _dialog: MatDialog,\n    private _message: FsMessage,\n    private _cdRef: ChangeDetectorRef,\n  ) {}\n\n  public ngOnInit(): void {\n    this.stylesConfig = {\n      tabSize: 2,\n      language: 'scss',\n      height: '100%',\n    };\n    this.contentConfig = {\n      tabSize: 2,\n      language: 'html',\n      height: '100%',\n    };\n    this.title = this._data.title;\n    this.contentPage = this._data.contentPage;\n    this._save = this._data.save;\n    this._initSeparator();\n  }\n\n  public editorToggleChange(event: MatButtonToggleChange): void {\n    this.editors[event.value] = !this.editors[event.value];\n    this.updateEditorLayouts();\n  }\n\n  public updateEditorLayouts(): void {\n    setTimeout(() => {\n      if(this.editors.content) {\n        this.contentEditor.updateLayout();\n      }\n\n      if(this.editors.styles) {\n        this.styleEditor.updateLayout();\n      }\n    });\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  public stylesChanged() {\n    this.form.triggerSubmit();\n  }\n\n  public contentChanged() {\n    this.form.triggerSubmit();\n  }\n\n  public save = () => {\n    return this._save({\n      id: this.contentPage.id,\n      styles: this.contentPage.styles,\n      content: this.contentPage.content,\n    })\n      .pipe(\n        tap((contentPage) => {\n          this.contentPage = {\n            ...this.contentPage,\n            ...contentPage,\n          };\n          this._cdRef.markForCheck();\n          this._message.success('Saved Changes');\n        }),\n      );\n  };\n\n  public openSettings(): void {\n    this._dialog.open(ContentPageComponent, {\n      data: {\n        contentPage: this.contentPage,\n      },\n    })\n      .afterClosed()\n      .pipe(\n        takeUntil(this._destroy$),\n      )\n      .subscribe((contentPage) => {\n        this.contentPage = {\n          ...this.contentPage,\n          ...contentPage,\n        };\n        this._cdRef.markForCheck();\n      });\n  }\n\n\n  private _initSeparator(): void {\n    fromEvent(this.separator.nativeElement, 'mousedown')\n      .pipe(\n        takeUntil(this._destroy$),\n      )\n      .subscribe((e) => {\n        this._moveSeparator(e);\n      });\n  }\n\n  private _moveSeparator(separatorEvent): void {\n    let mouseDown = {\n      clientX: separatorEvent.clientX,\n      clientY: separatorEvent.clientY,\n      offsetLeft:  Number(this.separator.nativeElement.offsetLeft),\n      offsetTop:   Number(this.separator.nativeElement.offsetTop),\n      firstWidth:  Number(this.contentContainer.nativeElement.offsetWidth),\n      secondWidth: Number(this.styleContainer.nativeElement.offsetWidth),\n    };\n\n    this.resizing = true;\n    this._cdRef.markForCheck();\n\n    fromEvent(document, 'mousemove')\n      .pipe(\n        finalize(() => {\n          mouseDown = null;\n          this.resizing = false;\n          this._cdRef.markForCheck();\n          this.updateEditorLayouts();\n        }),\n        takeUntil(\n          fromEvent(this.separator.nativeElement, 'mouseup')\n            .pipe(\n              take(1),\n              takeUntil(this._destroy$),\n            ),\n        ),\n        takeUntil(this._destroy$),\n      )\n      .subscribe((e: any) => {\n        const delta = { x: e.clientX - mouseDown.clientX,\n          y: e.clientY - mouseDown.clientY };\n\n        delta.x = Math.min(Math.max(delta.x, -mouseDown.firstWidth),\n          mouseDown.secondWidth);\n\n        this.separator.nativeElement.style.left = `${mouseDown.offsetLeft + delta.x}px`;\n        this.contentContainer.nativeElement.style.width = `${mouseDown.firstWidth + delta.x}px`;\n        this.styleContainer.nativeElement.style.width = `${mouseDown.secondWidth - delta.x}px`;\n      });\n  }\n}\n","<form fsForm [submit]=\"save\">\n  <fs-dialog>\n    <h1 mat-dialog-title>\n      <div class=\"title-container\">\n        <div class=\"title\">\n          {{title}}\n          <div class=\"small\">{{contentPage.name}}</div>   \n        </div>\n        <a\n            (click)=\"openSettings()\"\n            mat-icon-button>\n          <mat-icon>settings</mat-icon>\n        </a>   \n      </div>\n    </h1>\n    <div mat-dialog-content>\n      <div class=\"container\">\n        <div class=\"editors\" [ngClass]=\"{ resizing: resizing, 'separator-enabled': editors.styles && editors.content }\">\n          <div #contentContainer class=\"editor editor-content\" [ngClass]=\"{ 'content-enabled': editors.content }\">\n            <fs-label>HTML</fs-label>\n            <div class=\"editor-container\">\n              <fs-text-editor \n                #contentEditor\n                [(ngModel)]=\"contentPage.content\" \n                (blur)=\"contentChanged()\"\n                name=\"content\"\n                [config]=\"contentConfig\">\n              </fs-text-editor>              \n            </div>\n          </div>\n          <div  \n            #separator\n            class=\"separator\">\n            <mat-icon>drag_indicator</mat-icon>\n          </div>\n          <div \n              #styleContainer \n              class=\"editor editor-styles\" \n              [ngClass]=\"{ 'styles-enabled': editors.styles }\"\n              [style.width]=\"'600px'\">\n            <fs-label>SCSS</fs-label>\n            <div class=\"editor-container\">\n              <fs-text-editor \n                #styleEditor\n                [(ngModel)]=\"contentPage.styles\" \n                (blur)=\"stylesChanged()\"\n                name=\"styles\"\n                [config]=\"stylesConfig\">\n              </fs-text-editor>    \n            </div>\n          </div>    \n        </div>\n      </div>\n    </div>\n\n    <div mat-dialog-actions>\n      <fs-form-dialog-actions\n        [save]=\"false\"\n        [done]=\"true\">\n      </fs-form-dialog-actions>\n      <div class=\"toggles\">\n        <mat-button-toggle-group multiple>\n          <mat-button-toggle value=\"content\" [checked]=\"editors.content\" (change)=\"editorToggleChange($event)\">Content</mat-button-toggle>\n          <mat-button-toggle value=\"styles\" [checked]=\"editors.styles\" (change)=\"editorToggleChange($event)\">Styles</mat-button-toggle>\n        </mat-button-toggle-group>      \n      </div>\n    </div>\n  </fs-dialog>\n</form>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { EditorComponent } from './components/editor';\n\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n\n    MatDialogModule,\n    MatButtonModule,\n    MatTabsModule,\n    MatIconModule,\n    MatButtonToggleModule,\n\n    FsListModule,\n    FsFormModule,\n    FsLabelModule,\n    FsHtmlEditorModule,\n    FsDialogModule,\n    FsTextEditorModule,\n  ],\n  exports: [\n    EditorComponent,\n  ],\n  declarations: [\n    EditorComponent,\n  ],\n})\nexport class FsContentEditorModule {\n }\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { index } from '@firestitch/common';\nimport { ItemType } from '@firestitch/filter';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\n\nimport { Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\nimport { PageTypes } from '../../../../consts';\nimport { PageType } from '../../../../enums';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { EditorComponent } from '../../../editor/components/editor';\nimport { ContentPageComponent } from '../content-page';\n\n\n@Component({\n  selector: 'fs-content-pages',\n  templateUrl: './content-pages.component.html',\n  styleUrls: ['./content-pages.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentPagesComponent implements OnInit, OnDestroy {\n\n  @Input() public htmlEditorConfig: FsHtmlEditorConfig;\n\n  @ViewChild(FsListComponent)\n  public listComponent: FsListComponent;\n\n  public listConfig: FsListConfig;\n  public pageTypes = index(PageTypes, 'value', 'name');\n\n  private _destroy$ = new Subject<void>();\n\n  constructor(\n    @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n    private _dialog: MatDialog,\n  ) {}\n\n  public ngOnInit(): void {\n    this._initListConfig();\n  }\n\n  public openEditor(contentPage: any): void {\n    this._dialog.open(EditorComponent, {\n      data: {\n        contentPage,\n        config: this._config,\n        title: 'Page',\n        save: (data) => {\n          return this._config.saveContentPage(data);\n        },\n      },\n      maxWidth: '100vw',\n      maxHeight:  '100vw',\n      width: '100%',\n      height: '100%',\n      autoFocus: false,\n    })\n      .afterClosed()\n      .pipe(\n        filter((_contentPage) => !!_contentPage),\n        takeUntil(this._destroy$),\n      )\n      .subscribe(() => {\n        this.listComponent.reload();\n      });\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  private _initListConfig(): void {\n    this.listConfig = {\n      filters: [\n        {\n          name: 'keyword',\n          type: ItemType.Keyword,\n          label: 'Search',\n        },\n      ],\n      actions: [\n        {\n          label: 'Create',\n          click: () => {\n            this._dialog.open(ContentPageComponent, {\n              data: {\n                contentPage: {\n                  type: PageType.StandardPage,\n                },\n              },\n            })\n              .afterClosed()\n              .pipe(\n                filter((contentPage) => !!contentPage),\n                takeUntil(this._destroy$),\n              )\n              .subscribe((contentPage) => {\n                this.openEditor(contentPage);\n                this.listComponent.reload();\n              });\n          },\n        },\n      ],\n      rowActions: [\n        {\n          click: (data) => {\n            return this._config.deleteContentPage(data);\n          },\n          remove: {\n            title: 'Confirm',\n            template: 'Are you sure you would like to delete this record?',\n          },\n          menu: true,\n          label: 'Delete',\n        },\n      ],\n      fetch: (query) => {\n        return this._config.loadContentPages(query)\n          .pipe(\n            map((response: any) => {\n              return { data: response.contentPages, paging: response.paging };\n            }),\n          );\n      },\n      restore: {\n        query: { state: 'deleted' },\n        filterLabel: 'Show Deleted',\n        menuLabel: 'Restore',\n        reload: true,\n        click: (row) => {\n          return this._config.saveContentPage({ id: row.id, state: 'active' });\n        },\n      },\n    };\n  }\n\n}\n\n\n","<fs-list [config]=\"listConfig\">\n  <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n    <ng-template fs-list-cell let-row=\"row\">\n      <a (click)=\"openEditor(row)\">{{row.name}}</a>\n    </ng-template>\n  </fs-list-column>\n  <fs-list-column name=\"path\" title=\"Path\" [sortable]=\"true\">\n    <ng-template fs-list-cell let-row=\"row\">\n      <a [href]=\"'/' + row.path\" target=\"_black\">/{{row.path}}</a>\n    </ng-template>\n  </fs-list-column>\n  <fs-list-column name=\"type\" title=\"Type\" [sortable]=\"true\">\n    <ng-template fs-list-cell let-row=\"row\">\n      {{pageTypes[row.type]}}\n    </ng-template>\n  </fs-list-column>\n  <fs-list-column name=\"modify_date\" title=\"Modified\" [sortable]=\"true\">\n    <ng-template fs-list-cell let-row=\"row\">\n      {{row.modifyDate | fsDate: 'date-time-yearless'}}\n    </ng-template>\n  </fs-list-column>\n</fs-list>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsListModule } from '@firestitch/list';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { FsContentEditorModule } from '../editor';\nimport { ContentPageComponent } from './components/content-page';\nimport { FsContentPagesComponent } from './components/content-pages';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n\n    MatDialogModule,\n    MatInputModule,\n    MatFormFieldModule,\n    MatButtonModule,\n    MatTabsModule,\n    MatIconModule,\n    MatSelectModule,\n    MatButtonToggleModule,\n\n    FsListModule,\n    FsDateModule,\n    FsFormModule,\n    FsLabelModule,\n    FsSkeletonModule,\n    FsHtmlEditorModule,\n    FsDialogModule,\n    FsTextEditorModule,\n\n    FsContentEditorModule,\n  ],\n  exports: [\n    FsContentPagesComponent,\n  ],\n  declarations: [\n    FsContentPagesComponent,\n    ContentPageComponent,\n  ],\n})\nexport class FsContentPagesModule {\n  static forRoot(): ModuleWithProviders<FsContentPagesModule> {\n    return {\n      ngModule: FsContentPagesModule,\n    };\n  }\n}\n","import {\n  Component,\n  Inject,\n  OnInit,\n  OnDestroy,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  ViewChildren,\n  QueryList,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject, of } from 'rxjs';\nimport { switchMap, tap, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n  templateUrl: './content-layout.component.html',\n  styleUrls: ['./content-layout.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentLayoutComponent implements OnInit, OnDestroy {\n\n  @ViewChildren(FsTextEditorComponent)\n  public textEditors: QueryList<FsTextEditorComponent>;\n\n  public contentLayout = null;\n  public editors = { content: true, styles: true };\n\n  private _destroy$ = new Subject<void>();\n\n  constructor(    \n    @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n    @Inject(MAT_DIALOG_DATA) private _data: any,\n    private _dialogRef: MatDialogRef<ContentLayoutComponent>,\n    private _message: FsMessage,\n    private _cdRef: ChangeDetectorRef,\n  ) {}\n\n  public ngOnInit(): void {\n    this._fetchData();\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  public save = () => {\n    return this._config.saveContentLayout(this.contentLayout)\n      .pipe(\n        tap((contentLayout) => {\n          this._message.success('Saved Changes');\n          this._dialogRef.close(contentLayout);\n        }),\n      );\n  };\n\n  private _fetchData(): void {\n    of(this._data.contentLayout)\n      .pipe(\n        switchMap((contentLayout) => {\n          return of(contentLayout);\n        }),\n        takeUntil(this._destroy$),\n      )\n      .subscribe((contentLayout) => {\n        this.contentLayout = { ...contentLayout };\n\n        this._cdRef.markForCheck();\n      });\n  }\n\n}\n","<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentLayout\">\n  <fs-dialog>\n    <h1 mat-dialog-title>{{contentLayout.id ? 'Layout' : 'Layout Page'}}</h1>\n    <div mat-dialog-content>\n      <div class=\"fs-column\">\n        <mat-form-field>\n          <input\n            matInput\n            [(ngModel)]=\"contentLayout.name\"\n            name=\"name\"\n            required\n            placeholder=\"Name\">\n        </mat-form-field>\n        <mat-form-field>\n          <input\n            matInput\n            [(ngModel)]=\"contentLayout.tag\"\n            name=\"tag\"\n            placeholder=\"Tag\">\n        </mat-form-field>\n      </div>\n    </div>\n\n    <div mat-dialog-actions>\n      <fs-form-dialog-actions>\n      </fs-form-dialog-actions>\n    </div>\n  </fs-dialog>\n</form>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Inject,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { ItemType } from '@firestitch/filter';\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\n\nimport { Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { EditorComponent } from '../../../editor/components/editor';\nimport { ContentLayoutComponent } from '../../components/content-layout';\n\n\n@Component({\n  selector: 'fs-content-layouts',\n  templateUrl: './content-layouts.component.html',\n  styleUrls: ['./content-layouts.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentLayoutsComponent implements OnInit, OnDestroy {\n\n  @ViewChild(FsListComponent)\n  public listComponent: FsListComponent;\n\n  public listConfig: FsListConfig;\n\n  private _destroy$ = new Subject<void>();\n\n  constructor(\n    @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n    private _dialog: MatDialog,\n  ) {}\n\n  public ngOnInit(): void {\n    this._initListConfig();\n  }\n\n  public openEditor(contentLayout: any): void {\n    this._dialog.open(EditorComponent, {\n      maxWidth: '100vw',\n      maxHeight:  '100vw',\n      width: '100%',\n      height: '100%',\n      data: {\n        contentPage: contentLayout,\n        title: 'Layout',\n        save: (data) => {\n          return this._config.saveContentLayout({\n            id: contentLayout.id,\n            ...data,\n          });\n        },\n      },\n    })\n      .afterClosed()\n      .pipe(\n        takeUntil(this._destroy$),\n      )\n      .subscribe(() => {\n        this.listComponent.reload();\n      });\n  }\n\n  public openLayout(contentLayout: any): void {\n    this._dialog.open(ContentLayoutComponent, {\n      data: {\n        contentLayout,\n      },\n    })\n      .afterClosed()\n      .pipe(\n        filter((_contentLayout) => !!_contentLayout),\n        takeUntil(this._destroy$),\n      )\n      .subscribe(() => {\n        this.listComponent.reload();\n      });\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  private _initListConfig(): void {\n    this.listConfig = {\n      paging: false,\n      filters: [\n        {\n          name: 'keyword',\n          type: ItemType.Keyword,\n          label: 'Search',\n        },\n      ],\n      actions: [\n        {\n          label: 'Create',\n          click: () => {\n            this.openLayout({});\n          },\n        },\n      ],\n      rowActions: [\n        {\n          click: (data) => {\n            return this._config.deleteContentLayout(data);\n          },\n          remove: {\n            title: 'Confirm',\n            template: 'Are you sure you would like to delete this record?',\n          },\n          menu: true,\n          label: 'Delete',\n        },\n      ],\n      fetch: (query) => {\n        return this._config.loadContentLayouts(query)\n          .pipe(\n            map((contentLayouts: any) => {\n              return { data: contentLayouts  };\n            }),\n          );\n      },\n      restore: {\n        query: { state: 'deleted' },\n        filterLabel: 'Show Deleted',\n        menuLabel: 'Restore',\n        reload: true,\n        click: (row) => {\n          return this._config.saveContentLayout({ id: row.id, state: 'active' });\n        },\n      },\n    };\n  }\n\n}\n\n","<fs-list [config]=\"listConfig\">\n  <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n    <ng-template fs-list-cell let-row=\"row\">\n      <a (click)=\"openEditor(row)\">{{row.name}}</a>\n    </ng-template>\n  </fs-list-column>\n  <fs-list-column name=\"modify_date\" title=\"Modified\" [sortable]=\"true\">\n    <ng-template fs-list-cell let-row=\"row\">\n      {{row.modifyDate | fsDate: 'date-time-yearless'}}\n    </ng-template>\n  </fs-list-column>\n</fs-list>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsListModule } from '@firestitch/list';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsContentEditorModule } from '../editor';\nimport { ContentLayoutComponent } from './components/content-layout';\nimport { FsContentLayoutsComponent } from './components/content-layouts';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n\n    MatDialogModule,\n    MatInputModule,\n    MatFormFieldModule,\n    MatButtonModule,\n    MatTabsModule,\n    MatIconModule,\n    MatSelectModule,\n    MatButtonToggleModule,\n\n    FsListModule,\n    FsDateModule,\n    FsFormModule,\n    FsLabelModule,\n    FsSkeletonModule,\n    FsHtmlEditorModule,\n    FsDialogModule,\n    FsTextEditorModule,\n\n    FsContentEditorModule,\n  ],\n  exports: [\n    FsContentLayoutsComponent,\n  ],\n  declarations: [\n    ContentLayoutComponent,\n    FsContentLayoutsComponent,\n  ],\n})\nexport class FsContentLayoutsModule {\n}\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  OnDestroy,\n  ElementRef,\n  Input,\n  AfterViewChecked,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\n\nimport { Subject } from 'rxjs';\n\n\n@Component({\n  selector: 'fs-content-renderer',\n  templateUrl: './content-renderer.component.html',\n  styleUrls: ['./content-renderer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentRendererComponent implements OnDestroy, AfterViewChecked {\n\n  @Input() public set contentPage(contentPage) {\n    if(contentPage) {\n      this.content = this._sanitizer.bypassSecurityTrustHtml(contentPage.content);\n      this.styles = contentPage.styles;\n    }\n  }\n\n  public content;\n  public styles;\n  public _destroy$ = new Subject();\n\n  constructor(\n    private _sanitizer: DomSanitizer,\n    private _router: Router,\n    private _el: ElementRef,\n  ) {}\n\n  public ngAfterViewChecked(): void {\n    let el = document.querySelector('#contentPageStyles');\n    if(!el) {\n      el = document.createElement('style');\n      el.setAttribute('id','contentPageStyles');\n      document.getElementsByTagName('head')[0].appendChild(el);\n    }\n\n    el.innerHTML = this.styles;\n\n    this.registerHrefs();\n  }\n\n  public registerHrefs(): void {\n    Array.from(this.el.querySelectorAll('a[href]'))\n      .filter((el: Element) => {\n        return el.getAttribute('href').match(/^\\//);\n      })\n      .forEach((el: Element) => {\n        el.addEventListener('click',(event: MouseEvent) => {\n          if(!event.shiftKey && !event.ctrlKey) {\n            event.preventDefault();\n            const href = el.getAttribute('href');\n            this._router.navigateByUrl(href);\n          }\n        });\n      });\n  }\n\n  public get el(): any {\n    return this._el.nativeElement;\n  }\n\n  public ngOnDestroy(): void {\n    this.removeStyles();\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  public removeStyles(): void {\n    const el = document.querySelector('#contentPageStyles');\n    if(el) {\n      el.remove();\n    }\n  }\n\n}\n","<div *ngIf=\"content\" [innerHTML]=\"content\"></div>\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  OnInit,\n  OnDestroy,\n  ElementRef,\n  Inject,\n} from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n  selector: 'fs-content',\n  templateUrl: './content.component.html',\n  styleUrls: ['./content.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentComponent implements OnInit, OnDestroy {\n\n  public contentPage;\n  \n  private _destroy$ = new Subject();\n\n  constructor(\n    @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n    private _title: Title,\n    private _cdRef: ChangeDetectorRef,\n    private _router: Router,\n    private _el: ElementRef,\n  ) {}\n\n  public ngOnInit(): void {\n    this.load();\n\n    this._router.events\n      .pipe(\n        filter((e) => e instanceof NavigationEnd),\n        takeUntil(this._destroy$),\n      )\n      .subscribe(() => {\n        this.load();\n      });\n  }\n\n  public load(): void {\n    const path = (window as any).location.pathname;\n    this._config.loadContent(path)\n      .subscribe((contentPage) => {\n        if(contentPage.title) {\n          this._title.setTitle(contentPage.title);\n\n          let ogTitleEl = document.querySelector('head meta[property=\"og:title\"]');\n          if(!ogTitleEl) {\n            ogTitleEl = document.createElement('meta');\n            ogTitleEl.setAttribute('property','og:title');\n            document.getElementsByTagName('head')[0].appendChild(ogTitleEl);\n          }\n\n          ogTitleEl.setAttribute('content',contentPage.title);\n        }\n\n        this.contentPage = contentPage;\n        this._cdRef.markForCheck();\n      });\n  }\n\n  public get el(): any {\n    return this._el.nativeElement;\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next();\n    this._destroy$.complete();\n    this._title.setTitle('');\n  }\n\n}\n","<fs-content-renderer *ngIf=\"contentPage\" [contentPage]=\"contentPage\"></fs-content-renderer>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\n\nimport { FsContentComponent } from './components/content';\nimport { ContentRendererComponent } from './components/content-renderer';\n\n\n\n@NgModule({\n  imports: [\n    CommonModule,\n\n    FsHtmlEditorModule,\n  ],\n  exports: [\n    FsContentComponent,\n  ],\n  declarations: [\n    FsContentComponent,\n    ContentRendererComponent,\n  ],\n})\nexport class FsContentModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
         
     |