Home Reference Source

js/template/EncodingTemplate.js

import Template, { TemplateType } from '~/template/Template';

import { fromEvent } from 'rxjs';

/**
 * A template representing an encoding.
 */
export default class EncodingTemplate extends Template {
    /**
     * Creates a EncodingTemplate given a encoding object.
     *
     * @param {Encoding} encoding - Encoding object
     */
    constructor(encoding) {
        super(
            <div class="lang-box">
                <div class="lang-box__info">
                    <span class="lang-box__name">{ encoding.displayName }</span>
                </div>
            </div>
        );
    }
}

export class EncodingFixedTemplate extends Template {
    /**
    * @param {Encoding} encoding - Encoding object
     */
    constructor(encoding) {
        let close = <a class="lang-box__close"><img src="/static/img/close.svg"/></a>;

        super(
            <div class="lang-box lang-box--fixed">
                <div class="lang-box__info">
                    <span class="lang-box__name">{ encoding.displayName }</span>
                </div>
                { close }
            </div>
        );

        this._cancel = fromEvent(close, 'click');
    }

    /**
     * Observable emitted when 'close' is triggered.
     * @return {Observable}
     */
    observeCancel() {
        return this._cancel;
    }
}