@thecodeblogs/blog 0.20.1 → 0.20.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thecodeblogs-blog.mjs","sources":["../../../projects/core/src/lib/data/guid.ts","../../../projects/core/src/lib/data/base.ts","../../../projects/core/src/lib/data/content-type.ts","../../../projects/core/src/lib/data/content.ts","../../../projects/core/src/lib/data/entry.ts","../../../projects/core/src/lib/data/list-response.ts","../../../projects/core/src/lib/data/section.ts","../../../projects/core/src/lib/data/core-event.ts","../../../projects/core/src/lib/data/core-event-type.enum.ts","../../../projects/core/src/lib/data/visitor-profile.ts","../../../projects/core/src/lib/services/comment.service.ts","../../../projects/core/src/lib/services/django-rest-framework-endpoint.service.ts","../../../projects/core/src/lib/services/entry.service.ts","../../../projects/core/src/lib/services/identity.service.ts","../../../projects/core/src/lib/services/prism.service.ts","../../../projects/core/src/lib/services/upload.service.ts","../../../projects/core/src/lib/services/upload.ts","../../../projects/core/src/lib/services/analytics/view.service.ts","../../../projects/core/src/lib/services/analytics/interaction.service.ts","../../../projects/core/src/lib/services/view.ts","../../../projects/core/src/lib/services/interaction.ts","../../../projects/core/src/lib/services/visitor-profile.service.ts","../../../projects/core/src/lib/services/static-html.service.ts","../../../projects/core/src/lib/data/tag.ts","../../../projects/core/src/lib/services/tag.service.ts","../../../projects/core/src/lib/services/utility.ts","../../../projects/core/src/lib/components/entry-selector-dialog/entry-selector-dialog-data.ts","../../../projects/core/src/lib/components/entry-selector-dialog/entry-selector-dialog.component.ts","../../../projects/core/src/lib/components/entry-selector-dialog/entry-selector-dialog.component.html","../../../projects/core/src/lib/components/media-upload-modal/media-upload-modal.component.ts","../../../projects/core/src/lib/components/media-upload-modal/media-upload-modal.component.html","../../../projects/core/src/lib/components/entry-creator/entry-creator.component.ts","../../../projects/core/src/lib/components/entry-creator/entry-creator.component.html","../../../projects/core/src/lib/components/static-html/static-html.component.ts","../../../projects/core/src/lib/components/static-html/static-html.component.html","../../../projects/core/src/lib/pipes/TimeAgoPipe.ts","../../../projects/core/src/lib/components/entry-renderer/entry-renderer.component.ts","../../../projects/core/src/lib/components/entry-renderer/entry-renderer.component.html","../../../projects/core/src/lib/components/entry-summary/entry-summary.component.ts","../../../projects/core/src/lib/components/entry-summary/entry-summary.component.html","../../../projects/core/src/lib/components/json-renderer/json-renderer.component.ts","../../../projects/core/src/lib/components/json-renderer/json-renderer.component.html","../../../projects/core/src/lib/components/landing-page/landing-page.component.ts","../../../projects/core/src/lib/components/landing-page/landing-page.component.html","../../../projects/core/src/lib/components/outline-view/outline-view.component.ts","../../../projects/core/src/lib/components/outline-view/outline-view.component.html","../../../projects/core/src/lib/components/side-navigation/side-navigation.component.ts","../../../projects/core/src/lib/components/side-navigation/side-navigation.component.html","../../../projects/core/src/lib/components/main/main.component.ts","../../../projects/core/src/lib/components/main/main.component.html","../../../projects/core/src/lib/components/entry-renderer-wrapper/entry-renderer-wrapper.component.ts","../../../projects/core/src/lib/components/entry-renderer-wrapper/entry-renderer-wrapper.component.html","../../../projects/core/src/lib/pipes/LinkyPipe.ts","../../../projects/core/src/lib/routing/routes.ts","../../../projects/core/src/lib/components/schedule-publish-dialog/schedule-publish-dialog-data.ts","../../../projects/core/src/lib/components/schedule-publish-dialog/schedule-publish-dialog.component.ts","../../../projects/core/src/lib/components/schedule-publish-dialog/schedule-publish-dialog.component.html","../../../projects/core/src/lib/core.module.ts","../../../projects/core/src/public-api.ts","../../../projects/core/src/thecodeblogs-blog.ts"],"sourcesContent":["export class Guid {\n newGuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n // tslint:disable-next-line:no-bitwise\n const r = Math.random() * 16 | 0,\n // tslint:disable-next-line:triple-equals no-bitwise\n v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n}\n","import {Guid} from './guid';\n\nexport class Base {\n id: string;\n\n constructor() {\n this.id = new Guid().newGuid();\n }\n}\n","export enum ContentType {\n TEXT = 'text',\n URL = 'url',\n CODE = 'code',\n IMAGE = 'image',\n MEDIA = 'media',\n HTML = 'html',\n}\n\n","import {Base} from './base';\nimport {ContentType} from './content-type';\n\nexport class Content extends Base {\n static KEY_MIMETYPE = 'mimeType';\n\n order: number;\n type: ContentType | 'text';\n value: string;\n title: string;\n source: string;\n description: string | null;\n additional: Array<{key: string, value: string}>;\n}\n","import {Section} from './section';\nimport {Base} from './base';\nimport {orderBy} from 'lodash';\n\nexport class Entry extends Base {\n __server_generated_properties: any;\n\n title: string;\n slug: string;\n create_date: Date;\n edit_date: Date;\n sections: Section[];\n version: number;\n published: boolean;\n publish_date: Date;\n tags: string[];\n views: number;\n\n should_publish_in_future = false;\n future_publish_date: Date;\n\n _friendly_views: string;\n\n constructor(init?: Partial<Entry>) {\n super();\n Object.assign(this, init);\n if (!this.create_date) {\n this.create_date = new Date();\n } else {\n this.create_date = new Date(this.create_date);\n }\n if (!this.edit_date) {\n this.edit_date = new Date();\n } else {\n this.edit_date = new Date(this.edit_date);\n }\n if (this.publish_date) {\n this.publish_date = new Date(this.publish_date);\n }\n if (this.future_publish_date) {\n this.future_publish_date = new Date(this.future_publish_date);\n }\n if (!this.version) {\n this.version = 1;\n }\n if (!this.tags) {\n this.tags = [];\n }\n if (this.views) {\n if (this.views < 10) {\n this._friendly_views = 'Less than ten';\n }\n else if (10 < this.views && this.views < 100) {\n this._friendly_views = 'Around one hundred';\n }\n else {\n this._friendly_views = this.views.toString();\n }\n }\n if (!this.sections) {\n this.sections = [];\n }\n // For entries that existed before this variable was introduced, the server will return undefined. If this\n // stays undefined, it will violate the null constraints on the DB, so this code checks for both null\n // and undefined and then populates the value accordingly\n if (typeof(this.should_publish_in_future) === 'undefined' || this.should_publish_in_future === null) {\n this.should_publish_in_future = false;\n }\n }\n\n\n sort() {\n this.sections = orderBy(this.sections, ({order}) => Number(order), ['asc']);\n for (let i = 0; i < this.sections.length; i++) {\n this.sections[i].order = i * 10;\n }\n for (const section of this.sections) {\n section.contents = orderBy(section.contents, ({order}) => Number(order), ['asc']);\n for (let i = 0; i < section.contents.length; i++) {\n section.contents[i].order = i * 10;\n }\n }\n }\n\n showEditInformation() {\n // @ts-ignore\n const difference = Math.floor((this.create_date - this.edit_date) / (1000 * 60 * 60 * 24));\n return (difference > 1 || difference < -1);\n }\n\n getProp(prop: string) {\n if (this.__server_generated_properties) {\n return this.__server_generated_properties[prop];\n } else {\n return '';\n }\n }\n}\n","export class ListResponse<T> {\n next: string;\n previous: string;\n results: T[];\n count: number;\n}\n","import {Content} from './content';\nimport {Base} from './base';\n\nexport class Section extends Base {\n subheading: string;\n order: number;\n contents: Content[];\n constructor() {\n super();\n if (!this.order) {\n this.order = -1;\n }\n this.contents = [];\n }\n}\n","import {CoreEventType} from './core-event-type.enum';\n\nexport class CoreEvent<T> {\n type: CoreEventType;\n data: T;\n\n constructor(data: T, type: CoreEventType) {\n this.data = data;\n this.type = type;\n }\n}\n","export enum CoreEventType {\n UPDATE = 'update',\n CREATE = 'create',\n DELETE = 'delete'\n}\n","export class VisitorProfile {\n id: string;\n user: number| any;\n session_uid: string;\n telemetry: any;\n device: string;\n os_version: string;\n name: string;\n family: string;\n version: string;\n major: number;\n minor: number;\n patch: number;\n language: string;\n}\n","import {Injectable} from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CommentService {\n\n endpoint = '/blog_api/comments/';\n adminEndpoint = '/blog_api/admin/comments/';\n\n constructor(\n protected http: HttpClient,\n ) {\n }\n\n getComments(entry) {\n return this.http.get(this.endpoint, {params: {entry}});\n }\n postComment(comment) {\n return this.http.post(this.endpoint, comment, {params: {entry: comment.entry}});\n }\n patchComment(comment) {\n return this.http.patch(this.adminEndpoint + '/' + comment.id + '/', comment);\n }\n}\n","import {Injectable, EventEmitter} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\nimport {ListResponse} from '../data/list-response';\nimport {CoreEvent} from '../data/core-event';\nimport {CoreEventType} from '../data/core-event-type.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DjangoRestFrameworkEndpointService<T> {\n constructor(\n protected http: HttpClient\n ) {\n }\n\n events = new EventEmitter<CoreEvent<T>>();\n endpoint = '';\n\n triggerCoreEvent(obj: T, type: CoreEventType) {\n this.events.next(new CoreEvent(obj, type));\n return obj;\n }\n\n handleResponse(obj: T) {\n return obj;\n }\n handleListResponse(obj: ListResponse<T>) {\n return obj;\n }\n\n get(): Observable<ListResponse<T>> {\n return this.http.get<ListResponse<T>>(this.endpoint).pipe(\n map(this.handleListResponse.bind(this))\n );\n }\n getById(id: string): Observable<T> {\n return this.http.get<T>(this.endpoint + id + '/').pipe(\n map(this.handleResponse.bind(this))\n );\n }\n create(entity: T): Observable<T> {\n return this.http.post<T>(this.endpoint + '/', entity).pipe(\n map((val) => this.triggerCoreEvent(val, CoreEventType.CREATE)),\n map(this.handleResponse.bind(this))\n );\n }\n delete(entity: T): Observable<T> {\n return this.http.delete<T>(this.endpoint + (entity as any).id + '/').pipe(\n map((val) => this.triggerCoreEvent(val, CoreEventType.DELETE)),\n map(this.handleResponse.bind(this))\n );\n }\n update(entity: T): Observable<T> {\n return this.http.patch<T>(this.endpoint + (entity as any).id + '/', entity).pipe(\n map((val) => this.triggerCoreEvent(val, CoreEventType.UPDATE)),\n map(this.handleResponse.bind(this))\n );\n }\n getListByUrl(url: string): Observable<ListResponse<T>> {\n return this.http.get<ListResponse<T>>(url).pipe(\n map(this.handleListResponse.bind(this))\n );\n }\n}\n","import {Injectable, EventEmitter} from '@angular/core';\nimport {DjangoRestFrameworkEndpointService} from '../services/django-rest-framework-endpoint.service';\nimport {ListResponse} from '../data/list-response';\nimport {Entry} from '../data/entry';\nimport {Observable, Subject} from 'rxjs';\nimport {debounceTime, map} from 'rxjs/operators';\n//import {loMap} from 'lodash';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport {CoreEvent} from '../data/core-event';\nimport {CoreEventType} from '../data/core-event-type.enum';\n\nimport {Utility} from '@blog/services/utility';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EntryService extends DjangoRestFrameworkEndpointService<Entry> {\n\n endpoint = '/blog_api/entries/';\n adminEndpoint = '/blog_api/admin/entries/';\n\n _currentlyEditedEntry: Entry;\n currentlyEditedEntry: Subject<Entry> = new Subject<Entry>();\n sub;\n\n handleResponse(obj: Entry): Entry {\n return new Entry(obj);\n }\n\n handleListResponse(obj: ListResponse<Entry>): ListResponse<Entry> {\n const response = obj;\n const results = [];\n for (const result of response.results) {\n results.push(new Entry(result));\n }\n response.results = results;\n return response;\n }\n\n\n constructor(\n protected http: HttpClient,\n ) {\n super(http);\n this.sub = this.currentlyEditedEntry.pipe(debounceTime(3000)).subscribe((e) => {\n e.edit_date = new Date();\n const params = new HttpParams().set('published', JSON.stringify(false)).set('defunct', JSON.stringify(false));\n\n this.http.patch(this.adminEndpoint + e.id + '/', e, {params}).pipe(\n map(this.handleResponse.bind(this))\n ).subscribe((response) => {\n this.triggerCoreEvent((response as Entry), CoreEventType.UPDATE);\n console.log('Synced ' + e.id + '...');\n }, (err) => {\n console.log('Error encountered syncing ' + e.id + ', trying to create...');\n this.http.post(this.adminEndpoint, e).pipe(\n map(this.handleResponse)\n ).subscribe((response) => {\n this.triggerCoreEvent((response as Entry), CoreEventType.CREATE);\n console.log('Created ' + e.id + '...');\n }, (createErr) => {\n console.log('Error creating ' + e.id);\n });\n });\n });\n }\n\n get(): Observable<ListResponse<Entry>> {\n return this.http.get(this.endpoint).pipe(\n map(this.handleListResponse.bind(this))\n );\n }\n\n search(searchTerm: string): Observable<ListResponse<Entry>> {\n return this.http.get(this.endpoint + \"?search=\" + searchTerm).pipe(\n map(this.handleListResponse.bind(this))\n );\n }\n\n getUnpublishedEntries() {\n const params = new HttpParams().set('published', JSON.stringify(false)).set('defunct', JSON.stringify(false));\n return this.http.get(this.adminEndpoint, {params});\n }\n\n getBySlug(slug: string) {\n return this.http.get(this.endpoint + slug + '/by_slug/').pipe(\n map(this.handleResponse.bind(this))\n );\n }\n getUnpublishedById(id: string): Observable<Entry> {\n const params = new HttpParams().set('published', JSON.stringify(false)).set('defunct', JSON.stringify(false));\n return this.http.get<Entry>(this.adminEndpoint + id, {params}).pipe(\n map(this.handleResponse.bind(this))\n );\n }\n updateUnpublishedEntry(entry: Entry): Observable<Entry> {\n const params = new HttpParams().set('published', JSON.stringify(false)).set('defunct', JSON.stringify(false));\n return this.http.patch<Entry>(this.adminEndpoint + entry.id + '/', entry, {params}).pipe(\n map((val) => this.triggerCoreEvent(val, CoreEventType.UPDATE)),\n map(this.handleResponse.bind(this))\n );\n }\n\n slugify(s: string) {\n\n const charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ō\":\"O\",\"ō\":\"o\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"Ə\":\"E\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"ə\":\"e\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"ѝ\":\"u\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"Ғ\":\"GH\",\"ғ\":\"gh\",\"Қ\":\"KH\",\"қ\":\"kh\",\"Ң\":\"NG\",\"ң\":\"ng\",\"Ү\":\"UE\",\"ү\":\"ue\",\"Ұ\":\"U\",\"ұ\":\"u\",\"Һ\":\"H\",\"һ\":\"h\",\"Ә\":\"AE\",\"ә\":\"ae\",\"Ө\":\"OE\",\"ө\":\"oe\",\"Ա\":\"A\",\"Բ\":\"B\",\"Գ\":\"G\",\"Դ\":\"D\",\"Ե\":\"E\",\"Զ\":\"Z\",\"Է\":\"E\\'\",\"Ը\":\"Y\\'\",\"Թ\":\"T\\'\",\"Ժ\":\"JH\",\"Ի\":\"I\",\"Լ\":\"L\",\"Խ\":\"X\",\"Ծ\":\"C\\'\",\"Կ\":\"K\",\"Հ\":\"H\",\"Ձ\":\"D\\'\",\"Ղ\":\"GH\",\"Ճ\":\"TW\",\"Մ\":\"M\",\"Յ\":\"Y\",\"Ն\":\"N\",\"Շ\":\"SH\",\"Չ\":\"CH\",\"Պ\":\"P\",\"Ջ\":\"J\",\"Ռ\":\"R\\'\",\"Ս\":\"S\",\"Վ\":\"V\",\"Տ\":\"T\",\"Ր\":\"R\",\"Ց\":\"C\",\"Փ\":\"P\\'\",\"Ք\":\"Q\\'\",\"Օ\":\"O\\'\\'\",\"Ֆ\":\"F\",\"և\":\"EV\",\"ء\":\"a\",\"آ\":\"aa\",\"أ\":\"a\",\"ؤ\":\"u\",\"إ\":\"i\",\"ئ\":\"e\",\"ا\":\"a\",\"ب\":\"b\",\"ة\":\"h\",\"ت\":\"t\",\"ث\":\"th\",\"ج\":\"j\",\"ح\":\"h\",\"خ\":\"kh\",\"د\":\"d\",\"ذ\":\"th\",\"ر\":\"r\",\"ز\":\"z\",\"س\":\"s\",\"ش\":\"sh\",\"ص\":\"s\",\"ض\":\"dh\",\"ط\":\"t\",\"ظ\":\"z\",\"ع\":\"a\",\"غ\":\"gh\",\"ف\":\"f\",\"ق\":\"q\",\"ك\":\"k\",\"ل\":\"l\",\"م\":\"m\",\"ن\":\"n\",\"ه\":\"h\",\"و\":\"w\",\"ى\":\"a\",\"ي\":\"y\",\"ً\":\"an\",\"ٌ\":\"on\",\"ٍ\":\"en\",\"َ\":\"a\",\"ُ\":\"u\",\"ِ\":\"e\",\"ْ\":\"\",\"٠\":\"0\",\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"پ\":\"p\",\"چ\":\"ch\",\"ژ\":\"zh\",\"ک\":\"k\",\"گ\":\"g\",\"ی\":\"y\",\"۰\":\"0\",\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"Ṣ\":\"S\",\"ṣ\":\"s\",\"Ẁ\":\"W\",\"ẁ\":\"w\",\"Ẃ\":\"W\",\"ẃ\":\"w\",\"Ẅ\":\"W\",\"ẅ\":\"w\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"–\":\"-\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"„\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₸\":\"kazakhstani tenge\",\"₹\":\"indian rupee\",\"₺\":\"turkish lira\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\",\"ﻵ\":\"laa\",\"ﻷ\":\"laa\",\"ﻹ\":\"lai\",\"ﻻ\":\"la\"}');\n const locales = JSON.parse('{\"bg\":{\"Й\":\"Y\",\"Ц\":\"Ts\",\"Щ\":\"Sht\",\"Ъ\":\"A\",\"Ь\":\"Y\",\"й\":\"y\",\"ц\":\"ts\",\"щ\":\"sht\",\"ъ\":\"a\",\"ь\":\"y\"},\"de\":{\"Ä\":\"AE\",\"ä\":\"ae\",\"Ö\":\"OE\",\"ö\":\"oe\",\"Ü\":\"UE\",\"ü\":\"ue\",\"ß\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"∑\":\"summe\",\"∞\":\"unendlich\",\"♥\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"¢\":\"centavos\",\"£\":\"libras\",\"¤\":\"moneda\",\"₣\":\"francos\",\"∑\":\"suma\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"¢\":\"centime\",\"£\":\"livre\",\"¤\":\"devise\",\"₣\":\"franc\",\"∑\":\"somme\",\"∞\":\"infini\",\"♥\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"¢\":\"centavo\",\"∑\":\"soma\",\"£\":\"libra\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"uk\":{\"И\":\"Y\",\"и\":\"y\",\"Й\":\"Y\",\"й\":\"y\",\"Ц\":\"Ts\",\"ц\":\"ts\",\"Х\":\"Kh\",\"х\":\"kh\",\"Щ\":\"Shch\",\"щ\":\"shch\",\"Г\":\"H\",\"г\":\"h\"},\"vi\":{\"Đ\":\"D\",\"đ\":\"d\"},\"da\":{\"Ø\":\"OE\",\"ø\":\"oe\",\"Å\":\"AA\",\"å\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"større end\"},\"nb\":{\"&\":\"og\",\"Å\":\"AA\",\"Æ\":\"AE\",\"Ø\":\"OE\",\"å\":\"aa\",\"æ\":\"ae\",\"ø\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"Å\":\"AA\",\"Ä\":\"AE\",\"Ö\":\"OE\",\"å\":\"aa\",\"ä\":\"ae\",\"ö\":\"oe\"}}');\n\n\n if (typeof s !== 'string') {\n throw new Error('slugify: string argument expected');\n }\n\n const replacement = '-';\n\n const trim = true;\n\n const locale = 'en';\n\n let slug = s.normalize().split('')\n // replace characters based on charMap\n .reduce((result, ch) => {\n let appendChar = locale[ch] || charMap[ch] || ch;\n if (appendChar === replacement) {\n appendChar = ' ';\n }\n return result + appendChar\n // remove not allowed characters\n .replace(/[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '');\n }, '');\n\n slug = slug.trim();\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n slug = slug.toLowerCase();\n\n return slug;\n }\n\n delete(entity: any): Observable<any> {\n return this.http.delete<any>(this.adminEndpoint + (entity as any).id + '/').pipe(\n map((val) => this.triggerCoreEvent(val, CoreEventType.DELETE)),\n map(this.handleResponse.bind(this))\n );\n }\n\n convertHtmlToBlogFormat(entry: Entry, html: string): Entry {\n return Utility.convertHtmlToBlogFormat(entry, html);\n }\n\n convertBlogToHtmlFormat(entry: Entry): string {\n return Utility.convertBlogToHtml(entry);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {Observable, of} from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport {Identity} from '../data/identity';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IdentityService {\n\n constructor(\n protected http: HttpClient\n ) { }\n\n getMe(): Observable<Identity> {\n console.error('You must provide an implementation for this');\n return of(\n {\n id: 1,\n username: \"fakeadmin\",\n email: \"admin@example.com\",\n display_name: \"Fake Admin\",\n comments_public: false,\n gravatar_url: \"\",\n fake: true\n }\n );\n }\n}\n","import {Inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\n\n/*\nimport 'clipboard';\n\nimport 'prismjs';\nimport 'prismjs/plugins/toolbar/prism-toolbar';\nimport 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';\nimport 'prismjs/components/prism-css';\nimport 'prismjs/components/prism-javascript';\nimport 'prismjs/components/prism-java';\nimport 'prismjs/components/prism-markup';\nimport 'prismjs/components/prism-typescript';\nimport 'prismjs/components/prism-sass';\nimport 'prismjs/components/prism-scss';\n*/\n\ndeclare var Prism: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PrismService {\n\n testPrism() {\n if (typeof(Prism) !== 'undefined') {\n if(Prism) {\n return true;\n }\n }\n return false;\n }\n\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {\n if (this.testPrism()) {\n Prism.manual = true;\n }\n }\n\n highlightAll() {\n if (isPlatformBrowser(this.platformId)) {\n if(this.testPrism()) {\n Prism.highlightAll();\n }\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {Upload} from '../services/upload';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UploadService {\n\n static upload_endpoint = '/file_api/uploads/create_image/';\n static status_endpoint = '/file_api/uploads/{pk}/status';\n\n constructor(\n private http: HttpClient\n ) {\n }\n\n get(id: string): Observable<Upload> {\n return this.http.get<Upload>(UploadService.status_endpoint.replace('{pk}', id) + '/');\n }\n}\n","export class Upload {\n id: string;\n processed: boolean;\n path_to_file: string;\n mime_type: string;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {DjangoRestFrameworkEndpointService} from '../django-rest-framework-endpoint.service';\nimport {View} from '../view';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ViewService extends DjangoRestFrameworkEndpointService<View> {\n endpoint = '/blog_api/views/';\n\n constructor(\n public http: HttpClient,\n ) {\n super(http);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {DjangoRestFrameworkEndpointService} from '../django-rest-framework-endpoint.service';\nimport {Interaction} from '../interaction';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InteractionService extends DjangoRestFrameworkEndpointService<Interaction> {\n endpoint = '/blog_api/interactions/';\n\n constructor(\n public http: HttpClient,\n ) {\n super(http);\n }\n}\n","export class View {\n id: string;\n entry: string;\n}\n","export class Interaction {\n id: string;\n content: any;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {DeviceDetectorService} from 'ngx-device-detector';\nimport {VisitorProfile} from '../data/visitor-profile';\nimport {DjangoRestFrameworkEndpointService} from '../services/django-rest-framework-endpoint.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VisitorProfileService extends DjangoRestFrameworkEndpointService<VisitorProfile> {\n endpoint = '/blog_api/visitor_profiles/';\n\n constructor(\n public http: HttpClient,\n public deviceDetectorService: DeviceDetectorService\n ) {\n super(http);\n }\n\n getVisitorProfile(): VisitorProfile {\n const deviceInfo = this.deviceDetectorService.getDeviceInfo();\n\n const vp = new VisitorProfile();\n\n vp.telemetry = deviceInfo;\n\n vp.name = deviceInfo.os;\n vp.family = deviceInfo.browser;\n vp.version = deviceInfo.browser_version;\n vp.device = deviceInfo.device;\n vp.os_version = deviceInfo.os_version;\n vp.language = navigator.language;\n\n return vp;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, SecurityContext } from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StaticHtmlService {\n constructor(\n private domSanitizer: DomSanitizer,\n ) { }\n\n mapStaticHtml(htmlString: string, isTrusted: boolean): string {\n return isTrusted ?\n htmlString :\n this.domSanitizer.sanitize(SecurityContext.HTML, htmlString);\n }\n}\n","export class Tag {\n constructor(obj: any) {\n this.id = obj.id;\n this.label = obj.label;\n }\n id: number;\n label: string;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {ListResponse} from '../data/list-response';\nimport {Tag} from '../data/tag';\nimport {DjangoRestFrameworkEndpointService} from './django-rest-framework-endpoint.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TagService extends DjangoRestFrameworkEndpointService<Tag> {\n endpoint = '/blog_api/tags/';\n\n handleResponse(obj: Tag): Tag{\n return new Tag(obj);\n }\n\n handleListResponse(obj: ListResponse<Tag>): ListResponse<Tag> {\n const response = obj;\n const results = [];\n for (let i = 0; i < response.results.length; i++) {\n results.push(new Tag(response.results[i]));\n }\n response.results = results;\n return response;\n }\n\n constructor(\n protected http: HttpClient,\n ) {\n super(http);\n }\n}\n","import {Entry} from '@blog/data/entry';\nimport {Section} from '@blog/data/section';\nimport {Content} from '@blog/data/content';\nimport {ContentType} from '@blog/data/content-type';\n\nexport class Utility {\n\n static replaceNbsps(str) {\n var re = new RegExp(String.fromCharCode(160), \"g\");\n return str.replace(re, \" \");\n }\n\n static convertHTMLToType(el: Element): Section | Content | null {\n var value = \"\";\n var contentType = \"\";\n\n // First test for custom objects\n var testValue = (el as any).innerText;\n\n try {\n var obj = JSON.parse(testValue);\n return obj as Content;\n } catch (error) {\n //console.error(error);\n }\n\n //console.log(el.tagName);\n switch(el.tagName.toLowerCase()) {\n case \"p\":\n if(el.children.length > 0) {\n var child = el.children[0];\n if(child.tagName.toLowerCase() === \"a\") {\n var c = new Content();\n value = (child as any).href;\n c.value = value;\n c.title = Utility.replaceNbsps((child as any).innerText);\n c.type = ContentType.URL;\n return c;\n }\n else if(child.tagName.toLowerCase() === 'img') {\n var c = new Content();\n value = (child as any).src;\n c.value = value;\n c.type = ContentType.IMAGE;\n return c;\n }\n }\n else {\n var c = new Content();\n value = Utility.replaceNbsps((el as any).innerText);\n c.value = value;\n c.type = ContentType.TEXT;\n return c;\n }\n break;\n case \"a\":\n var c = new Content();\n value = (el as any).href;\n c.value = value;\n c.title = Utility.replaceNbsps((el as any).innerText);\n c.type = ContentType.URL;\n return c;\n break;\n case \"h4\":\n var s = new Section();\n value = Utility.replaceNbsps((el as any).innerText);\n s.subheading = Utility.replaceNbsps(value);\n return s;\n break;\n case \"blockquote\":\n var c = new Content();\n value = (el as any).innerHTML;\n c.value = \"<blockquote>\" + value + \"</blockquote>\";\n c.type = ContentType.HTML;\n return c;\n break;\n default:\n var c = new Content();\n value = (el as any).innerHTML;\n c.value = value;\n c.type = ContentType.HTML;\n return c;\n break;\n }\n }\n\n static convertHtmlToBlogFormat(entry: Entry, html: string): Entry {\n entry.sections = [];\n var newEntry = new Entry(entry);\n\n var el = document.createElement('html');\n el.innerHTML = html;\n\n // Creating the HTML element adds a head and body\n // We hardcode to 1 to reference the body, and its\n // child elements\n var children = el.children[1].children;;\n\n var section = new Section();\n section.subheading = \"\";\n\n for(let i = 0; i < children.length; i++) {\n var child = children[i];\n\n var thing = Utility.convertHTMLToType(child);\n\n //console.log('Thing: ' + JSON.stringify(thing));\n //console.log('Typeof: ' + JSON.stringify(typeof(thing)));\n\n if(thing instanceof Section) {\n section = thing;\n section.order = i * 10;\n entry.sections.push(section);\n }\n else if(thing instanceof Content) {\n if(entry.sections.length === 0) {\n thing.order = i * 10;\n section.contents.push(thing);\n entry.sections.push(section);\n section.order = i * 10;\n }\n else {\n thing.order = i * 10;\n section.contents.push(thing);\n }\n }\n else {\n if(thing !== null && typeof(thing) !== 'undefined') {\n (thing as any).order = i * 10;\n section.contents.push(thing);\n }\n }\n }\n\n //console.log('E: ' + JSON.stringify(entry));\n\n return entry;\n }\n\n static convertTypeToHTML(content: Content) {\n switch(content.type) {\n case ContentType.CODE:\n return '<pre><code class=\"language-ts\">' + content?.value + '</code></pre>'\n break;\n case ContentType.IMAGE:\n return '<img src=\"' + content?.value + '\"/>'\n break;\n case ContentType.MEDIA:\n return '<pre>' + JSON.stringify(content) + '</pre>';\n break;\n case ContentType.HTML:\n return content.value;\n break;\n case ContentType.URL:\n return '<a target=\"_blank\" href=\"' + content.value + '\">' + content.title + '</a><br>';\n break;\n case ContentType.TEXT:\n return '<p>' + content.value + '</p>';\n break;\n default:\n return '<pre>' + JSON.stringify(content) + '</pre>';\n break;\n }\n }\n\n static convertBlogToHtml(blog: Entry): string {\n\n var html = \"\";\n\n var sections = blog.sections;\n for(var i = 0; i < sections.length; i++) {\n var section = sections[i];\n html = html + '<h4>' + section.subheading + '</h4>';\n\n var contents = section.contents;\n for(var j = 0; j < contents.length; j++) {\n var content = contents[j];\n html = html + Utility.convertTypeToHTML(content);\n }\n }\n\n return html;\n }\n}\n","export class EntrySelectorDialogData {\n}\n","import {Component, Inject, OnInit} from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\nimport {EntrySelectorDialogData} from '../../components/entry-selector-dialog/entry-selector-dialog-data';\nimport {EntryService} from '../../services/entry.service';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatDividerModule} from '@angular/material/divider';\nimport {MatTableModule} from '@angular/material/table';\nimport {MatButtonModule} from '@angular/material/button';\n\n@Component({\n selector: 'app-entry-selector-dialog',\n templateUrl: './entry-selector-dialog.component.html',\n styleUrls: ['./entry-selector-dialog.component.scss'],\n imports: [\n NgIf,\n MatDividerModule,\n MatTableModule,\n MatButtonModule,\n MatDialogModule,\n ]\n})\nexport class EntrySelectorDialogComponent implements OnInit {\n\n columnsToDisplay = ['title', 'create_date', 'actions'];\n\n static CURRENT_ENTRY = 'current_entry';\n\n entries;\n\n constructor(\n public dialogRef: MatDialogRef<EntrySelectorDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: EntrySelectorDialogData,\n private entryService: EntryService,\n ) {\n }\n\n ngOnInit(): void {\n this.entryService.getUnpublishedEntries().subscribe((next) => {\n this.entries = (next as any).results;\n });\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n select(entry): void {\n this.entryService.getUnpublishedById(entry.id).subscribe((entry_new) => {\n localStorage.setItem(EntrySelectorDialogComponent.CURRENT_ENTRY, JSON.stringify(entry_new));\n entry_new.sort();\n this.entryService.currentlyEditedEntry.next(entry_new);\n this.dialogRef.close(entry_new.id);\n });\n }\n\n delete(entry): void {\n this.entryService.delete(entry).subscribe((response) => {\n this.entryService.getUnpublishedEntries().subscribe((next) => {\n this.entries = (next as any).results;\n });\n }, (error) => {\n alert('NOT DELETED: ' + error);\n });\n }\n}\n","<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\n <table mat-table [dataSource]=entries>\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef> Id </th>\n <td mat-cell *matCellDef=\"let entry\"> {{entry.id}} </td>\n </ng-container>\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef> Title </th>\n <td mat-cell *matCellDef=\"let entry\"> {{entry.title}} </td>\n </ng-container>\n <ng-container matColumnDef=\"create_date\">\n <th mat-header-cell *matHeaderCellDef> Created </th>\n <td mat-cell *matCellDef=\"let entry\"> {{entry.create_date}} </td>\n </ng-container>\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let entry\">\n <button mat-button color=\"primary\" (click)=\"select(entry)\">Edit</button> | <button mat-button color=\"warn\" (click)=\"delete(entry)\">Delete</button>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let myRowData; columns: columnsToDisplay\"></tr>\n </table>\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</div>\n","import {Component, HostListener, Input, OnInit, OnDestroy} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FileUploader} from 'ng2-file-upload';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatDialogRef} from '@angular/material/dialog';\nimport {MatDividerModule} from '@angular/material/divider';\nimport { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontawesome';\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons';\nimport {FileUploadModule} from 'ng2-file-upload';\n\nimport {DjangoRestFrameworkEndpointService} from '../../services/django-rest-framework-endpoint.service';\nimport {UploadService} from '../../services/upload.service';\n\n@Component({\n selector: 'app-media-upload-modal',\n templateUrl: './media-upload-modal.component.html',\n styleUrls: ['./media-upload-modal.component.css'],\n imports: [\n CommonModule,\n MatDialogModule,\n MatDividerModule,\n FontAwesomeModule,\n FileUploadModule,\n ]\n})\nexport class MediaUploadModalComponent implements OnInit, OnDestroy {\n\n @Input() allowedMimeTypes = [\n 'image/jpeg',\n 'image/gif',\n 'image/png',\n 'image/jpg',\n 'video/mp4',\n 'video/webm',\n 'video/ogg',\n ];\n\n @Input() uploadUrlKey = 'path_to_file';\n\n imgLink;\n mimeType;\n socketSub;\n error;\n public uploader: FileUploader;\n uploadId;\n uploading = false;\n @Input() file;\n\n poller;\n\n static getCookie(name: string) {\n const ca: Array<string> = document.cookie.split(';');\n const caLen: number = ca.length;\n const cookieName = `${name}=`;\n let c: string;\n\n for (let i = 0; i < caLen; i += 1) {\n c = ca[i].replace(/^\\s+/g, '');\n if (c.indexOf(cookieName) === 0) {\n return c.substring(cookieName.length, c.length);\n }\n }\n return '';\n }\n\n constructor(\n public dialogRef: MatDialogRef<MediaUploadModalComponent>,\n private uploadService: UploadService,\n private library: FaIconLibrary,\n ) {\n library.addIcons(faSpinner);\n }\n\n\n pollForCompletion() {\n this.uploadService.get(this.uploadId).subscribe((response) => {\n if (response.processed) {\n this.imgLink = response[this.uploadUrlKey];\n this.mimeType = response.mime_type;\n clearInterval(this.poller);\n this.poller = null;\n this.uploading = false;\n }\n });\n }\n\n\n ngOnInit(): void {\n\n this.uploader = new FileUploader(\n {\n url: UploadService.upload_endpoint,\n itemAlias: 'file',\n authToken: '',\n headers: [\n {name: 'X-CSRFToken', value: MediaUploadModalComponent.getCookie('csrftoken')},\n ],\n additionalParameter: {csrf_token: MediaUploadModalComponent.getCookie('csrftoken')},\n removeAfterUpload: true,\n allowedMimeType: this.allowedMimeTypes,\n }\n );\n\n this.uploader.onCompleteItem = (item, response) => {\n const responseObj = JSON.parse(response);\n this.uploadId = responseObj.id;\n this.poller = setInterval(this.pollForCompletion.bind(this), 2000);\n };\n\n this.uploader.onWhenAddingFileFailed = (item, filter, options) => {\n this.error = 'This file is not a supported mimetype.';\n this.uploading = false;\n };\n\n if (this.file) {\n this.uploader.addToQueue([this.file]);\n this.uploader.uploadAll();\n this.uploading = true;\n }\n }\n\n onFileSelected(e) {\n this.uploader.uploadAll();\n this.uploading = true;\n }\n\n buildHost(url) {\n return location.protocol + '//' + location.hostname + (location.port ? ':' + location.port : '') + url;\n }\n\n close() {\n this.dialogRef.close();\n }\n\n ngOnDestroy(): void {\n if (this.socketSub) {\n this.socketSub.complete();\n this.socketSub = null;\n }\n }\n\n blobToFile(theBlob, fileName) {\n // A Blob() is almost a File() - it's just missing the two properties below which we will add\n theBlob.lastModifiedDate = new Date();\n theBlob.name = fileName;\n return theBlob;\n }\n\n @HostListener('document:paste', ['$event'])\n onPaste(e) {\n if (e instanceof ClipboardEvent) {\n const files = e.clipboardData.files;\n if (files) {\n if (files.length < 1) {\n // const items = e.clipboardData.items;\n // for(let i = 0; i < items.length; i++) {\n // const item = items[i];\n // item.getAsString((text) => {\n // try {\n // const url = new URL(text);\n // if(url) {\n // fetch(text)\n // .then(res => res.blob()) // Gets the response and returns it as a blob\n // .then(blob => {\n // const file = this.blobToFile(blob, 'web-created')\n // this.uploader.addToQueue([file])\n // this.uploader.uploadAll();\n // this.uploading = true;\n // });\n // }\n // } catch(e) {\n //\n // }\n // });\n // }\n } else if (files.length > 1) {\n console.log('Multiple files detected');\n } else {\n for (let i = 0; i < files.length; i++) {\n this.uploader.addToQueue([files[i]]);\n }\n this.uploader.uploadAll();\n this.uploading = true;\n }\n } else {\n console.log('Stuff not working');\n }\n }\n }\n}\n","<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'\" animation=\"spin\"></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","import {COMMA, ENTER, TAB} from '@angular/cdk/keycodes';\nimport {ChangeDetectorRef, Component, OnInit, ViewChild, ElementRef, EventEmitter, Output, Input} from '@angular/core';\nimport {Router} from '@angular/router';\n\nimport {Entry} from '../../data/entry';\nimport {Section} from '../../data/section';\nimport {Content} from '../../data/content';\nimport {ContentType} from '../../data/content-type';\nimport {Identity} from '../../data/identity';\n\nimport {EntryService} from '../../services/entry.service';\nimport {IdentityService} from '../../services/identity.service';\n\nimport {map as loMap, filter} from 'lodash';\nimport {MatDialog} from '@angular/material/dialog';\nimport {MatAutocompleteSelectedEvent, MatAutocomplete} from '@angular/material/autocomplete';\nimport {EntrySelectorDialogComponent} from '../../components/entry-selector-dialog/entry-selector-dialog.component';\nimport {FileUploader} from 'ng2-file-upload';\nimport {MediaUploadModalComponent} from '../../components/media-upload-modal/media-upload-modal.component';\nimport {Observable} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\nimport {UntypedFormControl} from '@angular/forms';\nimport {MatChipInputEvent} from '@angular/material/chips';\nimport {TagService} from '../../services/tag.service';\nimport {SchedulePublishDialogComponent} from '../schedule-publish-dialog/schedule-publish-dialog.component';\n\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\n\nimport {CommonModule} from '@angular/common';\nimport {MatSelectModule} from '@angular/material/select';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatFormFieldModule} from '@angular/material/form-field';\n\nimport {MatCardModule} from '@angular/material/card';\nimport {MatChipsModule} from '@angular/material/chips';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatRadioModule} from '@angular/material/radio';\nimport {MatButtonModule} from '@angular/material/button';\n\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatTimepickerModule} from '@angular/material/timepicker';\nimport {provideNativeDateAdapter} from '@angular/material/core';\n\n@Component({\n selector: 'app-entry-creator',\n templateUrl: './entry-creator.component.html',\n styleUrls: ['./entry-creator.component.scss'],\n providers: [provideNativeDateAdapter()],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatCardModule,\n MatChipsModule,\n MatIconModule,\n MatAutocompleteModule,\n MatRadioModule,\n MatInputModule,\n MatSelectModule,\n MatDatepickerModule,\n MatTimepickerModule,\n MatButtonModule,\n ]\n})\nexport class EntryCreatorComponent implements OnInit {\n\n static CURRENT_ENTRY_KEY = 'current_entry';\n static DEFAULT_NEW_ENTRY_TITLE = 'A New Entry';\n\n ContentType = ContentType;\n Object = Object;\n\n entry: Entry = null;\n me: Identity;\n\n separatorKeysCodes: number[] = [ENTER, COMMA, TAB];\n removable = true;\n tags: string[];\n all_tags: string[] = ['Angular', 'Bash', 'MacOS', 'Typescript', 'NPM', 'Databases'];\n filtered_tags: Observable<string[]>;\n @ViewChild('tagInput') tagInput: ElementRef<HTMLInputElement>;\n @ViewChild('tagauto') matAutocomplete: MatAutocomplete;\n\n tagCtrl = new UntypedFormControl();\n publishDateControl = new UntypedFormControl();\n\n tag_to_add: string;\n selectable = false;\n\n scheduling = false;\n customScheduleTime = '';\n today = new Date();\n hours: number;\n minutes: number;\n\n @Input() allowedMimeTypes = [\n 'image/jpeg',\n 'image/gif',\n 'image/png',\n 'image/jpg',\n 'video/mp4',\n 'video/webm',\n 'video/ogg',\n ];\n\n @Input() uploadUrlKey = 'path_to_file';\n\n public uploader: FileUploader = new FileUploader(\n {\n url: '/file_api/uploads/create_image/',\n itemAlias: 'file',\n authToken: '',\n headers: [\n {\n name: 'X-CSRFToken',\n value: EntryCreatorComponent.getCookie('csrftoken')\n },\n ],\n additionalParameter: {\n 'csrf_token': EntryCreatorComponent.getCookie('csrftoken')\n },\n removeAfterUpload: true,\n allowedMimeType: this.allowedMimeTypes,\n }\n );\n\n static getCookie(name: string) {\n const ca: Array<string> = document.cookie.split(';');\n const caLen: number = ca.length;\n const cookieName = `${name}=`;\n let c: string;\n\n for (let i = 0; i < caLen; i += 1) {\n c = ca[i].replace(/^\\s+/g, '');\n if (c.indexOf(cookieName) === 0) {\n return c.substring(cookieName.length, c.length);\n }\n }\n return '';\n }\n\n constructor(\n private router: Router,\n private entryService: EntryService,\n private tagService: TagService,\n private identityService: IdentityService,\n private cdr: ChangeDetectorRef,\n private dialog: MatDialog,\n ) {\n const scheduledDate = new Date();\n this.customScheduleTime = scheduledDate.getHours() + ':' + scheduledDate.getMinutes() + ' AM';\n }\n\n private _filter(value: string): string[] {\n const filterValue = value.toLowerCase();\n return this.all_tags.filter(tag => tag.toLowerCase().indexOf(filterValue) === 0);\n }\n\n add(event: MatChipInputEvent): void {\n const input = event.input;\n const value = event.value;\n\n // Add our tag\n if ((value || '').trim()) {\n this.tags.push(value.trim());\n }\n\n // Reset the input value\n if (input) {\n input.value = '';\n }\n\n this.tagCtrl.setValue(null);\n this.onChange();\n }\n\n remove(fruit: string): void {\n const index = this.tags.indexOf(fruit);\n\n if (index >= 0) {\n this.tags.splice(index, 1);\n }\n this.onChange();\n }\n\n selected(event: MatAutocompleteSelectedEvent): void {\n this.tags.push(event.option.viewValue);\n this.tagInput.nativeElement.value = '';\n this.tagCtrl.setValue(null);\n this.onChange();\n }\n\n refreshTags() {\n this.tagService.get().subscribe((response) => {\n this.all_tags = loMap(response.results, (t) => t.label);\n /*\n this.filtered_tags = this.tagCtrl.valueChanges.pipe(\n startWith(null),\n map((tag: string | null) => tag ? this._filter(tag) : this.all_tags.slice()));\n */\n });\n }\n\n createNewEntry() {\n this.entry = new Entry();\n this.entry.title = EntryCreatorComponent.DEFAULT_NEW_ENTRY_TITLE;\n this.entry.published = false;\n this.entry.version = 1;\n\n this.entryService.create(this.entry).subscribe((response) => {\n this.entry = response;\n this.entry.sort();\n setTimeout(() => {\n this.entryService.currentlyEditedEntry.next(this.entry);\n }, 10);\n });\n }\n\n ngOnInit() {\n this.refreshTags();\n this.identityService.getMe().subscribe((me) => {\n this.me = me;\n });\n\n const savedEntry =\n localStorage.getItem(EntryCreatorComponent.CURRENT_ENTRY_KEY);\n\n if (savedEntry) {\n this.entry = new Entry(JSON.parse(savedEntry));\n\n if (this.entry.should_publish_in_future && this.entry.future_publish_date < new Date()) {\n this.createNewEntry();\n }\n\n this.entry.sort();\n if (this.entry.should_publish_in_future) {\n // Restore scheduling settings\n this.scheduling = true;\n let hours = this.entry.future_publish_date.getHours();\n let minutes: string | number = this.entry.future_publish_date.getMinutes();\n const ampm = hours >= 12 ? 'PM' : 'AM';\n if (hours >= 12) {\n hours = hours % 12;\n hours = hours ? hours : 12;\n }\n minutes = minutes < 10 ? '0' + minutes : minutes;\n this.customScheduleTime = hours + ':' + minutes + ' ' + ampm;\n }\n setTimeout(() => {\n this.entryService.currentlyEditedEntry.next(this.entry);\n }, 10);\n } else {\n this.seeEntries();\n }\n\n this.uploader.onCompleteItem = (item, response) => {\n // const responseObj = JSON.parse(response)\n // this.uploadId = responseObj.id;\n };\n\n this.uploader.onWhenAddingFileFailed = (item, uploadFilter, options) => {\n // this.error = 'This file is not a supported mimetype.'\n // this.uploading = false;\n };\n\n this.tags = this.entry.tags;\n }\n\n onFileSelected(e) {\n this.uploader.uploadAll();\n }\n\n startUploader(content) {\n const dialogRef = this.dialog.open(MediaUploadModalComponent, {\n });\n dialogRef.componentInstance.allowedMimeTypes = this.allowedMimeTypes;\n dialogRef.componentInstance.uploadUrlKey = this.uploadUrlKey;\n dialogRef.afterClosed().subscribe(() => {\n content.value = dialogRef.componentInstance.imgLink;\n content.additional = [];\n content.additional.push({key: Content.KEY_MIMETYPE, value: dialogRef.componentInstance.mimeType});\n this.onChange();\n });\n }\n\n addSection() {\n this.entry.sections.push(new Section());\n this.onChange();\n }\n\n removeSection(section) {\n const remove = confirm('Are you sure you want to remove this section?');\n if (remove) {\n this.entry.sections =\n filter(this.entry.sections, (sct) => sct.id !== section.id);\n this.onChange();\n }\n }\n\n addContent(section) {\n section.contents.push(new Content());\n this.onChange();\n }\n\n removeContent(content) {\n const remove = confirm('Are you sure you want to remove this content?');\n\n if (remove) {\n for (const section of this.entry.sections) {\n section.contents = filter(\n section.contents,\n (ct) => ct.id !== content.id\n );\n }\n this.onChange();\n }\n }\n\n onChange() {\n this.entry.slug = this.entryService.slugify(this.entry.title).toLowerCase();\n localStorage.setItem(\n EntryCreatorComponent.CURRENT_ENTRY_KEY,\n JSON.stringify(this.entry)\n );\n this.entry.sort();\n this.cdr.detectChanges();\n this.entryService.currentlyEditedEntry.next(this.entry);\n this.entryService._currentlyEditedEntry = this.entry;\n }\n\n resetDate() {\n this.entry.create_date = new Date();\n this.entry.edit_date = new Date();\n\n this.onChange();\n }\n\n startNew() {\n const finish = confirm('Are you sure your finished? The JSON and entry displayed will be removed. Make sure you have already copied it.');\n if (finish) {\n\n this.entry = new Entry();\n this.entry.title = EntryCreatorComponent.DEFAULT_NEW_ENTRY_TITLE;\n this.entry.published = false;\n this.entry.version = 1;\n\n this.entryService.currentlyEditedEntry.next(this.entry);\n localStorage.setItem(\n EntryCreatorComponent.CURRENT_ENTRY_KEY,\n JSON.stringify(this.entry)\n );\n this.entryService.create(this.entry).subscribe((next) => {\n });\n }\n }\n\n seeEntries() {\n const dialogRef = this.dialog.open(EntrySelectorDialogComponent, {\n width: '800px',\n data: {name: 'test', animal: 'test'}\n });\n\n dialogRef.afterClosed().subscribe((id) => {\n if (id) {\n this.entryService.getUnpublishedById(id).subscribe((result) => {\n const entry = result;\n this.entryService.currentlyEditedEntry.next(entry);\n localStorage.setItem(\n EntryCreatorComponent.CURRENT_ENTRY_KEY,\n JSON.stringify(entry)\n );\n this.entry = entry;\n });\n }\n });\n }\n\n postPublishCallback() {\n this.entryService.currentlyEditedEntry.next(null);\n this.entry = null;\n this.seeEntries();\n localStorage.removeItem(EntryCreatorComponent.CURRENT_ENTRY_KEY);\n }\n\n cancelScheduling() {\n this.entry.future_publish_date = null;\n this.entry.should_publish_in_future = false;\n this.scheduling = false;\n this.onChange();\n }\n\n exposeScheduling() {\n const scheduledDate = new Date();\n scheduledDate.setDate(scheduledDate.getDate() + 1);\n\n this.entry.future_publish_date = scheduledDate;\n this.setTime(this.customScheduleTime);\n\n this.entry.should_publish_in_future = true;\n this.scheduling = true;\n this.onChange();\n }\n publish() {\n const publish = confirm('Are you sure you want to publish? Once an article is published it is available to everyone.');\n if (publish) {\n this.entry.published = true;\n this.entry.publish_date = new Date();\n this.entry.edit_date = new Date();\n this.entryService.updateUnpublishedEntry(this.entry).subscribe(this.postPublishCallback.bind(this));\n }\n }\n delete() {\n const confirmDelete = confirm('Are you sure you want to delete this draft? Once it is deleted it cannot be recovered.');\n if (confirmDelete) {\n this.entryService.delete(this.entry).subscribe(() => {\n this.entry = null;\n this.entryService.currentlyEditedEntry.next(null);\n localStorage.removeItem(EntryCreatorComponent.CURRENT_ENTRY_KEY);\n });\n }\n }\n onDateChange() {\n this.entry.future_publish_date.setHours(this.hours);\n this.entry.future_publish_date.setMinutes(this.minutes);\n this.onChange();\n }\n\n\n setTime(e) {\n const firstTimeSplit = e.split(' ');\n const secondTimeSplit = firstTimeSplit[0].split(':');\n this.hours = Number(secondTimeSplit[0]);\n this.minutes = Number(secondTimeSplit[1]);\n\n if (firstTimeSplit[1] === 'PM') {\n this.hours = Number(this.hours) + 12;\n }\n\n this.entry.future_publish_date.setHours(this.hours);\n this.entry.future_publish_date.setMinutes(this.minutes);\n\n this.onChange();\n }\n\n routeTo(path) {\n this.router.navigateByUrl(path).then(() => {\n\n });\n }\n}\n","<div class=\"section creator fields\">\n <div style=\"padding: 10px;\">\n <button\n style=\"width: 100%;\"\n mat-raised-button (click)=\"routeTo('create/v2(left-col:create//right-col:create)')\">V2</button>\n </div>\n <form #createForm=\"ngForm\" (change)=\"onChange()\" *ngIf=\"this.entry\">\n <div class=\"form-group\">\n <mat-form-field class=\"full-width\">\n <mat-label>Title</mat-label>\n <input matInput\n [(ngModel)]=\"entry.title\"\n name=\"title\">\n </mat-form-field>\n </div>\n <mat-card class=\"form-section tags\">\n <div>\n <!--\n <mat-form-field class=\"full-width\" hintLabel=\"Use a comma to seperate different tags\">\n <mat-chip-listbox #tagList aria-label=\"Tags\">\n <mat-chip-option\n *ngFor=\"let tag of tags\"\n [selectable]=\"selectable\"\n [removable]=\"removable\"\n (removed)=\"remove(tag)\">\n {{tag}}\n <mat-icon matChipRemove *ngIf=\"removable\">cancel</mat-icon>\n </mat-chip-option>\n <input\n matInput\n placeholder=\"Tags...\"\n #tagInput\n [formControl]=\"tagCtrl\"\n [matAutocomplete]=\"tagauto\"\n [matChipInputFor]=\"tagList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"add($event)\">\n </mat-chip-listbox>\n <mat-autocomplete #tagauto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\n <mat-option *ngFor=\"let tag of filtered_tags | async\" [value]=\"tag\">\n {{tag}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n -->\n </div>\n </mat-card>\n <mat-card class=\"form-section\" *ngFor=\"let section of entry.sections\">\n <div>\n <mat-form-field class=\"full-width\">\n <mat-label>Subheading</mat-label>\n <input matInput\n [(ngModel)]=\"section.subheading\"\n name=\"{{section.id}}-subheading\">\n </mat-form-field>\n <div class=\"form-content\" *ngFor=\"let content of section.contents\">\n <div class=\"form-group\">\n <mat-radio-group\n aria-label=\"Select the Content Type\"\n name=\"{{content.id}}-content-type\"\n class=\"radio-group\"\n [(ngModel)]=\"content.type\">\n <mat-radio-button\n *ngFor=\"let value of Object.values(ContentType)\"\n class=\"radio-button\"\n [value]=\"value\">{{value}}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n <ng-container [ngSwitch]=\"content.type\">\n <ng-container *ngSwitchCase=\"ContentType.URL\">\n <mat-form-field class=\"full-width\">\n <mat-label>Value</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-value\"\n [(ngModel)]=\"content.value\">\n </mat-form-field>\n <mat-form-field class=\"full-width\">\n <mat-label>Title</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-title\"\n [(ngModel)]=\"content.title\">\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.TEXT\">\n <mat-form-field class=\"full-width\">\n <mat-label>Value</mat-label>\n <textarea matInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"3\"\n cdkAutosizeMaxRows=\"20\"\n name=\"{{content.id}}-content-value\"\n [(ngModel)]=\"content.value\"\n ></textarea>\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.HTML\">\n <mat-form-field class=\"full-width\">\n <mat-label>Value</mat-label>\n <textarea matInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"3\"\n cdkAutosizeMaxRows=\"20\"\n name=\"{{content.id}}-content-value\"\n [(ngModel)]=\"content.value\"\n ></textarea>\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.CODE\">\n <mat-form-field class=\"full-width\">\n <mat-label>Value</mat-label>\n <textarea matInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"10\"\n cdkAutosizeMaxRows=\"100\"\n name=\"{{content.id}}-content-value\"\n [(ngModel)]=\"content.value\"\n ></textarea>\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.IMAGE\">\n <mat-form-field class=\"full-width\">\n <mat-label>Value</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-value\"\n [(ngModel)]=\"content.value\">\n </mat-form-field>\n <mat-form-field class=\"full-width\">\n <mat-label>Value</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-source\"\n [(ngModel)]=\"content.value\">\n </mat-form-field>\n <mat-form-field class=\"full-width\">\n <mat-label>Description</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-description\"\n [(ngModel)]=\"content.description\">\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.MEDIA\">\n <div class=\"full-width\">\n <ng-container *ngIf=\"content.value\">\n <mat-form-field class=\"full-width\">\n <mat-label>Value</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-value\"\n [(ngModel)]=\"content.value\">\n </mat-form-field>\n <mat-form-field class=\"full-width\">\n <mat-label>Description</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-description\"\n [(ngModel)]=\"content.description\">\n </mat-form-field>\n </ng-container>\n <ng-container *ngIf=\"content.additional\">\n <ng-container *ngFor=\"let add of content.additional\">\n <mat-form-field class=\"full-width\">\n <mat-label>{{add.key}}</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-{{add.key}}\"\n [(ngModel)]=\"add.value\"\n [disabled]=\"true\"\n >\n </mat-form-field>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!content.value\">\n <button mat-raised-button (click)=startUploader(content)>Upload</button>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n <button mat-raised-button (click)=removeContent(content)>Remove Content</button>\n <button mat-raised-button (click)=\"addContent(section)\">+ Add Content</button>\n </div>\n <button mat-raised-button (click)=\"removeSection(section)\">Remove Section</button>\n <button mat-raised-button (click)=\"addContent(section)\" *ngIf=\"section.contents.length === 0\">+ Add\n Content\n </button>\n <button mat-raised-button (click)=\"addSection()\">+ Add Section</button>\n </div>\n\n </mat-card>\n <button mat-raised-button (click)=\"addSection()\" *ngIf=\"entry.sections?.length === 0\">+ Add Section</button>\n <button mat-raised-button (click)=\"addSection()\" *ngIf=\"!entry.sections\">+ Add Section</button>\n\n <div class=\"controls\">\n <button mat-raised-button (click)=\"resetDate()\">Reset the Date</button>\n <button mat-raised-button (click)=\"delete()\">Delete</button>\n <button mat-raised-button [disabled]=\"scheduling\" (click)=\"publish()\">Publish</button>\n <button mat-raised-button [disabled]=\"scheduling\" (click)=\"exposeScheduling()\">Schedule</button>\n <button mat-raised-button (click)=\"startNew()\">New</button>\n </div>\n <p *ngIf=\"scheduling\">Publishing is disabled while scheduling is being used.</p>\n\n <mat-card [hidden]=\"!scheduling\">\n <h4>\n Scheduling Options\n </h4>\n\n <div class=\"form-group\">\n <mat-form-field class=\"full-width\">\n <mat-label>Date</mat-label>\n <input\n #futurePublishDate\n matInput\n [matDatepicker]=\"picker\"\n [min]=\"today\"\n (dateInput)=\"onDateChange()\"\n (dateChange)=\"onDateChange()\"\n [(ngModel)]=\"entry.future_publish_date\"\n name=\"future-publish-date\"\n >\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker></mat-datepicker>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Time</mat-label>\n <input matInput [matTimepicker]=\"pickertwo\">\n <mat-timepicker-toggle matIconSuffix [for]=\"pickertwo\"/>\n <mat-timepicker #pickertwo/>\n </mat-form-field>\n <p>Times are represented in your local time zone</p>\n </div>\n\n <div mat-dialog-actions>\n <div class=\"controls\">\n <button mat-raised-button (click)=\"cancelScheduling()\">Cancel Scheduling</button>\n </div>\n </div>\n <p>This post will be published as soon as its scheduled date and time arrive. No further action is needed by you. If you do not\n want to use scheduling, you can cancel scheduling and manually publish.</p>\n </mat-card>\n </form>\n <div class=\"controls\">\n <button mat-raised-button (click)=\"seeEntries()\">See Entries</button>\n <button *ngIf=\"!this.entry\" mat-raised-button (click)=\"startNew()\">New</button>\n </div>\n</div>\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\nimport {StaticHtmlService} from '../../services/static-html.service';\n\n@Component({\n selector: 'app-static-html',\n templateUrl: './static-html.component.html',\n styleUrls: ['./static-html.component.css']\n})\nexport class StaticHtmlComponent implements OnInit, OnChanges {\n\n innerHtml: SafeHtml;\n @Input() value;\n\n constructor(\n private staticHtmlService: StaticHtmlService,\n private domSanitizer: DomSanitizer\n ) { }\n\n refreshContent() {\n this.innerHtml = this.domSanitizer.bypassSecurityTrustHtml(this.staticHtmlService.mapStaticHtml(this.value, false));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.refreshContent();\n }\n\n ngOnInit(): void {\n this.refreshContent();\n }\n\n}\n","<div [innerHtml]=\"innerHtml\">\n</div>\n","import {Pipe, PipeTransform, NgZone, ChangeDetectorRef, OnDestroy} from \"@angular/core\";\n@Pipe({\n name: 'timeAgo',\n pure: false\n})\nexport class TimeAgoPipe implements PipeTransform, OnDestroy {\n private timer: number;\n constructor(private changeDetectorRef: ChangeDetectorRef, private ngZone: NgZone) {}\n transform(value:string) {\n this.removeTimer();\n let d = new Date(value);\n let now = new Date();\n let seconds = Math.round(Math.abs((now.getTime() - d.getTime())/1000));\n let timeToUpdate = (Number.isNaN(seconds)) ? 1000 : this.getSecondsUntilUpdate(seconds) *1000;\n this.timer = this.ngZone.runOutsideAngular(() => {\n if (typeof window !== 'undefined') {\n return window.setTimeout(() => {\n this.ngZone.run(() => this.changeDetectorRef.markForCheck());\n }, timeToUpdate);\n }\n return null;\n });\n let minutes = Math.round(Math.abs(seconds / 60));\n let hours = Math.round(Math.abs(minutes / 60));\n let days = Math.round(Math.abs(hours / 24));\n let months = Math.round(Math.abs(days/30.416));\n let years = Math.round(Math.abs(days/365));\n if (Number.isNaN(seconds)){\n return '';\n } else if (seconds <= 45) {\n return 'a few seconds ago';\n } else if (seconds <= 90) {\n return 'a minute ago';\n } else if (minutes <= 45) {\n return minutes + ' minutes ago';\n } else if (minutes <= 90) {\n return 'an hour ago';\n } else if (hours <= 22) {\n return hours + ' hours ago';\n } else if (hours <= 36) {\n return 'a day ago';\n } else if (days <= 25) {\n return days + ' days ago';\n } else if (days <= 45) {\n return 'a month ago';\n } else if (days <= 345) {\n return months + ' months ago';\n } else if (days <= 545) {\n return 'a year ago';\n } else { // (days > 545)\n return years + ' years ago';\n }\n }\n ngOnDestroy(): void {\n this.removeTimer();\n }\n private removeTimer() {\n if (this.timer) {\n window.clearTimeout(this.timer);\n this.timer = null;\n }\n }\n private getSecondsUntilUpdate(seconds:number) {\n let min = 60;\n let hr = min * 60;\n let day = hr * 24;\n if (seconds < min) { // less than 1 min, update every 2 secs\n return 2;\n } else if (seconds < hr) { // less than an hour, update every 30 secs\n return 30;\n } else if (seconds < day) { // less then a day, update every 5 mins\n return 300;\n } else { // update every hour\n return 3600;\n }\n }\n}\n","import {AfterViewChecked, Component, Input, NgZone, OnDestroy, OnInit, input, signal} from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, NavigationStart, Router} from '@angular/router';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\n\nimport {Entry} from '../../data/entry';\nimport {Content} from '../../data/content';\nimport {ContentType} from '../../data/content-type';\nimport {Identity} from '../../data/identity';\n\nimport {IdentityService} from '../../services/identity.service';\nimport {EntryService} from '../../services/entry.service';\nimport {CommentService} from '../../services/comment.service';\nimport {PrismService} from '../../services/prism.service';\n\nimport {EntryCreatorComponent} from '../../components/entry-creator/entry-creator.component';\n\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\n\nimport {CommonModule} from '@angular/common';\nimport {MatSelectModule} from '@angular/material/select';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatFormFieldModule} from '@angular/material/form-field';\n\nimport {MatCardModule} from '@angular/material/card';\nimport {MatChipsModule} from '@angular/material/chips';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatRadioModule} from '@angular/material/radio';\n\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatTimepickerModule} from '@angular/material/timepicker';\nimport {provideNativeDateAdapter} from '@angular/material/core';\n\nimport {StaticHtmlComponent} from '../static-html/static-html.component';\nimport {TimeAgoPipe} from '../../pipes/TimeAgoPipe';\n\n@Component({\n selector: 'app-entry-renderer',\n templateUrl: './entry-renderer.component.html',\n styleUrls: ['./entry-renderer.component.scss'],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatCardModule,\n MatChipsModule,\n MatIconModule,\n MatAutocompleteModule,\n MatRadioModule,\n MatInputModule,\n MatSelectModule,\n MatDatepickerModule,\n MatTimepickerModule,\n StaticHtmlComponent,\n TimeAgoPipe,\n ],\n animations: [\n trigger('entryAnimation', [\n state('in', style({ opacity: '1' })),\n state('out', style({ opacity: '0' })),\n transition('in => out', [\n animate('300ms ease-out', style({ opacity: '0'}))\n ]),\n transition('out => in', [\n animate('300ms ease-in', style({ opacity: '1'}))\n ])\n ]),\n ]\n})\nexport class EntryRendererComponent implements OnInit, AfterViewChecked {\n\n state: 'in' | 'out' = 'out';\n\n me: Identity;\n entry = input<Entry>();\n\n ContentType = ContentType;\n comments = [];\n commentText = '';\n\n alert = alert;\n\n @Input() editMode = false;\n\n constructor(\n private prismService: PrismService,\n private ngZone: NgZone,\n private identityService: IdentityService,\n private commentService: CommentService,\n private router: Router,\n private entryService: EntryService,\n ) {\n }\n\n\n ngOnInit() {\n this.identityService.getMe().subscribe((me) => {\n this.me = me;\n });\n if(this.entry()) {\n this.commentService.getComments(this.entry().id).subscribe((response) => {\n this.comments = (response as any).results;\n for (const comment of this.comments) {\n comment.date_obj = new Date(comment.created_on);\n }\n });\n }\n\n let showFn = () => {\n this.state = 'in';\n }\n\n setTimeout(showFn.bind(this), 50)\n }\n\n ngAfterViewChecked(): void {\n if (!this.editMode) {\n this.ngZone.runOutsideAngular(() => {\n try {\n this.prismService.highlightAll();\n } catch (e) {\n\n }\n });\n }\n }\n edit(entry: Entry) {\n entry.version++;\n entry.published = false;\n delete entry.publish_date;\n\n this.entryService.create(entry).subscribe((response) => {\n localStorage.setItem(EntryCreatorComponent.CURRENT_ENTRY_KEY, JSON.stringify(response));\n this.router.navigateByUrl('create/v2(left-col:create//right-col:create)').then(() => {\n\n });\n });\n }\n postComment(e) {\n e.preventDefault();\n if (this.commentText !== '') {\n this.commentService.postComment({entry: this.entry().id, content: this.commentText}).subscribe((comment) => {\n this.comments.push(comment);\n });\n this.commentText = '';\n }\n }\n mediaIsZip(content: Content): boolean {\n let mediaIsZip = false;\n if (content.additional) {\n for (const add of content.additional) {\n if (add.key === Content.KEY_MIMETYPE) {\n if (add.value === 'application/zip') {\n mediaIsZip = true;\n }\n }\n }\n }\n return mediaIsZip;\n }\n approve(comment: any) {\n comment.approved = !comment.approved;\n this.commentService.patchComment(Object.assign({}, {approved: true}, comment)).subscribe((rComment) => {\n\n });\n }\n unapprove(comment: any) {\n comment.approved = !comment.approved;\n this.commentService.patchComment(Object.assign({}, {approved: false}, comment)).subscribe((rComment) => {\n\n });\n }\n}\n","<div\n [@entryAnimation]=\"state\"\n *ngIf=\"entry()\"\n>\n <h2>{{entry()?.title}}</h2>\n <a *ngIf=\"me?.id === entry()?.getProp('author_id')\" href=\"javascript:void(0)\" (click)=\"edit(entry())\"><h4>[Edit]</h4></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 <p *ngIf=\"entry()?.tags?.length > 0\">Tags: <span *ngFor=\"let tag of entry()?.tags; let last = last\">{{tag}}<ng-container *ngIf=\"!last\"> |\n </ng-container></span><span *ngIf=\"entry()?.views\">, {{entry()._friendly_views}} views</span></p>\n <br>\n\n <ng-container *ngFor=\"let section of entry()?.sections\">\n <h4>{{section?.subheading}}</h4>\n <ng-container *ngFor=\"let content of section?.contents\">\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><br>\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\n <ng-container *ngSwitchCase=\"ContentType.MEDIA\">\n <ng-container *ngIf=\"mediaIsZip(content)\">\n <div class=\"download\">\n <a href=\"content?.value\">{{content?.description}}</a>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!mediaIsZip(content)\">\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>\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 <ng-container>\n <h2>Comments</h2>\n <p *ngIf=\"comments?.length == 0\">There are no comments yet.</p>\n <ng-container *ngIf=\"comments?.length > 0\">\n <div *ngFor=\"let comment of comments\">\n <mat-card style=\"margin-bottom: 20px;\" class=\"restrict\">\n <mat-card-title><img class=\"gravatar\" src=\"{{comment.gravatar_url}} + ?s=30\"> {{comment.user_display_name}}</mat-card-title>\n <mat-card-subtitle>{{comment.date_obj | timeAgo}}</mat-card-subtitle>\n <mat-card-content>\n <p>{{comment.content}}</p>\n <ng-container *ngIf=\"me?.id === entry()?.__server_generated_properties?.author_id\">\n <a href=\"javascript:void(0);\" *ngIf=\"!comment?.approved\" (click)=\"approve(comment)\">Approve</a>\n <a href=\"javascript:void(0);\" *ngIf=\"comment?.approved\" (click)=\"unapprove(comment)\">Unapprove</a>\n </ng-container>\n </mat-card-content>\n </mat-card>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!me\">\n <a href=\"/signup\">Signup</a> or <a href=\"/login\">login</a> to join the conversation!\n </ng-container>\n <ng-container *ngIf=\"me && !me?.comments_public\">\n <p>Note, your comments will not be public be default. It is possible I will make your comments public, but for now comments are just between you and me.</p>\n </ng-container>\n <ng-container *ngIf=\"me\">\n <h2 style=\"width: 100%;\">Leave a Comment</h2>\n <br>\n <mat-form-field class=\"restrict\" style=\"width: 100%;\" appearance=\"outline\">\n <mat-label>Comment</mat-label>\n <textarea [(ngModel)]=\"commentText\" (keydown.enter)=\"postComment($event)\" matInput></textarea>\n </mat-form-field>\n <br>\n <button (click)=\"postComment($event)\" style=\"text-align: right;\" mat-button>Submit</button>\n </ng-container>\n <div style=\"margin-bottom: 30px;\"></div>\n</div>\n\n","import {Component, Input, OnInit} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {Entry} from '../../data/entry';\nimport {ContentType} from '../../data/content-type';\nimport {CommonModule} from '@angular/common';\nimport {StaticHtmlComponent} from '../static-html/static-html.component';\nimport {TimeAgoPipe} from '../../pipes/TimeAgoPipe';\n\n@Component({\n selector: 'app-entry-summary',\n templateUrl: './entry-summary.component.html',\n styleUrls: ['./entry-summary.component.scss'],\n imports: [\n CommonModule,\n StaticHtmlComponent,\n TimeAgoPipe,\n ]\n})\nexport class EntrySummaryComponent implements OnInit {\n\n ContentType = ContentType;\n\n @Input() entry: Entry;\n\n\n constructor(\n private router: Router,\n ) {\n }\n\n ngOnInit(): void {\n }\n\n routeTo(entry) {\n this.router.navigate(['/', 'blog', entry.slug]).then(() => {\n\n });\n }\n}\n","\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","import {Component, Input, OnInit} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Entry} from '../../data/entry';\nimport {EntryService} from '../../services/entry.service';\nimport {EntryRendererComponent} from '../entry-renderer/entry-renderer.component';\n//import {EntrySummaryComponent} from '../entry-summary/entry-summary.component';\n\n@Component({\n selector: 'app-json-renderer',\n templateUrl: './json-renderer.component.html',\n styleUrls: ['./json-renderer.component.scss'],\n imports: [\n CommonModule,\n EntryRendererComponent,\n //EntrySummaryComponent\n ]\n})\nexport class JsonRendererComponent implements OnInit {\n\n JSON = JSON;\n @Input() entry: Entry;\n\n constructor(\n private entryService: EntryService,\n ) {\n }\n\n ngOnInit() {\n this.entryService.currentlyEditedEntry.subscribe((entry) => {\n console.log(entry);\n this.entry = entry;\n });\n }\n\n}\n","<div class=\"section json-render json\">\n <app-entry-renderer [editMode]=\"true\" [entry]=\"entry\"></app-entry-renderer>\n <pre *ngIf=\"entry\">{{JSON.stringify(entry)}}</pre>\n</div>\n","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\nimport {CommonModule} from '@angular/common';\n\nimport {Entry} from '../../data/entry';\nimport {EntryService} from '../../services/entry.service';\n\nimport {EntrySummaryComponent} from '../entry-summary/entry-summary.component';\nimport {MatCardModule} from '@angular/material/card';\n\nimport {map} from 'lodash';\n\n@Component({\n selector: 'app-landing-page',\n templateUrl: './landing-page.component.html',\n styleUrls: ['./landing-page.component.scss'],\n imports: [\n CommonModule,\n EntrySummaryComponent,\n MatCardModule,\n ]\n})\nexport class LandingPageComponent implements OnInit, OnDestroy {\n\n JSON = JSON;\n\n entries;\n source;\n sourceSub;\n\n constructor(\n private router: Router,\n private entryService: EntryService,\n ) {\n\n }\n\n ngOnInit() {\n this.entryService.get().subscribe((response) => {\n this.entries = map((response as any).results.slice(0, 3), (result) => {\n return { id: result.id, entry: new Entry(result)};\n });\n });\n }\n\n ngOnDestroy(): void {\n if (this.sourceSub) {\n this.sourceSub.unsubscribe();\n this.sourceSub = null;\n }\n }\n\n}\n","<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","import {Component, Input, OnInit} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport {Entry} from '../../data/entry';\nimport {EntryService} from '../../services/entry.service';\n\nimport {MatCardModule} from '@angular/material/card';\nimport {DragDropModule} from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'app-outline-view',\n templateUrl: './outline-view.component.html',\n styleUrls: ['./outline-view.component.scss'],\n imports: [\n CommonModule,\n MatCardModule,\n DragDropModule\n ]\n})\nexport class OutlineViewComponent implements OnInit {\n\n entry: Entry;\n Math = Math;\n\n constructor(\n private entryService: EntryService\n ) {\n }\n\n ngOnInit() {\n this.entryService.currentlyEditedEntry.subscribe((entry) => {\n this.entry = entry;\n });\n }\n\n sectionDrop(e) {\n const entry = this.entry;\n const diff = e.currentIndex - e.previousIndex;\n entry.sections[e.previousIndex].order = e.currentIndex * 10 + (diff > 0 ? 1 : -1);\n entry.sort();\n this.entryService.currentlyEditedEntry.next(this.entry);\n }\n\n contentDrop(e, section) {\n const entry = this.entry;\n const diff = e.currentIndex - e.previousIndex;\n section.contents[e.previousIndex].order = e.currentIndex * 10 + (diff > 0 ? 1 : -1);\n entry.sort();\n this.entryService.currentlyEditedEntry.next(this.entry);\n }\n}\n","<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","import {Component, EventEmitter, OnDestroy, OnInit, Output, ElementRef, ViewChild, Renderer2} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport {Router} from '@angular/router';\nimport { FormControl } from '@angular/forms';\nimport {filter} from 'lodash';\nimport {map} from 'lodash';\nimport {debounceTime} from 'rxjs/operators';\n\nimport {Entry} from '../../data/entry';\nimport {Identity} from '../../data/identity';\nimport {ListResponse} from '../../data/list-response';\n\nimport {EntryService} from '../../services/entry.service';\nimport {IdentityService} from '../../services/identity.service';\n\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\nimport {MatSidenavModule} from '@angular/material/sidenav';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatListModule} from '@angular/material/list';\n\n@Component({\n selector: 'app-side-navigation',\n templateUrl: './side-navigation.component.html',\n styleUrls: ['./side-navigation.component.scss'],\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatProgressSpinnerModule,\n MatSidenavModule,\n MatInputModule,\n FormsModule,\n ReactiveFormsModule,\n MatListModule,\n ],\n animations: [\n trigger('sideNavAnimation', [\n state('in', style({ transform: 'translateX(0%)' })),\n state('out', style({ transform: 'translateX(110%)' })),\n transition('in => out', [\n animate('100ms ease-out', style({ transform: 'translateX(110%)' }))\n ]),\n transition('out => in', [\n animate('100ms ease-in', style({ transform: 'translateX(0%)' }))\n ])\n ]),\n ]\n})\nexport class SideNavigationComponent implements OnInit, OnDestroy {\n\n state: 'in' | 'out' = 'out';\n\n sourceSub;\n identity: Identity;\n\n response: ListResponse<Entry> = null;\n debounceTimeout = 200;\n loading = true;\n\n entries: {id: string, entry: Entry}[] = [];\n entriesByMonthAndYear: {month_year: string, month_year_number: number, entries: Entry[]}[] = [];\n\n searchTerm = \"\";\n\n doSearch: EventEmitter<string> = new EventEmitter();\n\n @ViewChild('navcontainer', { static: false }) divNav: ElementRef;\n\n constructor(\n private entryService: EntryService,\n private router: Router,\n private identityService: IdentityService,\n private renderer: Renderer2,\n ) {\n }\n\n ngOnInit() {\n\n this.doSearch.pipe(debounceTime(this.debounceTimeout)).subscribe((result) => {\n this.searchEntries(result);\n });\n\n this.identityService.getMe().subscribe((identity) => {\n this.identity = identity;\n }, (err) => {\n this.identity = null;\n });\n\n this.getEntries();\n\n }\n\n getMore() {\n this.getEntriesWithUrl(this.response.next, false);\n }\n\n getEntriesWithUrl(url: string, wipe = true) {\n this.loading = true;\n this.entryService.getListByUrl(url).subscribe((response) => {\n this.response = response;\n this.entries = this.entries.concat(\n map((response as any).results, (result) => {\n return { id: result.id, entry: new Entry(result)};\n })\n );\n this.organizeEntries(wipe);\n });\n }\n\n organizeEntries(wipe = true) {\n if (wipe) {\n this.state = 'out';\n }\n let organizeEntriesFn = () => {\n if(wipe) {\n this.entriesByMonthAndYear = [];\n }\n let newEntries = JSON.parse(JSON.stringify(this.entriesByMonthAndYear));\n for (const entryWrapper of this.entries) {\n const entry = entryWrapper.entry;\n const create_date = new Date(entry.create_date);\n const month = create_date.getMonth();\n const year = create_date.getFullYear();\n const key = month + '/' + year;\n const sort_index = (year * 100) + month;\n\n const containers = filter(newEntries, (entryContainer) => entryContainer.month_year === key);\n\n if (containers.length > 0) {\n const container = containers[0];\n const entriesWithId = filter(container.entries, (e) => e.id === entryWrapper.entry.id);\n if (entriesWithId.length === 0) {\n container.entries.push(entry);\n }\n } else {\n const newContainer = {month_year: key, month_year_number: sort_index, entries: [entry]};\n newEntries.push(newContainer);\n }\n }\n newEntries.sort(\n (entry_a, entry_b) => {\n return entry_a.month_year_number - entry_b.month_year_number;\n });\n newEntries.reverse();\n\n let setEntriesFn = () => {\n this.entriesByMonthAndYear = newEntries;\n this.loading = false;\n if (wipe) {\n this.state = 'in';\n }\n }\n setTimeout(setEntriesFn.bind(this), 400)\n }\n setTimeout(organizeEntriesFn.bind(this), 400)\n }\n\n getEntries() {\n this.loading = true;\n this.entryService.get().subscribe((response) => {\n this.response = response;\n this.entries = map(response.results, (result) => {\n return { id: result.id, entry: new Entry(result)};\n });\n this.organizeEntries();\n });\n }\n\n searchEntries(searchTerm: string) {\n\n let turnOnLoading = () => {\n this.loading = true;\n }\n setTimeout(turnOnLoading.bind(this), this.debounceTimeout + 100);\n if (searchTerm !== \"\") {\n this.entryService.search(searchTerm).subscribe((response) => {\n this.response = response;\n this.entries = map(response.results, (result) => {\n return { id: result.id, entry: new Entry(result)};\n });\n this.organizeEntries();\n });\n } else {\n this.getEntries();\n }\n }\n\n render() {\n }\n\n routeTo(entry, path = \"\") {\n if (!entry) {\n this.router.navigateByUrl(path).then(() => {\n\n });\n } else {\n this.router.navigate(['/', 'blog', entry.slug]).then(() => {\n // Noop\n });\n }\n }\n\n getMonthAndYearFromKey(key: string) {\n let subheading = '';\n const parts = key.split('/');\n\n switch (Number(parts[0])) {\n case 0:\n subheading += 'January ';\n break;\n case 1:\n subheading += 'February ';\n break;\n case 2:\n subheading += 'March ';\n break;\n case 3:\n subheading += 'April ';\n break;\n case 4:\n subheading += 'May ';\n break;\n case 5:\n subheading += 'June ';\n break;\n case 6:\n subheading += 'July ';\n break;\n case 7:\n subheading += 'August ';\n break;\n case 8:\n subheading += 'September ';\n break;\n case 9:\n subheading += 'October ';\n break;\n case 10:\n subheading += 'November ';\n break;\n case 11:\n subheading += 'December ';\n break;\n default:\n subheading += 'January ';\n }\n subheading += parts[1];\n\n return subheading;\n }\n\n ngOnDestroy(): void {\n if (this.sourceSub) {\n this.sourceSub.unsubscribe();\n this.sourceSub = null;\n }\n }\n\n searchControl = new FormControl('');\n\n onSearchChange(searchValue: string): void {\n this.doSearch.emit(searchValue);\n }\n}\n","<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\n class=\"progress\"\n [hidden]=\"!loading\"\n >\n <mat-progress-spinner\n style=\"margin-left: 16px;\"\n [diameter]=20\n mode=\"indeterminate\"\n >\n </mat-progress-spinner>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list>\n @for(container of entriesByMonthAndYear; track container) {\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n @for(entry of container.entries; track entry.id) {\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n }\n }\n </mat-nav-list>\n\n <a\n class=\"sidelink\"\n *ngIf=\"this?.response?.next && !loading\"\n (click)=\"getMore()\"\n href=\"javascript:void(0);\">More...</a>\n </div>\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n <mat-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null, 'create/v2(left-col:create//right-col:create)')\">Create</a>\n </mat-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n","import { Component, HostListener, OnDestroy, OnInit } from '@angular/core';\nimport {RouterModule, NavigationEnd, Router} from '@angular/router';\nimport {Subject, Subscription} from 'rxjs';\nimport {debounceTime} from 'rxjs/operators';\nimport {MatSidenavModule} from '@angular/material/sidenav';\n\n@Component({\n selector: 'lib-main',\n templateUrl: './main.component.html',\n styleUrls: ['./main.component.css'],\n imports: [\n RouterModule,\n MatSidenavModule,\n ]\n})\nexport class MainComponent implements OnInit, OnDestroy {\n\n loaded = true;\n subs: Subscription = new Subscription();\n showRightCol: boolean;\n showLeftCol: boolean;\n\n public innerWidth: any;\n\n resizeSubject = new Subject<number>();\n\n constructor(\n private router: Router,\n ) {\n\n }\n\n ngOnInit(): void {\n this.subs.add(this.router.events.subscribe((e) => {\n if (e instanceof NavigationEnd) {\n if (e.urlAfterRedirects.includes('create')) {\n this.showLeftCol = true;\n this.showRightCol = true;\n } else {\n this.showLeftCol = true;\n this.showRightCol = false;\n this.innerWidth = window.innerWidth;\n this.collapseLeftColIfTooNarrow();\n }\n }\n }));\n\n this.subs.add(this.resizeSubject.pipe(\n debounceTime(100)\n ).subscribe((width) => {\n this.innerWidth = width;\n this.collapseLeftColIfTooNarrow();\n }));\n }\n\n collapseLeftColIfTooNarrow() {\n this.showLeftCol = this.innerWidth >= 800;\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.resizeSubject.next(window.innerWidth);\n }\n\n ngOnDestroy(): void {\n this.subs.unsubscribe();\n }\n\n}\n","<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","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\nimport {InteractionService} from '../../services/analytics/interaction.service';\nimport {ViewService} from '../../services/analytics/view.service';\nimport {EntryService} from '../../services/entry.service';\nimport {Interaction} from '../../services/interaction';\nimport {View} from '../../services/view';\nimport {EntryRendererComponent} from '../entry-renderer/entry-renderer.component';\n\n@Component({\n selector: 'lib-entry-renderer-wrapper',\n templateUrl: './entry-renderer-wrapper.component.html',\n styleUrls: ['./entry-renderer-wrapper.component.css'],\n imports: [\n CommonModule,\n EntryRendererComponent\n ]\n})\nexport class EntryRendererWrapperComponent implements OnInit, OnDestroy {\n entries;\n currentEntry;\n seeAllEntries = false;\n routerSub;\n\n seeAll(toggle: boolean) {\n this.seeAllEntries = toggle;\n }\n\n constructor(\n private entryService: EntryService,\n private router: Router,\n private route: ActivatedRoute,\n private viewService: ViewService,\n private interactionService: InteractionService\n ) {\n }\n\n getEntry() {\n const slug = this.route.snapshot.paramMap.get('slug');\n if (slug) {\n this.entryService.getBySlug(slug).subscribe((response) => {\n this.currentEntry = response;\n const view = new View();\n view.entry = this.currentEntry.id;\n\n this.viewService.create(view).subscribe((viewResponse) => {\n // Noop\n });\n });\n }\n\n this.route.queryParams.subscribe(params => {\n const campaign = params['campaign'];\n if (campaign && campaign !== '') {\n\n const interaction = new Interaction();\n interaction.content = {'campaign': campaign, slug};\n this.interactionService.create(interaction).subscribe((response) => {\n\n });\n setTimeout(() => {\n const urlMinsCampaign = this.router.url.replace(new RegExp('.campaign=' + campaign), '');\n this.router.navigateByUrl(urlMinsCampaign);\n }, 0);\n }\n });\n }\n\n ngOnInit() {\n this.routerSub = this.router.events.subscribe((e) => {\n if (e instanceof NavigationEnd) {\n this.currentEntry = null;\n this.seeAll(false);\n setTimeout(() => {\n this.getEntry();\n }, 10);\n }\n });\n\n this.getEntry();\n }\n\n ngOnDestroy(): void {\n if (this.routerSub) {\n this.routerSub.complete();\n this.routerSub = null;\n }\n }\n\n}\n","<div class=\"rendered-entry section\">\n <app-entry-renderer *ngIf=\"currentEntry\" [entry]=\"currentEntry\"></app-entry-renderer>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport Autolinker from 'autolinker';\n\n@Pipe({ name: 'linky' })\nexport class LinkyPipe implements PipeTransform {\n transform(value: string, options?: any): string {\n return Autolinker.link(value, Object.assign({}, options, {newWindow: true, stripPrefix: false}));\n }\n}\n","import {Routes as AngularRoutes, RouterModule} from '@angular/router';\nimport {EntryCreatorComponent} from '../components/entry-creator/entry-creator.component';\nimport {EntryRendererWrapperComponent} from '../components/entry-renderer-wrapper/entry-renderer-wrapper.component';\nimport {JsonRendererComponent} from '../components/json-renderer/json-renderer.component';\nimport {MainComponent} from '../components/main/main.component';\nimport {OutlineViewComponent} from '../components/outline-view/outline-view.component';\nimport {SideNavigationComponent} from '../components/side-navigation/side-navigation.component';\n\nconst routes: AngularRoutes = [\n {path: '', component: SideNavigationComponent, outlet: 'left-col'},\n {\n path: 'landing',\n component: MainComponent\n },\n {path: 'blog/:slug', component: EntryRendererWrapperComponent},\n {path: 'create', component: EntryCreatorComponent},\n {path: 'create', component: OutlineViewComponent, outlet: 'left-col'},\n {path: 'create', component: JsonRendererComponent, outlet: 'right-col'},\n {path: '', redirectTo: '/landing', pathMatch: 'full'},\n {path: '**', redirectTo: '/404error'}\n];\n\nexport class Routes {\n routes: AngularRoutes = routes;\n}\n","export class SchedulePublishDialogData {\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport {MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\nimport {SchedulePublishDialogData} from './schedule-publish-dialog-data';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatTimepickerModule} from '@angular/material/timepicker';\n\n@Component({\n selector: 'lib-schedule-publish-dialog',\n templateUrl: './schedule-publish-dialog.component.html',\n styleUrls: ['./schedule-publish-dialog.component.css'],\n imports: [\n MatFormFieldModule,\n MatDatepickerModule,\n MatTimepickerModule\n ]\n})\nexport class SchedulePublishDialogComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef<SchedulePublishDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: SchedulePublishDialogData,\n ) { }\n\n ngOnInit(): void {\n }\n\n onNoClick(): void {\n }\n\n onYesClick(): void {\n this.dialogRef.close('test');\n }\n}\n","<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 [matTimepicker]=\"timepicker\" readonly>\n<mat-timepicker #timepicker></mat-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","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {BrowserModule} from '@angular/platform-browser';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\n\nimport {DragDropModule} from '@angular/cdk/drag-drop';\nimport {MatDividerModule} from '@angular/material/divider';\nimport {MatCardModule} from '@angular/material/card';\nimport {MatSidenavModule} from '@angular/material/sidenav';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatListModule} from '@angular/material/list';\nimport {MatRadioModule} from '@angular/material/radio';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatChipsModule} from '@angular/material/chips';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatNativeDateModule} from '@angular/material/core';\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatTableModule} from '@angular/material/table';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\n\nimport {FontAwesomeModule, FaIconLibrary} from '@fortawesome/angular-fontawesome';\nimport {faSpinner} from '@fortawesome/free-solid-svg-icons';\nimport {FileUploadModule} from 'ng2-file-upload';\n\nimport { QuillModule } from 'ngx-quill';\nimport {provideQuillConfig} from 'ngx-quill';\n\nimport { CommentService } from './services/comment.service';\nimport { EntryService } from './services/entry.service';\nimport { UploadService } from './services/upload.service';\nimport { PrismService } from './services/prism.service';\nimport { IdentityService } from './services/identity.service';\nimport { DjangoRestFrameworkEndpointService } from './services/django-rest-framework-endpoint.service';\nimport {EntryRendererComponent} from './components/entry-renderer/entry-renderer.component';\nimport {EntryCreatorComponent} from './components/entry-creator/entry-creator.component';\nimport {OutlineViewComponent} from './components/outline-view/outline-view.component';\nimport {SideNavigationComponent} from './components/side-navigation/side-navigation.component';\nimport {LandingPageComponent} from './components/landing-page/landing-page.component';\nimport {JsonRendererComponent} from './components/json-renderer/json-renderer.component';\nimport {EntrySummaryComponent} from './components/entry-summary/entry-summary.component';\nimport { MediaUploadModalComponent } from './components/media-upload-modal/media-upload-modal.component';\nimport { EntrySelectorDialogComponent } from './components/entry-selector-dialog/entry-selector-dialog.component';\nimport {TimeAgoPipe} from './pipes/TimeAgoPipe';\nimport {LinkyPipe} from './pipes/LinkyPipe';\nimport { StaticHtmlComponent } from './components/static-html/static-html.component';\nimport {TagService} from './services/tag.service';\nimport { MainComponent } from './components/main/main.component';\nimport { EntryRendererWrapperComponent } from './components/entry-renderer-wrapper/entry-renderer-wrapper.component';\nimport {RouterModule} from '@angular/router';\nimport { SchedulePublishDialogComponent } from './components/schedule-publish-dialog/schedule-publish-dialog.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n ReactiveFormsModule,\n DragDropModule,\n MatCardModule,\n MatSidenavModule,\n MatButtonModule,\n MatInputModule,\n MatListModule,\n MatRadioModule,\n MatDialogModule,\n MatCheckboxModule,\n MatDividerModule,\n MatAutocompleteModule,\n MatChipsModule,\n MatIconModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatProgressSpinnerModule,\n FontAwesomeModule,\n FileUploadModule,\n EntryRendererComponent,\n EntryCreatorComponent,\n LandingPageComponent,\n SideNavigationComponent,\n OutlineViewComponent,\n JsonRendererComponent,\n EntrySummaryComponent,\n EntrySelectorDialogComponent,\n MediaUploadModalComponent,\n TimeAgoPipe,\n LinkyPipe,\n StaticHtmlComponent,\n MainComponent,\n EntryRendererWrapperComponent,\n SchedulePublishDialogComponent,\n ],\n providers: [\n CommentService,\n EntryService,\n UploadService,\n PrismService,\n IdentityService,\n DjangoRestFrameworkEndpointService,\n TagService\n ],\n exports: [\n EntryRendererComponent,\n EntryCreatorComponent,\n LandingPageComponent,\n SideNavigationComponent,\n OutlineViewComponent,\n JsonRendererComponent,\n EntrySummaryComponent,\n EntrySelectorDialogComponent,\n MediaUploadModalComponent,\n TimeAgoPipe,\n LinkyPipe,\n StaticHtmlComponent,\n MainComponent,\n EntryRendererWrapperComponent,\n ]\n})\nexport class CoreModule {\n constructor(\n private library: FaIconLibrary\n ) {\n this.library.addIcons(faSpinner);\n }\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib/data/base';\nexport * from './lib/data/content-type';\nexport * from './lib/data/content';\nexport * from './lib/data/entry';\nexport * from './lib/data/guid';\nexport * from './lib/data/identity';\nexport * from './lib/data/list-response';\nexport * from './lib/data/section';\nexport * from './lib/data/core-event';\nexport * from './lib/data/core-event-type.enum';\nexport * from './lib/data/visitor-profile';\n\nexport * from './lib/services/comment.service';\nexport * from './lib/services/django-rest-framework-endpoint.service';\nexport * from './lib/services/entry.service';\nexport * from './lib/services/identity.service';\nexport * from './lib/services/prism.service';\nexport * from './lib/services/upload.service';\nexport * from './lib/services/upload';\nexport * from './lib/services/analytics/view.service';\nexport * from './lib/services/analytics/interaction.service';\nexport * from './lib/services/view';\nexport * from './lib/services/interaction';\nexport * from './lib/services/visitor-profile.service';\nexport * from './lib/services/static-html.service';\nexport * from './lib/services/tag.service';\nexport * from './lib/services/utility';\n\nexport * from './lib/components/entry-creator/entry-creator.component';\nexport * from './lib/components/entry-renderer/entry-renderer.component';\nexport * from './lib/components/entry-selector-dialog/entry-selector-dialog.component';\nexport * from './lib/components/entry-summary/entry-summary.component';\nexport * from './lib/components/json-renderer/json-renderer.component';\nexport * from './lib/components/landing-page/landing-page.component';\nexport * from './lib/components/media-upload-modal/media-upload-modal.component';\nexport * from './lib/components/outline-view/outline-view.component';\nexport * from './lib/components/side-navigation/side-navigation.component';\nexport * from './lib/components/static-html/static-html.component';\nexport * from './lib/components/main/main.component';\nexport * from './lib/components/entry-renderer-wrapper/entry-renderer-wrapper.component';\n\nexport * from './lib/pipes/LinkyPipe';\nexport * from './lib/pipes/TimeAgoPipe';\n\nexport * from './lib/routing/routes';\n\nexport * from './lib/core.module';\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Utility","i1","Content","ContentType","Section","Entry","i2.EntryService","i2.UploadService","i3","i4","i5","i6","loMap","i3.TagService","i4.IdentityService","i15","i1.StaticHtmlService","i2","i1.PrismService","i2.IdentityService","i3.CommentService","i5.EntryService","i1.EntryService","map","i3.IdentityService","i7","i8","i9","i3.ViewService","i4.InteractionService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thecodeblogs-blog.mjs","sources":["../../../projects/core/src/lib/data/guid.ts","../../../projects/core/src/lib/data/base.ts","../../../projects/core/src/lib/data/content-type.ts","../../../projects/core/src/lib/data/content.ts","../../../projects/core/src/lib/data/entry.ts","../../../projects/core/src/lib/data/list-response.ts","../../../projects/core/src/lib/data/section.ts","../../../projects/core/src/lib/data/core-event.ts","../../../projects/core/src/lib/data/core-event-type.enum.ts","../../../projects/core/src/lib/data/visitor-profile.ts","../../../projects/core/src/lib/services/comment.service.ts","../../../projects/core/src/lib/services/django-rest-framework-endpoint.service.ts","../../../projects/core/src/lib/services/utility.ts","../../../projects/core/src/lib/services/entry.service.ts","../../../projects/core/src/lib/services/identity.service.ts","../../../projects/core/src/lib/services/prism.service.ts","../../../projects/core/src/lib/services/upload.service.ts","../../../projects/core/src/lib/services/upload.ts","../../../projects/core/src/lib/services/analytics/view.service.ts","../../../projects/core/src/lib/services/analytics/interaction.service.ts","../../../projects/core/src/lib/services/view.ts","../../../projects/core/src/lib/services/interaction.ts","../../../projects/core/src/lib/services/visitor-profile.service.ts","../../../projects/core/src/lib/services/static-html.service.ts","../../../projects/core/src/lib/data/tag.ts","../../../projects/core/src/lib/services/tag.service.ts","../../../projects/core/src/lib/components/entry-selector-dialog/entry-selector-dialog-data.ts","../../../projects/core/src/lib/components/entry-selector-dialog/entry-selector-dialog.component.ts","../../../projects/core/src/lib/components/entry-selector-dialog/entry-selector-dialog.component.html","../../../projects/core/src/lib/components/media-upload-modal/media-upload-modal.component.ts","../../../projects/core/src/lib/components/media-upload-modal/media-upload-modal.component.html","../../../projects/core/src/lib/components/entry-creator/entry-creator.component.ts","../../../projects/core/src/lib/components/entry-creator/entry-creator.component.html","../../../projects/core/src/lib/components/static-html/static-html.component.ts","../../../projects/core/src/lib/components/static-html/static-html.component.html","../../../projects/core/src/lib/pipes/TimeAgoPipe.ts","../../../projects/core/src/lib/components/entry-renderer/entry-renderer.component.ts","../../../projects/core/src/lib/components/entry-renderer/entry-renderer.component.html","../../../projects/core/src/lib/components/entry-summary/entry-summary.component.ts","../../../projects/core/src/lib/components/entry-summary/entry-summary.component.html","../../../projects/core/src/lib/components/json-renderer/json-renderer.component.ts","../../../projects/core/src/lib/components/json-renderer/json-renderer.component.html","../../../projects/core/src/lib/components/landing-page/landing-page.component.ts","../../../projects/core/src/lib/components/landing-page/landing-page.component.html","../../../projects/core/src/lib/components/outline-view/outline-view.component.ts","../../../projects/core/src/lib/components/outline-view/outline-view.component.html","../../../projects/core/src/lib/components/side-navigation/side-navigation.component.ts","../../../projects/core/src/lib/components/side-navigation/side-navigation.component.html","../../../projects/core/src/lib/components/main/main.component.ts","../../../projects/core/src/lib/components/main/main.component.html","../../../projects/core/src/lib/components/entry-renderer-wrapper/entry-renderer-wrapper.component.ts","../../../projects/core/src/lib/components/entry-renderer-wrapper/entry-renderer-wrapper.component.html","../../../projects/core/src/lib/pipes/LinkyPipe.ts","../../../projects/core/src/lib/routing/routes.ts","../../../projects/core/src/lib/components/schedule-publish-dialog/schedule-publish-dialog-data.ts","../../../projects/core/src/lib/components/schedule-publish-dialog/schedule-publish-dialog.component.ts","../../../projects/core/src/lib/components/schedule-publish-dialog/schedule-publish-dialog.component.html","../../../projects/core/src/lib/core.module.ts","../../../projects/core/src/public-api.ts","../../../projects/core/src/thecodeblogs-blog.ts"],"sourcesContent":["export class Guid {\n newGuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n // tslint:disable-next-line:no-bitwise\n const r = Math.random() * 16 | 0,\n // tslint:disable-next-line:triple-equals no-bitwise\n v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n}\n","import {Guid} from './guid';\n\nexport class Base {\n id: string;\n\n constructor() {\n this.id = new Guid().newGuid();\n }\n}\n","export enum ContentType {\n TEXT = 'text',\n URL = 'url',\n CODE = 'code',\n IMAGE = 'image',\n MEDIA = 'media',\n HTML = 'html',\n}\n\n","import {Base} from './base';\nimport {ContentType} from './content-type';\n\nexport class Content extends Base {\n static KEY_MIMETYPE = 'mimeType';\n\n order: number;\n type: ContentType | 'text';\n value: string;\n title: string;\n source: string;\n description: string | null;\n additional: Array<{key: string, value: string}>;\n}\n","import {Section} from './section';\nimport {Base} from './base';\nimport {orderBy} from 'lodash';\n\nexport class Entry extends Base {\n __server_generated_properties: any;\n\n title: string;\n slug: string;\n create_date: Date;\n edit_date: Date;\n sections: Section[];\n version: number;\n published: boolean;\n publish_date: Date;\n tags: string[];\n views: number;\n\n should_publish_in_future = false;\n future_publish_date: Date;\n\n _friendly_views: string;\n\n constructor(init?: Partial<Entry>) {\n super();\n Object.assign(this, init);\n if (!this.create_date) {\n this.create_date = new Date();\n } else {\n this.create_date = new Date(this.create_date);\n }\n if (!this.edit_date) {\n this.edit_date = new Date();\n } else {\n this.edit_date = new Date(this.edit_date);\n }\n if (this.publish_date) {\n this.publish_date = new Date(this.publish_date);\n }\n if (this.future_publish_date) {\n this.future_publish_date = new Date(this.future_publish_date);\n }\n if (!this.version) {\n this.version = 1;\n }\n if (!this.tags) {\n this.tags = [];\n }\n if (this.views) {\n if (this.views < 10) {\n this._friendly_views = 'Less than ten';\n }\n else if (10 < this.views && this.views < 100) {\n this._friendly_views = 'Around one hundred';\n }\n else {\n this._friendly_views = this.views.toString();\n }\n }\n if (!this.sections) {\n this.sections = [];\n }\n // For entries that existed before this variable was introduced, the server will return undefined. If this\n // stays undefined, it will violate the null constraints on the DB, so this code checks for both null\n // and undefined and then populates the value accordingly\n if (typeof(this.should_publish_in_future) === 'undefined' || this.should_publish_in_future === null) {\n this.should_publish_in_future = false;\n }\n }\n\n\n sort() {\n this.sections = orderBy(this.sections, ({order}) => Number(order), ['asc']);\n for (let i = 0; i < this.sections.length; i++) {\n this.sections[i].order = i * 10;\n }\n for (const section of this.sections) {\n section.contents = orderBy(section.contents, ({order}) => Number(order), ['asc']);\n for (let i = 0; i < section.contents.length; i++) {\n section.contents[i].order = i * 10;\n }\n }\n }\n\n showEditInformation() {\n // @ts-ignore\n const difference = Math.floor((this.create_date - this.edit_date) / (1000 * 60 * 60 * 24));\n return (difference > 1 || difference < -1);\n }\n\n getProp(prop: string) {\n if (this.__server_generated_properties) {\n return this.__server_generated_properties[prop];\n } else {\n return '';\n }\n }\n}\n","export class ListResponse<T> {\n next: string;\n previous: string;\n results: T[];\n count: number;\n}\n","import {Content} from './content';\nimport {Base} from './base';\n\nexport class Section extends Base {\n subheading: string;\n order: number;\n contents: Content[];\n constructor() {\n super();\n if (!this.order) {\n this.order = -1;\n }\n this.contents = [];\n }\n}\n","import {CoreEventType} from './core-event-type.enum';\n\nexport class CoreEvent<T> {\n type: CoreEventType;\n data: T;\n\n constructor(data: T, type: CoreEventType) {\n this.data = data;\n this.type = type;\n }\n}\n","export enum CoreEventType {\n UPDATE = 'update',\n CREATE = 'create',\n DELETE = 'delete'\n}\n","export class VisitorProfile {\n id: string;\n user: number| any;\n session_uid: string;\n telemetry: any;\n device: string;\n os_version: string;\n name: string;\n family: string;\n version: string;\n major: number;\n minor: number;\n patch: number;\n language: string;\n}\n","import {Injectable} from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CommentService {\n\n endpoint = '/blog_api/comments/';\n adminEndpoint = '/blog_api/admin/comments/';\n\n constructor(\n protected http: HttpClient,\n ) {\n }\n\n getComments(entry) {\n return this.http.get(this.endpoint, {params: {entry}});\n }\n postComment(comment) {\n return this.http.post(this.endpoint, comment, {params: {entry: comment.entry}});\n }\n patchComment(comment) {\n return this.http.patch(this.adminEndpoint + '/' + comment.id + '/', comment);\n }\n}\n","import {Injectable, EventEmitter} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\nimport {ListResponse} from '../data/list-response';\nimport {CoreEvent} from '../data/core-event';\nimport {CoreEventType} from '../data/core-event-type.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DjangoRestFrameworkEndpointService<T> {\n constructor(\n protected http: HttpClient\n ) {\n }\n\n events = new EventEmitter<CoreEvent<T>>();\n endpoint = '';\n\n triggerCoreEvent(obj: T, type: CoreEventType) {\n this.events.next(new CoreEvent(obj, type));\n return obj;\n }\n\n handleResponse(obj: T) {\n return obj;\n }\n handleListResponse(obj: ListResponse<T>) {\n return obj;\n }\n\n get(): Observable<ListResponse<T>> {\n return this.http.get<ListResponse<T>>(this.endpoint).pipe(\n map(this.handleListResponse.bind(this))\n );\n }\n getById(id: string): Observable<T> {\n return this.http.get<T>(this.endpoint + id + '/').pipe(\n map(this.handleResponse.bind(this))\n );\n }\n create(entity: T): Observable<T> {\n return this.http.post<T>(this.endpoint + '/', entity).pipe(\n map((val) => this.triggerCoreEvent(val, CoreEventType.CREATE)),\n map(this.handleResponse.bind(this))\n );\n }\n delete(entity: T): Observable<T> {\n return this.http.delete<T>(this.endpoint + (entity as any).id + '/').pipe(\n map((val) => this.triggerCoreEvent(val, CoreEventType.DELETE)),\n map(this.handleResponse.bind(this))\n );\n }\n update(entity: T): Observable<T> {\n return this.http.patch<T>(this.endpoint + (entity as any).id + '/', entity).pipe(\n map((val) => this.triggerCoreEvent(val, CoreEventType.UPDATE)),\n map(this.handleResponse.bind(this))\n );\n }\n getListByUrl(url: string): Observable<ListResponse<T>> {\n return this.http.get<ListResponse<T>>(url).pipe(\n map(this.handleListResponse.bind(this))\n );\n }\n}\n","import {Entry} from '../data/entry';\nimport {Section} from '../data/section';\nimport {Content} from '../data/content';\nimport {ContentType} from '../data/content-type';\n\nexport class Utility {\n\n static replaceNbsps(str) {\n var re = new RegExp(String.fromCharCode(160), \"g\");\n return str.replace(re, \" \");\n }\n\n static convertHTMLToType(el: Element): Section | Content | null {\n var value = \"\";\n var contentType = \"\";\n\n // First test for custom objects\n var testValue = (el as any).innerText;\n\n try {\n var obj = JSON.parse(testValue);\n return obj as Content;\n } catch (error) {\n //console.error(error);\n }\n\n //console.log(el.tagName);\n switch(el.tagName.toLowerCase()) {\n case \"p\":\n if(el.children.length > 0) {\n var child = el.children[0];\n if(child.tagName.toLowerCase() === \"a\") {\n var c = new Content();\n value = (child as any).href;\n c.value = value;\n c.title = Utility.replaceNbsps((child as any).innerText);\n c.type = ContentType.URL;\n return c;\n }\n else if(child.tagName.toLowerCase() === 'img') {\n var c = new Content();\n value = (child as any).src;\n c.value = value;\n c.type = ContentType.IMAGE;\n return c;\n }\n }\n else {\n var c = new Content();\n value = Utility.replaceNbsps((el as any).innerText);\n c.value = value;\n c.type = ContentType.TEXT;\n return c;\n }\n break;\n case \"a\":\n var c = new Content();\n value = (el as any).href;\n c.value = value;\n c.title = Utility.replaceNbsps((el as any).innerText);\n c.type = ContentType.URL;\n return c;\n break;\n case \"h4\":\n var s = new Section();\n value = Utility.replaceNbsps((el as any).innerText);\n s.subheading = Utility.replaceNbsps(value);\n return s;\n break;\n case \"blockquote\":\n var c = new Content();\n value = (el as any).innerHTML;\n c.value = \"<blockquote>\" + value + \"</blockquote>\";\n c.type = ContentType.HTML;\n return c;\n break;\n default:\n var c = new Content();\n value = (el as any).innerHTML;\n c.value = value;\n c.type = ContentType.HTML;\n return c;\n break;\n }\n }\n\n static convertHtmlToBlogFormat(entry: Entry, html: string): Entry {\n entry.sections = [];\n var newEntry = new Entry(entry);\n\n var el = document.createElement('html');\n el.innerHTML = html;\n\n // Creating the HTML element adds a head and body\n // We hardcode to 1 to reference the body, and its\n // child elements\n var children = el.children[1].children;;\n\n var section = new Section();\n section.subheading = \"\";\n\n for(let i = 0; i < children.length; i++) {\n var child = children[i];\n\n var thing = Utility.convertHTMLToType(child);\n\n //console.log('Thing: ' + JSON.stringify(thing));\n //console.log('Typeof: ' + JSON.stringify(typeof(thing)));\n\n if(thing instanceof Section) {\n section = thing;\n section.order = i * 10;\n entry.sections.push(section);\n }\n else if(thing instanceof Content) {\n if(entry.sections.length === 0) {\n thing.order = i * 10;\n section.contents.push(thing);\n entry.sections.push(section);\n section.order = i * 10;\n }\n else {\n thing.order = i * 10;\n section.contents.push(thing);\n }\n }\n else {\n if(thing !== null && typeof(thing) !== 'undefined') {\n (thing as any).order = i * 10;\n section.contents.push(thing);\n }\n }\n }\n\n //console.log('E: ' + JSON.stringify(entry));\n\n return entry;\n }\n\n static convertTypeToHTML(content: Content) {\n switch(content.type) {\n case ContentType.CODE:\n return '<pre><code class=\"language-ts\">' + content?.value + '</code></pre>'\n break;\n case ContentType.IMAGE:\n return '<img src=\"' + content?.value + '\"/>'\n break;\n case ContentType.MEDIA:\n return '<pre>' + JSON.stringify(content) + '</pre>';\n break;\n case ContentType.HTML:\n return content.value;\n break;\n case ContentType.URL:\n return '<a target=\"_blank\" href=\"' + content.value + '\">' + content.title + '</a><br>';\n break;\n case ContentType.TEXT:\n return '<p>' + content.value + '</p>';\n break;\n default:\n return '<pre>' + JSON.stringify(content) + '</pre>';\n break;\n }\n }\n\n static convertBlogToHtml(blog: Entry): string {\n\n var html = \"\";\n\n var sections = blog.sections;\n for(var i = 0; i < sections.length; i++) {\n var section = sections[i];\n html = html + '<h4>' + section.subheading + '</h4>';\n\n var contents = section.contents;\n for(var j = 0; j < contents.length; j++) {\n var content = contents[j];\n html = html + Utility.convertTypeToHTML(content);\n }\n }\n\n return html;\n }\n}\n","import {Injectable, EventEmitter} from '@angular/core';\nimport {DjangoRestFrameworkEndpointService} from '../services/django-rest-framework-endpoint.service';\nimport {ListResponse} from '../data/list-response';\nimport {Entry} from '../data/entry';\nimport {Observable, Subject} from 'rxjs';\nimport {debounceTime, map} from 'rxjs/operators';\n//import {loMap} from 'lodash';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport {CoreEvent} from '../data/core-event';\nimport {CoreEventType} from '../data/core-event-type.enum';\n\nimport {Utility} from './utility';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EntryService extends DjangoRestFrameworkEndpointService<Entry> {\n\n endpoint = '/blog_api/entries/';\n adminEndpoint = '/blog_api/admin/entries/';\n\n _currentlyEditedEntry: Entry;\n currentlyEditedEntry: Subject<Entry> = new Subject<Entry>();\n sub;\n\n handleResponse(obj: Entry): Entry {\n return new Entry(obj);\n }\n\n handleListResponse(obj: ListResponse<Entry>): ListResponse<Entry> {\n const response = obj;\n const results = [];\n for (const result of response.results) {\n results.push(new Entry(result));\n }\n response.results = results;\n return response;\n }\n\n\n constructor(\n protected http: HttpClient,\n ) {\n super(http);\n this.sub = this.currentlyEditedEntry.pipe(debounceTime(3000)).subscribe((e) => {\n e.edit_date = new Date();\n const params = new HttpParams().set('published', JSON.stringify(false)).set('defunct', JSON.stringify(false));\n\n this.http.patch(this.adminEndpoint + e.id + '/', e, {params}).pipe(\n map(this.handleResponse.bind(this))\n ).subscribe((response) => {\n this.triggerCoreEvent((response as Entry), CoreEventType.UPDATE);\n console.log('Synced ' + e.id + '...');\n }, (err) => {\n console.log('Error encountered syncing ' + e.id + ', trying to create...');\n this.http.post(this.adminEndpoint, e).pipe(\n map(this.handleResponse)\n ).subscribe((response) => {\n this.triggerCoreEvent((response as Entry), CoreEventType.CREATE);\n console.log('Created ' + e.id + '...');\n }, (createErr) => {\n console.log('Error creating ' + e.id);\n });\n });\n });\n }\n\n get(): Observable<ListResponse<Entry>> {\n return this.http.get(this.endpoint).pipe(\n map(this.handleListResponse.bind(this))\n );\n }\n\n search(searchTerm: string): Observable<ListResponse<Entry>> {\n return this.http.get(this.endpoint + \"?search=\" + searchTerm).pipe(\n map(this.handleListResponse.bind(this))\n );\n }\n\n getUnpublishedEntries() {\n const params = new HttpParams().set('published', JSON.stringify(false)).set('defunct', JSON.stringify(false));\n return this.http.get(this.adminEndpoint, {params});\n }\n\n getBySlug(slug: string) {\n return this.http.get(this.endpoint + slug + '/by_slug/').pipe(\n map(this.handleResponse.bind(this))\n );\n }\n getUnpublishedById(id: string): Observable<Entry> {\n const params = new HttpParams().set('published', JSON.stringify(false)).set('defunct', JSON.stringify(false));\n return this.http.get<Entry>(this.adminEndpoint + id, {params}).pipe(\n map(this.handleResponse.bind(this))\n );\n }\n updateUnpublishedEntry(entry: Entry): Observable<Entry> {\n const params = new HttpParams().set('published', JSON.stringify(false)).set('defunct', JSON.stringify(false));\n return this.http.patch<Entry>(this.adminEndpoint + entry.id + '/', entry, {params}).pipe(\n map((val) => this.triggerCoreEvent(val, CoreEventType.UPDATE)),\n map(this.handleResponse.bind(this))\n );\n }\n\n slugify(s: string) {\n\n const charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ō\":\"O\",\"ō\":\"o\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"Ə\":\"E\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"ə\":\"e\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"ѝ\":\"u\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"Ғ\":\"GH\",\"ғ\":\"gh\",\"Қ\":\"KH\",\"қ\":\"kh\",\"Ң\":\"NG\",\"ң\":\"ng\",\"Ү\":\"UE\",\"ү\":\"ue\",\"Ұ\":\"U\",\"ұ\":\"u\",\"Һ\":\"H\",\"һ\":\"h\",\"Ә\":\"AE\",\"ә\":\"ae\",\"Ө\":\"OE\",\"ө\":\"oe\",\"Ա\":\"A\",\"Բ\":\"B\",\"Գ\":\"G\",\"Դ\":\"D\",\"Ե\":\"E\",\"Զ\":\"Z\",\"Է\":\"E\\'\",\"Ը\":\"Y\\'\",\"Թ\":\"T\\'\",\"Ժ\":\"JH\",\"Ի\":\"I\",\"Լ\":\"L\",\"Խ\":\"X\",\"Ծ\":\"C\\'\",\"Կ\":\"K\",\"Հ\":\"H\",\"Ձ\":\"D\\'\",\"Ղ\":\"GH\",\"Ճ\":\"TW\",\"Մ\":\"M\",\"Յ\":\"Y\",\"Ն\":\"N\",\"Շ\":\"SH\",\"Չ\":\"CH\",\"Պ\":\"P\",\"Ջ\":\"J\",\"Ռ\":\"R\\'\",\"Ս\":\"S\",\"Վ\":\"V\",\"Տ\":\"T\",\"Ր\":\"R\",\"Ց\":\"C\",\"Փ\":\"P\\'\",\"Ք\":\"Q\\'\",\"Օ\":\"O\\'\\'\",\"Ֆ\":\"F\",\"և\":\"EV\",\"ء\":\"a\",\"آ\":\"aa\",\"أ\":\"a\",\"ؤ\":\"u\",\"إ\":\"i\",\"ئ\":\"e\",\"ا\":\"a\",\"ب\":\"b\",\"ة\":\"h\",\"ت\":\"t\",\"ث\":\"th\",\"ج\":\"j\",\"ح\":\"h\",\"خ\":\"kh\",\"د\":\"d\",\"ذ\":\"th\",\"ر\":\"r\",\"ز\":\"z\",\"س\":\"s\",\"ش\":\"sh\",\"ص\":\"s\",\"ض\":\"dh\",\"ط\":\"t\",\"ظ\":\"z\",\"ع\":\"a\",\"غ\":\"gh\",\"ف\":\"f\",\"ق\":\"q\",\"ك\":\"k\",\"ل\":\"l\",\"م\":\"m\",\"ن\":\"n\",\"ه\":\"h\",\"و\":\"w\",\"ى\":\"a\",\"ي\":\"y\",\"ً\":\"an\",\"ٌ\":\"on\",\"ٍ\":\"en\",\"َ\":\"a\",\"ُ\":\"u\",\"ِ\":\"e\",\"ْ\":\"\",\"٠\":\"0\",\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"پ\":\"p\",\"چ\":\"ch\",\"ژ\":\"zh\",\"ک\":\"k\",\"گ\":\"g\",\"ی\":\"y\",\"۰\":\"0\",\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"Ṣ\":\"S\",\"ṣ\":\"s\",\"Ẁ\":\"W\",\"ẁ\":\"w\",\"Ẃ\":\"W\",\"ẃ\":\"w\",\"Ẅ\":\"W\",\"ẅ\":\"w\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"–\":\"-\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"„\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₸\":\"kazakhstani tenge\",\"₹\":\"indian rupee\",\"₺\":\"turkish lira\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\",\"ﻵ\":\"laa\",\"ﻷ\":\"laa\",\"ﻹ\":\"lai\",\"ﻻ\":\"la\"}');\n const locales = JSON.parse('{\"bg\":{\"Й\":\"Y\",\"Ц\":\"Ts\",\"Щ\":\"Sht\",\"Ъ\":\"A\",\"Ь\":\"Y\",\"й\":\"y\",\"ц\":\"ts\",\"щ\":\"sht\",\"ъ\":\"a\",\"ь\":\"y\"},\"de\":{\"Ä\":\"AE\",\"ä\":\"ae\",\"Ö\":\"OE\",\"ö\":\"oe\",\"Ü\":\"UE\",\"ü\":\"ue\",\"ß\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"∑\":\"summe\",\"∞\":\"unendlich\",\"♥\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"¢\":\"centavos\",\"£\":\"libras\",\"¤\":\"moneda\",\"₣\":\"francos\",\"∑\":\"suma\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"¢\":\"centime\",\"£\":\"livre\",\"¤\":\"devise\",\"₣\":\"franc\",\"∑\":\"somme\",\"∞\":\"infini\",\"♥\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"¢\":\"centavo\",\"∑\":\"soma\",\"£\":\"libra\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"uk\":{\"И\":\"Y\",\"и\":\"y\",\"Й\":\"Y\",\"й\":\"y\",\"Ц\":\"Ts\",\"ц\":\"ts\",\"Х\":\"Kh\",\"х\":\"kh\",\"Щ\":\"Shch\",\"щ\":\"shch\",\"Г\":\"H\",\"г\":\"h\"},\"vi\":{\"Đ\":\"D\",\"đ\":\"d\"},\"da\":{\"Ø\":\"OE\",\"ø\":\"oe\",\"Å\":\"AA\",\"å\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"større end\"},\"nb\":{\"&\":\"og\",\"Å\":\"AA\",\"Æ\":\"AE\",\"Ø\":\"OE\",\"å\":\"aa\",\"æ\":\"ae\",\"ø\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"Å\":\"AA\",\"Ä\":\"AE\",\"Ö\":\"OE\",\"å\":\"aa\",\"ä\":\"ae\",\"ö\":\"oe\"}}');\n\n\n if (typeof s !== 'string') {\n throw new Error('slugify: string argument expected');\n }\n\n const replacement = '-';\n\n const trim = true;\n\n const locale = 'en';\n\n let slug = s.normalize().split('')\n // replace characters based on charMap\n .reduce((result, ch) => {\n let appendChar = locale[ch] || charMap[ch] || ch;\n if (appendChar === replacement) {\n appendChar = ' ';\n }\n return result + appendChar\n // remove not allowed characters\n .replace(/[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '');\n }, '');\n\n slug = slug.trim();\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n slug = slug.toLowerCase();\n\n return slug;\n }\n\n delete(entity: any): Observable<any> {\n return this.http.delete<any>(this.adminEndpoint + (entity as any).id + '/').pipe(\n map((val) => this.triggerCoreEvent(val, CoreEventType.DELETE)),\n map(this.handleResponse.bind(this))\n );\n }\n\n convertHtmlToBlogFormat(entry: Entry, html: string): Entry {\n return Utility.convertHtmlToBlogFormat(entry, html);\n }\n\n convertBlogToHtmlFormat(entry: Entry): string {\n return Utility.convertBlogToHtml(entry);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {Observable, of} from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport {Identity} from '../data/identity';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IdentityService {\n\n constructor(\n protected http: HttpClient\n ) { }\n\n getMe(): Observable<Identity> {\n console.error('You must provide an implementation for this');\n return of(\n {\n id: 1,\n username: \"fakeadmin\",\n email: \"admin@example.com\",\n display_name: \"Fake Admin\",\n comments_public: false,\n gravatar_url: \"\",\n fake: true\n }\n );\n }\n}\n","import {Inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\n\n/*\nimport 'clipboard';\n\nimport 'prismjs';\nimport 'prismjs/plugins/toolbar/prism-toolbar';\nimport 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';\nimport 'prismjs/components/prism-css';\nimport 'prismjs/components/prism-javascript';\nimport 'prismjs/components/prism-java';\nimport 'prismjs/components/prism-markup';\nimport 'prismjs/components/prism-typescript';\nimport 'prismjs/components/prism-sass';\nimport 'prismjs/components/prism-scss';\n*/\n\ndeclare var Prism: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PrismService {\n\n testPrism() {\n if (typeof(Prism) !== 'undefined') {\n if(Prism) {\n return true;\n }\n }\n return false;\n }\n\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {\n if (this.testPrism()) {\n Prism.manual = true;\n }\n }\n\n highlightAll() {\n if (isPlatformBrowser(this.platformId)) {\n if(this.testPrism()) {\n Prism.highlightAll();\n }\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {Upload} from '../services/upload';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UploadService {\n\n static upload_endpoint = '/file_api/uploads/create_image/';\n static status_endpoint = '/file_api/uploads/{pk}/status';\n\n constructor(\n private http: HttpClient\n ) {\n }\n\n get(id: string): Observable<Upload> {\n return this.http.get<Upload>(UploadService.status_endpoint.replace('{pk}', id) + '/');\n }\n}\n","export class Upload {\n id: string;\n processed: boolean;\n path_to_file: string;\n mime_type: string;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {DjangoRestFrameworkEndpointService} from '../django-rest-framework-endpoint.service';\nimport {View} from '../view';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ViewService extends DjangoRestFrameworkEndpointService<View> {\n endpoint = '/blog_api/views/';\n\n constructor(\n public http: HttpClient,\n ) {\n super(http);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {DjangoRestFrameworkEndpointService} from '../django-rest-framework-endpoint.service';\nimport {Interaction} from '../interaction';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InteractionService extends DjangoRestFrameworkEndpointService<Interaction> {\n endpoint = '/blog_api/interactions/';\n\n constructor(\n public http: HttpClient,\n ) {\n super(http);\n }\n}\n","export class View {\n id: string;\n entry: string;\n}\n","export class Interaction {\n id: string;\n content: any;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {DeviceDetectorService} from 'ngx-device-detector';\nimport {VisitorProfile} from '../data/visitor-profile';\nimport {DjangoRestFrameworkEndpointService} from '../services/django-rest-framework-endpoint.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VisitorProfileService extends DjangoRestFrameworkEndpointService<VisitorProfile> {\n endpoint = '/blog_api/visitor_profiles/';\n\n constructor(\n public http: HttpClient,\n public deviceDetectorService: DeviceDetectorService\n ) {\n super(http);\n }\n\n getVisitorProfile(): VisitorProfile {\n const deviceInfo = this.deviceDetectorService.getDeviceInfo();\n\n const vp = new VisitorProfile();\n\n vp.telemetry = deviceInfo;\n\n vp.name = deviceInfo.os;\n vp.family = deviceInfo.browser;\n vp.version = deviceInfo.browser_version;\n vp.device = deviceInfo.device;\n vp.os_version = deviceInfo.os_version;\n vp.language = navigator.language;\n\n return vp;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, SecurityContext } from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StaticHtmlService {\n constructor(\n private domSanitizer: DomSanitizer,\n ) { }\n\n mapStaticHtml(htmlString: string, isTrusted: boolean): string {\n return isTrusted ?\n htmlString :\n this.domSanitizer.sanitize(SecurityContext.HTML, htmlString);\n }\n}\n","export class Tag {\n constructor(obj: any) {\n this.id = obj.id;\n this.label = obj.label;\n }\n id: number;\n label: string;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {ListResponse} from '../data/list-response';\nimport {Tag} from '../data/tag';\nimport {DjangoRestFrameworkEndpointService} from './django-rest-framework-endpoint.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TagService extends DjangoRestFrameworkEndpointService<Tag> {\n endpoint = '/blog_api/tags/';\n\n handleResponse(obj: Tag): Tag{\n return new Tag(obj);\n }\n\n handleListResponse(obj: ListResponse<Tag>): ListResponse<Tag> {\n const response = obj;\n const results = [];\n for (let i = 0; i < response.results.length; i++) {\n results.push(new Tag(response.results[i]));\n }\n response.results = results;\n return response;\n }\n\n constructor(\n protected http: HttpClient,\n ) {\n super(http);\n }\n}\n","export class EntrySelectorDialogData {\n}\n","import {Component, Inject, OnInit} from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\nimport {EntrySelectorDialogData} from '../../components/entry-selector-dialog/entry-selector-dialog-data';\nimport {EntryService} from '../../services/entry.service';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatDividerModule} from '@angular/material/divider';\nimport {MatTableModule} from '@angular/material/table';\nimport {MatButtonModule} from '@angular/material/button';\n\n@Component({\n selector: 'app-entry-selector-dialog',\n templateUrl: './entry-selector-dialog.component.html',\n styleUrls: ['./entry-selector-dialog.component.scss'],\n imports: [\n NgIf,\n MatDividerModule,\n MatTableModule,\n MatButtonModule,\n MatDialogModule,\n ]\n})\nexport class EntrySelectorDialogComponent implements OnInit {\n\n columnsToDisplay = ['title', 'create_date', 'actions'];\n\n static CURRENT_ENTRY = 'current_entry';\n\n entries;\n\n constructor(\n public dialogRef: MatDialogRef<EntrySelectorDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: EntrySelectorDialogData,\n private entryService: EntryService,\n ) {\n }\n\n ngOnInit(): void {\n this.entryService.getUnpublishedEntries().subscribe((next) => {\n this.entries = (next as any).results;\n });\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n select(entry): void {\n this.entryService.getUnpublishedById(entry.id).subscribe((entry_new) => {\n localStorage.setItem(EntrySelectorDialogComponent.CURRENT_ENTRY, JSON.stringify(entry_new));\n entry_new.sort();\n this.entryService.currentlyEditedEntry.next(entry_new);\n this.dialogRef.close(entry_new.id);\n });\n }\n\n delete(entry): void {\n this.entryService.delete(entry).subscribe((response) => {\n this.entryService.getUnpublishedEntries().subscribe((next) => {\n this.entries = (next as any).results;\n });\n }, (error) => {\n alert('NOT DELETED: ' + error);\n });\n }\n}\n","<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\n <table mat-table [dataSource]=entries>\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef> Id </th>\n <td mat-cell *matCellDef=\"let entry\"> {{entry.id}} </td>\n </ng-container>\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef> Title </th>\n <td mat-cell *matCellDef=\"let entry\"> {{entry.title}} </td>\n </ng-container>\n <ng-container matColumnDef=\"create_date\">\n <th mat-header-cell *matHeaderCellDef> Created </th>\n <td mat-cell *matCellDef=\"let entry\"> {{entry.create_date}} </td>\n </ng-container>\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let entry\">\n <button mat-button color=\"primary\" (click)=\"select(entry)\">Edit</button> | <button mat-button color=\"warn\" (click)=\"delete(entry)\">Delete</button>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let myRowData; columns: columnsToDisplay\"></tr>\n </table>\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</div>\n","import {Component, HostListener, Input, OnInit, OnDestroy} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FileUploader} from 'ng2-file-upload';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatDialogRef} from '@angular/material/dialog';\nimport {MatDividerModule} from '@angular/material/divider';\nimport { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontawesome';\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons';\nimport {FileUploadModule} from 'ng2-file-upload';\n\nimport {DjangoRestFrameworkEndpointService} from '../../services/django-rest-framework-endpoint.service';\nimport {UploadService} from '../../services/upload.service';\n\n@Component({\n selector: 'app-media-upload-modal',\n templateUrl: './media-upload-modal.component.html',\n styleUrls: ['./media-upload-modal.component.css'],\n imports: [\n CommonModule,\n MatDialogModule,\n MatDividerModule,\n FontAwesomeModule,\n FileUploadModule,\n ]\n})\nexport class MediaUploadModalComponent implements OnInit, OnDestroy {\n\n @Input() allowedMimeTypes = [\n 'image/jpeg',\n 'image/gif',\n 'image/png',\n 'image/jpg',\n 'video/mp4',\n 'video/webm',\n 'video/ogg',\n ];\n\n @Input() uploadUrlKey = 'path_to_file';\n\n imgLink;\n mimeType;\n socketSub;\n error;\n public uploader: FileUploader;\n uploadId;\n uploading = false;\n @Input() file;\n\n poller;\n\n static getCookie(name: string) {\n const ca: Array<string> = document.cookie.split(';');\n const caLen: number = ca.length;\n const cookieName = `${name}=`;\n let c: string;\n\n for (let i = 0; i < caLen; i += 1) {\n c = ca[i].replace(/^\\s+/g, '');\n if (c.indexOf(cookieName) === 0) {\n return c.substring(cookieName.length, c.length);\n }\n }\n return '';\n }\n\n constructor(\n public dialogRef: MatDialogRef<MediaUploadModalComponent>,\n private uploadService: UploadService,\n private library: FaIconLibrary,\n ) {\n library.addIcons(faSpinner);\n }\n\n\n pollForCompletion() {\n this.uploadService.get(this.uploadId).subscribe((response) => {\n if (response.processed) {\n this.imgLink = response[this.uploadUrlKey];\n this.mimeType = response.mime_type;\n clearInterval(this.poller);\n this.poller = null;\n this.uploading = false;\n }\n });\n }\n\n\n ngOnInit(): void {\n\n this.uploader = new FileUploader(\n {\n url: UploadService.upload_endpoint,\n itemAlias: 'file',\n authToken: '',\n headers: [\n {name: 'X-CSRFToken', value: MediaUploadModalComponent.getCookie('csrftoken')},\n ],\n additionalParameter: {csrf_token: MediaUploadModalComponent.getCookie('csrftoken')},\n removeAfterUpload: true,\n allowedMimeType: this.allowedMimeTypes,\n }\n );\n\n this.uploader.onCompleteItem = (item, response) => {\n const responseObj = JSON.parse(response);\n this.uploadId = responseObj.id;\n this.poller = setInterval(this.pollForCompletion.bind(this), 2000);\n };\n\n this.uploader.onWhenAddingFileFailed = (item, filter, options) => {\n this.error = 'This file is not a supported mimetype.';\n this.uploading = false;\n };\n\n if (this.file) {\n this.uploader.addToQueue([this.file]);\n this.uploader.uploadAll();\n this.uploading = true;\n }\n }\n\n onFileSelected(e) {\n this.uploader.uploadAll();\n this.uploading = true;\n }\n\n buildHost(url) {\n return location.protocol + '//' + location.hostname + (location.port ? ':' + location.port : '') + url;\n }\n\n close() {\n this.dialogRef.close();\n }\n\n ngOnDestroy(): void {\n if (this.socketSub) {\n this.socketSub.complete();\n this.socketSub = null;\n }\n }\n\n blobToFile(theBlob, fileName) {\n // A Blob() is almost a File() - it's just missing the two properties below which we will add\n theBlob.lastModifiedDate = new Date();\n theBlob.name = fileName;\n return theBlob;\n }\n\n @HostListener('document:paste', ['$event'])\n onPaste(e) {\n if (e instanceof ClipboardEvent) {\n const files = e.clipboardData.files;\n if (files) {\n if (files.length < 1) {\n // const items = e.clipboardData.items;\n // for(let i = 0; i < items.length; i++) {\n // const item = items[i];\n // item.getAsString((text) => {\n // try {\n // const url = new URL(text);\n // if(url) {\n // fetch(text)\n // .then(res => res.blob()) // Gets the response and returns it as a blob\n // .then(blob => {\n // const file = this.blobToFile(blob, 'web-created')\n // this.uploader.addToQueue([file])\n // this.uploader.uploadAll();\n // this.uploading = true;\n // });\n // }\n // } catch(e) {\n //\n // }\n // });\n // }\n } else if (files.length > 1) {\n console.log('Multiple files detected');\n } else {\n for (let i = 0; i < files.length; i++) {\n this.uploader.addToQueue([files[i]]);\n }\n this.uploader.uploadAll();\n this.uploading = true;\n }\n } else {\n console.log('Stuff not working');\n }\n }\n }\n}\n","<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'\" animation=\"spin\"></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","import {COMMA, ENTER, TAB} from '@angular/cdk/keycodes';\nimport {ChangeDetectorRef, Component, OnInit, ViewChild, ElementRef, EventEmitter, Output, Input} from '@angular/core';\nimport {Router} from '@angular/router';\n\nimport {Entry} from '../../data/entry';\nimport {Section} from '../../data/section';\nimport {Content} from '../../data/content';\nimport {ContentType} from '../../data/content-type';\nimport {Identity} from '../../data/identity';\n\nimport {EntryService} from '../../services/entry.service';\nimport {IdentityService} from '../../services/identity.service';\n\nimport {map as loMap, filter} from 'lodash';\nimport {MatDialog} from '@angular/material/dialog';\nimport {MatAutocompleteSelectedEvent, MatAutocomplete} from '@angular/material/autocomplete';\nimport {EntrySelectorDialogComponent} from '../../components/entry-selector-dialog/entry-selector-dialog.component';\nimport {FileUploader} from 'ng2-file-upload';\nimport {MediaUploadModalComponent} from '../../components/media-upload-modal/media-upload-modal.component';\nimport {Observable} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\nimport {UntypedFormControl} from '@angular/forms';\nimport {MatChipInputEvent} from '@angular/material/chips';\nimport {TagService} from '../../services/tag.service';\nimport {SchedulePublishDialogComponent} from '../schedule-publish-dialog/schedule-publish-dialog.component';\n\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\n\nimport {CommonModule} from '@angular/common';\nimport {MatSelectModule} from '@angular/material/select';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatFormFieldModule} from '@angular/material/form-field';\n\nimport {MatCardModule} from '@angular/material/card';\nimport {MatChipsModule} from '@angular/material/chips';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatRadioModule} from '@angular/material/radio';\nimport {MatButtonModule} from '@angular/material/button';\n\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatTimepickerModule} from '@angular/material/timepicker';\nimport {provideNativeDateAdapter} from '@angular/material/core';\n\n@Component({\n selector: 'app-entry-creator',\n templateUrl: './entry-creator.component.html',\n styleUrls: ['./entry-creator.component.scss'],\n providers: [provideNativeDateAdapter()],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatCardModule,\n MatChipsModule,\n MatIconModule,\n MatAutocompleteModule,\n MatRadioModule,\n MatInputModule,\n MatSelectModule,\n MatDatepickerModule,\n MatTimepickerModule,\n MatButtonModule,\n ]\n})\nexport class EntryCreatorComponent implements OnInit {\n\n static CURRENT_ENTRY_KEY = 'current_entry';\n static DEFAULT_NEW_ENTRY_TITLE = 'A New Entry';\n\n ContentType = ContentType;\n Object = Object;\n\n entry: Entry = null;\n me: Identity;\n\n separatorKeysCodes: number[] = [ENTER, COMMA, TAB];\n removable = true;\n tags: string[];\n all_tags: string[] = ['Angular', 'Bash', 'MacOS', 'Typescript', 'NPM', 'Databases'];\n filtered_tags: Observable<string[]>;\n @ViewChild('tagInput') tagInput: ElementRef<HTMLInputElement>;\n @ViewChild('tagauto') matAutocomplete: MatAutocomplete;\n\n tagCtrl = new UntypedFormControl();\n publishDateControl = new UntypedFormControl();\n\n tag_to_add: string;\n selectable = false;\n\n scheduling = false;\n customScheduleTime = '';\n today = new Date();\n hours: number;\n minutes: number;\n\n @Input() allowedMimeTypes = [\n 'image/jpeg',\n 'image/gif',\n 'image/png',\n 'image/jpg',\n 'video/mp4',\n 'video/webm',\n 'video/ogg',\n ];\n\n @Input() uploadUrlKey = 'path_to_file';\n\n public uploader: FileUploader = new FileUploader(\n {\n url: '/file_api/uploads/create_image/',\n itemAlias: 'file',\n authToken: '',\n headers: [\n {\n name: 'X-CSRFToken',\n value: EntryCreatorComponent.getCookie('csrftoken')\n },\n ],\n additionalParameter: {\n 'csrf_token': EntryCreatorComponent.getCookie('csrftoken')\n },\n removeAfterUpload: true,\n allowedMimeType: this.allowedMimeTypes,\n }\n );\n\n static getCookie(name: string) {\n const ca: Array<string> = document.cookie.split(';');\n const caLen: number = ca.length;\n const cookieName = `${name}=`;\n let c: string;\n\n for (let i = 0; i < caLen; i += 1) {\n c = ca[i].replace(/^\\s+/g, '');\n if (c.indexOf(cookieName) === 0) {\n return c.substring(cookieName.length, c.length);\n }\n }\n return '';\n }\n\n constructor(\n private router: Router,\n private entryService: EntryService,\n private tagService: TagService,\n private identityService: IdentityService,\n private cdr: ChangeDetectorRef,\n private dialog: MatDialog,\n ) {\n const scheduledDate = new Date();\n this.customScheduleTime = scheduledDate.getHours() + ':' + scheduledDate.getMinutes() + ' AM';\n }\n\n private _filter(value: string): string[] {\n const filterValue = value.toLowerCase();\n return this.all_tags.filter(tag => tag.toLowerCase().indexOf(filterValue) === 0);\n }\n\n add(event: MatChipInputEvent): void {\n const input = event.input;\n const value = event.value;\n\n // Add our tag\n if ((value || '').trim()) {\n this.tags.push(value.trim());\n }\n\n // Reset the input value\n if (input) {\n input.value = '';\n }\n\n this.tagCtrl.setValue(null);\n this.onChange();\n }\n\n remove(fruit: string): void {\n const index = this.tags.indexOf(fruit);\n\n if (index >= 0) {\n this.tags.splice(index, 1);\n }\n this.onChange();\n }\n\n selected(event: MatAutocompleteSelectedEvent): void {\n this.tags.push(event.option.viewValue);\n this.tagInput.nativeElement.value = '';\n this.tagCtrl.setValue(null);\n this.onChange();\n }\n\n refreshTags() {\n this.tagService.get().subscribe((response) => {\n this.all_tags = loMap(response.results, (t) => t.label);\n /*\n this.filtered_tags = this.tagCtrl.valueChanges.pipe(\n startWith(null),\n map((tag: string | null) => tag ? this._filter(tag) : this.all_tags.slice()));\n */\n });\n }\n\n createNewEntry() {\n this.entry = new Entry();\n this.entry.title = EntryCreatorComponent.DEFAULT_NEW_ENTRY_TITLE;\n this.entry.published = false;\n this.entry.version = 1;\n\n this.entryService.create(this.entry).subscribe((response) => {\n this.entry = response;\n this.entry.sort();\n setTimeout(() => {\n this.entryService.currentlyEditedEntry.next(this.entry);\n }, 10);\n });\n }\n\n ngOnInit() {\n this.refreshTags();\n this.identityService.getMe().subscribe((me) => {\n this.me = me;\n });\n\n const savedEntry =\n localStorage.getItem(EntryCreatorComponent.CURRENT_ENTRY_KEY);\n\n if (savedEntry) {\n this.entry = new Entry(JSON.parse(savedEntry));\n\n if (this.entry.should_publish_in_future && this.entry.future_publish_date < new Date()) {\n this.createNewEntry();\n }\n\n this.entry.sort();\n if (this.entry.should_publish_in_future) {\n // Restore scheduling settings\n this.scheduling = true;\n let hours = this.entry.future_publish_date.getHours();\n let minutes: string | number = this.entry.future_publish_date.getMinutes();\n const ampm = hours >= 12 ? 'PM' : 'AM';\n if (hours >= 12) {\n hours = hours % 12;\n hours = hours ? hours : 12;\n }\n minutes = minutes < 10 ? '0' + minutes : minutes;\n this.customScheduleTime = hours + ':' + minutes + ' ' + ampm;\n }\n setTimeout(() => {\n this.entryService.currentlyEditedEntry.next(this.entry);\n }, 10);\n } else {\n this.seeEntries();\n }\n\n this.uploader.onCompleteItem = (item, response) => {\n // const responseObj = JSON.parse(response)\n // this.uploadId = responseObj.id;\n };\n\n this.uploader.onWhenAddingFileFailed = (item, uploadFilter, options) => {\n // this.error = 'This file is not a supported mimetype.'\n // this.uploading = false;\n };\n\n this.tags = this.entry.tags;\n }\n\n onFileSelected(e) {\n this.uploader.uploadAll();\n }\n\n startUploader(content) {\n const dialogRef = this.dialog.open(MediaUploadModalComponent, {\n });\n dialogRef.componentInstance.allowedMimeTypes = this.allowedMimeTypes;\n dialogRef.componentInstance.uploadUrlKey = this.uploadUrlKey;\n dialogRef.afterClosed().subscribe(() => {\n content.value = dialogRef.componentInstance.imgLink;\n content.additional = [];\n content.additional.push({key: Content.KEY_MIMETYPE, value: dialogRef.componentInstance.mimeType});\n this.onChange();\n });\n }\n\n addSection() {\n this.entry.sections.push(new Section());\n this.onChange();\n }\n\n removeSection(section) {\n const remove = confirm('Are you sure you want to remove this section?');\n if (remove) {\n this.entry.sections =\n filter(this.entry.sections, (sct) => sct.id !== section.id);\n this.onChange();\n }\n }\n\n addContent(section) {\n section.contents.push(new Content());\n this.onChange();\n }\n\n removeContent(content) {\n const remove = confirm('Are you sure you want to remove this content?');\n\n if (remove) {\n for (const section of this.entry.sections) {\n section.contents = filter(\n section.contents,\n (ct) => ct.id !== content.id\n );\n }\n this.onChange();\n }\n }\n\n onChange() {\n this.entry.slug = this.entryService.slugify(this.entry.title).toLowerCase();\n localStorage.setItem(\n EntryCreatorComponent.CURRENT_ENTRY_KEY,\n JSON.stringify(this.entry)\n );\n this.entry.sort();\n this.cdr.detectChanges();\n this.entryService.currentlyEditedEntry.next(this.entry);\n this.entryService._currentlyEditedEntry = this.entry;\n }\n\n resetDate() {\n this.entry.create_date = new Date();\n this.entry.edit_date = new Date();\n\n this.onChange();\n }\n\n startNew() {\n const finish = confirm('Are you sure your finished? The JSON and entry displayed will be removed. Make sure you have already copied it.');\n if (finish) {\n\n this.entry = new Entry();\n this.entry.title = EntryCreatorComponent.DEFAULT_NEW_ENTRY_TITLE;\n this.entry.published = false;\n this.entry.version = 1;\n\n this.entryService.currentlyEditedEntry.next(this.entry);\n localStorage.setItem(\n EntryCreatorComponent.CURRENT_ENTRY_KEY,\n JSON.stringify(this.entry)\n );\n this.entryService.create(this.entry).subscribe((next) => {\n });\n }\n }\n\n seeEntries() {\n const dialogRef = this.dialog.open(EntrySelectorDialogComponent, {\n width: '800px',\n data: {name: 'test', animal: 'test'}\n });\n\n dialogRef.afterClosed().subscribe((id) => {\n if (id) {\n this.entryService.getUnpublishedById(id).subscribe((result) => {\n const entry = result;\n this.entryService.currentlyEditedEntry.next(entry);\n localStorage.setItem(\n EntryCreatorComponent.CURRENT_ENTRY_KEY,\n JSON.stringify(entry)\n );\n this.entry = entry;\n });\n }\n });\n }\n\n postPublishCallback() {\n this.entryService.currentlyEditedEntry.next(null);\n this.entry = null;\n this.seeEntries();\n localStorage.removeItem(EntryCreatorComponent.CURRENT_ENTRY_KEY);\n }\n\n cancelScheduling() {\n this.entry.future_publish_date = null;\n this.entry.should_publish_in_future = false;\n this.scheduling = false;\n this.onChange();\n }\n\n exposeScheduling() {\n const scheduledDate = new Date();\n scheduledDate.setDate(scheduledDate.getDate() + 1);\n\n this.entry.future_publish_date = scheduledDate;\n this.setTime(this.customScheduleTime);\n\n this.entry.should_publish_in_future = true;\n this.scheduling = true;\n this.onChange();\n }\n publish() {\n const publish = confirm('Are you sure you want to publish? Once an article is published it is available to everyone.');\n if (publish) {\n this.entry.published = true;\n this.entry.publish_date = new Date();\n this.entry.edit_date = new Date();\n this.entryService.updateUnpublishedEntry(this.entry).subscribe(this.postPublishCallback.bind(this));\n }\n }\n delete() {\n const confirmDelete = confirm('Are you sure you want to delete this draft? Once it is deleted it cannot be recovered.');\n if (confirmDelete) {\n this.entryService.delete(this.entry).subscribe(() => {\n this.entry = null;\n this.entryService.currentlyEditedEntry.next(null);\n localStorage.removeItem(EntryCreatorComponent.CURRENT_ENTRY_KEY);\n });\n }\n }\n onDateChange() {\n this.entry.future_publish_date.setHours(this.hours);\n this.entry.future_publish_date.setMinutes(this.minutes);\n this.onChange();\n }\n\n\n setTime(e) {\n const firstTimeSplit = e.split(' ');\n const secondTimeSplit = firstTimeSplit[0].split(':');\n this.hours = Number(secondTimeSplit[0]);\n this.minutes = Number(secondTimeSplit[1]);\n\n if (firstTimeSplit[1] === 'PM') {\n this.hours = Number(this.hours) + 12;\n }\n\n this.entry.future_publish_date.setHours(this.hours);\n this.entry.future_publish_date.setMinutes(this.minutes);\n\n this.onChange();\n }\n\n routeTo(path) {\n this.router.navigateByUrl(path).then(() => {\n\n });\n }\n}\n","<div class=\"section creator fields\">\n <div style=\"padding: 10px;\">\n <button\n style=\"width: 100%;\"\n mat-raised-button (click)=\"routeTo('create/v2(left-col:create//right-col:create)')\">V2</button>\n </div>\n <form #createForm=\"ngForm\" (change)=\"onChange()\" *ngIf=\"this.entry\">\n <div class=\"form-group\">\n <mat-form-field class=\"full-width\">\n <mat-label>Title</mat-label>\n <input matInput\n [(ngModel)]=\"entry.title\"\n name=\"title\">\n </mat-form-field>\n </div>\n <mat-card class=\"form-section tags\">\n <div>\n <!--\n <mat-form-field class=\"full-width\" hintLabel=\"Use a comma to seperate different tags\">\n <mat-chip-listbox #tagList aria-label=\"Tags\">\n <mat-chip-option\n *ngFor=\"let tag of tags\"\n [selectable]=\"selectable\"\n [removable]=\"removable\"\n (removed)=\"remove(tag)\">\n {{tag}}\n <mat-icon matChipRemove *ngIf=\"removable\">cancel</mat-icon>\n </mat-chip-option>\n <input\n matInput\n placeholder=\"Tags...\"\n #tagInput\n [formControl]=\"tagCtrl\"\n [matAutocomplete]=\"tagauto\"\n [matChipInputFor]=\"tagList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"add($event)\">\n </mat-chip-listbox>\n <mat-autocomplete #tagauto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\n <mat-option *ngFor=\"let tag of filtered_tags | async\" [value]=\"tag\">\n {{tag}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n -->\n </div>\n </mat-card>\n <mat-card class=\"form-section\" *ngFor=\"let section of entry.sections\">\n <div>\n <mat-form-field class=\"full-width\">\n <mat-label>Subheading</mat-label>\n <input matInput\n [(ngModel)]=\"section.subheading\"\n name=\"{{section.id}}-subheading\">\n </mat-form-field>\n <div class=\"form-content\" *ngFor=\"let content of section.contents\">\n <div class=\"form-group\">\n <mat-radio-group\n aria-label=\"Select the Content Type\"\n name=\"{{content.id}}-content-type\"\n class=\"radio-group\"\n [(ngModel)]=\"content.type\">\n <mat-radio-button\n *ngFor=\"let value of Object.values(ContentType)\"\n class=\"radio-button\"\n [value]=\"value\">{{value}}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n <ng-container [ngSwitch]=\"content.type\">\n <ng-container *ngSwitchCase=\"ContentType.URL\">\n <mat-form-field class=\"full-width\">\n <mat-label>Value</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-value\"\n [(ngModel)]=\"content.value\">\n </mat-form-field>\n <mat-form-field class=\"full-width\">\n <mat-label>Title</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-title\"\n [(ngModel)]=\"content.title\">\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.TEXT\">\n <mat-form-field class=\"full-width\">\n <mat-label>Value</mat-label>\n <textarea matInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"3\"\n cdkAutosizeMaxRows=\"20\"\n name=\"{{content.id}}-content-value\"\n [(ngModel)]=\"content.value\"\n ></textarea>\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.HTML\">\n <mat-form-field class=\"full-width\">\n <mat-label>Value</mat-label>\n <textarea matInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"3\"\n cdkAutosizeMaxRows=\"20\"\n name=\"{{content.id}}-content-value\"\n [(ngModel)]=\"content.value\"\n ></textarea>\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.CODE\">\n <mat-form-field class=\"full-width\">\n <mat-label>Value</mat-label>\n <textarea matInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"10\"\n cdkAutosizeMaxRows=\"100\"\n name=\"{{content.id}}-content-value\"\n [(ngModel)]=\"content.value\"\n ></textarea>\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.IMAGE\">\n <mat-form-field class=\"full-width\">\n <mat-label>Value</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-value\"\n [(ngModel)]=\"content.value\">\n </mat-form-field>\n <mat-form-field class=\"full-width\">\n <mat-label>Value</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-source\"\n [(ngModel)]=\"content.value\">\n </mat-form-field>\n <mat-form-field class=\"full-width\">\n <mat-label>Description</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-description\"\n [(ngModel)]=\"content.description\">\n </mat-form-field>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.MEDIA\">\n <div class=\"full-width\">\n <ng-container *ngIf=\"content.value\">\n <mat-form-field class=\"full-width\">\n <mat-label>Value</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-value\"\n [(ngModel)]=\"content.value\">\n </mat-form-field>\n <mat-form-field class=\"full-width\">\n <mat-label>Description</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-description\"\n [(ngModel)]=\"content.description\">\n </mat-form-field>\n </ng-container>\n <ng-container *ngIf=\"content.additional\">\n <ng-container *ngFor=\"let add of content.additional\">\n <mat-form-field class=\"full-width\">\n <mat-label>{{add.key}}</mat-label>\n <input\n matInput\n name=\"{{content.id}}-content-{{add.key}}\"\n [(ngModel)]=\"add.value\"\n [disabled]=\"true\"\n >\n </mat-form-field>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!content.value\">\n <button mat-raised-button (click)=startUploader(content)>Upload</button>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n <button mat-raised-button (click)=removeContent(content)>Remove Content</button>\n <button mat-raised-button (click)=\"addContent(section)\">+ Add Content</button>\n </div>\n <button mat-raised-button (click)=\"removeSection(section)\">Remove Section</button>\n <button mat-raised-button (click)=\"addContent(section)\" *ngIf=\"section.contents.length === 0\">+ Add\n Content\n </button>\n <button mat-raised-button (click)=\"addSection()\">+ Add Section</button>\n </div>\n\n </mat-card>\n <button mat-raised-button (click)=\"addSection()\" *ngIf=\"entry.sections?.length === 0\">+ Add Section</button>\n <button mat-raised-button (click)=\"addSection()\" *ngIf=\"!entry.sections\">+ Add Section</button>\n\n <div class=\"controls\">\n <button mat-raised-button (click)=\"resetDate()\">Reset the Date</button>\n <button mat-raised-button (click)=\"delete()\">Delete</button>\n <button mat-raised-button [disabled]=\"scheduling\" (click)=\"publish()\">Publish</button>\n <button mat-raised-button [disabled]=\"scheduling\" (click)=\"exposeScheduling()\">Schedule</button>\n <button mat-raised-button (click)=\"startNew()\">New</button>\n </div>\n <p *ngIf=\"scheduling\">Publishing is disabled while scheduling is being used.</p>\n\n <mat-card [hidden]=\"!scheduling\">\n <h4>\n Scheduling Options\n </h4>\n\n <div class=\"form-group\">\n <mat-form-field class=\"full-width\">\n <mat-label>Date</mat-label>\n <input\n #futurePublishDate\n matInput\n [matDatepicker]=\"picker\"\n [min]=\"today\"\n (dateInput)=\"onDateChange()\"\n (dateChange)=\"onDateChange()\"\n [(ngModel)]=\"entry.future_publish_date\"\n name=\"future-publish-date\"\n >\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker></mat-datepicker>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Time</mat-label>\n <input matInput [matTimepicker]=\"pickertwo\">\n <mat-timepicker-toggle matIconSuffix [for]=\"pickertwo\"/>\n <mat-timepicker #pickertwo/>\n </mat-form-field>\n <p>Times are represented in your local time zone</p>\n </div>\n\n <div mat-dialog-actions>\n <div class=\"controls\">\n <button mat-raised-button (click)=\"cancelScheduling()\">Cancel Scheduling</button>\n </div>\n </div>\n <p>This post will be published as soon as its scheduled date and time arrive. No further action is needed by you. If you do not\n want to use scheduling, you can cancel scheduling and manually publish.</p>\n </mat-card>\n </form>\n <div class=\"controls\">\n <button mat-raised-button (click)=\"seeEntries()\">See Entries</button>\n <button *ngIf=\"!this.entry\" mat-raised-button (click)=\"startNew()\">New</button>\n </div>\n</div>\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\nimport {StaticHtmlService} from '../../services/static-html.service';\n\n@Component({\n selector: 'app-static-html',\n templateUrl: './static-html.component.html',\n styleUrls: ['./static-html.component.css']\n})\nexport class StaticHtmlComponent implements OnInit, OnChanges {\n\n innerHtml: SafeHtml;\n @Input() value;\n\n constructor(\n private staticHtmlService: StaticHtmlService,\n private domSanitizer: DomSanitizer\n ) { }\n\n refreshContent() {\n this.innerHtml = this.domSanitizer.bypassSecurityTrustHtml(this.staticHtmlService.mapStaticHtml(this.value, false));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.refreshContent();\n }\n\n ngOnInit(): void {\n this.refreshContent();\n }\n\n}\n","<div [innerHtml]=\"innerHtml\">\n</div>\n","import {Pipe, PipeTransform, NgZone, ChangeDetectorRef, OnDestroy} from \"@angular/core\";\n@Pipe({\n name: 'timeAgo',\n pure: false\n})\nexport class TimeAgoPipe implements PipeTransform, OnDestroy {\n private timer: number;\n constructor(private changeDetectorRef: ChangeDetectorRef, private ngZone: NgZone) {}\n transform(value:string) {\n this.removeTimer();\n let d = new Date(value);\n let now = new Date();\n let seconds = Math.round(Math.abs((now.getTime() - d.getTime())/1000));\n let timeToUpdate = (Number.isNaN(seconds)) ? 1000 : this.getSecondsUntilUpdate(seconds) *1000;\n this.timer = this.ngZone.runOutsideAngular(() => {\n if (typeof window !== 'undefined') {\n return window.setTimeout(() => {\n this.ngZone.run(() => this.changeDetectorRef.markForCheck());\n }, timeToUpdate);\n }\n return null;\n });\n let minutes = Math.round(Math.abs(seconds / 60));\n let hours = Math.round(Math.abs(minutes / 60));\n let days = Math.round(Math.abs(hours / 24));\n let months = Math.round(Math.abs(days/30.416));\n let years = Math.round(Math.abs(days/365));\n if (Number.isNaN(seconds)){\n return '';\n } else if (seconds <= 45) {\n return 'a few seconds ago';\n } else if (seconds <= 90) {\n return 'a minute ago';\n } else if (minutes <= 45) {\n return minutes + ' minutes ago';\n } else if (minutes <= 90) {\n return 'an hour ago';\n } else if (hours <= 22) {\n return hours + ' hours ago';\n } else if (hours <= 36) {\n return 'a day ago';\n } else if (days <= 25) {\n return days + ' days ago';\n } else if (days <= 45) {\n return 'a month ago';\n } else if (days <= 345) {\n return months + ' months ago';\n } else if (days <= 545) {\n return 'a year ago';\n } else { // (days > 545)\n return years + ' years ago';\n }\n }\n ngOnDestroy(): void {\n this.removeTimer();\n }\n private removeTimer() {\n if (this.timer) {\n window.clearTimeout(this.timer);\n this.timer = null;\n }\n }\n private getSecondsUntilUpdate(seconds:number) {\n let min = 60;\n let hr = min * 60;\n let day = hr * 24;\n if (seconds < min) { // less than 1 min, update every 2 secs\n return 2;\n } else if (seconds < hr) { // less than an hour, update every 30 secs\n return 30;\n } else if (seconds < day) { // less then a day, update every 5 mins\n return 300;\n } else { // update every hour\n return 3600;\n }\n }\n}\n","import {AfterViewChecked, Component, Input, NgZone, OnDestroy, OnInit, input, signal} from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, NavigationStart, Router} from '@angular/router';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\n\nimport {Entry} from '../../data/entry';\nimport {Content} from '../../data/content';\nimport {ContentType} from '../../data/content-type';\nimport {Identity} from '../../data/identity';\n\nimport {IdentityService} from '../../services/identity.service';\nimport {EntryService} from '../../services/entry.service';\nimport {CommentService} from '../../services/comment.service';\nimport {PrismService} from '../../services/prism.service';\n\nimport {EntryCreatorComponent} from '../../components/entry-creator/entry-creator.component';\n\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\n\nimport {CommonModule} from '@angular/common';\nimport {MatSelectModule} from '@angular/material/select';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatFormFieldModule} from '@angular/material/form-field';\n\nimport {MatCardModule} from '@angular/material/card';\nimport {MatChipsModule} from '@angular/material/chips';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatRadioModule} from '@angular/material/radio';\n\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatTimepickerModule} from '@angular/material/timepicker';\nimport {provideNativeDateAdapter} from '@angular/material/core';\n\nimport {StaticHtmlComponent} from '../static-html/static-html.component';\nimport {TimeAgoPipe} from '../../pipes/TimeAgoPipe';\n\n@Component({\n selector: 'app-entry-renderer',\n templateUrl: './entry-renderer.component.html',\n styleUrls: ['./entry-renderer.component.scss'],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatCardModule,\n MatChipsModule,\n MatIconModule,\n MatAutocompleteModule,\n MatRadioModule,\n MatInputModule,\n MatSelectModule,\n MatDatepickerModule,\n MatTimepickerModule,\n StaticHtmlComponent,\n TimeAgoPipe,\n ],\n animations: [\n trigger('entryAnimation', [\n state('in', style({ opacity: '1' })),\n state('out', style({ opacity: '0' })),\n transition('in => out', [\n animate('300ms ease-out', style({ opacity: '0'}))\n ]),\n transition('out => in', [\n animate('300ms ease-in', style({ opacity: '1'}))\n ])\n ]),\n ]\n})\nexport class EntryRendererComponent implements OnInit, AfterViewChecked {\n\n state: 'in' | 'out' = 'out';\n\n me: Identity;\n entry = input<Entry>();\n\n ContentType = ContentType;\n comments = [];\n commentText = '';\n\n alert = alert;\n\n @Input() editMode = false;\n\n constructor(\n private prismService: PrismService,\n private ngZone: NgZone,\n private identityService: IdentityService,\n private commentService: CommentService,\n private router: Router,\n private entryService: EntryService,\n ) {\n }\n\n\n ngOnInit() {\n this.identityService.getMe().subscribe((me) => {\n this.me = me;\n });\n if(this.entry()) {\n this.commentService.getComments(this.entry().id).subscribe((response) => {\n this.comments = (response as any).results;\n for (const comment of this.comments) {\n comment.date_obj = new Date(comment.created_on);\n }\n });\n }\n\n let showFn = () => {\n this.state = 'in';\n }\n\n setTimeout(showFn.bind(this), 50)\n }\n\n ngAfterViewChecked(): void {\n if (!this.editMode) {\n this.ngZone.runOutsideAngular(() => {\n try {\n this.prismService.highlightAll();\n } catch (e) {\n\n }\n });\n }\n }\n edit(entry: Entry) {\n entry.version++;\n entry.published = false;\n delete entry.publish_date;\n\n this.entryService.create(entry).subscribe((response) => {\n localStorage.setItem(EntryCreatorComponent.CURRENT_ENTRY_KEY, JSON.stringify(response));\n this.router.navigateByUrl('create/v2(left-col:create//right-col:create)').then(() => {\n\n });\n });\n }\n postComment(e) {\n e.preventDefault();\n if (this.commentText !== '') {\n this.commentService.postComment({entry: this.entry().id, content: this.commentText}).subscribe((comment) => {\n this.comments.push(comment);\n });\n this.commentText = '';\n }\n }\n mediaIsZip(content: Content): boolean {\n let mediaIsZip = false;\n if (content.additional) {\n for (const add of content.additional) {\n if (add.key === Content.KEY_MIMETYPE) {\n if (add.value === 'application/zip') {\n mediaIsZip = true;\n }\n }\n }\n }\n return mediaIsZip;\n }\n approve(comment: any) {\n comment.approved = !comment.approved;\n this.commentService.patchComment(Object.assign({}, {approved: true}, comment)).subscribe((rComment) => {\n\n });\n }\n unapprove(comment: any) {\n comment.approved = !comment.approved;\n this.commentService.patchComment(Object.assign({}, {approved: false}, comment)).subscribe((rComment) => {\n\n });\n }\n}\n","<div\n [@entryAnimation]=\"state\"\n *ngIf=\"entry()\"\n>\n <h2>{{entry()?.title}}</h2>\n <a *ngIf=\"me?.id === entry()?.getProp('author_id')\" href=\"javascript:void(0)\" (click)=\"edit(entry())\"><h4>[Edit]</h4></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 <p *ngIf=\"entry()?.tags?.length > 0\">Tags: <span *ngFor=\"let tag of entry()?.tags; let last = last\">{{tag}}<ng-container *ngIf=\"!last\"> |\n </ng-container></span><span *ngIf=\"entry()?.views\">, {{entry()._friendly_views}} views</span></p>\n <br>\n\n <ng-container *ngFor=\"let section of entry()?.sections\">\n <h4>{{section?.subheading}}</h4>\n <ng-container *ngFor=\"let content of section?.contents\">\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><br>\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\n <ng-container *ngSwitchCase=\"ContentType.MEDIA\">\n <ng-container *ngIf=\"mediaIsZip(content)\">\n <div class=\"download\">\n <a href=\"content?.value\">{{content?.description}}</a>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!mediaIsZip(content)\">\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>\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 <ng-container>\n <h2>Comments</h2>\n <p *ngIf=\"comments?.length == 0\">There are no comments yet.</p>\n <ng-container *ngIf=\"comments?.length > 0\">\n <div *ngFor=\"let comment of comments\">\n <mat-card style=\"margin-bottom: 20px;\" class=\"restrict\">\n <mat-card-title><img class=\"gravatar\" src=\"{{comment.gravatar_url}} + ?s=30\"> {{comment.user_display_name}}</mat-card-title>\n <mat-card-subtitle>{{comment.date_obj | timeAgo}}</mat-card-subtitle>\n <mat-card-content>\n <p>{{comment.content}}</p>\n <ng-container *ngIf=\"me?.id === entry()?.__server_generated_properties?.author_id\">\n <a href=\"javascript:void(0);\" *ngIf=\"!comment?.approved\" (click)=\"approve(comment)\">Approve</a>\n <a href=\"javascript:void(0);\" *ngIf=\"comment?.approved\" (click)=\"unapprove(comment)\">Unapprove</a>\n </ng-container>\n </mat-card-content>\n </mat-card>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!me\">\n <a href=\"/signup\">Signup</a> or <a href=\"/login\">login</a> to join the conversation!\n </ng-container>\n <ng-container *ngIf=\"me && !me?.comments_public\">\n <p>Note, your comments will not be public be default. It is possible I will make your comments public, but for now comments are just between you and me.</p>\n </ng-container>\n <ng-container *ngIf=\"me\">\n <h2 style=\"width: 100%;\">Leave a Comment</h2>\n <br>\n <mat-form-field class=\"restrict\" style=\"width: 100%;\" appearance=\"outline\">\n <mat-label>Comment</mat-label>\n <textarea [(ngModel)]=\"commentText\" (keydown.enter)=\"postComment($event)\" matInput></textarea>\n </mat-form-field>\n <br>\n <button (click)=\"postComment($event)\" style=\"text-align: right;\" mat-button>Submit</button>\n </ng-container>\n <div style=\"margin-bottom: 30px;\"></div>\n</div>\n\n","import {Component, Input, OnInit} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {Entry} from '../../data/entry';\nimport {ContentType} from '../../data/content-type';\nimport {CommonModule} from '@angular/common';\nimport {StaticHtmlComponent} from '../static-html/static-html.component';\nimport {TimeAgoPipe} from '../../pipes/TimeAgoPipe';\n\n@Component({\n selector: 'app-entry-summary',\n templateUrl: './entry-summary.component.html',\n styleUrls: ['./entry-summary.component.scss'],\n imports: [\n CommonModule,\n StaticHtmlComponent,\n TimeAgoPipe,\n ]\n})\nexport class EntrySummaryComponent implements OnInit {\n\n ContentType = ContentType;\n\n @Input() entry: Entry;\n\n\n constructor(\n private router: Router,\n ) {\n }\n\n ngOnInit(): void {\n }\n\n routeTo(entry) {\n this.router.navigate(['/', 'blog', entry.slug]).then(() => {\n\n });\n }\n}\n","\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","import {Component, Input, OnInit} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Entry} from '../../data/entry';\nimport {EntryService} from '../../services/entry.service';\nimport {EntryRendererComponent} from '../entry-renderer/entry-renderer.component';\n//import {EntrySummaryComponent} from '../entry-summary/entry-summary.component';\n\n@Component({\n selector: 'app-json-renderer',\n templateUrl: './json-renderer.component.html',\n styleUrls: ['./json-renderer.component.scss'],\n imports: [\n CommonModule,\n EntryRendererComponent,\n //EntrySummaryComponent\n ]\n})\nexport class JsonRendererComponent implements OnInit {\n\n JSON = JSON;\n @Input() entry: Entry;\n\n constructor(\n private entryService: EntryService,\n ) {\n }\n\n ngOnInit() {\n this.entryService.currentlyEditedEntry.subscribe((entry) => {\n console.log(entry);\n this.entry = entry;\n });\n }\n\n}\n","<div class=\"section json-render json\">\n <app-entry-renderer [editMode]=\"true\" [entry]=\"entry\"></app-entry-renderer>\n <pre *ngIf=\"entry\">{{JSON.stringify(entry)}}</pre>\n</div>\n","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\nimport {CommonModule} from '@angular/common';\n\nimport {Entry} from '../../data/entry';\nimport {EntryService} from '../../services/entry.service';\n\nimport {EntrySummaryComponent} from '../entry-summary/entry-summary.component';\nimport {MatCardModule} from '@angular/material/card';\n\nimport {map} from 'lodash';\n\n@Component({\n selector: 'app-landing-page',\n templateUrl: './landing-page.component.html',\n styleUrls: ['./landing-page.component.scss'],\n imports: [\n CommonModule,\n EntrySummaryComponent,\n MatCardModule,\n ]\n})\nexport class LandingPageComponent implements OnInit, OnDestroy {\n\n JSON = JSON;\n\n entries;\n source;\n sourceSub;\n\n constructor(\n private router: Router,\n private entryService: EntryService,\n ) {\n\n }\n\n ngOnInit() {\n this.entryService.get().subscribe((response) => {\n this.entries = map((response as any).results.slice(0, 3), (result) => {\n return { id: result.id, entry: new Entry(result)};\n });\n });\n }\n\n ngOnDestroy(): void {\n if (this.sourceSub) {\n this.sourceSub.unsubscribe();\n this.sourceSub = null;\n }\n }\n\n}\n","<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","import {Component, Input, OnInit} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport {Entry} from '../../data/entry';\nimport {EntryService} from '../../services/entry.service';\n\nimport {MatCardModule} from '@angular/material/card';\nimport {DragDropModule} from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'app-outline-view',\n templateUrl: './outline-view.component.html',\n styleUrls: ['./outline-view.component.scss'],\n imports: [\n CommonModule,\n MatCardModule,\n DragDropModule\n ]\n})\nexport class OutlineViewComponent implements OnInit {\n\n entry: Entry;\n Math = Math;\n\n constructor(\n private entryService: EntryService\n ) {\n }\n\n ngOnInit() {\n this.entryService.currentlyEditedEntry.subscribe((entry) => {\n this.entry = entry;\n });\n }\n\n sectionDrop(e) {\n const entry = this.entry;\n const diff = e.currentIndex - e.previousIndex;\n entry.sections[e.previousIndex].order = e.currentIndex * 10 + (diff > 0 ? 1 : -1);\n entry.sort();\n this.entryService.currentlyEditedEntry.next(this.entry);\n }\n\n contentDrop(e, section) {\n const entry = this.entry;\n const diff = e.currentIndex - e.previousIndex;\n section.contents[e.previousIndex].order = e.currentIndex * 10 + (diff > 0 ? 1 : -1);\n entry.sort();\n this.entryService.currentlyEditedEntry.next(this.entry);\n }\n}\n","<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","import {Component, EventEmitter, OnDestroy, OnInit, Output, ElementRef, ViewChild, Renderer2} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport {Router} from '@angular/router';\nimport { FormControl } from '@angular/forms';\nimport {filter} from 'lodash';\nimport {map} from 'lodash';\nimport {debounceTime} from 'rxjs/operators';\n\nimport {Entry} from '../../data/entry';\nimport {Identity} from '../../data/identity';\nimport {ListResponse} from '../../data/list-response';\n\nimport {EntryService} from '../../services/entry.service';\nimport {IdentityService} from '../../services/identity.service';\n\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\nimport {MatSidenavModule} from '@angular/material/sidenav';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatListModule} from '@angular/material/list';\n\n@Component({\n selector: 'app-side-navigation',\n templateUrl: './side-navigation.component.html',\n styleUrls: ['./side-navigation.component.scss'],\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatProgressSpinnerModule,\n MatSidenavModule,\n MatInputModule,\n FormsModule,\n ReactiveFormsModule,\n MatListModule,\n ],\n animations: [\n trigger('sideNavAnimation', [\n state('in', style({ transform: 'translateX(0%)' })),\n state('out', style({ transform: 'translateX(110%)' })),\n transition('in => out', [\n animate('100ms ease-out', style({ transform: 'translateX(110%)' }))\n ]),\n transition('out => in', [\n animate('100ms ease-in', style({ transform: 'translateX(0%)' }))\n ])\n ]),\n ]\n})\nexport class SideNavigationComponent implements OnInit, OnDestroy {\n\n state: 'in' | 'out' = 'out';\n\n sourceSub;\n identity: Identity;\n\n response: ListResponse<Entry> = null;\n debounceTimeout = 200;\n loading = true;\n\n entries: {id: string, entry: Entry}[] = [];\n entriesByMonthAndYear: {month_year: string, month_year_number: number, entries: Entry[]}[] = [];\n\n searchTerm = \"\";\n\n doSearch: EventEmitter<string> = new EventEmitter();\n\n @ViewChild('navcontainer', { static: false }) divNav: ElementRef;\n\n constructor(\n private entryService: EntryService,\n private router: Router,\n private identityService: IdentityService,\n private renderer: Renderer2,\n ) {\n }\n\n ngOnInit() {\n\n this.doSearch.pipe(debounceTime(this.debounceTimeout)).subscribe((result) => {\n this.searchEntries(result);\n });\n\n this.identityService.getMe().subscribe((identity) => {\n this.identity = identity;\n }, (err) => {\n this.identity = null;\n });\n\n this.getEntries();\n\n }\n\n getMore() {\n this.getEntriesWithUrl(this.response.next, false);\n }\n\n getEntriesWithUrl(url: string, wipe = true) {\n this.loading = true;\n this.entryService.getListByUrl(url).subscribe((response) => {\n this.response = response;\n this.entries = this.entries.concat(\n map((response as any).results, (result) => {\n return { id: result.id, entry: new Entry(result)};\n })\n );\n this.organizeEntries(wipe);\n });\n }\n\n organizeEntries(wipe = true) {\n if (wipe) {\n this.state = 'out';\n }\n let organizeEntriesFn = () => {\n if(wipe) {\n this.entriesByMonthAndYear = [];\n }\n let newEntries = JSON.parse(JSON.stringify(this.entriesByMonthAndYear));\n for (const entryWrapper of this.entries) {\n const entry = entryWrapper.entry;\n const create_date = new Date(entry.create_date);\n const month = create_date.getMonth();\n const year = create_date.getFullYear();\n const key = month + '/' + year;\n const sort_index = (year * 100) + month;\n\n const containers = filter(newEntries, (entryContainer) => entryContainer.month_year === key);\n\n if (containers.length > 0) {\n const container = containers[0];\n const entriesWithId = filter(container.entries, (e) => e.id === entryWrapper.entry.id);\n if (entriesWithId.length === 0) {\n container.entries.push(entry);\n }\n } else {\n const newContainer = {month_year: key, month_year_number: sort_index, entries: [entry]};\n newEntries.push(newContainer);\n }\n }\n newEntries.sort(\n (entry_a, entry_b) => {\n return entry_a.month_year_number - entry_b.month_year_number;\n });\n newEntries.reverse();\n\n let setEntriesFn = () => {\n this.entriesByMonthAndYear = newEntries;\n this.loading = false;\n if (wipe) {\n this.state = 'in';\n }\n }\n setTimeout(setEntriesFn.bind(this), 400)\n }\n setTimeout(organizeEntriesFn.bind(this), 400)\n }\n\n getEntries() {\n this.loading = true;\n this.entryService.get().subscribe((response) => {\n this.response = response;\n this.entries = map(response.results, (result) => {\n return { id: result.id, entry: new Entry(result)};\n });\n this.organizeEntries();\n });\n }\n\n searchEntries(searchTerm: string) {\n\n let turnOnLoading = () => {\n this.loading = true;\n }\n setTimeout(turnOnLoading.bind(this), this.debounceTimeout + 100);\n if (searchTerm !== \"\") {\n this.entryService.search(searchTerm).subscribe((response) => {\n this.response = response;\n this.entries = map(response.results, (result) => {\n return { id: result.id, entry: new Entry(result)};\n });\n this.organizeEntries();\n });\n } else {\n this.getEntries();\n }\n }\n\n render() {\n }\n\n routeTo(entry, path = \"\") {\n if (!entry) {\n this.router.navigateByUrl(path).then(() => {\n\n });\n } else {\n this.router.navigate(['/', 'blog', entry.slug]).then(() => {\n // Noop\n });\n }\n }\n\n getMonthAndYearFromKey(key: string) {\n let subheading = '';\n const parts = key.split('/');\n\n switch (Number(parts[0])) {\n case 0:\n subheading += 'January ';\n break;\n case 1:\n subheading += 'February ';\n break;\n case 2:\n subheading += 'March ';\n break;\n case 3:\n subheading += 'April ';\n break;\n case 4:\n subheading += 'May ';\n break;\n case 5:\n subheading += 'June ';\n break;\n case 6:\n subheading += 'July ';\n break;\n case 7:\n subheading += 'August ';\n break;\n case 8:\n subheading += 'September ';\n break;\n case 9:\n subheading += 'October ';\n break;\n case 10:\n subheading += 'November ';\n break;\n case 11:\n subheading += 'December ';\n break;\n default:\n subheading += 'January ';\n }\n subheading += parts[1];\n\n return subheading;\n }\n\n ngOnDestroy(): void {\n if (this.sourceSub) {\n this.sourceSub.unsubscribe();\n this.sourceSub = null;\n }\n }\n\n searchControl = new FormControl('');\n\n onSearchChange(searchValue: string): void {\n this.doSearch.emit(searchValue);\n }\n}\n","<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\n class=\"progress\"\n [hidden]=\"!loading\"\n >\n <mat-progress-spinner\n style=\"margin-left: 16px;\"\n [diameter]=20\n mode=\"indeterminate\"\n >\n </mat-progress-spinner>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list>\n @for(container of entriesByMonthAndYear; track container) {\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n @for(entry of container.entries; track entry.id) {\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n }\n }\n </mat-nav-list>\n\n <a\n class=\"sidelink\"\n *ngIf=\"this?.response?.next && !loading\"\n (click)=\"getMore()\"\n href=\"javascript:void(0);\">More...</a>\n </div>\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n <mat-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null, 'create/v2(left-col:create//right-col:create)')\">Create</a>\n </mat-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n","import { Component, HostListener, OnDestroy, OnInit } from '@angular/core';\nimport {RouterModule, NavigationEnd, Router} from '@angular/router';\nimport {Subject, Subscription} from 'rxjs';\nimport {debounceTime} from 'rxjs/operators';\nimport {MatSidenavModule} from '@angular/material/sidenav';\n\n@Component({\n selector: 'lib-main',\n templateUrl: './main.component.html',\n styleUrls: ['./main.component.css'],\n imports: [\n RouterModule,\n MatSidenavModule,\n ]\n})\nexport class MainComponent implements OnInit, OnDestroy {\n\n loaded = true;\n subs: Subscription = new Subscription();\n showRightCol: boolean;\n showLeftCol: boolean;\n\n public innerWidth: any;\n\n resizeSubject = new Subject<number>();\n\n constructor(\n private router: Router,\n ) {\n\n }\n\n ngOnInit(): void {\n this.subs.add(this.router.events.subscribe((e) => {\n if (e instanceof NavigationEnd) {\n if (e.urlAfterRedirects.includes('create')) {\n this.showLeftCol = true;\n this.showRightCol = true;\n } else {\n this.showLeftCol = true;\n this.showRightCol = false;\n this.innerWidth = window.innerWidth;\n this.collapseLeftColIfTooNarrow();\n }\n }\n }));\n\n this.subs.add(this.resizeSubject.pipe(\n debounceTime(100)\n ).subscribe((width) => {\n this.innerWidth = width;\n this.collapseLeftColIfTooNarrow();\n }));\n }\n\n collapseLeftColIfTooNarrow() {\n this.showLeftCol = this.innerWidth >= 800;\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.resizeSubject.next(window.innerWidth);\n }\n\n ngOnDestroy(): void {\n this.subs.unsubscribe();\n }\n\n}\n","<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","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\nimport {InteractionService} from '../../services/analytics/interaction.service';\nimport {ViewService} from '../../services/analytics/view.service';\nimport {EntryService} from '../../services/entry.service';\nimport {Interaction} from '../../services/interaction';\nimport {View} from '../../services/view';\nimport {EntryRendererComponent} from '../entry-renderer/entry-renderer.component';\n\n@Component({\n selector: 'lib-entry-renderer-wrapper',\n templateUrl: './entry-renderer-wrapper.component.html',\n styleUrls: ['./entry-renderer-wrapper.component.css'],\n imports: [\n CommonModule,\n EntryRendererComponent\n ]\n})\nexport class EntryRendererWrapperComponent implements OnInit, OnDestroy {\n entries;\n currentEntry;\n seeAllEntries = false;\n routerSub;\n\n seeAll(toggle: boolean) {\n this.seeAllEntries = toggle;\n }\n\n constructor(\n private entryService: EntryService,\n private router: Router,\n private route: ActivatedRoute,\n private viewService: ViewService,\n private interactionService: InteractionService\n ) {\n }\n\n getEntry() {\n const slug = this.route.snapshot.paramMap.get('slug');\n if (slug) {\n this.entryService.getBySlug(slug).subscribe((response) => {\n this.currentEntry = response;\n const view = new View();\n view.entry = this.currentEntry.id;\n\n this.viewService.create(view).subscribe((viewResponse) => {\n // Noop\n });\n });\n }\n\n this.route.queryParams.subscribe(params => {\n const campaign = params['campaign'];\n if (campaign && campaign !== '') {\n\n const interaction = new Interaction();\n interaction.content = {'campaign': campaign, slug};\n this.interactionService.create(interaction).subscribe((response) => {\n\n });\n setTimeout(() => {\n const urlMinsCampaign = this.router.url.replace(new RegExp('.campaign=' + campaign), '');\n this.router.navigateByUrl(urlMinsCampaign);\n }, 0);\n }\n });\n }\n\n ngOnInit() {\n this.routerSub = this.router.events.subscribe((e) => {\n if (e instanceof NavigationEnd) {\n this.currentEntry = null;\n this.seeAll(false);\n setTimeout(() => {\n this.getEntry();\n }, 10);\n }\n });\n\n this.getEntry();\n }\n\n ngOnDestroy(): void {\n if (this.routerSub) {\n this.routerSub.complete();\n this.routerSub = null;\n }\n }\n\n}\n","<div class=\"rendered-entry section\">\n <app-entry-renderer *ngIf=\"currentEntry\" [entry]=\"currentEntry\"></app-entry-renderer>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport Autolinker from 'autolinker';\n\n@Pipe({ name: 'linky' })\nexport class LinkyPipe implements PipeTransform {\n transform(value: string, options?: any): string {\n return Autolinker.link(value, Object.assign({}, options, {newWindow: true, stripPrefix: false}));\n }\n}\n","import {Routes as AngularRoutes, RouterModule} from '@angular/router';\nimport {EntryCreatorComponent} from '../components/entry-creator/entry-creator.component';\nimport {EntryRendererWrapperComponent} from '../components/entry-renderer-wrapper/entry-renderer-wrapper.component';\nimport {JsonRendererComponent} from '../components/json-renderer/json-renderer.component';\nimport {MainComponent} from '../components/main/main.component';\nimport {OutlineViewComponent} from '../components/outline-view/outline-view.component';\nimport {SideNavigationComponent} from '../components/side-navigation/side-navigation.component';\n\nconst routes: AngularRoutes = [\n {path: '', component: SideNavigationComponent, outlet: 'left-col'},\n {\n path: 'landing',\n component: MainComponent\n },\n {path: 'blog/:slug', component: EntryRendererWrapperComponent},\n {path: 'create', component: EntryCreatorComponent},\n {path: 'create', component: OutlineViewComponent, outlet: 'left-col'},\n {path: 'create', component: JsonRendererComponent, outlet: 'right-col'},\n {path: '', redirectTo: '/landing', pathMatch: 'full'},\n {path: '**', redirectTo: '/404error'}\n];\n\nexport class Routes {\n routes: AngularRoutes = routes;\n}\n","export class SchedulePublishDialogData {\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport {MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\nimport {SchedulePublishDialogData} from './schedule-publish-dialog-data';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatTimepickerModule} from '@angular/material/timepicker';\n\n@Component({\n selector: 'lib-schedule-publish-dialog',\n templateUrl: './schedule-publish-dialog.component.html',\n styleUrls: ['./schedule-publish-dialog.component.css'],\n imports: [\n MatFormFieldModule,\n MatDatepickerModule,\n MatTimepickerModule\n ]\n})\nexport class SchedulePublishDialogComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef<SchedulePublishDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: SchedulePublishDialogData,\n ) { }\n\n ngOnInit(): void {\n }\n\n onNoClick(): void {\n }\n\n onYesClick(): void {\n this.dialogRef.close('test');\n }\n}\n","<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 [matTimepicker]=\"timepicker\" readonly>\n<mat-timepicker #timepicker></mat-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","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {BrowserModule} from '@angular/platform-browser';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\n\nimport {DragDropModule} from '@angular/cdk/drag-drop';\nimport {MatDividerModule} from '@angular/material/divider';\nimport {MatCardModule} from '@angular/material/card';\nimport {MatSidenavModule} from '@angular/material/sidenav';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatListModule} from '@angular/material/list';\nimport {MatRadioModule} from '@angular/material/radio';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatChipsModule} from '@angular/material/chips';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatNativeDateModule} from '@angular/material/core';\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatTableModule} from '@angular/material/table';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\n\nimport {FontAwesomeModule, FaIconLibrary} from '@fortawesome/angular-fontawesome';\nimport {faSpinner} from '@fortawesome/free-solid-svg-icons';\nimport {FileUploadModule} from 'ng2-file-upload';\n\nimport { QuillModule } from 'ngx-quill';\nimport {provideQuillConfig} from 'ngx-quill';\n\nimport { CommentService } from './services/comment.service';\nimport { EntryService } from './services/entry.service';\nimport { UploadService } from './services/upload.service';\nimport { PrismService } from './services/prism.service';\nimport { IdentityService } from './services/identity.service';\nimport { DjangoRestFrameworkEndpointService } from './services/django-rest-framework-endpoint.service';\nimport {EntryRendererComponent} from './components/entry-renderer/entry-renderer.component';\nimport {EntryCreatorComponent} from './components/entry-creator/entry-creator.component';\nimport {OutlineViewComponent} from './components/outline-view/outline-view.component';\nimport {SideNavigationComponent} from './components/side-navigation/side-navigation.component';\nimport {LandingPageComponent} from './components/landing-page/landing-page.component';\nimport {JsonRendererComponent} from './components/json-renderer/json-renderer.component';\nimport {EntrySummaryComponent} from './components/entry-summary/entry-summary.component';\nimport { MediaUploadModalComponent } from './components/media-upload-modal/media-upload-modal.component';\nimport { EntrySelectorDialogComponent } from './components/entry-selector-dialog/entry-selector-dialog.component';\nimport {TimeAgoPipe} from './pipes/TimeAgoPipe';\nimport {LinkyPipe} from './pipes/LinkyPipe';\nimport { StaticHtmlComponent } from './components/static-html/static-html.component';\nimport {TagService} from './services/tag.service';\nimport { MainComponent } from './components/main/main.component';\nimport { EntryRendererWrapperComponent } from './components/entry-renderer-wrapper/entry-renderer-wrapper.component';\nimport {RouterModule} from '@angular/router';\nimport { SchedulePublishDialogComponent } from './components/schedule-publish-dialog/schedule-publish-dialog.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n ReactiveFormsModule,\n DragDropModule,\n MatCardModule,\n MatSidenavModule,\n MatButtonModule,\n MatInputModule,\n MatListModule,\n MatRadioModule,\n MatDialogModule,\n MatCheckboxModule,\n MatDividerModule,\n MatAutocompleteModule,\n MatChipsModule,\n MatIconModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatProgressSpinnerModule,\n FontAwesomeModule,\n FileUploadModule,\n EntryRendererComponent,\n EntryCreatorComponent,\n LandingPageComponent,\n SideNavigationComponent,\n OutlineViewComponent,\n JsonRendererComponent,\n EntrySummaryComponent,\n EntrySelectorDialogComponent,\n MediaUploadModalComponent,\n TimeAgoPipe,\n LinkyPipe,\n StaticHtmlComponent,\n MainComponent,\n EntryRendererWrapperComponent,\n SchedulePublishDialogComponent,\n ],\n providers: [\n CommentService,\n EntryService,\n UploadService,\n PrismService,\n IdentityService,\n DjangoRestFrameworkEndpointService,\n TagService\n ],\n exports: [\n EntryRendererComponent,\n EntryCreatorComponent,\n LandingPageComponent,\n SideNavigationComponent,\n OutlineViewComponent,\n JsonRendererComponent,\n EntrySummaryComponent,\n EntrySelectorDialogComponent,\n MediaUploadModalComponent,\n TimeAgoPipe,\n LinkyPipe,\n StaticHtmlComponent,\n MainComponent,\n EntryRendererWrapperComponent,\n ]\n})\nexport class CoreModule {\n constructor(\n private library: FaIconLibrary\n ) {\n this.library.addIcons(faSpinner);\n }\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib/data/base';\nexport * from './lib/data/content-type';\nexport * from './lib/data/content';\nexport * from './lib/data/entry';\nexport * from './lib/data/guid';\nexport * from './lib/data/identity';\nexport * from './lib/data/list-response';\nexport * from './lib/data/section';\nexport * from './lib/data/core-event';\nexport * from './lib/data/core-event-type.enum';\nexport * from './lib/data/visitor-profile';\n\nexport * from './lib/services/comment.service';\nexport * from './lib/services/django-rest-framework-endpoint.service';\nexport * from './lib/services/entry.service';\nexport * from './lib/services/identity.service';\nexport * from './lib/services/prism.service';\nexport * from './lib/services/upload.service';\nexport * from './lib/services/upload';\nexport * from './lib/services/analytics/view.service';\nexport * from './lib/services/analytics/interaction.service';\nexport * from './lib/services/view';\nexport * from './lib/services/interaction';\nexport * from './lib/services/visitor-profile.service';\nexport * from './lib/services/static-html.service';\nexport * from './lib/services/tag.service';\nexport * from './lib/services/utility';\n\nexport * from './lib/components/entry-creator/entry-creator.component';\nexport * from './lib/components/entry-renderer/entry-renderer.component';\nexport * from './lib/components/entry-selector-dialog/entry-selector-dialog.component';\nexport * from './lib/components/entry-summary/entry-summary.component';\nexport * from './lib/components/json-renderer/json-renderer.component';\nexport * from './lib/components/landing-page/landing-page.component';\nexport * from './lib/components/media-upload-modal/media-upload-modal.component';\nexport * from './lib/components/outline-view/outline-view.component';\nexport * from './lib/components/side-navigation/side-navigation.component';\nexport * from './lib/components/static-html/static-html.component';\nexport * from './lib/components/main/main.component';\nexport * from './lib/components/entry-renderer-wrapper/entry-renderer-wrapper.component';\n\nexport * from './lib/pipes/LinkyPipe';\nexport * from './lib/pipes/TimeAgoPipe';\n\nexport * from './lib/routing/routes';\n\nexport * from './lib/core.module';\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.EntryService","i2.UploadService","i3","i4","i5","i6","loMap","i3.TagService","i4.IdentityService","i15","i1.StaticHtmlService","i2","i1.PrismService","i2.IdentityService","i3.CommentService","i5.EntryService","i1.EntryService","map","i3.IdentityService","i7","i8","i9","i3.ViewService","i4.InteractionService"],"mappings":"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"}
|