<!--
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<div class="note-toc" [class.simple]="note.config.looknfeel !== 'default'">
  <div class="toc-heading">Table of Contents</div>
  <div class="toc-placeholder" *ngIf="rows.length === 0">
    <i nz-icon nzType="unordered-list" nzTheme="outline"></i>
    <span class="toc-message">Headings in the output show up here</span>
  </div>
  <div class="toc-row" *ngFor="let row of rows" (click)="onRowClick(row.paragraphId)">
    <div *ngFor="let _ of Arr(row.level)" class="toc-indent">&nbsp;</div>
    <span [class.toc-top-level-heading]="row.level === 1">{{ row.title }}</span>
  </div>
</div>
