<!--
~ 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>
  @if (rows.length === 0) {
    <div class="toc-placeholder">
      <i nz-icon nzType="unordered-list" nzTheme="outline"></i>
      <span class="toc-message">Headings in the output show up here</span>
    </div>
  }
  @for (row of rows; track row) {
    <div class="toc-row" (click)="onRowClick(row.paragraphId)">
      @for (_ of Arr(row.level); track _) {
        <div class="toc-indent">&nbsp;</div>
      }
      <span [class.toc-top-level-heading]="row.level === 1">{{ row.title }}</span>
    </div>
  }
</div>
