@thecodeblogs/blog 0.15.4 → 0.19.0

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.
Files changed (70) hide show
  1. package/fesm2022/thecodeblogs-blog.mjs +2018 -0
  2. package/fesm2022/thecodeblogs-blog.mjs.map +1 -0
  3. package/lib/components/entry-creator/entry-creator.component.d.ts +1 -1
  4. package/lib/components/entry-renderer/entry-renderer.component.d.ts +1 -1
  5. package/lib/components/entry-renderer-wrapper/entry-renderer-wrapper.component.d.ts +1 -1
  6. package/lib/components/entry-selector-dialog/entry-selector-dialog.component.d.ts +1 -1
  7. package/lib/components/entry-summary/entry-summary.component.d.ts +1 -1
  8. package/lib/components/json-renderer/json-renderer.component.d.ts +1 -1
  9. package/lib/components/landing-page/landing-page.component.d.ts +1 -1
  10. package/lib/components/main/main.component.d.ts +1 -1
  11. package/lib/components/media-upload-modal/media-upload-modal.component.d.ts +4 -2
  12. package/lib/components/outline-view/outline-view.component.d.ts +1 -1
  13. package/lib/components/schedule-publish-dialog/schedule-publish-dialog.component.d.ts +1 -1
  14. package/lib/components/side-navigation/side-navigation.component.d.ts +8 -3
  15. package/lib/components/static-html/static-html.component.d.ts +1 -1
  16. package/lib/core.module.d.ts +38 -38
  17. package/lib/pipes/LinkyPipe.d.ts +1 -1
  18. package/lib/pipes/TimeAgoPipe.d.ts +1 -1
  19. package/package.json +22 -26
  20. package/esm2020/lib/components/entry-creator/entry-creator.component.mjs +0 -341
  21. package/esm2020/lib/components/entry-renderer/entry-renderer.component.mjs +0 -108
  22. package/esm2020/lib/components/entry-renderer-wrapper/entry-renderer-wrapper.component.mjs +0 -75
  23. package/esm2020/lib/components/entry-selector-dialog/entry-selector-dialog-data.mjs +0 -3
  24. package/esm2020/lib/components/entry-selector-dialog/entry-selector-dialog.component.mjs +0 -54
  25. package/esm2020/lib/components/entry-summary/entry-summary.component.mjs +0 -28
  26. package/esm2020/lib/components/json-renderer/json-renderer.component.mjs +0 -26
  27. package/esm2020/lib/components/landing-page/landing-page.component.mjs +0 -35
  28. package/esm2020/lib/components/main/main.component.mjs +0 -56
  29. package/esm2020/lib/components/media-upload-modal/media-upload-modal.component.mjs +0 -160
  30. package/esm2020/lib/components/outline-view/outline-view.component.mjs +0 -38
  31. package/esm2020/lib/components/schedule-publish-dialog/schedule-publish-dialog-data.mjs +0 -3
  32. package/esm2020/lib/components/schedule-publish-dialog/schedule-publish-dialog.component.mjs +0 -33
  33. package/esm2020/lib/components/side-navigation/side-navigation.component.mjs +0 -222
  34. package/esm2020/lib/components/static-html/static-html.component.mjs +0 -28
  35. package/esm2020/lib/core.module.mjs +0 -209
  36. package/esm2020/lib/data/base.mjs +0 -7
  37. package/esm2020/lib/data/content-type.mjs +0 -10
  38. package/esm2020/lib/data/content.mjs +0 -5
  39. package/esm2020/lib/data/core-event-type.enum.mjs +0 -7
  40. package/esm2020/lib/data/core-event.mjs +0 -7
  41. package/esm2020/lib/data/entry.mjs +0 -79
  42. package/esm2020/lib/data/guid.mjs +0 -12
  43. package/esm2020/lib/data/identity.mjs +0 -2
  44. package/esm2020/lib/data/list-response.mjs +0 -3
  45. package/esm2020/lib/data/section.mjs +0 -11
  46. package/esm2020/lib/data/tag.mjs +0 -7
  47. package/esm2020/lib/data/visitor-profile.mjs +0 -3
  48. package/esm2020/lib/pipes/LinkyPipe.mjs +0 -15
  49. package/esm2020/lib/pipes/TimeAgoPipe.mjs +0 -100
  50. package/esm2020/lib/routing/routes.mjs +0 -25
  51. package/esm2020/lib/services/analytics/interaction.service.mjs +0 -20
  52. package/esm2020/lib/services/analytics/view.service.mjs +0 -20
  53. package/esm2020/lib/services/comment.service.mjs +0 -28
  54. package/esm2020/lib/services/django-rest-framework-endpoint.service.mjs +0 -50
  55. package/esm2020/lib/services/entry.service.mjs +0 -106
  56. package/esm2020/lib/services/identity.service.mjs +0 -20
  57. package/esm2020/lib/services/interaction.mjs +0 -3
  58. package/esm2020/lib/services/prism.service.mjs +0 -39
  59. package/esm2020/lib/services/static-html.service.mjs +0 -22
  60. package/esm2020/lib/services/tag.service.mjs +0 -33
  61. package/esm2020/lib/services/upload.mjs +0 -3
  62. package/esm2020/lib/services/upload.service.mjs +0 -22
  63. package/esm2020/lib/services/view.mjs +0 -3
  64. package/esm2020/lib/services/visitor-profile.service.mjs +0 -35
  65. package/esm2020/public-api.mjs +0 -45
  66. package/esm2020/thecodeblogs-blog.mjs +0 -5
  67. package/fesm2015/thecodeblogs-blog.mjs +0 -1930
  68. package/fesm2015/thecodeblogs-blog.mjs.map +0 -1
  69. package/fesm2020/thecodeblogs-blog.mjs +0 -1924
  70. package/fesm2020/thecodeblogs-blog.mjs.map +0 -1
