<commit_before><div class="app-container" fxLayout="column">
  <!-- Toolbar. -->
  <div class="toolbar-container">
    <app-toolbar></app-toolbar>
  </div>
  <div class="display-container" fxLayout="column" fxFlex>
    <!-- Start/Preview/End canvases. -->
    <ng-container *ngIf="{type: (cursorObservable | async) } as cursor">
      <div #canvasContainer class="canvas-container" fxFlex fxLayout="row"
        (click)="onCanvasContainerClick()" fxLayoutAlign="center center"
        [ngClass]="{
          'show-default-cursor': cursor.type === CURSOR_DEFAULT,
          'show-pointer-cursor': cursor.type === CURSOR_POINTER,
          'show-pen-cursor': cursor.type === CURSOR_PEN
        }">
        <app-canvas [canvasType]="START_CANVAS"></app-canvas>
        <app-canvas *ngIf="wasMorphable" [canvasType]="PREVIEW_CANVAS"></app-canvas>
        <app-canvas [canvasType]="END_CANVAS"></app-canvas>
      </div>
    </ng-container>
    <!-- Timeline controls. -->
    <app-timeline></app-timeline>
  </div>
  <div class="inspector-container" fxLayout="row">
    <app-splitter></app-splitter>
    <!-- SVG importer and/or path selector. -->
    <div fxLayout="column" class="inspector-panel">
      <div class="inspector-panel-header" fxLayout="row" fxLayoutAlign="start center">
        <div fxFlex fxLayoutAlign="end center">
          <span fxFlex>Paths</span>
          <button md-icon-button mdTooltip="Add paths" mdTooltipPosition="above"
            mdTooltipShowDelay="300" [mdMenuTriggerFor]="addPathsMenu">
            <md-icon class="svg-button" svgIcon="addpaths"></md-icon>
          </button>
          <!-- TODO: allow multiple files to be imported at once -->
          <md-menu #addPathsMenu="mdMenu">
            <button md-menu-item (click)="addPathsFromSvg()">
              Add paths from SVG
              <div>
                <input id="addPathsFromSvgButton" type="file" accept=".svg"
                  (change)="onSvgFilesPicked(($event.target || $event.srcElement).files)">
              </div>
            </button>
            <button md-menu-item (click)="addPathsFromXml()">
              Add paths from Vector Drawable
              <div>
                <input id="addPathsFromXmlButton" type="file" accept=".xml"
                  (change)="onXmlFilesPicked(($event.target || $event.srcElement).files)">
              </div>
            </button>
          </md-menu>
        </div>
      </div>
      <app-vectorviewer fxFlexFill></app-vectorviewer>
    </div>
    <!-- Path inspector. -->
    <div class="inspector-panel" fxLayout="column" fxFlex>
      <div class="inspector-panel-header" fxLayout="row" fxLayoutAlign="start center">
        <span class="status-text" [ngClass]="{
            'unmorphable': morphStatus === MORPH_UNMORPHABLE,
            'morphable': morphStatus === MORPH_MORPHABLE}" [innerHTML]="statusTextObservable | async">
        </span>
      </div>
      <app-pathinspector fxFlexFill></app-pathinspector>
    </div>
    <!-- Preview panel. -->
    <div class="inspector-panel" fxLayout="column">
      <div class="inspector-panel-header" fxLayoutAlign="start center">
        <span>Preview</span>
      </div>
      <app-settings fxFlexFill></app-settings>
    </div>
  </div>
</div>
<commit_msg>allow multiple files to be imported at once<commit_after><div class="app-container" fxLayout="column">
  <!-- Toolbar. -->
  <div class="toolbar-container">
    <app-toolbar></app-toolbar>
  </div>
  <div class="display-container" fxLayout="column" fxFlex>
    <!-- Start/Preview/End canvases. -->
    <ng-container *ngIf="{type: (cursorObservable | async) } as cursor">
      <div #canvasContainer class="canvas-container" fxFlex fxLayout="row"
        (click)="onCanvasContainerClick()" fxLayoutAlign="center center"
        [ngClass]="{
          'show-default-cursor': cursor.type === CURSOR_DEFAULT,
          'show-pointer-cursor': cursor.type === CURSOR_POINTER,
          'show-pen-cursor': cursor.type === CURSOR_PEN
        }">
        <app-canvas [canvasType]="START_CANVAS"></app-canvas>
        <app-canvas *ngIf="wasMorphable" [canvasType]="PREVIEW_CANVAS"></app-canvas>
        <app-canvas [canvasType]="END_CANVAS"></app-canvas>
      </div>
    </ng-container>
    <!-- Timeline controls. -->
    <app-timeline></app-timeline>
  </div>
  <div class="inspector-container" fxLayout="row">
    <app-splitter></app-splitter>
    <!-- SVG importer and/or path selector. -->
    <div fxLayout="column" class="inspector-panel">
      <div class="inspector-panel-header" fxLayout="row" fxLayoutAlign="start center">
        <div fxFlex fxLayoutAlign="end center">
          <span fxFlex>Paths</span>
          <button md-icon-button mdTooltip="Add paths" mdTooltipPosition="above"
            mdTooltipShowDelay="300" [mdMenuTriggerFor]="addPathsMenu">
            <md-icon class="svg-button" svgIcon="addpaths"></md-icon>
          </button>
          <md-menu #addPathsMenu="mdMenu">
            <button md-menu-item (click)="addPathsFromSvg()">
              Add paths from SVG
              <div>
                <input multiple id="addPathsFromSvgButton" type="file" accept=".svg"
                  (change)="onSvgFilesPicked(($event.target || $event.srcElement).files)">
              </div>
            </button>
            <button md-menu-item (click)="addPathsFromXml()">
              Add paths from Vector Drawable
              <div>
                <input multiple id="addPathsFromXmlButton" type="file" accept=".xml"
                  (change)="onXmlFilesPicked(($event.target || $event.srcElement).files)">
              </div>
            </button>
          </md-menu>
        </div>
      </div>
      <app-vectorviewer fxFlexFill></app-vectorviewer>
    </div>
    <!-- Path inspector. -->
    <div class="inspector-panel" fxLayout="column" fxFlex>
      <div class="inspector-panel-header" fxLayout="row" fxLayoutAlign="start center">
        <span class="status-text" [ngClass]="{
            'unmorphable': morphStatus === MORPH_UNMORPHABLE,
            'morphable': morphStatus === MORPH_MORPHABLE}" [innerHTML]="statusTextObservable | async">
        </span>
      </div>
      <app-pathinspector fxFlexFill></app-pathinspector>
    </div>
    <!-- Preview panel. -->
    <div class="inspector-panel" fxLayout="column">
      <div class="inspector-panel-header" fxLayoutAlign="start center">
        <span>Preview</span>
      </div>
      <app-settings fxFlexFill></app-settings>
    </div>
  </div>
</div>

{'fraction_non_alphanumeric': 0.16448885472713298, 'fraction_numerical': 0.0009223674096848578, 'mean_word_length': 2.6245125348189413, 'pattern_counts': {'":': 0, '<': 148, '<?xml version=': 0, '>': 148, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1522925', 'n_tokens_mistral': 2062, 'n_tokens_neox': 2005, 'n_words': 356}