import {
    {{#each imports}}
    {{{this}}},
    {{/each}}
    AbstractRenderingComponent
} from '@ibm-wch-sdk/ng';
import { Input, Output } from '@angular/core';
import { Observable } from 'rxjs';

/**
{{#if name}}
 * @name {{{name}}}
{{/if}}
{{#if id}}
 * @id {{{id}}}
{{/if}}
{{#if description}}
 * @description {{{description}}}
{{/if}}
{{#if creator}}
 * @author {{{creator}}}
{{/if}}
 */
export abstract class {{{className}}} extends AbstractRenderingComponent {

    @Output()
    onLayoutMode: Observable<string>;

    @Output()
    onRenderingContext: Observable<RenderingContext>;

    @Input()
    renderingContext: RenderingContext;

    @Input()
    layoutMode: string;

    {{#each bindings}}
    /**
{{{this.comment}}}
     */
    @RenderingContextBinding('{{{this.expression}}}'{{#if default}}, {{{this.default}}}{{/if}})
    {{{this.key}}}: {{{this.type}}};

    {{/each}}

    protected constructor() {
        super();
    }
}
