@thecodeblogs/blog 0.11.7 → 0.13.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.
- package/esm2020/lib/components/entry-creator/entry-creator.component.mjs +347 -0
- package/esm2020/lib/components/entry-renderer/entry-renderer.component.mjs +108 -0
- package/esm2020/lib/components/entry-renderer-wrapper/entry-renderer-wrapper.component.mjs +75 -0
- package/esm2020/lib/components/entry-selector-dialog/entry-selector-dialog-data.mjs +3 -0
- package/esm2020/lib/components/entry-selector-dialog/entry-selector-dialog.component.mjs +45 -0
- package/esm2020/lib/components/entry-summary/entry-summary.component.mjs +28 -0
- package/esm2020/lib/components/json-renderer/json-renderer.component.mjs +26 -0
- package/esm2020/lib/components/landing-page/landing-page.component.mjs +35 -0
- package/esm2020/lib/components/main/main.component.mjs +56 -0
- package/esm2020/lib/components/media-upload-modal/media-upload-modal.component.mjs +160 -0
- package/esm2020/lib/components/outline-view/outline-view.component.mjs +40 -0
- package/esm2020/lib/components/schedule-publish-dialog/schedule-publish-dialog-data.mjs +3 -0
- package/esm2020/lib/components/schedule-publish-dialog/schedule-publish-dialog.component.mjs +33 -0
- package/esm2020/lib/components/side-navigation/side-navigation.component.mjs +151 -0
- package/esm2020/lib/components/static-html/static-html.component.mjs +28 -0
- package/esm2020/lib/core.module.mjs +207 -0
- package/esm2020/lib/data/base.mjs +7 -0
- package/esm2020/lib/data/content-type.mjs +10 -0
- package/esm2020/lib/data/content.mjs +5 -0
- package/esm2020/lib/data/core-event-type.enum.mjs +7 -0
- package/esm2020/lib/data/core-event.mjs +7 -0
- package/esm2020/lib/data/entry.mjs +80 -0
- package/esm2020/lib/data/guid.mjs +12 -0
- package/esm2020/lib/data/identity.mjs +2 -0
- package/esm2020/lib/data/list-response.mjs +3 -0
- package/esm2020/lib/data/section.mjs +11 -0
- package/esm2020/lib/data/tag.mjs +7 -0
- package/esm2020/lib/data/visitor-profile.mjs +3 -0
- package/esm2020/lib/pipes/LinkyPipe.mjs +15 -0
- package/esm2020/lib/pipes/TimeAgoPipe.mjs +100 -0
- package/esm2020/lib/routing/routes.mjs +25 -0
- package/esm2020/lib/services/analytics/interaction.service.mjs +20 -0
- package/esm2020/lib/services/analytics/view.service.mjs +20 -0
- package/esm2020/lib/services/comment.service.mjs +28 -0
- package/esm2020/lib/services/django-rest-framework-endpoint.service.mjs +50 -0
- package/esm2020/lib/services/entry.service.mjs +73 -0
- package/esm2020/lib/services/identity.service.mjs +20 -0
- package/esm2020/lib/services/interaction.mjs +3 -0
- package/esm2020/lib/services/prism.service.mjs +39 -0
- package/esm2020/lib/services/static-html.service.mjs +22 -0
- package/esm2020/lib/services/tag.service.mjs +33 -0
- package/esm2020/lib/services/upload.mjs +3 -0
- package/esm2020/lib/services/upload.service.mjs +22 -0
- package/esm2020/lib/services/view.mjs +3 -0
- package/esm2020/lib/services/visitor-profile.service.mjs +35 -0
- package/esm2020/public-api.mjs +45 -0
- package/esm2020/thecodeblogs-blog.mjs +5 -0
- package/fesm2015/thecodeblogs-blog.mjs +1826 -0
- package/fesm2015/thecodeblogs-blog.mjs.map +1 -0
- package/fesm2020/thecodeblogs-blog.mjs +1820 -0
- package/fesm2020/thecodeblogs-blog.mjs.map +1 -0
- package/lib/components/entry-creator/entry-creator.component.d.ts +3 -0
- package/lib/components/entry-renderer/entry-renderer.component.d.ts +3 -0
- package/lib/components/entry-renderer-wrapper/entry-renderer-wrapper.component.d.ts +3 -0
- package/lib/components/entry-selector-dialog/entry-selector-dialog.component.d.ts +3 -0
- package/lib/components/entry-summary/entry-summary.component.d.ts +3 -0
- package/lib/components/json-renderer/json-renderer.component.d.ts +3 -0
- package/lib/components/landing-page/landing-page.component.d.ts +3 -0
- package/lib/components/main/main.component.d.ts +3 -0
- package/lib/components/media-upload-modal/media-upload-modal.component.d.ts +3 -0
- package/lib/components/outline-view/outline-view.component.d.ts +3 -0
- package/lib/components/schedule-publish-dialog/schedule-publish-dialog.component.d.ts +3 -0
- package/lib/components/side-navigation/side-navigation.component.d.ts +3 -0
- package/lib/components/static-html/static-html.component.d.ts +3 -0
- package/lib/core.module.d.ts +40 -0
- package/lib/pipes/LinkyPipe.d.ts +3 -0
- package/lib/pipes/TimeAgoPipe.d.ts +3 -0
- package/lib/services/analytics/interaction.service.d.ts +3 -0
- package/lib/services/analytics/view.service.d.ts +3 -0
- package/lib/services/comment.service.d.ts +3 -0
- package/lib/services/django-rest-framework-endpoint.service.d.ts +3 -0
- package/lib/services/entry.service.d.ts +3 -0
- package/lib/services/identity.service.d.ts +3 -0
- package/lib/services/prism.service.d.ts +3 -0
- package/lib/services/static-html.service.d.ts +3 -0
- package/lib/services/tag.service.d.ts +3 -0
- package/lib/services/upload.service.d.ts +3 -0
- package/lib/services/visitor-profile.service.d.ts +3 -0
- package/package.json +36 -24
- package/thecodeblogs-blog.d.ts +1 -3
- package/bundles/thecodeblogs-blog.umd.js +0 -2279
- package/bundles/thecodeblogs-blog.umd.js.map +0 -1
- package/bundles/thecodeblogs-blog.umd.min.js +0 -17
- package/bundles/thecodeblogs-blog.umd.min.js.map +0 -1
- package/esm2015/lib/components/entry-creator/entry-creator.component.js +0 -336
- package/esm2015/lib/components/entry-renderer/entry-renderer.component.js +0 -108
- package/esm2015/lib/components/entry-renderer-wrapper/entry-renderer-wrapper.component.js +0 -79
- package/esm2015/lib/components/entry-selector-dialog/entry-selector-dialog-data.js +0 -3
- package/esm2015/lib/components/entry-selector-dialog/entry-selector-dialog.component.js +0 -41
- package/esm2015/lib/components/entry-summary/entry-summary.component.js +0 -29
- package/esm2015/lib/components/json-renderer/json-renderer.component.js +0 -29
- package/esm2015/lib/components/landing-page/landing-page.component.js +0 -37
- package/esm2015/lib/components/main/main.component.js +0 -55
- package/esm2015/lib/components/media-upload-modal/media-upload-modal.component.js +0 -155
- package/esm2015/lib/components/outline-view/outline-view.component.js +0 -40
- package/esm2015/lib/components/schedule-publish-dialog/schedule-publish-dialog-data.js +0 -3
- package/esm2015/lib/components/schedule-publish-dialog/schedule-publish-dialog.component.js +0 -28
- package/esm2015/lib/components/side-navigation/side-navigation.component.js +0 -154
- package/esm2015/lib/components/static-html/static-html.component.js +0 -33
- package/esm2015/lib/core.module.js +0 -125
- package/esm2015/lib/data/base.js +0 -7
- package/esm2015/lib/data/content-type.js +0 -10
- package/esm2015/lib/data/content.js +0 -5
- package/esm2015/lib/data/core-event-type.enum.js +0 -7
- package/esm2015/lib/data/core-event.js +0 -7
- package/esm2015/lib/data/entry.js +0 -80
- package/esm2015/lib/data/guid.js +0 -12
- package/esm2015/lib/data/identity.js +0 -2
- package/esm2015/lib/data/list-response.js +0 -3
- package/esm2015/lib/data/section.js +0 -11
- package/esm2015/lib/data/tag.js +0 -7
- package/esm2015/lib/data/visitor-profile.js +0 -3
- package/esm2015/lib/pipes/LinkyPipe.js +0 -11
- package/esm2015/lib/pipes/TimeAgoPipe.js +0 -100
- package/esm2015/lib/routing/routes.js +0 -25
- package/esm2015/lib/services/analytics/interaction.service.js +0 -22
- package/esm2015/lib/services/analytics/view.service.js +0 -22
- package/esm2015/lib/services/comment.service.js +0 -30
- package/esm2015/lib/services/django-rest-framework-endpoint.service.js +0 -52
- package/esm2015/lib/services/entry.service.js +0 -74
- package/esm2015/lib/services/identity.service.js +0 -22
- package/esm2015/lib/services/interaction.js +0 -3
- package/esm2015/lib/services/prism.service.js +0 -37
- package/esm2015/lib/services/static-html.service.js +0 -24
- package/esm2015/lib/services/tag.service.js +0 -35
- package/esm2015/lib/services/upload.js +0 -3
- package/esm2015/lib/services/upload.service.js +0 -24
- package/esm2015/lib/services/view.js +0 -3
- package/esm2015/lib/services/visitor-profile.service.js +0 -39
- package/esm2015/public-api.js +0 -45
- package/esm2015/thecodeblogs-blog.js +0 -8
- package/fesm2015/thecodeblogs-blog.js +0 -1786
- package/fesm2015/thecodeblogs-blog.js.map +0 -1
- package/thecodeblogs-blog.metadata.json +0 -1
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
|
|
3
|
-
import { InteractionService } from '../../services/analytics/interaction.service';
|
|
4
|
-
import { ViewService } from '../../services/analytics/view.service';
|
|
5
|
-
import { EntryService } from '../../services/entry.service';
|
|
6
|
-
import { Interaction } from '../../services/interaction';
|
|
7
|
-
import { View } from '../../services/view';
|
|
8
|
-
export class EntryRendererWrapperComponent {
|
|
9
|
-
constructor(entryService, router, route, viewService, interactionService) {
|
|
10
|
-
this.entryService = entryService;
|
|
11
|
-
this.router = router;
|
|
12
|
-
this.route = route;
|
|
13
|
-
this.viewService = viewService;
|
|
14
|
-
this.interactionService = interactionService;
|
|
15
|
-
this.seeAllEntries = false;
|
|
16
|
-
}
|
|
17
|
-
seeAll(toggle) {
|
|
18
|
-
this.seeAllEntries = toggle;
|
|
19
|
-
}
|
|
20
|
-
getEntry() {
|
|
21
|
-
const slug = this.route.snapshot.paramMap.get('slug');
|
|
22
|
-
if (slug) {
|
|
23
|
-
this.entryService.getBySlug(slug).subscribe((response) => {
|
|
24
|
-
this.currentEntry = response;
|
|
25
|
-
const view = new View();
|
|
26
|
-
view.entry = this.currentEntry.id;
|
|
27
|
-
this.viewService.create(view).subscribe((viewResponse) => {
|
|
28
|
-
// Noop
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
this.route.queryParams.subscribe(params => {
|
|
33
|
-
const campaign = params['campaign'];
|
|
34
|
-
if (campaign && campaign !== '') {
|
|
35
|
-
const interaction = new Interaction();
|
|
36
|
-
interaction.content = { 'campaign': campaign, slug };
|
|
37
|
-
this.interactionService.create(interaction).subscribe((response) => {
|
|
38
|
-
});
|
|
39
|
-
setTimeout(() => {
|
|
40
|
-
const urlMinsCampaign = this.router.url.replace(new RegExp('.campaign=' + campaign), '');
|
|
41
|
-
this.router.navigateByUrl(urlMinsCampaign);
|
|
42
|
-
}, 0);
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
ngOnInit() {
|
|
47
|
-
this.routerSub = this.router.events.subscribe((e) => {
|
|
48
|
-
if (e instanceof NavigationEnd) {
|
|
49
|
-
this.currentEntry = null;
|
|
50
|
-
this.seeAll(false);
|
|
51
|
-
setTimeout(() => {
|
|
52
|
-
this.getEntry();
|
|
53
|
-
}, 10);
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
this.getEntry();
|
|
57
|
-
}
|
|
58
|
-
ngOnDestroy() {
|
|
59
|
-
if (this.routerSub) {
|
|
60
|
-
this.routerSub.complete();
|
|
61
|
-
this.routerSub = null;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
EntryRendererWrapperComponent.decorators = [
|
|
66
|
-
{ type: Component, args: [{
|
|
67
|
-
selector: 'lib-entry-renderer-wrapper',
|
|
68
|
-
template: "<div class=\"rendered-entry section\">\n <app-entry-renderer *ngIf=\"currentEntry\" [entry]=\"currentEntry\"></app-entry-renderer>\n</div>\n",
|
|
69
|
-
styles: [".rendered-entry{padding:0 20px}"]
|
|
70
|
-
},] }
|
|
71
|
-
];
|
|
72
|
-
EntryRendererWrapperComponent.ctorParameters = () => [
|
|
73
|
-
{ type: EntryService },
|
|
74
|
-
{ type: Router },
|
|
75
|
-
{ type: ActivatedRoute },
|
|
76
|
-
{ type: ViewService },
|
|
77
|
-
{ type: InteractionService }
|
|
78
|
-
];
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktcmVuZGVyZXItd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2JqYW1lc29uL0RldmVsb3BtZW50L2Jsb2cvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9lbnRyeS1yZW5kZXJlci13cmFwcGVyL2VudHJ5LXJlbmRlcmVyLXdyYXBwZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQU96QyxNQUFNLE9BQU8sNkJBQTZCO0lBVXRDLFlBQ1ksWUFBMEIsRUFDMUIsTUFBYyxFQUNkLEtBQXFCLEVBQ3JCLFdBQXdCLEVBQ3hCLGtCQUFzQztRQUp0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQVpsRCxrQkFBYSxHQUFHLEtBQUssQ0FBQztJQWN0QixDQUFDO0lBWEQsTUFBTSxDQUFDLE1BQWU7UUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7SUFDaEMsQ0FBQztJQVdELFFBQVE7UUFDSixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksSUFBSSxFQUFFO1lBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO2dCQUM3QixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUVsQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtvQkFDckQsT0FBTztnQkFDWCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BDLElBQUksUUFBUSxJQUFJLFFBQVEsS0FBSyxFQUFFLEVBQUU7Z0JBRTdCLE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ3RDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUVuRSxDQUFDLENBQUMsQ0FBQztnQkFDSCxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNaLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3pGLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDVDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxZQUFZLGFBQWEsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ1osSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDVjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDekI7SUFDTCxDQUFDOzs7WUExRUosU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw0QkFBNEI7Z0JBQ3RDLDJKQUFzRDs7YUFFdkQ7OztZQVJPLFlBQVk7WUFIbUIsTUFBTTtZQUFyQyxjQUFjO1lBRWQsV0FBVztZQURYLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7SW50ZXJhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hbmFseXRpY3MvaW50ZXJhY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1ZpZXdTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hbmFseXRpY3Mvdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7RW50cnlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnRyeS5zZXJ2aWNlJztcbmltcG9ydCB7SW50ZXJhY3Rpb259IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ludGVyYWN0aW9uJztcbmltcG9ydCB7Vmlld30gZnJvbSAnLi4vLi4vc2VydmljZXMvdmlldyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1lbnRyeS1yZW5kZXJlci13cmFwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VudHJ5LXJlbmRlcmVyLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbnRyeS1yZW5kZXJlci13cmFwcGVyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFbnRyeVJlbmRlcmVyV3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBlbnRyaWVzO1xuICAgIGN1cnJlbnRFbnRyeTtcbiAgICBzZWVBbGxFbnRyaWVzID0gZmFsc2U7XG4gICAgcm91dGVyU3ViO1xuXG4gICAgc2VlQWxsKHRvZ2dsZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNlZUFsbEVudHJpZXMgPSB0b2dnbGU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZW50cnlTZXJ2aWNlOiBFbnRyeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHZpZXdTZXJ2aWNlOiBWaWV3U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBpbnRlcmFjdGlvblNlcnZpY2U6IEludGVyYWN0aW9uU2VydmljZVxuICAgICkge1xuICAgIH1cblxuICAgIGdldEVudHJ5KCkge1xuICAgICAgICBjb25zdCBzbHVnID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ3NsdWcnKTtcbiAgICAgICAgaWYgKHNsdWcpIHtcbiAgICAgICAgICAgIHRoaXMuZW50cnlTZXJ2aWNlLmdldEJ5U2x1ZyhzbHVnKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50RW50cnkgPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICBjb25zdCB2aWV3ID0gbmV3IFZpZXcoKTtcbiAgICAgICAgICAgICAgICB2aWV3LmVudHJ5ID0gdGhpcy5jdXJyZW50RW50cnkuaWQ7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLmNyZWF0ZSh2aWV3KS5zdWJzY3JpYmUoKHZpZXdSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBOb29wXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYW1wYWlnbiA9IHBhcmFtc1snY2FtcGFpZ24nXTtcbiAgICAgICAgICAgIGlmIChjYW1wYWlnbiAmJiBjYW1wYWlnbiAhPT0gJycpIHtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aW9uID0gbmV3IEludGVyYWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgaW50ZXJhY3Rpb24uY29udGVudCA9IHsnY2FtcGFpZ24nOiBjYW1wYWlnbiwgc2x1Z307XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuY3JlYXRlKGludGVyYWN0aW9uKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG5cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsTWluc0NhbXBhaWduID0gdGhpcy5yb3V0ZXIudXJsLnJlcGxhY2UobmV3IFJlZ0V4cCgnLmNhbXBhaWduPScgKyBjYW1wYWlnbiksICcnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmxNaW5zQ2FtcGFpZ24pO1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXJTdWIgPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRFbnRyeSA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWVBbGwoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEVudHJ5KCk7XG4gICAgICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmdldEVudHJ5KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJvdXRlclN1Yikge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXJTdWIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIHRoaXMucm91dGVyU3ViID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export class EntrySelectorDialogData {
|
|
2
|
-
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktc2VsZWN0b3ItZGlhbG9nLWRhdGEuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2JqYW1lc29uL0RldmVsb3BtZW50L2Jsb2cvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9lbnRyeS1zZWxlY3Rvci1kaWFsb2cvZW50cnktc2VsZWN0b3ItZGlhbG9nLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHVCQUF1QjtDQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBFbnRyeVNlbGVjdG9yRGlhbG9nRGF0YSB7XG59XG4iXX0=
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Component, Inject } from '@angular/core';
|
|
2
|
-
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
|
3
|
-
import { EntrySelectorDialogData } from '../../components/entry-selector-dialog/entry-selector-dialog-data';
|
|
4
|
-
import { EntryService } from '../../services/entry.service';
|
|
5
|
-
export class EntrySelectorDialogComponent {
|
|
6
|
-
constructor(dialogRef, data, entryService) {
|
|
7
|
-
this.dialogRef = dialogRef;
|
|
8
|
-
this.data = data;
|
|
9
|
-
this.entryService = entryService;
|
|
10
|
-
}
|
|
11
|
-
ngOnInit() {
|
|
12
|
-
this.entryService.getUnpublishedEntries().subscribe((next) => {
|
|
13
|
-
this.entries = next.results;
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
onNoClick() {
|
|
17
|
-
this.dialogRef.close();
|
|
18
|
-
}
|
|
19
|
-
onYesClick() {
|
|
20
|
-
this.entryService.getUnpublishedById(this.selectedId).subscribe((entry) => {
|
|
21
|
-
localStorage.setItem(EntrySelectorDialogComponent.CURRENT_ENTRY, JSON.stringify(entry));
|
|
22
|
-
entry.sort();
|
|
23
|
-
this.entryService.currentlyEditedEntry.next(entry);
|
|
24
|
-
this.dialogRef.close();
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
EntrySelectorDialogComponent.CURRENT_ENTRY = 'current_entry';
|
|
29
|
-
EntrySelectorDialogComponent.decorators = [
|
|
30
|
-
{ type: Component, args: [{
|
|
31
|
-
selector: 'app-entry-selector-dialog',
|
|
32
|
-
template: "<h1 mat-dialog-title>Select an Entry to Edit</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 <mat-radio-group [(ngModel)]=\"selectedId\">\n <mat-radio-button *ngFor=\"let entry of entries\" class=\"option\" [value]=\"entry.id\">{{entry.title}}</mat-radio-button>\n </mat-radio-group>\n <div *ngIf=\"!entries?.length\">There are no unpublished entries</div>\n</div>\n<div mat-dialog-actions>\n <button mat-button (click)=\"onNoClick()\">Cancel</button>\n <button mat-button (click)=\"onYesClick()\" [mat-dialog-close]=\"this.selectedId\" cdkFocusInitial>Edit Selected Entry</button>\n</div>\n",
|
|
33
|
-
styles: [".entry-checkbox-container{display:inline-block;margin:5px 0;width:100%}.option-list-divider{margin:10px 0}.option{margin-right:5px}"]
|
|
34
|
-
},] }
|
|
35
|
-
];
|
|
36
|
-
EntrySelectorDialogComponent.ctorParameters = () => [
|
|
37
|
-
{ type: MatDialogRef },
|
|
38
|
-
{ type: EntrySelectorDialogData, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] },
|
|
39
|
-
{ type: EntryService }
|
|
40
|
-
];
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktc2VsZWN0b3ItZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvYmphbWVzb24vRGV2ZWxvcG1lbnQvYmxvZy9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2VudHJ5LXNlbGVjdG9yLWRpYWxvZy9lbnRyeS1zZWxlY3Rvci1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sbUVBQW1FLENBQUM7QUFDMUcsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBTzFELE1BQU0sT0FBTyw0QkFBNEI7SUFPckMsWUFDVyxTQUFxRCxFQUM1QixJQUE2QixFQUNyRCxZQUEwQjtRQUYzQixjQUFTLEdBQVQsU0FBUyxDQUE0QztRQUM1QixTQUFJLEdBQUosSUFBSSxDQUF5QjtRQUNyRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUV0QyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFJLElBQVksQ0FBQyxPQUFPLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN0RSxZQUFZLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDeEYsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O0FBN0JNLDBDQUFhLEdBQUcsZUFBZSxDQUFDOztZQVAxQyxTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsczdCQUFxRDs7YUFFeEQ7OztZQVJ3QixZQUFZO1lBQzdCLHVCQUF1Qix1QkFpQnRCLE1BQU0sU0FBQyxlQUFlO1lBaEJ2QixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWZ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge0VudHJ5U2VsZWN0b3JEaWFsb2dEYXRhfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2VudHJ5LXNlbGVjdG9yLWRpYWxvZy9lbnRyeS1zZWxlY3Rvci1kaWFsb2ctZGF0YSc7XG5pbXBvcnQge0VudHJ5U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW50cnkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWVudHJ5LXNlbGVjdG9yLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VudHJ5LXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZW50cnktc2VsZWN0b3ItZGlhbG9nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRW50cnlTZWxlY3RvckRpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBzdGF0aWMgQ1VSUkVOVF9FTlRSWSA9ICdjdXJyZW50X2VudHJ5JztcblxuICAgIGVudHJpZXM7XG4gICAgc2VsZWN0ZWRJZDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxFbnRyeVNlbGVjdG9yRGlhbG9nQ29tcG9uZW50PixcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBFbnRyeVNlbGVjdG9yRGlhbG9nRGF0YSxcbiAgICAgICAgcHJpdmF0ZSBlbnRyeVNlcnZpY2U6IEVudHJ5U2VydmljZSxcbiAgICApIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbnRyeVNlcnZpY2UuZ2V0VW5wdWJsaXNoZWRFbnRyaWVzKCkuc3Vic2NyaWJlKChuZXh0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMgPSAobmV4dCBhcyBhbnkpLnJlc3VsdHM7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uTm9DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBvblllc0NsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVudHJ5U2VydmljZS5nZXRVbnB1Ymxpc2hlZEJ5SWQodGhpcy5zZWxlY3RlZElkKS5zdWJzY3JpYmUoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShFbnRyeVNlbGVjdG9yRGlhbG9nQ29tcG9uZW50LkNVUlJFTlRfRU5UUlksIEpTT04uc3RyaW5naWZ5KGVudHJ5KSk7XG4gICAgICAgICAgICBlbnRyeS5zb3J0KCk7XG4gICAgICAgICAgICB0aGlzLmVudHJ5U2VydmljZS5jdXJyZW50bHlFZGl0ZWRFbnRyeS5uZXh0KGVudHJ5KTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
|
-
import { ContentType } from '../../data/content-type';
|
|
4
|
-
export class EntrySummaryComponent {
|
|
5
|
-
constructor(router) {
|
|
6
|
-
this.router = router;
|
|
7
|
-
this.ContentType = ContentType;
|
|
8
|
-
}
|
|
9
|
-
ngOnInit() {
|
|
10
|
-
}
|
|
11
|
-
routeTo(entry) {
|
|
12
|
-
this.router.navigate(['/', 'blog', entry.slug]).then(() => {
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
EntrySummaryComponent.decorators = [
|
|
17
|
-
{ type: Component, args: [{
|
|
18
|
-
selector: 'app-entry-summary',
|
|
19
|
-
template: "\n<div class=\"entry section restrict\">\n <h2>{{entry?.title}}</h2>\n <!-- <a href=\"javascript:void(0)\" (click)=\"edit(entry)\"><h6>[Edit]</h6></a>-->\n <h3>Posted {{entry?.create_date.toString() | timeAgo}} on {{entry?.create_date?.getMonth() + 1}}/{{entry?.create_date?.getDate()}}/{{entry?.create_date?.getFullYear()}}</h3>\n <h5 *ngIf=\"entry.showEditInformation()\">Article was last edited {{entry?.edit_date.toString() | timeAgo}}</h5>\n <br>\n\n <ng-container *ngFor=\"let section of entry?.sections.slice(0, 1)\">\n <h4>{{section?.subheading}}</h4>\n <ng-container *ngFor=\"let content of section?.contents.slice(0, 1)\">\n <ng-container [ngSwitch]=\"content.type\">\n <ng-container *ngSwitchCase=\"ContentType.CODE\">\n <pre><code class=\"language-ts\">{{content?.value}}</code></pre>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.URL\">\n <a [href]=\"content?.value\" target=\"_blank\">{{content.title}}</a>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.IMAGE\">\n <div class=\"restrict\">\n <div class=\"image\">\n <img [src]=\"content?.value\"/>\n </div>\n <div class=\"description\" *ngIf=\"content?.description\">{{content?.description}}</div>\n <div class=\"source\" *ngIf=\"content?.source\">\n <a [href]=\"content?.source\" [target]=\"'_blank'\">Source: {{content?.source}}</a>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.MEDIA\">\n <div class=\"restrict\">\n <div class=\"image\">\n <img [src]=\"content?.value\"/>\n </div>\n <div class=\"description\" *ngIf=\"content?.description\">{{content?.description}}</div>\n <div class=\"source\" *ngIf=\"content?.source\">\n <a [href]=\"content?.source\" [target]=\"'_blank'\">Source: {{content?.source}}</a>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.HTML\">\n <app-static-html\n [value]=\"content?.value\"\n >\n </app-static-html>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <p>{{content?.value}}</p>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <a href=\"javascript:void(0);\" (click)=\"routeTo(entry)\">Read more...</a>\n</div>\n",
|
|
20
|
-
styles: [".entry{border-bottom:1px solid rgba(0,0,0,.12);padding:20px}"]
|
|
21
|
-
},] }
|
|
22
|
-
];
|
|
23
|
-
EntrySummaryComponent.ctorParameters = () => [
|
|
24
|
-
{ type: Router }
|
|
25
|
-
];
|
|
26
|
-
EntrySummaryComponent.propDecorators = {
|
|
27
|
-
entry: [{ type: Input }]
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktc3VtbWFyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2JqYW1lc29uL0RldmVsb3BtZW50L2Jsb2cvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9lbnRyeS1zdW1tYXJ5L2VudHJ5LXN1bW1hcnkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFPcEQsTUFBTSxPQUFPLHFCQUFxQjtJQU85QixZQUNZLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBTjFCLGdCQUFXLEdBQUcsV0FBVyxDQUFDO0lBUTFCLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFLO1FBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFFMUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7WUF4QkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLGc1RkFBNkM7O2FBRWhEOzs7WUFSTyxNQUFNOzs7b0JBYVQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtFbnRyeX0gZnJvbSAnLi4vLi4vZGF0YS9lbnRyeSc7XG5pbXBvcnQge0NvbnRlbnRUeXBlfSBmcm9tICcuLi8uLi9kYXRhL2NvbnRlbnQtdHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWVudHJ5LXN1bW1hcnknLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lbnRyeS1zdW1tYXJ5LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lbnRyeS1zdW1tYXJ5LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRW50cnlTdW1tYXJ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIENvbnRlbnRUeXBlID0gQ29udGVudFR5cGU7XG5cbiAgICBASW5wdXQoKSBlbnRyeTogRW50cnk7XG5cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIH1cblxuICAgIHJvdXRlVG8oZW50cnkpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJywgJ2Jsb2cnLCBlbnRyeS5zbHVnXSkudGhlbigoKSA9PiB7XG5cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { Entry } from '../../data/entry';
|
|
3
|
-
import { EntryService } from '../../services/entry.service';
|
|
4
|
-
export class JsonRendererComponent {
|
|
5
|
-
constructor(entryService) {
|
|
6
|
-
this.entryService = entryService;
|
|
7
|
-
this.JSON = JSON;
|
|
8
|
-
this.entry = new Entry();
|
|
9
|
-
}
|
|
10
|
-
ngOnInit() {
|
|
11
|
-
this.entryService.currentlyEditedEntry.subscribe((entry) => {
|
|
12
|
-
this.entry = entry;
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
JsonRendererComponent.decorators = [
|
|
17
|
-
{ type: Component, args: [{
|
|
18
|
-
selector: 'app-json-renderer',
|
|
19
|
-
template: "<div class=\"section json-render json\">\n <app-entry-renderer [editMode]=\"true\" [entry]=\"entry\"></app-entry-renderer>\n <pre>{{JSON.stringify(entry)}}</pre>\n</div>\n",
|
|
20
|
-
styles: [".json pre{white-space:pre-wrap;word-wrap:anywhere}.json-render{padding:0 20px}"]
|
|
21
|
-
},] }
|
|
22
|
-
];
|
|
23
|
-
JsonRendererComponent.ctorParameters = () => [
|
|
24
|
-
{ type: EntryService }
|
|
25
|
-
];
|
|
26
|
-
JsonRendererComponent.propDecorators = {
|
|
27
|
-
entry: [{ type: Input }]
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2JqYW1lc29uL0RldmVsb3BtZW50L2Jsb2cvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9qc29uLXJlbmRlcmVyL2pzb24tcmVuZGVyZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFPMUQsTUFBTSxPQUFPLHFCQUFxQjtJQUs5QixZQUNZLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBSnRDLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDSCxVQUFLLEdBQVUsSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUtwQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7WUFuQkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLDZMQUE2Qzs7YUFFaEQ7OztZQU5PLFlBQVk7OztvQkFVZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFbnRyeX0gZnJvbSAnLi4vLi4vZGF0YS9lbnRyeSc7XG5pbXBvcnQge0VudHJ5U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW50cnkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWpzb24tcmVuZGVyZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9qc29uLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9qc29uLXJlbmRlcmVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSnNvblJlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIEpTT04gPSBKU09OO1xuICAgIEBJbnB1dCgpIGVudHJ5OiBFbnRyeSA9IG5ldyBFbnRyeSgpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZW50cnlTZXJ2aWNlOiBFbnRyeVNlcnZpY2UsXG4gICAgKSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZW50cnlTZXJ2aWNlLmN1cnJlbnRseUVkaXRlZEVudHJ5LnN1YnNjcmliZSgoZW50cnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW50cnkgPSBlbnRyeTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
|
-
import { map } from 'lodash';
|
|
4
|
-
import { Entry } from '../../data/entry';
|
|
5
|
-
import { EntryService } from '../../services/entry.service';
|
|
6
|
-
export class LandingPageComponent {
|
|
7
|
-
constructor(router, entryService) {
|
|
8
|
-
this.router = router;
|
|
9
|
-
this.entryService = entryService;
|
|
10
|
-
this.JSON = JSON;
|
|
11
|
-
}
|
|
12
|
-
ngOnInit() {
|
|
13
|
-
this.entryService.get().subscribe((response) => {
|
|
14
|
-
this.entries = map(response.results.slice(0, 3), (result) => {
|
|
15
|
-
return { id: result.id, entry: new Entry(result) };
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
ngOnDestroy() {
|
|
20
|
-
if (this.sourceSub) {
|
|
21
|
-
this.sourceSub.unsubscribe();
|
|
22
|
-
this.sourceSub = null;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
LandingPageComponent.decorators = [
|
|
27
|
-
{ type: Component, args: [{
|
|
28
|
-
selector: 'app-landing-page',
|
|
29
|
-
template: "<div class=\"landing-page\">\n <ng-container *ngFor=\"let entry of entries\">\n <app-entry-summary [entry]=\"entry.entry\"></app-entry-summary>\n </ng-container>\n</div>\n",
|
|
30
|
-
styles: [".landing-page{max-height:calc(100vh - 100px);min-height:calc(100vh - 100px)}@media screen and (max-height:560px){.landing-page{max-height:100vh}}"]
|
|
31
|
-
},] }
|
|
32
|
-
];
|
|
33
|
-
LandingPageComponent.ctorParameters = () => [
|
|
34
|
-
{ type: Router },
|
|
35
|
-
{ type: EntryService }
|
|
36
|
-
];
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZGluZy1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvYmphbWVzb24vRGV2ZWxvcG1lbnQvYmxvZy9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2xhbmRpbmctcGFnZS9sYW5kaW5nLXBhZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBZ0IsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUUzQixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBTzFELE1BQU0sT0FBTyxvQkFBb0I7SUFRN0IsWUFDWSxNQUFjLEVBQ2QsWUFBMEI7UUFEMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBUnRDLFNBQUksR0FBRyxJQUFJLENBQUM7SUFXWixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUUsUUFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNqRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUM7WUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDekI7SUFDTCxDQUFDOzs7WUFqQ0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLG9NQUE0Qzs7YUFFL0M7OztZQVZzQixNQUFNO1lBSXJCLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRW5kLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge21hcH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHtFbnRyeX0gZnJvbSAnLi4vLi4vZGF0YS9lbnRyeSc7XG5pbXBvcnQge0VudHJ5U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW50cnkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWxhbmRpbmctcGFnZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xhbmRpbmctcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbGFuZGluZy1wYWdlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTGFuZGluZ1BhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBKU09OID0gSlNPTjtcblxuICAgIGVudHJpZXM7XG4gICAgc291cmNlO1xuICAgIHNvdXJjZVN1YjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIGVudHJ5U2VydmljZTogRW50cnlTZXJ2aWNlLFxuICAgICkge1xuXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZW50cnlTZXJ2aWNlLmdldCgpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcyA9IG1hcCgocmVzcG9uc2UgYXMgYW55KS5yZXN1bHRzLnNsaWNlKDAsIDMpLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWQ6IHJlc3VsdC5pZCwgZW50cnk6IG5ldyBFbnRyeShyZXN1bHQpfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc291cmNlU3ViKSB7XG4gICAgICAgICAgICB0aGlzLnNvdXJjZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5zb3VyY2VTdWIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { Component, HostListener } from '@angular/core';
|
|
2
|
-
import { NavigationEnd, Router } from '@angular/router';
|
|
3
|
-
import { Subject, Subscription } from 'rxjs';
|
|
4
|
-
import { debounceTime } from 'rxjs/operators';
|
|
5
|
-
export class MainComponent {
|
|
6
|
-
constructor(router) {
|
|
7
|
-
this.router = router;
|
|
8
|
-
this.loaded = true;
|
|
9
|
-
this.subs = new Subscription();
|
|
10
|
-
this.resizeSubject = new Subject();
|
|
11
|
-
}
|
|
12
|
-
ngOnInit() {
|
|
13
|
-
this.subs.add(this.router.events.subscribe((e) => {
|
|
14
|
-
if (e instanceof NavigationEnd) {
|
|
15
|
-
if (e.urlAfterRedirects.includes('create')) {
|
|
16
|
-
this.showLeftCol = true;
|
|
17
|
-
this.showRightCol = true;
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
this.showLeftCol = true;
|
|
21
|
-
this.showRightCol = false;
|
|
22
|
-
this.innerWidth = window.innerWidth;
|
|
23
|
-
this.collapseLeftColIfTooNarrow();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}));
|
|
27
|
-
this.subs.add(this.resizeSubject.pipe(debounceTime(100)).subscribe((width) => {
|
|
28
|
-
this.innerWidth = width;
|
|
29
|
-
this.collapseLeftColIfTooNarrow();
|
|
30
|
-
}));
|
|
31
|
-
}
|
|
32
|
-
collapseLeftColIfTooNarrow() {
|
|
33
|
-
this.showLeftCol = this.innerWidth >= 800;
|
|
34
|
-
}
|
|
35
|
-
onResize(event) {
|
|
36
|
-
this.resizeSubject.next(window.innerWidth);
|
|
37
|
-
}
|
|
38
|
-
ngOnDestroy() {
|
|
39
|
-
this.subs.unsubscribe();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
MainComponent.decorators = [
|
|
43
|
-
{ type: Component, args: [{
|
|
44
|
-
selector: 'lib-main',
|
|
45
|
-
template: "<ng-container *ngIf=\"loaded\">\n <div class=\"container\">\n <div class=\"body\">\n <div class=\"container-row\">\n <mat-sidenav-container [autosize]=\"true\">\n <mat-sidenav [(opened)]=\"showLeftCol\" #leftcol opened mode=\"side\" class=\"left no-scrollbar\">\n <router-outlet name=\"left-col\"></router-outlet>\n <button mat-mini-fab color=\"primary\" class=\"fade left-toggle\" *ngIf=\"showLeftCol\" (click)=\"leftcol.toggle()\"> << </button>\n </mat-sidenav>\n <mat-sidenav [(opened)]=\"showRightCol\" #rightcol mode=\"side\" position=\"end\" class=\"right\">\n <button mat-mini-fab color=\"primary\" class=\"fade right-toggle\" *ngIf=\"showRightCol\" (click)=\"rightcol.toggle()\"> >> </button>\n <router-outlet name=\"right-col\"></router-outlet>\n </mat-sidenav>\n <div class=\"middle\">\n <button mat-mini-fab color=\"primary\" class=\"fade left-toggle\" *ngIf=\"!showLeftCol\" (click)=\"leftcol.toggle()\"> >> </button>\n <button mat-mini-fab color=\"primary\" class=\"fade right-toggle\" *ngIf=\"!showRightCol\" (click)=\"rightcol.toggle()\"> << </button>\n <router-outlet></router-outlet>\n </div>\n </mat-sidenav-container>\n </div>\n </div>\n </div>\n</ng-container>\n",
|
|
46
|
-
styles: ["a{text-decoration:none}.body{flex-grow:1;max-height:calc(100vh - 100px);overflow:scroll}@media screen and (max-height:560px){.body{max-height:100vh}}.left,.right{max-width:33vw;min-width:400px}.left-toggle{left:5px}.left-toggle,.right-toggle{position:fixed;top:50%;z-index:100}.right-toggle{right:5px}a{margin-right:10px;&:not(:last-child):after{content:\"|\";margin-left:10px}}"]
|
|
47
|
-
},] }
|
|
48
|
-
];
|
|
49
|
-
MainComponent.ctorParameters = () => [
|
|
50
|
-
{ type: Router }
|
|
51
|
-
];
|
|
52
|
-
MainComponent.propDecorators = {
|
|
53
|
-
onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }]
|
|
54
|
-
};
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2JqYW1lc29uL0RldmVsb3BtZW50L2Jsb2cvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9tYWluL21haW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUMsYUFBYSxFQUFFLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQU81QyxNQUFNLE9BQU8sYUFBYTtJQVd0QixZQUNZLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBVjFCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxTQUFJLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFNeEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBTXRDLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFlBQVksYUFBYSxFQUFFO2dCQUM1QixJQUFJLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO29CQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztpQkFDNUI7cUJBQU07b0JBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO29CQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7b0JBQ3BDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO2lCQUNyQzthQUNKO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNqQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQ3BCLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRCwwQkFBMEI7UUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQztJQUM5QyxDQUFDO0lBR0QsUUFBUSxDQUFDLEtBQUs7UUFDVixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVCLENBQUM7OztZQXhESixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLHNnREFBb0M7O2FBRXJDOzs7WUFSc0IsTUFBTTs7O3VCQXFEeEIsWUFBWSxTQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRW5kLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1N1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItbWFpbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYWluLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFpbi5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTWFpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIGxvYWRlZCA9IHRydWU7XG4gICAgc3ViczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHNob3dSaWdodENvbDogYm9vbGVhbjtcbiAgICBzaG93TGVmdENvbDogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBpbm5lcldpZHRoOiBhbnk7XG5cbiAgICByZXNpemVTdWJqZWN0ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgKSB7XG5cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzLmFkZCh0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS51cmxBZnRlclJlZGlyZWN0cy5pbmNsdWRlcygnY3JlYXRlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93TGVmdENvbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1JpZ2h0Q29sID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dMZWZ0Q29sID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93UmlnaHRDb2wgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbm5lcldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2VMZWZ0Q29sSWZUb29OYXJyb3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLnN1YnMuYWRkKHRoaXMucmVzaXplU3ViamVjdC5waXBlKFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDEwMClcbiAgICAgICAgKS5zdWJzY3JpYmUoKHdpZHRoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlubmVyV2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgIHRoaXMuY29sbGFwc2VMZWZ0Q29sSWZUb29OYXJyb3coKTtcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNvbGxhcHNlTGVmdENvbElmVG9vTmFycm93KCkge1xuICAgICAgICB0aGlzLnNob3dMZWZ0Q29sID0gdGhpcy5pbm5lcldpZHRoID49IDgwMDtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgICBvblJlc2l6ZShldmVudCkge1xuICAgICAgICB0aGlzLnJlc2l6ZVN1YmplY3QubmV4dCh3aW5kb3cuaW5uZXJXaWR0aCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vicy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxufVxuIl19
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { Component, HostListener, Input } from '@angular/core';
|
|
2
|
-
import { FileUploader } from 'ng2-file-upload';
|
|
3
|
-
import { MatDialogRef } from '@angular/material/dialog';
|
|
4
|
-
import { UploadService } from '../../services/upload.service';
|
|
5
|
-
export class MediaUploadModalComponent {
|
|
6
|
-
constructor(dialogRef, uploadService) {
|
|
7
|
-
this.dialogRef = dialogRef;
|
|
8
|
-
this.uploadService = uploadService;
|
|
9
|
-
this.allowedMimeTypes = [
|
|
10
|
-
'image/jpeg',
|
|
11
|
-
'image/gif',
|
|
12
|
-
'image/png',
|
|
13
|
-
'image/jpg',
|
|
14
|
-
'video/mp4',
|
|
15
|
-
'video/webm',
|
|
16
|
-
'video/ogg',
|
|
17
|
-
];
|
|
18
|
-
this.uploadUrlKey = 'path_to_file';
|
|
19
|
-
this.uploading = false;
|
|
20
|
-
}
|
|
21
|
-
static getCookie(name) {
|
|
22
|
-
const ca = document.cookie.split(';');
|
|
23
|
-
const caLen = ca.length;
|
|
24
|
-
const cookieName = `${name}=`;
|
|
25
|
-
let c;
|
|
26
|
-
for (let i = 0; i < caLen; i += 1) {
|
|
27
|
-
c = ca[i].replace(/^\s+/g, '');
|
|
28
|
-
if (c.indexOf(cookieName) === 0) {
|
|
29
|
-
return c.substring(cookieName.length, c.length);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return '';
|
|
33
|
-
}
|
|
34
|
-
pollForCompletion() {
|
|
35
|
-
this.uploadService.get(this.uploadId).subscribe((response) => {
|
|
36
|
-
if (response.processed) {
|
|
37
|
-
this.imgLink = response[this.uploadUrlKey];
|
|
38
|
-
this.mimeType = response.mime_type;
|
|
39
|
-
clearInterval(this.poller);
|
|
40
|
-
this.poller = null;
|
|
41
|
-
this.uploading = false;
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
ngOnInit() {
|
|
46
|
-
this.uploader = new FileUploader({
|
|
47
|
-
url: UploadService.upload_endpoint,
|
|
48
|
-
itemAlias: 'file',
|
|
49
|
-
authToken: '',
|
|
50
|
-
headers: [
|
|
51
|
-
{ name: 'X-CSRFToken', value: MediaUploadModalComponent.getCookie('csrftoken') },
|
|
52
|
-
],
|
|
53
|
-
additionalParameter: { csrf_token: MediaUploadModalComponent.getCookie('csrftoken') },
|
|
54
|
-
removeAfterUpload: true,
|
|
55
|
-
allowedMimeType: this.allowedMimeTypes,
|
|
56
|
-
});
|
|
57
|
-
this.uploader.onCompleteItem = (item, response) => {
|
|
58
|
-
const responseObj = JSON.parse(response);
|
|
59
|
-
this.uploadId = responseObj.id;
|
|
60
|
-
this.poller = setInterval(this.pollForCompletion.bind(this), 2000);
|
|
61
|
-
};
|
|
62
|
-
this.uploader.onWhenAddingFileFailed = (item, filter, options) => {
|
|
63
|
-
this.error = 'This file is not a supported mimetype.';
|
|
64
|
-
this.uploading = false;
|
|
65
|
-
};
|
|
66
|
-
if (this.file) {
|
|
67
|
-
this.uploader.addToQueue([this.file]);
|
|
68
|
-
this.uploader.uploadAll();
|
|
69
|
-
this.uploading = true;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
onFileSelected(e) {
|
|
73
|
-
this.uploader.uploadAll();
|
|
74
|
-
this.uploading = true;
|
|
75
|
-
}
|
|
76
|
-
buildHost(url) {
|
|
77
|
-
return location.protocol + '//' + location.hostname + (location.port ? ':' + location.port : '') + url;
|
|
78
|
-
}
|
|
79
|
-
close() {
|
|
80
|
-
this.dialogRef.close();
|
|
81
|
-
}
|
|
82
|
-
ngOnDestroy() {
|
|
83
|
-
if (this.socketSub) {
|
|
84
|
-
this.socketSub.complete();
|
|
85
|
-
this.socketSub = null;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
blobToFile(theBlob, fileName) {
|
|
89
|
-
// A Blob() is almost a File() - it's just missing the two properties below which we will add
|
|
90
|
-
theBlob.lastModifiedDate = new Date();
|
|
91
|
-
theBlob.name = fileName;
|
|
92
|
-
return theBlob;
|
|
93
|
-
}
|
|
94
|
-
onPaste(e) {
|
|
95
|
-
if (e instanceof ClipboardEvent) {
|
|
96
|
-
const files = e.clipboardData.files;
|
|
97
|
-
if (files) {
|
|
98
|
-
if (files.length < 1) {
|
|
99
|
-
// const items = e.clipboardData.items;
|
|
100
|
-
// for(let i = 0; i < items.length; i++) {
|
|
101
|
-
// const item = items[i];
|
|
102
|
-
// item.getAsString((text) => {
|
|
103
|
-
// try {
|
|
104
|
-
// const url = new URL(text);
|
|
105
|
-
// if(url) {
|
|
106
|
-
// fetch(text)
|
|
107
|
-
// .then(res => res.blob()) // Gets the response and returns it as a blob
|
|
108
|
-
// .then(blob => {
|
|
109
|
-
// const file = this.blobToFile(blob, 'web-created')
|
|
110
|
-
// this.uploader.addToQueue([file])
|
|
111
|
-
// this.uploader.uploadAll();
|
|
112
|
-
// this.uploading = true;
|
|
113
|
-
// });
|
|
114
|
-
// }
|
|
115
|
-
// } catch(e) {
|
|
116
|
-
//
|
|
117
|
-
// }
|
|
118
|
-
// });
|
|
119
|
-
// }
|
|
120
|
-
}
|
|
121
|
-
else if (files.length > 1) {
|
|
122
|
-
console.log('Multiple files detected');
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
for (let i = 0; i < files.length; i++) {
|
|
126
|
-
this.uploader.addToQueue([files[i]]);
|
|
127
|
-
}
|
|
128
|
-
this.uploader.uploadAll();
|
|
129
|
-
this.uploading = true;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
console.log('Stuff not working');
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
MediaUploadModalComponent.decorators = [
|
|
139
|
-
{ type: Component, args: [{
|
|
140
|
-
selector: 'app-media-upload-modal',
|
|
141
|
-
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",
|
|
142
|
-
styles: [""]
|
|
143
|
-
},] }
|
|
144
|
-
];
|
|
145
|
-
MediaUploadModalComponent.ctorParameters = () => [
|
|
146
|
-
{ type: MatDialogRef },
|
|
147
|
-
{ type: UploadService }
|
|
148
|
-
];
|
|
149
|
-
MediaUploadModalComponent.propDecorators = {
|
|
150
|
-
allowedMimeTypes: [{ type: Input }],
|
|
151
|
-
uploadUrlKey: [{ type: Input }],
|
|
152
|
-
file: [{ type: Input }],
|
|
153
|
-
onPaste: [{ type: HostListener, args: ['document:paste', ['$event'],] }]
|
|
154
|
-
};
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdXBsb2FkLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvYmphbWVzb24vRGV2ZWxvcG1lbnQvYmxvZy9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL21lZGlhLXVwbG9hZC1tb2RhbC9tZWRpYS11cGxvYWQtbW9kYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUd0RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFPNUQsTUFBTSxPQUFPLHlCQUF5QjtJQXdDbEMsWUFDVyxTQUFrRCxFQUNqRCxhQUE0QjtRQUQ3QixjQUFTLEdBQVQsU0FBUyxDQUF5QztRQUNqRCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXhDL0IscUJBQWdCLEdBQUc7WUFDaEIsWUFBWTtZQUNaLFdBQVc7WUFDWCxXQUFXO1lBQ1gsV0FBVztZQUNYLFdBQVc7WUFDWCxZQUFZO1lBQ1osV0FBVztTQUN0QixDQUFDO1FBRU8saUJBQVksR0FBRyxjQUFjLENBQUM7UUFRdkMsY0FBUyxHQUFHLEtBQUssQ0FBQztJQXdCbEIsQ0FBQztJQW5CRCxNQUFNLENBQUMsU0FBUyxDQUFDLElBQVk7UUFDekIsTUFBTSxFQUFFLEdBQWtCLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDaEMsTUFBTSxVQUFVLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUM5QixJQUFJLENBQVMsQ0FBQztRQUVkLEtBQUssSUFB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REFBcUQ7b0JBQ3JELGlEQUFpRDtvQkFDakQsMEJBQTBCO29CQUMxQixnQkFBZ0I7b0JBQ2hCLHVCQUF1QjtvQkFDdkIsRUFBRTtvQkFDRixZQUFZO29CQUNaLFVBQVU7b0JBQ1YsSUFBSTtpQkFDUDtxQkFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7aUJBQzFDO3FCQUFNO29CQUNILEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3hDO29CQUNELElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUN6QjthQUNKO2lCQUFNO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQzthQUNwQztTQUNKO0lBQ0wsQ0FBQzs7O1lBdEtKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyx3a0RBQWtEOzthQUVyRDs7O1lBVE8sWUFBWTtZQUdaLGFBQWE7OzsrQkFTaEIsS0FBSzsyQkFVTCxLQUFLO21CQVNMLEtBQUs7c0JBb0dMLFlBQVksU0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0ZpbGVVcGxvYWRlcn0gZnJvbSAnbmcyLWZpbGUtdXBsb2FkJztcbmltcG9ydCB7TWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQge0RqYW5nb1Jlc3RGcmFtZXdvcmtFbmRwb2ludFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RqYW5nby1yZXN0LWZyYW1ld29yay1lbmRwb2ludC5zZXJ2aWNlJztcbmltcG9ydCB7VXBsb2FkU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXBsb2FkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1tZWRpYS11cGxvYWQtbW9kYWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tZWRpYS11cGxvYWQtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL21lZGlhLXVwbG9hZC1tb2RhbC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTWVkaWFVcGxvYWRNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIGFsbG93ZWRNaW1lVHlwZXMgPSBbXG4gICAgICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLFxuICAgICAgICAgICAgICAgICdpbWFnZS9naWYnLFxuICAgICAgICAgICAgICAgICdpbWFnZS9wbmcnLFxuICAgICAgICAgICAgICAgICdpbWFnZS9qcGcnLFxuICAgICAgICAgICAgICAgICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgICAgICd2aWRlby93ZWJtJyxcbiAgICAgICAgICAgICAgICAndmlkZW8vb2dnJyxcbiAgICBdO1xuXG4gICAgQElucHV0KCkgdXBsb2FkVXJsS2V5ID0gJ3BhdGhfdG9fZmlsZSc7XG5cbiAgICBpbWdMaW5rO1xuICAgIG1pbWVUeXBlO1xuICAgIHNvY2tldFN1YjtcbiAgICBlcnJvcjtcbiAgICBwdWJsaWMgdXBsb2FkZXI6IEZpbGVVcGxvYWRlcjtcbiAgICB1cGxvYWRJZDtcbiAgICB1cGxvYWRpbmcgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBmaWxlO1xuXG4gICAgcG9sbGVyO1xuXG4gICAgc3RhdGljIGdldENvb2tpZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY2E6IEFycmF5PHN0cmluZz4gPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKTtcbiAgICAgICAgY29uc3QgY2FMZW46IG51bWJlciA9IGNhLmxlbmd0aDtcbiAgICAgICAgY29uc3QgY29va2llTmFtZSA9IGAke25hbWV9PWA7XG4gICAgICAgIGxldCBjOiBzdHJpbmc7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYUxlbjsgaSArPSAxKSB7XG4gICAgICAgICAgICBjID0gY2FbaV0ucmVwbGFjZSgvXlxccysvZywgJycpO1xuICAgICAgICAgICAgaWYgKGMuaW5kZXhPZihjb29raWVOYW1lKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjLnN1YnN0cmluZyhjb29raWVOYW1lLmxlbmd0aCwgYy5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE1lZGlhVXBsb2FkTW9kYWxDb21wb25lbnQ+LFxuICAgICAgICBwcml2YXRlIHVwbG9hZFNlcnZpY2U6IFVwbG9hZFNlcnZpY2VcbiAgICApIHtcbiAgICB9XG5cblxuICAgIHBvbGxGb3JDb21wbGV0aW9uKCkge1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZ2V0KHRoaXMudXBsb2FkSWQpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5wcm9jZXNzZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmltZ0xpbmsgPSByZXNwb25zZVt0aGlzLnVwbG9hZFVybEtleV07XG4gICAgICAgICAgICAgICAgdGhpcy5taW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVfdHlwZTtcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMucG9sbGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvbGxlciA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICAgICAgICB0aGlzLnVwbG9hZGVyID0gbmV3IEZpbGVVcGxvYWRlcihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1cmw6IFVwbG9hZFNlcnZpY2UudXBsb2FkX2VuZHBvaW50LFxuICAgICAgICAgICAgICAgIGl0ZW1BbGlhczogJ2ZpbGUnLFxuICAgICAgICAgICAgICAgIGF1dGhUb2tlbjogJycsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogW1xuICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ1gtQ1NSRlRva2VuJywgdmFsdWU6IE1lZGlhVXBsb2FkTW9kYWxDb21wb25lbnQuZ2V0Q29va2llKCdjc3JmdG9rZW4nKX0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUGFyYW1ldGVyOiB7Y3NyZl90b2tlbjogTWVkaWFVcGxvYWRNb2RhbENvbXBvbmVudC5nZXRDb29raWUoJ2NzcmZ0b2tlbicpfSxcbiAgICAgICAgICAgICAgICByZW1vdmVBZnRlclVwbG9hZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhbGxvd2VkTWltZVR5cGU6IHRoaXMuYWxsb3dlZE1pbWVUeXBlcyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnVwbG9hZGVyLm9uQ29tcGxldGVJdGVtID0gKGl0ZW0sIHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZU9iaiA9IEpTT04ucGFyc2UocmVzcG9uc2UpO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRJZCA9IHJlc3BvbnNlT2JqLmlkO1xuICAgICAgICAgICAgdGhpcy5wb2xsZXIgPSBzZXRJbnRlcnZhbCh0aGlzLnBvbGxGb3JDb21wbGV0aW9uLmJpbmQodGhpcyksIDIwMDApO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMudXBsb2FkZXIub25XaGVuQWRkaW5nRmlsZUZhaWxlZCA9IChpdGVtLCBmaWx0ZXIsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSAnVGhpcyBmaWxlIGlzIG5vdCBhIHN1cHBvcnRlZCBtaW1ldHlwZS4nO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5maWxlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZGVyLmFkZFRvUXVldWUoW3RoaXMuZmlsZV0pO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRlci51cGxvYWRBbGwoKTtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRmlsZVNlbGVjdGVkKGUpIHtcbiAgICAgICAgdGhpcy51cGxvYWRlci51cGxvYWRBbGwoKTtcbiAgICAgICAgdGhpcy51cGxvYWRpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIGJ1aWxkSG9zdCh1cmwpIHtcbiAgICAgICAgcmV0dXJuIGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIGxvY2F0aW9uLmhvc3RuYW1lICsgKGxvY2F0aW9uLnBvcnQgPyAnOicgKyBsb2NhdGlvbi5wb3J0IDogJycpICsgdXJsO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zb2NrZXRTdWIpIHtcbiAgICAgICAgICAgIHRoaXMuc29ja2V0U3ViLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB0aGlzLnNvY2tldFN1YiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBibG9iVG9GaWxlKHRoZUJsb2IsIGZpbGVOYW1lKSB7XG4gICAgICAgIC8vIEEgQmxvYigpIGlzIGFsbW9zdCBhIEZpbGUoKSAtIGl0J3MganVzdCBtaXNzaW5nIHRoZSB0d28gcHJvcGVydGllcyBiZWxvdyB3aGljaCB3ZSB3aWxsIGFkZFxuICAgICAgICB0aGVCbG9iLmxhc3RNb2RpZmllZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGVCbG9iLm5hbWUgPSBmaWxlTmFtZTtcbiAgICAgICAgcmV0dXJuIHRoZUJsb2I7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6cGFzdGUnLCBbJyRldmVudCddKVxuICAgIG9uUGFzdGUoZSkge1xuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIENsaXBib2FyZEV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlcyA9IGUuY2xpcGJvYXJkRGF0YS5maWxlcztcbiAgICAgICAgICAgIGlmIChmaWxlcykge1xuICAgICAgICAgICAgICAgIGlmIChmaWxlcy5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGl0ZW1zID0gZS5jbGlwYm9hcmREYXRhLml0ZW1zO1xuICAgICAgICAgICAgICAgICAgICAvLyBmb3IobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIGl0ZW0uZ2V0QXNTdHJpbmcoKHRleHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRleHQpO1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICBpZih1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIGZldGNoKHRleHQpXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHJlcy5ibG9iKCkpIC8vIEdldHMgdGhlIHJlc3BvbnNlIGFuZCByZXR1cm5zIGl0IGFzIGEgYmxvYlxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIC50aGVuKGJsb2IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5ibG9iVG9GaWxlKGJsb2IsICd3ZWItY3JlYXRlZCcpXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZXIuYWRkVG9RdWV1ZShbZmlsZV0pXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZXIudXBsb2FkQWxsKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdNdWx0aXBsZSBmaWxlcyBkZXRlY3RlZCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZXIuYWRkVG9RdWV1ZShbZmlsZXNbaV1dKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVyLnVwbG9hZEFsbCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU3R1ZmYgbm90IHdvcmtpbmcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { Entry } from '../../data/entry';
|
|
3
|
-
import { EntryService } from '../../services/entry.service';
|
|
4
|
-
export class OutlineViewComponent {
|
|
5
|
-
constructor(entryService) {
|
|
6
|
-
this.entryService = entryService;
|
|
7
|
-
this.entry = new Entry();
|
|
8
|
-
this.Math = Math;
|
|
9
|
-
}
|
|
10
|
-
ngOnInit() {
|
|
11
|
-
this.entryService.currentlyEditedEntry.subscribe((entry) => {
|
|
12
|
-
this.entry = entry;
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
sectionDrop(e) {
|
|
16
|
-
const entry = this.entry;
|
|
17
|
-
const diff = e.currentIndex - e.previousIndex;
|
|
18
|
-
entry.sections[e.previousIndex].order = e.currentIndex * 10 + (diff > 0 ? 1 : -1);
|
|
19
|
-
entry.sort();
|
|
20
|
-
this.entryService.currentlyEditedEntry.next(this.entry);
|
|
21
|
-
}
|
|
22
|
-
contentDrop(e, section) {
|
|
23
|
-
const entry = this.entry;
|
|
24
|
-
const diff = e.currentIndex - e.previousIndex;
|
|
25
|
-
section.contents[e.previousIndex].order = e.currentIndex * 10 + (diff > 0 ? 1 : -1);
|
|
26
|
-
entry.sort();
|
|
27
|
-
this.entryService.currentlyEditedEntry.next(this.entry);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
OutlineViewComponent.decorators = [
|
|
31
|
-
{ type: Component, args: [{
|
|
32
|
-
selector: 'app-outline-view',
|
|
33
|
-
template: "<div 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",
|
|
34
|
-
styles: [".outline{padding:0 20px}.content{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card,.content-card{cursor:pointer;margin:4px}.content-card:not(:last-child){border-bottom:1px dotted #aaa}.custom-placeholder{min-height:60px}.content-placeholder,.custom-placeholder{background:#ccc;border:3px dotted #999;transition:transform .25s cubic-bezier(0,0,.2,1)}.content-placeholder{min-height:30px}"]
|
|
35
|
-
},] }
|
|
36
|
-
];
|
|
37
|
-
OutlineViewComponent.ctorParameters = () => [
|
|
38
|
-
{ type: EntryService }
|
|
39
|
-
];
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGluZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvYmphbWVzb24vRGV2ZWxvcG1lbnQvYmxvZy9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL291dGxpbmUtdmlldy9vdXRsaW5lLXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFPMUQsTUFBTSxPQUFPLG9CQUFvQjtJQUs3QixZQUNZLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBSnRDLFVBQUssR0FBVSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzNCLFNBQUksR0FBRyxJQUFJLENBQUM7SUFLWixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVyxDQUFDLENBQUM7UUFDVCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUM5QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFlBQVksR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEYsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxXQUFXLENBQUMsQ0FBQyxFQUFFLE9BQU87UUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN6QixNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDOUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxZQUFZLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDOzs7WUFuQ0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLDQ3QkFBNEM7O2FBRS9DOzs7WUFOTyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0VudHJ5fSBmcm9tICcuLi8uLi9kYXRhL2VudHJ5JztcbmltcG9ydCB7RW50cnlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnRyeS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtb3V0bGluZS12aWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vb3V0bGluZS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9vdXRsaW5lLXZpZXcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBPdXRsaW5lVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBlbnRyeTogRW50cnkgPSBuZXcgRW50cnkoKTtcbiAgICBNYXRoID0gTWF0aDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVudHJ5U2VydmljZTogRW50cnlTZXJ2aWNlXG4gICAgKSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZW50cnlTZXJ2aWNlLmN1cnJlbnRseUVkaXRlZEVudHJ5LnN1YnNjcmliZSgoZW50cnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW50cnkgPSBlbnRyeTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2VjdGlvbkRyb3AoZSkge1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cnk7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBlLmN1cnJlbnRJbmRleCAtIGUucHJldmlvdXNJbmRleDtcbiAgICAgICAgZW50cnkuc2VjdGlvbnNbZS5wcmV2aW91c0luZGV4XS5vcmRlciA9IGUuY3VycmVudEluZGV4ICogMTAgKyAoZGlmZiA+IDAgPyAxIDogLTEpO1xuICAgICAgICBlbnRyeS5zb3J0KCk7XG4gICAgICAgIHRoaXMuZW50cnlTZXJ2aWNlLmN1cnJlbnRseUVkaXRlZEVudHJ5Lm5leHQodGhpcy5lbnRyeSk7XG4gICAgfVxuXG4gICAgY29udGVudERyb3AoZSwgc2VjdGlvbikge1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cnk7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBlLmN1cnJlbnRJbmRleCAtIGUucHJldmlvdXNJbmRleDtcbiAgICAgICAgc2VjdGlvbi5jb250ZW50c1tlLnByZXZpb3VzSW5kZXhdLm9yZGVyID0gZS5jdXJyZW50SW5kZXggKiAxMCArIChkaWZmID4gMCA/IDEgOiAtMSk7XG4gICAgICAgIGVudHJ5LnNvcnQoKTtcbiAgICAgICAgdGhpcy5lbnRyeVNlcnZpY2UuY3VycmVudGx5RWRpdGVkRW50cnkubmV4dCh0aGlzLmVudHJ5KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export class SchedulePublishDialogData {
|
|
2
|
-
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUtcHVibGlzaC1kaWFsb2ctZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvYmphbWVzb24vRGV2ZWxvcG1lbnQvYmxvZy9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3NjaGVkdWxlLXB1Ymxpc2gtZGlhbG9nL3NjaGVkdWxlLXB1Ymxpc2gtZGlhbG9nLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHlCQUF5QjtDQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBTY2hlZHVsZVB1Ymxpc2hEaWFsb2dEYXRhIHtcbn1cbiJdfQ==
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Component, Inject } from '@angular/core';
|
|
2
|
-
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
-
import { SchedulePublishDialogData } from './schedule-publish-dialog-data';
|
|
4
|
-
export class SchedulePublishDialogComponent {
|
|
5
|
-
constructor(dialogRef, data) {
|
|
6
|
-
this.dialogRef = dialogRef;
|
|
7
|
-
this.data = data;
|
|
8
|
-
}
|
|
9
|
-
ngOnInit() {
|
|
10
|
-
}
|
|
11
|
-
onNoClick() {
|
|
12
|
-
}
|
|
13
|
-
onYesClick() {
|
|
14
|
-
this.dialogRef.close('test');
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
SchedulePublishDialogComponent.decorators = [
|
|
18
|
-
{ type: Component, args: [{
|
|
19
|
-
selector: 'lib-schedule-publish-dialog',
|
|
20
|
-
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",
|
|
21
|
-
styles: [""]
|
|
22
|
-
},] }
|
|
23
|
-
];
|
|
24
|
-
SchedulePublishDialogComponent.ctorParameters = () => [
|
|
25
|
-
{ type: MatDialogRef },
|
|
26
|
-
{ type: SchedulePublishDialogData, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
|
|
27
|
-
];
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUtcHVibGlzaC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9iamFtZXNvbi9EZXZlbG9wbWVudC9ibG9nL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvc2NoZWR1bGUtcHVibGlzaC1kaWFsb2cvc2NoZWR1bGUtcHVibGlzaC1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBQyxZQUFZLEVBQUUsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFPekUsTUFBTSxPQUFPLDhCQUE4QjtJQUV2QyxZQUNXLFNBQXVELEVBQzlCLElBQStCO1FBRHhELGNBQVMsR0FBVCxTQUFTLENBQThDO1FBQzlCLFNBQUksR0FBSixJQUFJLENBQTJCO0lBQy9ELENBQUM7SUFFTCxRQUFRO0lBQ1IsQ0FBQztJQUVELFNBQVM7SUFDVCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OztZQXBCSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLDZCQUE2QjtnQkFDdkMsaThCQUF1RDs7YUFFMUQ7OztZQVBPLFlBQVk7WUFDWix5QkFBeUIsdUJBV3hCLE1BQU0sU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7U2NoZWR1bGVQdWJsaXNoRGlhbG9nRGF0YX0gZnJvbSAnLi9zY2hlZHVsZS1wdWJsaXNoLWRpYWxvZy1kYXRhJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItc2NoZWR1bGUtcHVibGlzaC1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zY2hlZHVsZS1wdWJsaXNoLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2NoZWR1bGUtcHVibGlzaC1kaWFsb2cuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNjaGVkdWxlUHVibGlzaERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFNjaGVkdWxlUHVibGlzaERpYWxvZ0NvbXBvbmVudD4sXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogU2NoZWR1bGVQdWJsaXNoRGlhbG9nRGF0YSxcbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgfVxuXG4gICAgb25Ob0NsaWNrKCk6IHZvaWQge1xuICAgIH1cblxuICAgIG9uWWVzQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCd0ZXN0Jyk7XG4gICAgfVxufVxuIl19
|