RSS Git Download  Clone
Raw Blame History
import {Injectable} from '@angular/core';
import {Layout} from '../layout/cory-layout';
const Worker = require(`../../../../worker/markdown.worker`);
const worker = new Worker();

const nextId  = require('../utils/next-id.js')

@Injectable()
export class MarkdownService {

    public context: any;
    layout: Layout;

    constructor() {
    }

    public render(md: string, layout: Layout, path: string) {
        this.layout = layout;

        return new Promise((resolve, reject) => {
            const requestId = nextId()
            const message =  (event: any) => {
                if (event.data.requestId === requestId) {
                    worker.removeEventListener('message', message)
                    if (event.data.success === true) {
                        resolve(event.data.html)
                    } else {
                        reject(new Error(event.data.errorMessage));
                    }
                }
            }

            worker.addEventListener('message', message)

            worker.postMessage({
                md: md,
                settings: this.context.settings.data,
                currentRepo: this.layout.currentRepo,
                packages: this.layout.packages,
                requestId: requestId,
                path: path,
            });
        })
    }
}