/**
 * @license
 * Copyright (C) 2020 The Android Open Source Project
 *
 * 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.
 */
import {html} from '@polymer/polymer/lib/utils/html-tag.js';

export const htmlTemplate = html`
    <style include="shared-styles">
      /* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */
    </style>
    <style include="gr-form-styles">
      /* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */
    </style>
    <div id="diffPreferences" class="gr-form-styles">
      <section>
        <span class="title">Context</span>
        <span class="value">
          <gr-select id="contextSelect" bind-value="{{diffPrefs.context}}">
            <select on-keypress="_handleDiffPrefsChanged" on-change="_handleDiffPrefsChanged">
              <option value="3">3 lines</option>
              <option value="10">10 lines</option>
              <option value="25">25 lines</option>
              <option value="50">50 lines</option>
              <option value="75">75 lines</option>
              <option value="100">100 lines</option>
              <option value="-1">Whole file</option>
            </select>
          </gr-select>
        </span>
      </section>
      <section>
        <span class="title">Fit to screen</span>
        <span class="value">
          <input id="lineWrappingInput" type="checkbox" checked\$="[[diffPrefs.line_wrapping]]" on-change="_handleLineWrappingTap">
        </span>
      </section>
      <section>
        <span class="title">Diff width</span>
        <span class="value">
          <iron-input type="number" prevent-invalid-input="" allowed-pattern="[0-9]" bind-value="{{diffPrefs.line_length}}" on-keypress="_handleDiffPrefsChanged" on-change="_handleDiffPrefsChanged">
            <input is="iron-input" type="number" id="columnsInput" prevent-invalid-input="" allowed-pattern="[0-9]" bind-value="{{diffPrefs.line_length}}" on-keypress="_handleDiffPrefsChanged" on-change="_handleDiffPrefsChanged">
          </iron-input>
        </span>
      </section>
      <section>
        <span class="title">Tab width</span>
        <span class="value">
          <iron-input type="number" prevent-invalid-input="" allowed-pattern="[0-9]" bind-value="{{diffPrefs.tab_size}}" on-keypress="_handleDiffPrefsChanged" on-change="_handleDiffPrefsChanged">
            <input is="iron-input" type="number" id="tabSizeInput" prevent-invalid-input="" allowed-pattern="[0-9]" bind-value="{{diffPrefs.tab_size}}" on-keypress="_handleDiffPrefsChanged" on-change="_handleDiffPrefsChanged">
          </iron-input>
        </span>
      </section>
      <section hidden\$="[[!diffPrefs.font_size]]">
        <span class="title">Font size</span>
        <span class="value">
          <iron-input type="number" prevent-invalid-input="" allowed-pattern="[0-9]" bind-value="{{diffPrefs.font_size}}" on-keypress="_handleDiffPrefsChanged" on-change="_handleDiffPrefsChanged">
            <input is="iron-input" type="number" id="fontSizeInput" prevent-invalid-input="" allowed-pattern="[0-9]" bind-value="{{diffPrefs.font_size}}" on-keypress="_handleDiffPrefsChanged" on-change="_handleDiffPrefsChanged">
          </iron-input>
        </span>
      </section>
      <section>
        <span class="title">Show tabs</span>
        <span class="value">
          <input id="showTabsInput" type="checkbox" checked\$="[[diffPrefs.show_tabs]]" on-change="_handleShowTabsTap">
        </span>
      </section>
      <section>
        <span class="title">Show trailing whitespace</span>
        <span class="value">
          <input id="showTrailingWhitespaceInput" type="checkbox" checked\$="[[diffPrefs.show_whitespace_errors]]" on-change="_handleShowTrailingWhitespaceTap">
        </span>
      </section>
      <section>
        <span class="title">Syntax highlighting</span>
        <span class="value">
          <input id="syntaxHighlightInput" type="checkbox" checked\$="[[diffPrefs.syntax_highlighting]]" on-change="_handleSyntaxHighlightTap">
        </span>
      </section>
      <section>
        <span class="title">Automatically mark viewed files reviewed</span>
        <span class="value">
          <input id="automaticReviewInput" type="checkbox" checked\$="[[!diffPrefs.manual_review]]" on-change="_handleAutomaticReviewTap">
        </span>
      </section>
      <section>
        <div class="pref">
          <span class="title">Ignore Whitespace</span>
          <span class="value">
            <gr-select bind-value="{{diffPrefs.ignore_whitespace}}">
              <select on-keypress="_handleDiffPrefsChanged" on-change="_handleDiffPrefsChanged">
                <option value="IGNORE_NONE">None</option>
                <option value="IGNORE_TRAILING">Trailing</option>
                <option value="IGNORE_LEADING_AND_TRAILING">Leading &amp; trailing</option>
                <option value="IGNORE_ALL">All</option>
              </select>
            </gr-select>
          </span>
        </div>
      </section>
    </div>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
`;
