{% import "helpers/type.html.nunj" as typeMacro %}
{% import "helpers/declaration-modifiers.html.nunj" as tagsMacro %}
{% import "helpers/decorators.html.nunj" as decoratorsMacro %}

{% macro render(parameters, origin, slugger) %}
    <table class="ng-doc-api-table">
        <thead>
        <tr indexable="false">
            <th>Name</th>
            <th>Type</th>
            <th>Description</th>
        </tr>
        </thead>
        <tbody>
        {%- for param in parameters %}
            {% set paramChain = param | getPropertyChain %}
            {% set inheritedFrom = param | getInheritedParent(origin) %}
            {% set overriddenMember = param | getOverriddenMember %}
            {% set implementedMember = param | getImplementedMember %}
            {% set docNode = paramChain | firstNodeWithComment %}

            <tr {{ 'dataSlug="'+param.getName()+'" dataSlugType="member"' if slugger }}>
                <td indexable="false">
                    {{ decoratorsMacro.render(param.getDecorators(), true) if param.getDecorators }}
                    {{ tagsMacro.render(param, "badge") }}{{ param.getName() }}
                    <div class="ng-doc-node-details">
                        {%- if inheritedFrom %}
                            inherited from <code>{{ inheritedFrom.getName() }}</code>
                        {%- elseif overriddenMember %}
                            overrides
                            <code>{{ (overriddenMember | getMemberParent).getName() }}</code>
                        {%- elseif implementedMember %}
                            implements
                            <code>{{ (implementedMember | getMemberParent).getName() }}</code>
                        {%- endif %}
                    </div>
                </td>
                <td>{{ typeMacro.type(param) }}</td>
                <td>{{ origin | getJsDocParam(param.getName()) }}</td>
            </tr>
        {%- endfor %}
        </tbody>
    </table>
{% endmacro %}
