<!--
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>
    <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>
  </template>
  <script src="gr-resemble-diff-mode.js"></script>
</dom-module>