@@ -1,160 +0,0 @@
1
- import { Component, HostListener, Input } from '@angular/core';
2
- import { FileUploader } from 'ng2-file-upload';
3
- import { UploadService } from '../../services/upload.service';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/dialog";
6
- import * as i2 from "../../services/upload.service";
7
- import * as i3 from "@angular/common";
8
- import * as i4 from "@angular/material/button";
9
- import * as i5 from "@angular/material/divider";
10
- import * as i6 from "@fortawesome/angular-fontawesome";
11
- import * as i7 from "ng2-file-upload";
12
- export class MediaUploadModalComponent {
13
- static getCookie(name) {
14
- const ca = document.cookie.split(';');
15
- const caLen = ca.length;
16
- const cookieName = `${name}=`;
17
- let c;
18
- for (let i = 0; i < caLen; i += 1) {
19
- c = ca[i].replace(/^\s+/g, '');
20
- if (c.indexOf(cookieName) === 0) {
21
- return c.substring(cookieName.length, c.length);
22
- }
23
- }
24
- return '';
25
- }
26
- constructor(dialogRef, uploadService) {
27
- this.dialogRef = dialogRef;
28
- this.uploadService = uploadService;
29
- this.allowedMimeTypes = [
30
- 'image/jpeg',
31
- 'image/gif',
32
- 'image/png',
33
- 'image/jpg',
34
- 'video/mp4',
35
- 'video/webm',
36
- 'video/ogg',
37
- ];
38
- this.uploadUrlKey = 'path_to_file';
39
- this.uploading = false;
40
- }
41
- pollForCompletion() {
42
- this.uploadService.get(this.uploadId).subscribe((response) => {
43
- if (response.processed) {
44
- this.imgLink = response[this.uploadUrlKey];
45
- this.mimeType = response.mime_type;
46
- clearInterval(this.poller);
47
- this.poller = null;
48
- this.uploading = false;
49
- }
50
- });
51
- }
52
- ngOnInit() {
53
- this.uploader = new FileUploader({
54
- url: UploadService.upload_endpoint,
55
- itemAlias: 'file',
56
- authToken: '',
57
- headers: [
58
- { name: 'X-CSRFToken', value: MediaUploadModalComponent.getCookie('csrftoken') },
59
- ],
60
- additionalParameter: { csrf_token: MediaUploadModalComponent.getCookie('csrftoken') },
61
- removeAfterUpload: true,
62
- allowedMimeType: this.allowedMimeTypes,
63
- });
64
- this.uploader.onCompleteItem = (item, response) => {
65
- const responseObj = JSON.parse(response);
66
- this.uploadId = responseObj.id;
67
- this.poller = setInterval(this.pollForCompletion.bind(this), 2000);
68
- };
69
- this.uploader.onWhenAddingFileFailed = (item, filter, options) => {
70
- this.error = 'This file is not a supported mimetype.';
71
- this.uploading = false;
72
- };
73
- if (this.file) {
74
- this.uploader.addToQueue([this.file]);
75
- this.uploader.uploadAll();
76
- this.uploading = true;
77
- }
78
- }
79
- onFileSelected(e) {
80
- this.uploader.uploadAll();
81
- this.uploading = true;
82
- }
83
- buildHost(url) {
84
- return location.protocol + '//' + location.hostname + (location.port ? ':' + location.port : '') + url;
85
- }
86
- close() {
87
- this.dialogRef.close();
88
- }
89
- ngOnDestroy() {
90
- if (this.socketSub) {
91
- this.socketSub.complete();
92
- this.socketSub = null;
93
- }
94
- }
95
- blobToFile(theBlob, fileName) {
96
- // A Blob() is almost a File() - it's just missing the two properties below which we will add
97
- theBlob.lastModifiedDate = new Date();
98
- theBlob.name = fileName;
99
- return theBlob;
100
- }
101
- onPaste(e) {
102
- if (e instanceof ClipboardEvent) {
103
- const files = e.clipboardData.files;
104
- if (files) {
105
- if (files.length < 1) {
106
- // const items = e.clipboardData.items;
107
- // for(let i = 0; i < items.length; i++) {
108
- // const item = items[i];
109
- // item.getAsString((text) => {
110
- // try {
111
- // const url = new URL(text);
112
- // if(url) {
113
- // fetch(text)
114
- // .then(res => res.blob()) // Gets the response and returns it as a blob
115
- // .then(blob => {
116
- // const file = this.blobToFile(blob, 'web-created')
117
- // this.uploader.addToQueue([file])
118
- // this.uploader.uploadAll();
119
- // this.uploading = true;
120
- // });
121
- // }
122
- // } catch(e) {
123
- //
124
- // }
125
- // });
126
- // }
127
- }
128
- else if (files.length > 1) {
129
- console.log('Multiple files detected');
130
- }
131
- else {
132
- for (let i = 0; i < files.length; i++) {
133
- this.uploader.addToQueue([files[i]]);
134
- }
135
- this.uploader.uploadAll();
136
- this.uploading = true;
137
- }
138
- }
139
- else {
140
- console.log('Stuff not working');
141
- }
142
- }
143
- }
144
- }
145
- MediaUploadModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: MediaUploadModalComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.UploadService }], target: i0.ɵɵFactoryTarget.Component });
146
- MediaUploadModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: MediaUploadModalComponent, selector: "app-media-upload-modal", inputs: { allowedMimeTypes: "allowedMimeTypes", uploadUrlKey: "uploadUrlKey", file: "file" }, host: { listeners: { "document:paste": "onPaste($event)" } }, ngImport: i0, template: "<h1 mat-dialog-title>Upload an Image</h1>\n<!--<mat-radio-group aria-label=\"Select an option\">-->\n<!-- <mat-radio-button class=\"option\" value=\"unpublished\">Unpublished</mat-radio-button>-->\n<!-- <mat-radio-button class=\"option\" value=\"published\">Published</mat-radio-button>-->\n<!--</mat-radio-group>-->\n<mat-divider class=\"option-list-divider\"></mat-divider>\n<div mat-dialog-content>\n <div *ngIf=\"uploading\">\n <fa-icon [icon]=\"'spinner'\" [spin]=\"true\"></fa-icon>\n </div>\n <ng-container *ngIf=\"!imgLink && !uploading\">\n <h4>Select a File</h4>\n <div class=\"input-group\">\n <div class=\"form-group\">\n <!-- <label for=\"import_file\">Choose File</label>-->\n <input type=\"file\" id=\"import_file\"\n *ngIf=\"uploader.queue.length==0 && !uploading\"\n ng2FileSelect\n [uploader]=\"uploader\"\n (onFileSelected)=\"onFileSelected($event)\"\n >\n </div>\n </div>\n <br>\n <h3>Paste a File</h3>\n <p>You can use the paste command to paste any image here</p>\n </ng-container>\n <div *ngIf=\"imgLink\">\n <img *ngIf=\"imgLink\" [src]=\"imgLink\"/>\n </div>\n <div *ngIf=\"error\">\n <div class=\"alert alert-danger\">\n {{error}}\n </div>\n </div>\n</div>\n<div mat-dialog-actions>\n <button mat-button [disabled]=\"!imgLink || uploading\" (click)=\"close()\">Attach</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i6.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: i7.FileSelectDirective, selector: "[ng2FileSelect]", inputs: ["uploader"], outputs: ["onFileSelected"] }] });
147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: MediaUploadModalComponent, decorators: [{
148
- type: Component,
149
- args: [{ selector: 'app-media-upload-modal', template: "<h1 mat-dialog-title>Upload an Image</h1>\n<!--<mat-radio-group aria-label=\"Select an option\">-->\n<!-- <mat-radio-button class=\"option\" value=\"unpublished\">Unpublished</mat-radio-button>-->\n<!-- <mat-radio-button class=\"option\" value=\"published\">Published</mat-radio-button>-->\n<!--</mat-radio-group>-->\n<mat-divider class=\"option-list-divider\"></mat-divider>\n<div mat-dialog-content>\n <div *ngIf=\"uploading\">\n <fa-icon [icon]=\"'spinner'\" [spin]=\"true\"></fa-icon>\n </div>\n <ng-container *ngIf=\"!imgLink && !uploading\">\n <h4>Select a File</h4>\n <div class=\"input-group\">\n <div class=\"form-group\">\n <!-- <label for=\"import_file\">Choose File</label>-->\n <input type=\"file\" id=\"import_file\"\n *ngIf=\"uploader.queue.length==0 && !uploading\"\n ng2FileSelect\n [uploader]=\"uploader\"\n (onFileSelected)=\"onFileSelected($event)\"\n >\n </div>\n </div>\n <br>\n <h3>Paste a File</h3>\n <p>You can use the paste command to paste any image here</p>\n </ng-container>\n <div *ngIf=\"imgLink\">\n <img *ngIf=\"imgLink\" [src]=\"imgLink\"/>\n </div>\n <div *ngIf=\"error\">\n <div class=\"alert alert-danger\">\n {{error}}\n </div>\n </div>\n</div>\n<div mat-dialog-actions>\n <button mat-button [disabled]=\"!imgLink || uploading\" (click)=\"close()\">Attach</button>\n</div>\n" }]
150
- }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i2.UploadService }]; }, propDecorators: { allowedMimeTypes: [{
151
- type: Input
152
- }], uploadUrlKey: [{
153
- type: Input
154
- }], file: [{
155
- type: Input
156
- }], onPaste: [{
157
- type: HostListener,
158
- args: ['document:paste', ['$event']]
159
- }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdXBsb2FkLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9jb21wb25lbnRzL21lZGlhLXVwbG9hZC1tb2RhbC9tZWRpYS11cGxvYWQtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvbWVkaWEtdXBsb2FkLW1vZGFsL21lZGlhLXVwbG9hZC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUk3QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7OztBQU81RCxNQUFNLE9BQU8seUJBQXlCO0lBeUJsQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQVk7UUFDekIsTUFBTSxFQUFFLEdBQWtCLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDaEMsTUFBTSxVQUFVLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUM5QixJQUFJLENBQVMsQ0FBQztRQUVkLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMvQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFB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QUE2RjtvQkFDN0Ysc0NBQXNDO29CQUN0Qyw0RUFBNEU7b0JBQzVFLDJEQUEyRDtvQkFDM0QscURBQXFEO29CQUNyRCxpREFBaUQ7b0JBQ2pELDBCQUEwQjtvQkFDMUIsZ0JBQWdCO29CQUNoQix1QkFBdUI7b0JBQ3ZCLEVBQUU7b0JBQ0YsWUFBWTtvQkFDWixVQUFVO29CQUNWLElBQUk7aUJBQ1A7cUJBQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2lCQUMxQztxQkFBTTtvQkFDSCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTt3QkFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN4QztvQkFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDekI7YUFDSjtpQkFBTTtnQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7YUFDcEM7U0FDSjtJQUNMLENBQUM7O3NIQWpLUSx5QkFBeUI7MEdBQXpCLHlCQUF5QiwwTkNadEMsOGpEQXVDQTsyRkQzQmEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNJLHdCQUF3QjsrSEFNekIsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQVVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBU0csSUFBSTtzQkFBWixLQUFLO2dCQXFHTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGaWxlVXBsb2FkZXJ9IGZyb20gJ25nMi1maWxlLXVwbG9hZCc7XG5pbXBvcnQge01hdERpYWxvZ1JlZn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHtEamFuZ29SZXN0RnJhbWV3b3JrRW5kcG9pbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kamFuZ28tcmVzdC1mcmFtZXdvcmstZW5kcG9pbnQuc2VydmljZSc7XG5pbXBvcnQge1VwbG9hZFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VwbG9hZC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtbWVkaWEtdXBsb2FkLW1vZGFsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVkaWEtdXBsb2FkLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tZWRpYS11cGxvYWQtbW9kYWwuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIE1lZGlhVXBsb2FkTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBhbGxvd2VkTWltZVR5cGVzID0gW1xuICAgICAgICAgICAgICAgICdpbWFnZS9qcGVnJyxcbiAgICAgICAgICAgICAgICAnaW1hZ2UvZ2lmJyxcbiAgICAgICAgICAgICAgICAnaW1hZ2UvcG5nJyxcbiAgICAgICAgICAgICAgICAnaW1hZ2UvanBnJyxcbiAgICAgICAgICAgICAgICAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgICAgICAndmlkZW8vd2VibScsXG4gICAgICAgICAgICAgICAgJ3ZpZGVvL29nZycsXG4gICAgXTtcblxuICAgIEBJbnB1dCgpIHVwbG9hZFVybEtleSA9ICdwYXRoX3RvX2ZpbGUnO1xuXG4gICAgaW1nTGluaztcbiAgICBtaW1lVHlwZTtcbiAgICBzb2NrZXRTdWI7XG4gICAgZXJyb3I7XG4gICAgcHVibGljIHVwbG9hZGVyOiBGaWxlVXBsb2FkZXI7XG4gICAgdXBsb2FkSWQ7XG4gICAgdXBsb2FkaW5nID0gZmFsc2U7XG4gICAgQElucHV0KCkgZmlsZTtcblxuICAgIHBvbGxlcjtcblxuICAgIHN0YXRpYyBnZXRDb29raWUobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNhOiBBcnJheTxzdHJpbmc+ID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jyk7XG4gICAgICAgIGNvbnN0IGNhTGVuOiBudW1iZXIgPSBjYS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGNvb2tpZU5hbWUgPSBgJHtuYW1lfT1gO1xuICAgICAgICBsZXQgYzogc3RyaW5nO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FMZW47IGkgKz0gMSkge1xuICAgICAgICAgICAgYyA9IGNhW2ldLnJlcGxhY2UoL15cXHMrL2csICcnKTtcbiAgICAgICAgICAgIGlmIChjLmluZGV4T2YoY29va2llTmFtZSkgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYy5zdWJzdHJpbmcoY29va2llTmFtZS5sZW5ndGgsIGMubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxNZWRpYVVwbG9hZE1vZGFsQ29tcG9uZW50PixcbiAgICAgICAgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlXG4gICAgKSB7XG4gICAgfVxuXG5cbiAgICBwb2xsRm9yQ29tcGxldGlvbigpIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmdldCh0aGlzLnVwbG9hZElkKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UucHJvY2Vzc2VkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWdMaW5rID0gcmVzcG9uc2VbdGhpcy51cGxvYWRVcmxLZXldO1xuICAgICAgICAgICAgICAgIHRoaXMubWltZVR5cGUgPSByZXNwb25zZS5taW1lX3R5cGU7XG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnBvbGxlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wb2xsZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgICAgICAgdGhpcy51cGxvYWRlciA9IG5ldyBGaWxlVXBsb2FkZXIoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdXJsOiBVcGxvYWRTZXJ2aWNlLnVwbG9hZF9lbmRwb2ludCxcbiAgICAgICAgICAgICAgICBpdGVtQWxpYXM6ICdmaWxlJyxcbiAgICAgICAgICAgICAgICBhdXRoVG9rZW46ICcnLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IFtcbiAgICAgICAgICAgICAgICAgICAge25hbWU6ICdYLUNTUkZUb2tlbicsIHZhbHVlOiBNZWRpYVVwbG9hZE1vZGFsQ29tcG9uZW50LmdldENvb2tpZSgnY3NyZnRva2VuJyl9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbFBhcmFtZXRlcjoge2NzcmZfdG9rZW46IE1lZGlhVXBsb2FkTW9kYWxDb21wb25lbnQuZ2V0Q29va2llKCdjc3JmdG9rZW4nKX0sXG4gICAgICAgICAgICAgICAgcmVtb3ZlQWZ0ZXJVcGxvYWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgYWxsb3dlZE1pbWVUeXBlOiB0aGlzLmFsbG93ZWRNaW1lVHlwZXMsXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy51cGxvYWRlci5vbkNvbXBsZXRlSXRlbSA9IChpdGVtLCByZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VPYmogPSBKU09OLnBhcnNlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkSWQgPSByZXNwb25zZU9iai5pZDtcbiAgICAgICAgICAgIHRoaXMucG9sbGVyID0gc2V0SW50ZXJ2YWwodGhpcy5wb2xsRm9yQ29tcGxldGlvbi5iaW5kKHRoaXMpLCAyMDAwKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnVwbG9hZGVyLm9uV2hlbkFkZGluZ0ZpbGVGYWlsZWQgPSAoaXRlbSwgZmlsdGVyLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVycm9yID0gJ1RoaXMgZmlsZSBpcyBub3QgYSBzdXBwb3J0ZWQgbWltZXR5cGUuJztcbiAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMuZmlsZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRlci5hZGRUb1F1ZXVlKFt0aGlzLmZpbGVdKTtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkZXIudXBsb2FkQWxsKCk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkZpbGVTZWxlY3RlZChlKSB7XG4gICAgICAgIHRoaXMudXBsb2FkZXIudXBsb2FkQWxsKCk7XG4gICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBidWlsZEhvc3QodXJsKSB7XG4gICAgICAgIHJldHVybiBsb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyBsb2NhdGlvbi5ob3N0bmFtZSArIChsb2NhdGlvbi5wb3J0ID8gJzonICsgbG9jYXRpb24ucG9ydCA6ICcnKSArIHVybDtcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc29ja2V0U3ViKSB7XG4gICAgICAgICAgICB0aGlzLnNvY2tldFN1Yi5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgdGhpcy5zb2NrZXRTdWIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmxvYlRvRmlsZSh0aGVCbG9iLCBmaWxlTmFtZSkge1xuICAgICAgICAvLyBBIEJsb2IoKSBpcyBhbG1vc3QgYSBGaWxlKCkgLSBpdCdzIGp1c3QgbWlzc2luZyB0aGUgdHdvIHByb3BlcnRpZXMgYmVsb3cgd2hpY2ggd2Ugd2lsbCBhZGRcbiAgICAgICAgdGhlQmxvYi5sYXN0TW9kaWZpZWREYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgdGhlQmxvYi5uYW1lID0gZmlsZU5hbWU7XG4gICAgICAgIHJldHVybiB0aGVCbG9iO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnBhc3RlJywgWyckZXZlbnQnXSlcbiAgICBvblBhc3RlKGUpIHtcbiAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBDbGlwYm9hcmRFdmVudCkge1xuICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBlLmNsaXBib2FyZERhdGEuZmlsZXM7XG4gICAgICAgICAgICBpZiAoZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsZXMubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCBpdGVtcyA9IGUuY2xpcGJvYXJkRGF0YS5pdGVtcztcbiAgICAgICAgICAgICAgICAgICAgLy8gZm9yKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICBjb25zdCBpdGVtID0gaXRlbXNbaV07XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICBpdGVtLmdldEFzU3RyaW5nKCh0ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTCh0ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgaWYodXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICBmZXRjaCh0ZXh0KVxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiByZXMuYmxvYigpKSAvLyBHZXRzIHRoZSByZXNwb25zZSBhbmQgcmV0dXJucyBpdCBhcyBhIGJsb2JcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAudGhlbihibG9iID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuYmxvYlRvRmlsZShibG9iLCAnd2ViLWNyZWF0ZWQnKVxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVyLmFkZFRvUXVldWUoW2ZpbGVdKVxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVyLnVwbG9hZEFsbCgpO1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTXVsdGlwbGUgZmlsZXMgZGV0ZWN0ZWQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVyLmFkZFRvUXVldWUoW2ZpbGVzW2ldXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlci51cGxvYWRBbGwoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1N0dWZmIG5vdCB3b3JraW5nJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8aDEgbWF0LWRpYWxvZy10aXRsZT5VcGxvYWQgYW4gSW1hZ2U8L2gxPlxuPCEtLTxtYXQtcmFkaW8tZ3JvdXAgYXJpYS1sYWJlbD1cIlNlbGVjdCBhbiBvcHRpb25cIj4tLT5cbjwhLS0gICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJvcHRpb25cIiB2YWx1ZT1cInVucHVibGlzaGVkXCI+VW5wdWJsaXNoZWQ8L21hdC1yYWRpby1idXR0b24+LS0+XG48IS0tICAgIDxtYXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwib3B0aW9uXCIgdmFsdWU9XCJwdWJsaXNoZWRcIj5QdWJsaXNoZWQ8L21hdC1yYWRpby1idXR0b24+LS0+XG48IS0tPC9tYXQtcmFkaW8tZ3JvdXA+LS0+XG48bWF0LWRpdmlkZXIgY2xhc3M9XCJvcHRpb24tbGlzdC1kaXZpZGVyXCI+PC9tYXQtZGl2aWRlcj5cbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxkaXYgKm5nSWY9XCJ1cGxvYWRpbmdcIj5cbiAgICAgICAgPGZhLWljb24gW2ljb25dPVwiJ3NwaW5uZXInXCIgW3NwaW5dPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWltZ0xpbmsgJiYgIXVwbG9hZGluZ1wiPlxuICAgICAgICA8aDQ+U2VsZWN0IGEgRmlsZTwvaDQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpbXBvcnRfZmlsZVwiPkNob29zZSBGaWxlPC9sYWJlbD4tLT5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBpZD1cImltcG9ydF9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ1cGxvYWRlci5xdWV1ZS5sZW5ndGg9PTAgJiYgIXVwbG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgIG5nMkZpbGVTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgW3VwbG9hZGVyXT1cInVwbG9hZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uRmlsZVNlbGVjdGVkKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJyPlxuICAgICAgICA8aDM+UGFzdGUgYSBGaWxlPC9oMz5cbiAgICAgICAgPHA+WW91IGNhbiB1c2UgdGhlIHBhc3RlIGNvbW1hbmQgdG8gcGFzdGUgYW55IGltYWdlIGhlcmU8L3A+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiAqbmdJZj1cImltZ0xpbmtcIj5cbiAgICAgICAgPGltZyAqbmdJZj1cImltZ0xpbmtcIiBbc3JjXT1cImltZ0xpbmtcIi8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImVycm9yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXJcIj5cbiAgICAgICAgICAgIHt7ZXJyb3J9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFtkaXNhYmxlZF09XCIhaW1nTGluayB8fCB1cGxvYWRpbmdcIiAoY2xpY2spPVwiY2xvc2UoKVwiPkF0dGFjaDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -1,38 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../services/entry.service";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "@angular/cdk/drag-drop";
6
- import * as i4 from "@angular/material/card";
7
- export class OutlineViewComponent {
8
- constructor(entryService) {
9
- this.entryService = entryService;
10
- this.Math = Math;
11
- }
12
- ngOnInit() {
13
- this.entryService.currentlyEditedEntry.subscribe((entry) => {
14
- this.entry = entry;
15
- });
16
- }
17
- sectionDrop(e) {
18
- const entry = this.entry;
19
- const diff = e.currentIndex - e.previousIndex;
20
- entry.sections[e.previousIndex].order = e.currentIndex * 10 + (diff > 0 ? 1 : -1);
21
- entry.sort();
22
- this.entryService.currentlyEditedEntry.next(this.entry);
23
- }
24
- contentDrop(e, section) {
25
- const entry = this.entry;
26
- const diff = e.currentIndex - e.previousIndex;
27
- section.contents[e.previousIndex].order = e.currentIndex * 10 + (diff > 0 ? 1 : -1);
28
- entry.sort();
29
- this.entryService.currentlyEditedEntry.next(this.entry);
30
- }
31
- }
32
- OutlineViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: OutlineViewComponent, deps: [{ token: i1.EntryService }], target: i0.ɵɵFactoryTarget.Component });
33
- OutlineViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: OutlineViewComponent, selector: "app-outline-view", ngImport: i0, template: "<div *ngIf=\"entry\" class=\"section outline\">\n <h1 *ngIf=\"entry?.sections?.length === 0\">Outline View</h1>\n <div cdkDropList class=\"sections\" (cdkDropListDropped)=\"sectionDrop($event)\">\n <mat-card class=\"card\" cdkDrag *ngFor=\"let section of entry.sections\">\n <h3>Section {{Math.ceil(section.order / 10) + 1}}</h3>\n {{section.subheading}}\n <div cdkDropList class=\"contents\" (cdkDropListDropped)=\"contentDrop($event, section)\">\n <h3>Contents for {{section.subheading}}</h3>\n <div class=\"content-card\" *ngFor=\"let content of section.contents\" cdkDrag>\n <div class=\"content\">{{content.value}}</div>\n <div class=\"content-placeholder\" *cdkDragPlaceholder></div>\n </div>\n </div>\n </mat-card>\n <div class=\"custom-placeholder\" *cdkDragPlaceholder></div>\n </div>\n</div>\n", styles: [".outline{padding:0 20px}.content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.card,.content-card{margin:4px;cursor:pointer}.content-card:not(:last-child){border-bottom:1px dotted #aaa}.custom-placeholder{background:#ccc;border:dotted 3px #999;transition:transform .25s cubic-bezier(0,0,.2,1);min-height:60px}.content-placeholder{background:#ccc;border:dotted 3px #999;transition:transform .25s cubic-bezier(0,0,.2,1);min-height:30px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }] });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: OutlineViewComponent, decorators: [{
35
- type: Component,
36
- args: [{ selector: 'app-outline-view', template: "<div *ngIf=\"entry\" class=\"section outline\">\n <h1 *ngIf=\"entry?.sections?.length === 0\">Outline View</h1>\n <div cdkDropList class=\"sections\" (cdkDropListDropped)=\"sectionDrop($event)\">\n <mat-card class=\"card\" cdkDrag *ngFor=\"let section of entry.sections\">\n <h3>Section {{Math.ceil(section.order / 10) + 1}}</h3>\n {{section.subheading}}\n <div cdkDropList class=\"contents\" (cdkDropListDropped)=\"contentDrop($event, section)\">\n <h3>Contents for {{section.subheading}}</h3>\n <div class=\"content-card\" *ngFor=\"let content of section.contents\" cdkDrag>\n <div class=\"content\">{{content.value}}</div>\n <div class=\"content-placeholder\" *cdkDragPlaceholder></div>\n </div>\n </div>\n </mat-card>\n <div class=\"custom-placeholder\" *cdkDragPlaceholder></div>\n </div>\n</div>\n", styles: [".outline{padding:0 20px}.content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.card,.content-card{margin:4px;cursor:pointer}.content-card:not(:last-child){border-bottom:1px dotted #aaa}.custom-placeholder{background:#ccc;border:dotted 3px #999;transition:transform .25s cubic-bezier(0,0,.2,1);min-height:60px}.content-placeholder{background:#ccc;border:dotted 3px #999;transition:transform .25s cubic-bezier(0,0,.2,1);min-height:30px}\n"] }]
37
- }], ctorParameters: function () { return [{ type: i1.EntryService }]; } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGluZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9jb21wb25lbnRzL291dGxpbmUtdmlldy9vdXRsaW5lLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvb3V0bGluZS12aWV3L291dGxpbmUtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFnQixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBVXZELE1BQU0sT0FBTyxvQkFBb0I7SUFLN0IsWUFDWSxZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUh0QyxTQUFJLEdBQUcsSUFBSSxDQUFDO0lBS1osQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVcsQ0FBQyxDQUFDO1FBQ1QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN6QixNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDOUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxZQUFZLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsV0FBVyxDQUFDLENBQUMsRUFBRSxPQUFPO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRixLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7aUhBOUJRLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHdEQ1ZqQyxrOEJBaUJBOzJGRFBhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDSSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7RW50cnl9IGZyb20gJy4uLy4uL2RhdGEvZW50cnknO1xuaW1wb3J0IHtFbnRyeVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VudHJ5LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1vdXRsaW5lLXZpZXcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9vdXRsaW5lLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL291dGxpbmUtdmlldy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE91dGxpbmVWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGVudHJ5OiBFbnRyeTtcbiAgICBNYXRoID0gTWF0aDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVudHJ5U2VydmljZTogRW50cnlTZXJ2aWNlXG4gICAgKSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZW50cnlTZXJ2aWNlLmN1cnJlbnRseUVkaXRlZEVudHJ5LnN1YnNjcmliZSgoZW50cnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW50cnkgPSBlbnRyeTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2VjdGlvbkRyb3AoZSkge1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cnk7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBlLmN1cnJlbnRJbmRleCAtIGUucHJldmlvdXNJbmRleDtcbiAgICAgICAgZW50cnkuc2VjdGlvbnNbZS5wcmV2aW91c0luZGV4XS5vcmRlciA9IGUuY3VycmVudEluZGV4ICogMTAgKyAoZGlmZiA+IDAgPyAxIDogLTEpO1xuICAgICAgICBlbnRyeS5zb3J0KCk7XG4gICAgICAgIHRoaXMuZW50cnlTZXJ2aWNlLmN1cnJlbnRseUVkaXRlZEVudHJ5Lm5leHQodGhpcy5lbnRyeSk7XG4gICAgfVxuXG4gICAgY29udGVudERyb3AoZSwgc2VjdGlvbikge1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cnk7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBlLmN1cnJlbnRJbmRleCAtIGUucHJldmlvdXNJbmRleDtcbiAgICAgICAgc2VjdGlvbi5jb250ZW50c1tlLnByZXZpb3VzSW5kZXhdLm9yZGVyID0gZS5jdXJyZW50SW5kZXggKiAxMCArIChkaWZmID4gMCA/IDEgOiAtMSk7XG4gICAgICAgIGVudHJ5LnNvcnQoKTtcbiAgICAgICAgdGhpcy5lbnRyeVNlcnZpY2UuY3VycmVudGx5RWRpdGVkRW50cnkubmV4dCh0aGlzLmVudHJ5KTtcbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZW50cnlcIiBjbGFzcz1cInNlY3Rpb24gb3V0bGluZVwiPlxuICAgIDxoMSAqbmdJZj1cImVudHJ5Py5zZWN0aW9ucz8ubGVuZ3RoID09PSAwXCI+T3V0bGluZSBWaWV3PC9oMT5cbiAgICA8ZGl2IGNka0Ryb3BMaXN0IGNsYXNzPVwic2VjdGlvbnNcIiAoY2RrRHJvcExpc3REcm9wcGVkKT1cInNlY3Rpb25Ecm9wKCRldmVudClcIj5cbiAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwiY2FyZFwiIGNka0RyYWcgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgZW50cnkuc2VjdGlvbnNcIj5cbiAgICAgICAgICAgIDxoMz5TZWN0aW9uIHt7TWF0aC5jZWlsKHNlY3Rpb24ub3JkZXIgLyAxMCkgKyAxfX08L2gzPlxuICAgICAgICAgICAge3tzZWN0aW9uLnN1YmhlYWRpbmd9fVxuICAgICAgICAgICAgPGRpdiBjZGtEcm9wTGlzdCBjbGFzcz1cImNvbnRlbnRzXCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJjb250ZW50RHJvcCgkZXZlbnQsIHNlY3Rpb24pXCI+XG4gICAgICAgICAgICAgICAgPGgzPkNvbnRlbnRzIGZvciB7e3NlY3Rpb24uc3ViaGVhZGluZ319PC9oMz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jYXJkXCIgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2Ygc2VjdGlvbi5jb250ZW50c1wiIGNka0RyYWc+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+e3tjb250ZW50LnZhbHVlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,3 +0,0 @@
1
- export class SchedulePublishDialogData {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUtcHVibGlzaC1kaWFsb2ctZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NjaGVkdWxlLXB1Ymxpc2gtZGlhbG9nL3NjaGVkdWxlLXB1Ymxpc2gtZGlhbG9nLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHlCQUF5QjtDQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBTY2hlZHVsZVB1Ymxpc2hEaWFsb2dEYXRhIHtcbn1cbiJdfQ==
@@ -1,33 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/material/dialog";
5
- import * as i2 from "@angular/material/button";
6
- import * as i3 from "@angular/material/input";
7
- import * as i4 from "@angular/material/form-field";
8
- import * as i5 from "@angular/material/datepicker";
9
- import * as i6 from "ngx-material-timepicker";
10
- import * as i7 from "./schedule-publish-dialog-data";
11
- export class SchedulePublishDialogComponent {
12
- constructor(dialogRef, data) {
13
- this.dialogRef = dialogRef;
14
- this.data = data;
15
- }
16
- ngOnInit() {
17
- }
18
- onNoClick() {
19
- }
20
- onYesClick() {
21
- this.dialogRef.close('test');
22
- }
23
- }
24
- SchedulePublishDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SchedulePublishDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
25
- SchedulePublishDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SchedulePublishDialogComponent, selector: "lib-schedule-publish-dialog", ngImport: i0, template: "<h1 mat-dialog-title>Select a Date and Time to Schedule This Post</h1>\n<!--<mat-radio-group aria-label=\"Select an option\">-->\n<!-- <mat-radio-button class=\"option\" value=\"unpublished\">Unpublished</mat-radio-button>-->\n<!-- <mat-radio-button class=\"option\" value=\"published\">Published</mat-radio-button>-->\n<!--</mat-radio-group>-->\n<p>Date</p>\n<mat-form-field appearance=\"fill\">\n <mat-label>Choose a date</mat-label>\n <input matInput [matDatepicker]=\"picker\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field>\n<p>Time</p>\n<input [ngxTimepicker]=\"timepicker\" readonly>\n<ngx-material-timepicker #timepicker></ngx-material-timepicker>\n<div mat-dialog-actions>\n <button mat-button (click)=\"onNoClick()\">Cancel</button>\n <button mat-button (click)=\"onYesClick()\" cdkFocusInitial>Schedule Publish</button>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i5.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i5.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i5.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i6.NgxMaterialTimepickerComponent, selector: "ngx-material-timepicker", inputs: ["ESC", "hoursOnly", "ngxMaterialTimepickerTheme", "format", "minutesGap", "cancelBtnTmpl", "editableHintTmpl", "confirmBtnTmpl", "enableKeyboardInput", "preventOverlayClick", "disableAnimation", "appendToInput", "defaultTime", "timepickerClass", "theme", "min", "max"], outputs: ["timeSet", "opened", "closed", "hourSelected", "timeChanged"] }, { kind: "directive", type: i6.TimepickerDirective, selector: "[ngxTimepicker]", inputs: ["format", "value", "min", "max", "ngxTimepicker", "disabled", "disableClick"] }] });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SchedulePublishDialogComponent, decorators: [{
27
- type: Component,
28
- args: [{ selector: 'lib-schedule-publish-dialog', template: "<h1 mat-dialog-title>Select a Date and Time to Schedule This Post</h1>\n<!--<mat-radio-group aria-label=\"Select an option\">-->\n<!-- <mat-radio-button class=\"option\" value=\"unpublished\">Unpublished</mat-radio-button>-->\n<!-- <mat-radio-button class=\"option\" value=\"published\">Published</mat-radio-button>-->\n<!--</mat-radio-group>-->\n<p>Date</p>\n<mat-form-field appearance=\"fill\">\n <mat-label>Choose a date</mat-label>\n <input matInput [matDatepicker]=\"picker\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field>\n<p>Time</p>\n<input [ngxTimepicker]=\"timepicker\" readonly>\n<ngx-material-timepicker #timepicker></ngx-material-timepicker>\n<div mat-dialog-actions>\n <button mat-button (click)=\"onNoClick()\">Cancel</button>\n <button mat-button (click)=\"onYesClick()\" cdkFocusInitial>Schedule Publish</button>\n</div>\n" }]
29
- }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i7.SchedulePublishDialogData, decorators: [{
30
- type: Inject,
31
- args: [MAT_DIALOG_DATA]
32
- }] }]; } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUtcHVibGlzaC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2NoZWR1bGUtcHVibGlzaC1kaWFsb2cvc2NoZWR1bGUtcHVibGlzaC1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2NoZWR1bGUtcHVibGlzaC1kaWFsb2cvc2NoZWR1bGUtcHVibGlzaC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFlLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7QUFRdkUsTUFBTSxPQUFPLDhCQUE4QjtJQUV2QyxZQUNXLFNBQXVELEVBQzlCLElBQStCO1FBRHhELGNBQVMsR0FBVCxTQUFTLENBQThDO1FBQzlCLFNBQUksR0FBSixJQUFJLENBQTJCO0lBQy9ELENBQUM7SUFFTCxRQUFRO0lBQ1IsQ0FBQztJQUVELFNBQVM7SUFDVCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OzJIQWZRLDhCQUE4Qiw4Q0FJM0IsZUFBZTsrR0FKbEIsOEJBQThCLG1FQ1QzQyx1N0JBbUJBOzJGRFZhLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDSSw2QkFBNkI7OzBCQVFsQyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtTY2hlZHVsZVB1Ymxpc2hEaWFsb2dEYXRhfSBmcm9tICcuL3NjaGVkdWxlLXB1Ymxpc2gtZGlhbG9nLWRhdGEnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1zY2hlZHVsZS1wdWJsaXNoLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjaGVkdWxlLXB1Ymxpc2gtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zY2hlZHVsZS1wdWJsaXNoLWRpYWxvZy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVQdWJsaXNoRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U2NoZWR1bGVQdWJsaXNoRGlhbG9nQ29tcG9uZW50PixcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBTY2hlZHVsZVB1Ymxpc2hEaWFsb2dEYXRhLFxuICAgICkgeyB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB9XG5cbiAgICBvbk5vQ2xpY2soKTogdm9pZCB7XG4gICAgfVxuXG4gICAgb25ZZXNDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoJ3Rlc3QnKTtcbiAgICB9XG59XG4iLCI8aDEgbWF0LWRpYWxvZy10aXRsZT5TZWxlY3QgYSBEYXRlIGFuZCBUaW1lIHRvIFNjaGVkdWxlIFRoaXMgUG9zdDwvaDE+XG48IS0tPG1hdC1yYWRpby1ncm91cCBhcmlhLWxhYmVsPVwiU2VsZWN0IGFuIG9wdGlvblwiPi0tPlxuPCEtLSAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cIm9wdGlvblwiIHZhbHVlPVwidW5wdWJsaXNoZWRcIj5VbnB1Ymxpc2hlZDwvbWF0LXJhZGlvLWJ1dHRvbj4tLT5cbjwhLS0gICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJvcHRpb25cIiB2YWx1ZT1cInB1Ymxpc2hlZFwiPlB1Ymxpc2hlZDwvbWF0LXJhZGlvLWJ1dHRvbj4tLT5cbjwhLS08L21hdC1yYWRpby1ncm91cD4tLT5cbjxwPkRhdGU8L3A+XG48bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgPG1hdC1sYWJlbD5DaG9vc2UgYSBkYXRlPC9tYXQtbGFiZWw+XG4gIDxpbnB1dCBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIj5cbiAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbjwvbWF0LWZvcm0tZmllbGQ+XG48cD5UaW1lPC9wPlxuPGlucHV0IFtuZ3hUaW1lcGlja2VyXT1cInRpbWVwaWNrZXJcIiByZWFkb25seT5cbjxuZ3gtbWF0ZXJpYWwtdGltZXBpY2tlciAjdGltZXBpY2tlcj48L25neC1tYXRlcmlhbC10aW1lcGlja2VyPlxuPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJvbk5vQ2xpY2soKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwib25ZZXNDbGljaygpXCIgY2RrRm9jdXNJbml0aWFsPlNjaGVkdWxlIFB1Ymxpc2g8L2J1dHRvbj5cbjwvZGl2PlxuIl19
@@ -1,222 +0,0 @@
1
- import { Component, EventEmitter, ViewChild } from '@angular/core';
2
- import { trigger, state, style, animate, transition } from '@angular/animations';
3
- import { FormControl } from '@angular/forms';
4
- import { filter } from 'lodash';
5
- import { map } from 'lodash';
6
- import { debounceTime } from 'rxjs/operators';
7
- import { Entry } from '../../data/entry';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../../services/entry.service";
10
- import * as i2 from "@angular/router";
11
- import * as i3 from "../../services/identity.service";
12
- import * as i4 from "@angular/common";
13
- import * as i5 from "@angular/forms";
14
- import * as i6 from "@angular/material/input";
15
- import * as i7 from "@angular/material/form-field";
16
- import * as i8 from "@angular/material/list";
17
- export class SideNavigationComponent {
18
- constructor(entryService, router, identityService, renderer) {
19
- this.entryService = entryService;
20
- this.router = router;
21
- this.identityService = identityService;
22
- this.renderer = renderer;
23
- this.state = 'out';
24
- this.entries = [];
25
- this.entriesByMonthAndYear = [];
26
- this.searchTerm = "";
27
- this.doSearch = new EventEmitter();
28
- this.searchControl = new FormControl('');
29
- }
30
- ngOnInit() {
31
- this.doSearch.pipe(debounceTime(500)).subscribe((result) => {
32
- this.searchEntries(result);
33
- });
34
- this.identityService.getMe().subscribe((identity) => {
35
- this.identity = identity;
36
- }, (err) => {
37
- this.identity = null;
38
- });
39
- this.getEntries();
40
- }
41
- getEntriesWithUrl(url) {
42
- this.entryService.getListByUrl(url).subscribe((response) => {
43
- this.entries = this.entries.concat(map(response.results, (result) => {
44
- return { id: result.id, entry: new Entry(result) };
45
- }));
46
- if (response.next) {
47
- this.getEntriesWithUrl(response.next);
48
- }
49
- else {
50
- this.organizeEntries();
51
- }
52
- });
53
- }
54
- organizeEntries() {
55
- this.state = 'out';
56
- let organizeEntriesFn = () => {
57
- this.entriesByMonthAndYear = [];
58
- let newEntries = JSON.parse(JSON.stringify(this.entriesByMonthAndYear));
59
- for (const entryWrapper of this.entries) {
60
- const entry = entryWrapper.entry;
61
- const create_date = new Date(entry.create_date);
62
- const month = create_date.getMonth();
63
- const year = create_date.getFullYear();
64
- const key = month + '/' + year;
65
- const sort_index = (year * 100) + month;
66
- const containers = filter(newEntries, (entryContainer) => entryContainer.month_year === key);
67
- if (containers.length > 0) {
68
- const container = containers[0];
69
- const entriesWithId = filter(container.entries, (e) => e.id === entryWrapper.entry.id);
70
- if (entriesWithId.length === 0) {
71
- container.entries.push(entry);
72
- }
73
- }
74
- else {
75
- const newContainer = { month_year: key, month_year_number: sort_index, entries: [entry] };
76
- newEntries.push(newContainer);
77
- }
78
- }
79
- newEntries.sort((entry_a, entry_b) => {
80
- return entry_a.month_year_number - entry_b.month_year_number;
81
- });
82
- newEntries.reverse();
83
- let setEntriesFn = () => {
84
- this.entriesByMonthAndYear = newEntries;
85
- this.state = 'in';
86
- };
87
- setTimeout(setEntriesFn.bind(this), 400);
88
- };
89
- setTimeout(organizeEntriesFn.bind(this), 400);
90
- }
91
- getEntries() {
92
- this.entryService.get().subscribe((response) => {
93
- this.entries = map(response.results, (result) => {
94
- return { id: result.id, entry: new Entry(result) };
95
- });
96
- if (response.next) {
97
- this.getEntriesWithUrl(response.next);
98
- }
99
- else {
100
- this.organizeEntries();
101
- }
102
- });
103
- }
104
- searchEntries(searchTerm) {
105
- if (searchTerm !== "") {
106
- this.entryService.search(searchTerm).subscribe((response) => {
107
- this.entries = map(response.results, (result) => {
108
- return { id: result.id, entry: new Entry(result) };
109
- });
110
- if (response.next) {
111
- this.getEntriesWithUrl(response.next);
112
- }
113
- else {
114
- this.organizeEntries();
115
- }
116
- });
117
- }
118
- else {
119
- this.getEntries();
120
- }
121
- }
122
- render() {
123
- }
124
- routeTo(entry) {
125
- if (!entry) {
126
- this.router.navigateByUrl('create(left-col:create//right-col:create)').then(() => {
127
- });
128
- }
129
- else {
130
- this.router.navigate(['/', 'blog', entry.slug]).then(() => {
131
- // Noop
132
- });
133
- }
134
- }
135
- getMonthAndYearFromKey(key) {
136
- let subheading = '';
137
- const parts = key.split('/');
138
- switch (Number(parts[0])) {
139
- case 0:
140
- subheading += 'January ';
141
- break;
142
- case 1:
143
- subheading += 'February ';
144
- break;
145
- case 2:
146
- subheading += 'March ';
147
- break;
148
- case 3:
149
- subheading += 'April ';
150
- break;
151
- case 4:
152
- subheading += 'May ';
153
- break;
154
- case 5:
155
- subheading += 'June ';
156
- break;
157
- case 6:
158
- subheading += 'July ';
159
- break;
160
- case 7:
161
- subheading += 'August ';
162
- break;
163
- case 8:
164
- subheading += 'September ';
165
- break;
166
- case 9:
167
- subheading += 'October ';
168
- break;
169
- case 10:
170
- subheading += 'November ';
171
- break;
172
- case 11:
173
- subheading += 'December ';
174
- break;
175
- default:
176
- subheading += 'January ';
177
- }
178
- subheading += parts[1];
179
- return subheading;
180
- }
181
- ngOnDestroy() {
182
- if (this.sourceSub) {
183
- this.sourceSub.unsubscribe();
184
- this.sourceSub = null;
185
- }
186
- }
187
- onSearchChange(searchValue) {
188
- this.doSearch.emit(searchValue);
189
- }
190
- }
191
- SideNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SideNavigationComponent, deps: [{ token: i1.EntryService }, { token: i2.Router }, { token: i3.IdentityService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
192
- SideNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SideNavigationComponent, selector: "app-side-navigation", viewQueries: [{ propertyName: "divNav", first: true, predicate: ["navcontainer"], descendants: true }], ngImport: i0, template: "<div class=\"sidenav no-scrollbar\">\n <div style=\"margin-top: 20px;\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>Search</mat-label>\n <input matInput [formControl]=\"searchControl\" (ngModelChange)=\"onSearchChange($event)\">\n </mat-form-field>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list\n *ngFor=\"let container of entriesByMonthAndYear\"\n >\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n <a mat-list-item *ngFor=\"let entry of container.entries\" href=\"javascript:void(0)\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n </mat-nav-list>\n\n </div>\n\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n\n <mat-nav-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null)\">Create</a>\n </mat-nav-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n", styles: [".sidenav{max-height:calc(100vh - 100px)}@media screen and (max-height: 560px){.sidenav{max-height:100vh}}h2,h3{margin-left:10px;justify-content:right}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "component", type: i8.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i8.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }], animations: [
193
- trigger('sideNavAnimation', [
194
- state('in', style({ transform: 'translateX(0%)' })),
195
- state('out', style({ transform: 'translateX(110%)' })),
196
- transition('in => out', [
197
- animate('100ms ease-out', style({ transform: 'translateX(110%)' }))
198
- ]),
199
- transition('out => in', [
200
- animate('100ms ease-in', style({ transform: 'translateX(0%)' }))
201
- ])
202
- ]),
203
- ] });
204
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SideNavigationComponent, decorators: [{
205
- type: Component,
206
- args: [{ selector: 'app-side-navigation', animations: [
207
- trigger('sideNavAnimation', [
208
- state('in', style({ transform: 'translateX(0%)' })),
209
- state('out', style({ transform: 'translateX(110%)' })),
210
- transition('in => out', [
211
- animate('100ms ease-out', style({ transform: 'translateX(110%)' }))
212
- ]),
213
- transition('out => in', [
214
- animate('100ms ease-in', style({ transform: 'translateX(0%)' }))
215
- ])
216
- ]),
217
- ], template: "<div class=\"sidenav no-scrollbar\">\n <div style=\"margin-top: 20px;\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>Search</mat-label>\n <input matInput [formControl]=\"searchControl\" (ngModelChange)=\"onSearchChange($event)\">\n </mat-form-field>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list\n *ngFor=\"let container of entriesByMonthAndYear\"\n >\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n <a mat-list-item *ngFor=\"let entry of container.entries\" href=\"javascript:void(0)\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n </mat-nav-list>\n\n </div>\n\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n\n <mat-nav-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null)\">Create</a>\n </mat-nav-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n", styles: [".sidenav{max-height:calc(100vh - 100px)}@media screen and (max-height: 560px){.sidenav{max-height:100vh}}h2,h3{margin-left:10px;justify-content:right}\n"] }]
218
- }], ctorParameters: function () { return [{ type: i1.EntryService }, { type: i2.Router }, { type: i3.IdentityService }, { type: i0.Renderer2 }]; }, propDecorators: { divNav: [{
219
- type: ViewChild,
220
- args: ['navcontainer', { static: false }]
221
- }] } });
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NpZGUtbmF2aWdhdGlvbi9zaWRlLW5hdmlnYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXZpZ2F0aW9uL3NpZGUtbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBeUMsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMzQixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7O0FBdUJ2QyxNQUFNLE9BQU8sdUJBQXVCO0lBZ0JsQyxZQUNVLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxlQUFnQyxFQUNoQyxRQUFtQjtRQUhuQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFsQjdCLFVBQUssR0FBaUIsS0FBSyxDQUFDO1FBSzVCLFlBQU8sR0FBaUMsRUFBRSxDQUFD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YUFDbEUsQ0FBQztZQUNGLFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQzthQUMvRCxDQUFDO1NBQ0gsQ0FBQztLQUNIOzJGQUVVLHVCQUF1QjtrQkFqQm5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CO3dCQUNWLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTs0QkFDMUIsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsQ0FBQyxDQUFDOzRCQUNqRCxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBQyxDQUFDLENBQUM7NEJBQ3BELFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0NBQ3RCLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQyxDQUFDOzZCQUNsRSxDQUFDOzRCQUNGLFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0NBQ3RCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQzs2QkFDL0QsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIOzhLQWdCNkMsTUFBTTtzQkFBbkQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdHJpZ2dlciwgc3RhdGUsIHN0eWxlLCBhbmltYXRlLCB0cmFuc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge21hcH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7RW50cnl9IGZyb20gJy4uLy4uL2RhdGEvZW50cnknO1xuaW1wb3J0IHtJZGVudGl0eX0gZnJvbSAnLi4vLi4vZGF0YS9pZGVudGl0eSc7XG5cbmltcG9ydCB7RW50cnlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnRyeS5zZXJ2aWNlJztcbmltcG9ydCB7SWRlbnRpdHlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pZGVudGl0eS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNpZGUtbmF2aWdhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLW5hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdmlnYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ3NpZGVOYXZBbmltYXRpb24nLCBbXG4gICAgICBzdGF0ZSgnaW4nLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwJSknfSkpLFxuICAgICAgc3RhdGUoJ291dCcsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDExMCUpJ30pKSxcbiAgICAgIHRyYW5zaXRpb24oJ2luID0+IG91dCcsIFtcbiAgICAgICAgYW5pbWF0ZSgnMTAwbXMgZWFzZS1vdXQnLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMTAlKSd9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignb3V0ID0+IGluJywgW1xuICAgICAgICBhbmltYXRlKCcxMDBtcyBlYXNlLWluJywgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCUpJ30pKVxuICAgICAgXSlcbiAgICBdKSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTaWRlTmF2aWdhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBzdGF0ZTogJ2luJyB8ICdvdXQnID0gJ291dCc7XG5cbiAgc291cmNlU3ViO1xuICBpZGVudGl0eTogSWRlbnRpdHk7XG5cbiAgZW50cmllczoge2lkOiBzdHJpbmcsIGVudHJ5OiBFbnRyeX1bXSA9IFtdO1xuICBlbnRyaWVzQnlNb250aEFuZFllYXI6IHttb250aF95ZWFyOiBzdHJpbmcsIG1vbnRoX3llYXJfbnVtYmVyOiBudW1iZXIsIGVudHJpZXM6IEVudHJ5W119W10gPSBbXTtcblxuICBzZWFyY2hUZXJtID0gXCJcIjtcblxuICBkb1NlYXJjaDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZCgnbmF2Y29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRpdk5hdjogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVudHJ5U2VydmljZTogRW50cnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpZGVudGl0eVNlcnZpY2U6IElkZW50aXR5U2VydmljZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICB0aGlzLmRvU2VhcmNoLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaEVudHJpZXMocmVzdWx0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuaWRlbnRpdHlTZXJ2aWNlLmdldE1lKCkuc3Vic2NyaWJlKChpZGVudGl0eSkgPT4ge1xuICAgICAgdGhpcy5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5pZGVudGl0eSA9IG51bGw7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZ2V0RW50cmllcygpO1xuXG4gIH1cblxuICBnZXRFbnRyaWVzV2l0aFVybCh1cmw6IHN0cmluZykge1xuICAgIHRoaXMuZW50cnlTZXJ2aWNlLmdldExpc3RCeVVybCh1cmwpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuZW50cmllcyA9IHRoaXMuZW50cmllcy5jb25jYXQoXG4gICAgICAgIG1hcCgocmVzcG9uc2UgYXMgYW55KS5yZXN1bHRzLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IHJlc3VsdC5pZCwgZW50cnk6IG5ldyBFbnRyeShyZXN1bHQpfTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICBpZiAoKHJlc3BvbnNlIGFzIGFueSkubmV4dCkge1xuICAgICAgICB0aGlzLmdldEVudHJpZXNXaXRoVXJsKHJlc3BvbnNlLm5leHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcmdhbml6ZUVudHJpZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9yZ2FuaXplRW50cmllcygpIHtcbiAgICB0aGlzLnN0YXRlID0gJ291dCc7XG4gICAgbGV0IG9yZ2FuaXplRW50cmllc0ZuID0gKCkgPT4ge1xuICAgICAgdGhpcy5lbnRyaWVzQnlNb250aEFuZFllYXIgPSBbXTtcbiAgICAgIGxldCBuZXdFbnRyaWVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmVudHJpZXNCeU1vbnRoQW5kWWVhcikpO1xuICAgICAgZm9yIChjb25zdCBlbnRyeVdyYXBwZXIgb2YgdGhpcy5lbnRyaWVzKSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cnlXcmFwcGVyLmVudHJ5O1xuICAgICAgICBjb25zdCBjcmVhdGVfZGF0ZSA9IG5ldyBEYXRlKGVudHJ5LmNyZWF0ZV9kYXRlKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBjcmVhdGVfZGF0ZS5nZXRNb250aCgpO1xuICAgICAgICBjb25zdCB5ZWFyID0gY3JlYXRlX2RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgY29uc3Qga2V5ID0gbW9udGggKyAnLycgKyB5ZWFyO1xuICAgICAgICBjb25zdCBzb3J0X2luZGV4ID0gKHllYXIgKiAxMDApICsgbW9udGg7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcnMgPSBmaWx0ZXIobmV3RW50cmllcywgKGVudHJ5Q29udGFpbmVyKSA9PiBlbnRyeUNvbnRhaW5lci5tb250aF95ZWFyID09PSBrZXkpO1xuICAgICAgICBpZiAoY29udGFpbmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyc1swXTtcbiAgICAgICAgICBjb25zdCBlbnRyaWVzV2l0aElkID0gZmlsdGVyKGNvbnRhaW5lci5lbnRyaWVzLCAoZSkgPT4gZS5pZCA9PT0gZW50cnlXcmFwcGVyLmVudHJ5LmlkKTtcbiAgICAgICAgICBpZiAoZW50cmllc1dpdGhJZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5lbnRyaWVzLnB1c2goZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXdDb250YWluZXIgPSB7bW9udGhfeWVhcjoga2V5LCBtb250aF95ZWFyX251bWJlcjogc29ydF9pbmRleCwgZW50cmllczogW2VudHJ5XX07XG4gICAgICAgICAgbmV3RW50cmllcy5wdXNoKG5ld0NvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5ld0VudHJpZXMuc29ydChcbiAgICAgICAgKGVudHJ5X2EsIGVudHJ5X2IpID0+IHtcbiAgICAgICAgICByZXR1cm4gZW50cnlfYS5tb250aF95ZWFyX251bWJlciAtIGVudHJ5X2IubW9udGhfeWVhcl9udW1iZXI7XG4gICAgICAgIH0pO1xuICAgICAgbmV3RW50cmllcy5yZXZlcnNlKCk7XG5cbiAgICAgIGxldCBzZXRFbnRyaWVzRm4gPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZW50cmllc0J5TW9udGhBbmRZZWFyID0gbmV3RW50cmllcztcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdpbic7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KHNldEVudHJpZXNGbi5iaW5kKHRoaXMpLCA0MDApXG4gICAgfVxuICAgIHNldFRpbWVvdXQob3JnYW5pemVFbnRyaWVzRm4uYmluZCh0aGlzKSwgNDAwKVxuICB9XG5cbiAgZ2V0RW50cmllcygpIHtcbiAgICB0aGlzLmVudHJ5U2VydmljZS5nZXQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmVudHJpZXMgPSBtYXAocmVzcG9uc2UucmVzdWx0cywgKHJlc3VsdCkgPT4ge1xuICAgICAgICByZXR1cm4geyBpZDogcmVzdWx0LmlkLCBlbnRyeTogbmV3IEVudHJ5KHJlc3VsdCl9O1xuICAgICAgfSk7XG4gICAgICBpZiAoKHJlc3BvbnNlIGFzIGFueSkubmV4dCkge1xuICAgICAgICB0aGlzLmdldEVudHJpZXNXaXRoVXJsKHJlc3BvbnNlLm5leHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcmdhbml6ZUVudHJpZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNlYXJjaEVudHJpZXMoc2VhcmNoVGVybTogc3RyaW5nKSB7XG4gICAgaWYgKHNlYXJjaFRlcm0gIT09IFwiXCIpIHtcbiAgICAgIHRoaXMuZW50cnlTZXJ2aWNlLnNlYXJjaChzZWFyY2hUZXJtKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuZW50cmllcyA9IG1hcChyZXNwb25zZS5yZXN1bHRzLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IHJlc3VsdC5pZCwgZW50cnk6IG5ldyBFbnRyeShyZXN1bHQpfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICgocmVzcG9uc2UgYXMgYW55KS5uZXh0KSB7XG4gICAgICAgICAgdGhpcy5nZXRFbnRyaWVzV2l0aFVybChyZXNwb25zZS5uZXh0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9yZ2FuaXplRW50cmllcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nZXRFbnRyaWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICB9XG5cbiAgcm91dGVUbyhlbnRyeSkge1xuICAgIGlmICghZW50cnkpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJ2NyZWF0ZShsZWZ0LWNvbDpjcmVhdGUvL3JpZ2h0LWNvbDpjcmVhdGUpJykudGhlbigoKSA9PiB7XG5cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nLCAnYmxvZycsIGVudHJ5LnNsdWddKS50aGVuKCgpID0+IHtcbiAgICAgICAgLy8gTm9vcFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9udGhBbmRZZWFyRnJvbUtleShrZXk6IHN0cmluZykge1xuICAgIGxldCBzdWJoZWFkaW5nID0gJyc7XG4gICAgY29uc3QgcGFydHMgPSBrZXkuc3BsaXQoJy8nKTtcblxuICAgIHN3aXRjaCAoTnVtYmVyKHBhcnRzWzBdKSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdKYW51YXJ5ICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdGZWJydWFyeSAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgc3ViaGVhZGluZyArPSAnTWFyY2ggJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0FwcmlsICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA0OlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdNYXkgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0p1bmUgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDY6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0p1bHkgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0F1Z3VzdCAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgODpcbiAgICAgICAgc3ViaGVhZGluZyArPSAnU2VwdGVtYmVyICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA5OlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdPY3RvYmVyICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDpcbiAgICAgICAgc3ViaGVhZGluZyArPSAnTm92ZW1iZXIgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDExOlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdEZWNlbWJlciAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0phbnVhcnkgJztcbiAgICB9XG4gICAgc3ViaGVhZGluZyArPSBwYXJ0c1sxXTtcblxuICAgIHJldHVybiBzdWJoZWFkaW5nO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc291cmNlU3ViKSB7XG4gICAgICB0aGlzLnNvdXJjZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zb3VyY2VTdWIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIG9uU2VhcmNoQ2hhbmdlKHNlYXJjaFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRvU2VhcmNoLmVtaXQoc2VhcmNoVmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2lkZW5hdiBuby1zY3JvbGxiYXJcIj5cbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDIwcHg7XCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cbiAgICAgIDxtYXQtbGFiZWw+U2VhcmNoPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIiAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCI+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdiAjbmF2Y29udGFpbmVyIGNsYXNzPVwibmF2Y29udGFpbmVyXCJcbiAgICBbQHNpZGVOYXZBbmltYXRpb25dPVwic3RhdGVcIlxuICA+XG4gICAgPG1hdC1uYXYtbGlzdFxuICAgICAgKm5nRm9yPVwibGV0IGNvbnRhaW5lciBvZiBlbnRyaWVzQnlNb250aEFuZFllYXJcIlxuICAgID5cbiAgICAgIDxoMz57e2dldE1vbnRoQW5kWWVhckZyb21LZXkoY29udGFpbmVyLm1vbnRoX3llYXIpfX08L2gzPlxuICAgICAgPGEgbWF0LWxpc3QtaXRlbSAqbmdGb3I9XCJsZXQgZW50cnkgb2YgY29udGFpbmVyLmVudHJpZXNcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInJvdXRlVG8oZW50cnkpXCI+e3tlbnRyeS50aXRsZX19PC9hPlxuICAgIDwvbWF0LW5hdi1saXN0PlxuXG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZGVudGl0eT8uaWQgPT09IDFcIj5cbiAgICA8aDI+TWlzYzwvaDI+XG5cbiAgICA8bWF0LW5hdi1saXN0PlxuICAgICAgPGEgbWF0LWxpc3QtaXRlbSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJyb3V0ZVRvKG51bGwpXCI+Q3JlYXRlPC9hPlxuICAgIDwvbWF0LW5hdi1saXN0PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGgzICpuZ0lmPVwiaWRlbnRpdHlcIj5Mb2dnZWQgaW4gYXMge3tpZGVudGl0eT8uZW1haWx9fTwvaDM+XG48L2Rpdj5cblxuIl19
@@ -1,28 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../services/static-html.service";
4
- import * as i2 from "@angular/platform-browser";
5
- export class StaticHtmlComponent {
6
- constructor(staticHtmlService, domSanitizer) {
7
- this.staticHtmlService = staticHtmlService;
8
- this.domSanitizer = domSanitizer;
9
- }
10
- refreshContent() {
11
- this.innerHtml = this.domSanitizer.bypassSecurityTrustHtml(this.staticHtmlService.mapStaticHtml(this.value, false));
12
- }
13
- ngOnChanges(changes) {
14
- this.refreshContent();
15
- }
16
- ngOnInit() {
17
- this.refreshContent();
18
- }
19
- }
20
- StaticHtmlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: StaticHtmlComponent, deps: [{ token: i1.StaticHtmlService }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
21
- StaticHtmlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: StaticHtmlComponent, selector: "app-static-html", inputs: { value: "value" }, usesOnChanges: true, ngImport: i0, template: "<div [innerHtml]=\"innerHtml\">\n</div>\n", styles: [""] });
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: StaticHtmlComponent, decorators: [{
23
- type: Component,
24
- args: [{ selector: 'app-static-html', template: "<div [innerHtml]=\"innerHtml\">\n</div>\n" }]
25
- }], ctorParameters: function () { return [{ type: i1.StaticHtmlService }, { type: i2.DomSanitizer }]; }, propDecorators: { value: [{
26
- type: Input
27
- }] } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLWh0bWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc3RhdGljLWh0bWwvc3RhdGljLWh0bWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc3RhdGljLWh0bWwvc3RhdGljLWh0bWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFDOzs7O0FBU25GLE1BQU0sT0FBTyxtQkFBbUI7SUFLNUIsWUFDWSxpQkFBb0MsRUFDcEMsWUFBMEI7UUFEMUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUNsQyxDQUFDO0lBRUwsY0FBYztRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4SCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDOztnSEFwQlEsbUJBQW1CO29HQUFuQixtQkFBbUIsd0dDVGhDLDJDQUVBOzJGRE9hLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDSSxpQkFBaUI7bUlBT2xCLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RvbVNhbml0aXplciwgU2FmZUh0bWx9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtTdGF0aWNIdG1sU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGljLWh0bWwuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXN0YXRpYy1odG1sJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3RhdGljLWh0bWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0YXRpYy1odG1sLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTdGF0aWNIdG1sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gICAgaW5uZXJIdG1sOiBTYWZlSHRtbDtcbiAgICBASW5wdXQoKSB2YWx1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHN0YXRpY0h0bWxTZXJ2aWNlOiBTdGF0aWNIdG1sU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICAgICkgeyB9XG5cbiAgICByZWZyZXNoQ29udGVudCgpIHtcbiAgICAgICAgdGhpcy5pbm5lckh0bWwgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0aGlzLnN0YXRpY0h0bWxTZXJ2aWNlLm1hcFN0YXRpY0h0bWwodGhpcy52YWx1ZSwgZmFsc2UpKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVmcmVzaENvbnRlbnQoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoQ29udGVudCgpO1xuICAgIH1cblxufVxuIiwiPGRpdiBbaW5uZXJIdG1sXT1cImlubmVySHRtbFwiPlxuPC9kaXY+XG4iXX0=