<!--
Copyright (C) 2018 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.
-->

<script src="../node_modules/resemblejs/resemble.js"></script>
<dom-module id="gr-resemble-diff-mode">
  <template>
    <style>
      :host {
        display: block;
      }
      h2 {
        display: none;
      }
      #imageDiff {
        border: 1px solid var(--border-color, #ddd);
      }
      :host([loading]) #imageDiff {
        display: none;
      }
      :host([loading]) h2 {
        display: inline;
        padding: 1em 0;
      }
      .diffContainer {
        display: flex;
        justify-content: space-around;
        width: 100%;
      }
    </style>
    <div class="diffContainer">
      <h2>Loading...</h2>
      <img id="imageDiff">
    </div>
    <div>[[_difference]]% changed</div>
    <label>
      <input
          id="ignoreColorsToggle"
          type="checkbox"
          checked$="[[_ignoreColors]]"
          on-tap="_handleIgnoreColorsToggle">
      Ignore colors
    </label>
    <label>
      <input
          id="transparentToggle"
          type="checkbox"
          checked$="[[_transparent]]"
          on-tap="_handleTransparentToggle">
      Transparent
    </label>
    <input
        type="color"
        value="{{_colorValue::change}}">
  </template>
  <script src="gr-resemble-diff-mode.js"></script>
</dom-module>