<commit_before><!-- Buttons to add to the header. *ngIf is needed, otherwise the component is executed too soon and doesn't find the header. -->
<core-navbar-buttons slot="end" *ngIf="loaded">
    <core-context-menu>
        <core-context-menu-item [hidden]="!displaySectionSelector || !sections || !sections.length" [priority]="500"
            [content]="'core.course.sections' | translate" (action)="showSectionSelector()" iconAction="menu">
        </core-context-menu-item>
    </core-context-menu>
</core-navbar-buttons>

<core-block-course-blocks *ngIf="loaded" [courseId]="course!.id" [hideBlocks]="!displayBlocks" [downloadEnabled]="downloadEnabled"
    [hideBottomBlocks]="selectedSection && selectedSection.id == allSectionsId && canLoadMore">

    <core-dynamic-component [component]="courseFormatComponent" [data]="data">
        <!-- Default course format. -->
        <core-loading [hideUntil]="loaded">
            <!-- Section selector. -->
            <core-dynamic-component [component]="sectionSelectorComponent" [data]="data">

                <div *ngIf="displaySectionSelector && sections && hasSeveralSections"
                    class="ion-text-wrap ion-justify-content-between ion-align-items-center core-button-selector-row"
                    [class.core-section-download]="downloadEnabled">
                    <core-combobox [modalOptions]="sectionSelectorModalOptions" interface="modal" listboxId="core-course-section-button"
                        icon="fas-folder" [label]="'core.course.section' | translate" (onChange)="sectionChanged($event)"><commit_msg>MOBILE-3320 a11y: Fix section selection never read on voiceover<commit_after><!-- Buttons to add to the header. *ngIf is needed, otherwise the component is executed too soon and doesn't find the header. -->
<core-navbar-buttons slot="end" *ngIf="loaded">
    <core-context-menu>
        <core-context-menu-item [hidden]="!displaySectionSelector || !sections || !sections.length" [priority]="500"
            [content]="'core.course.sections' | translate" (action)="showSectionSelector()" iconAction="menu">
        </core-context-menu-item>
    </core-context-menu>
</core-navbar-buttons>

<core-block-course-blocks *ngIf="loaded" [courseId]="course!.id" [hideBlocks]="!displayBlocks" [downloadEnabled]="downloadEnabled"
    [hideBottomBlocks]="selectedSection && selectedSection.id == allSectionsId && canLoadMore">

    <core-dynamic-component [component]="courseFormatComponent" [data]="data">
        <!-- Default course format. -->
        <core-loading [hideUntil]="loaded">
            <!-- Section selector. -->
            <core-dynamic-component [component]="sectionSelectorComponent" [data]="data">

                <div *ngIf="displaySectionSelector && sections && hasSeveralSections"
                    class="ion-text-wrap ion-justify-content-between ion-align-items-center core-button-selector-row"
                    [class.core-section-download]="downloadEnabled">
                    <core-combobox
                        [modalOptions]="sectionSelectorModalOptions"
                        interface="modal"
                        listboxId="core-course-section-button"
                        icon="fas-folder"
                        [label]="'core.course.section' | translate"
                        [selection]="selectedSection ? selectedSection.name : 'core.course.sections' | translate"
                        (onChange)="sectionChanged($event)"
                    >
{'fraction_non_alphanumeric': 0.14809510169006015, 'fraction_numerical': 0.0034374104841019765, 'mean_word_length': 3.0, 'pattern_counts': {'":': 0, '<': 33, '<?xml version=': 0, '>': 33, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 8, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3750820', 'n_tokens_mistral': 947, 'n_tokens_neox': 900, 'n_words': 165}