// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

export default class Icon extends HTMLSpanElement {
  constructor() {
    super();
    /** @type {?Icon.Descriptor} */
    this._descriptor = null;
    /** @type {?Icon.SpriteSheet} */
    this._spriteSheet = null;
    /** @type {string} */
    this._iconType = '';
  }

  /**
   * @param {string=} iconType
   * @param {string=} className
   * @return {!Icon}
   */
  static create(iconType, className) {
    if (!Icon._constructor) {
      Icon._constructor = UI.registerCustomElement('span', 'ui-icon', Icon);
    }

    const icon = /** @type {!Icon} */ (Icon._constructor());
    if (className) {
      icon.className = className;
    }
    if (iconType) {
      icon.setIconType(iconType);
    }
    return icon;
  }

  /**
   * @param {string} iconType
   */
  setIconType(iconType) {
    if (this._descriptor) {
      this.style.removeProperty('--spritesheet-position');
      this.style.removeProperty('width');
      this.style.removeProperty('height');
      this._toggleClasses(false);
      this._iconType = '';
      this._descriptor = null;
      this._spriteSheet = null;
    }
    const descriptor = Icon.Descriptors[iconType] || null;
    if (descriptor) {
      this._iconType = iconType;
      this._descriptor = descriptor;
      this._spriteSheet = SpriteSheets[this._descriptor.spritesheet];
      console.assert(
          this._spriteSheet, `ERROR: icon ${this._iconType} has unknown spritesheet: ${this._descriptor.spritesheet}`);

      this.style.setProperty('--spritesheet-position', this._propertyValue());
      this.style.setProperty('width', this._spriteSheet.cellWidth + 'px');
      this.style.setProperty('height', this._spriteSheet.cellHeight + 'px');
      this._toggleClasses(true);
    } else if (iconType) {
      throw new Error(`ERROR: failed to find icon descriptor for type: ${iconType}`);
    }
  }

  /**
   * @param {boolean} value
   */
  _toggleClasses(value) {
    this.classList.toggle('spritesheet-' + this._descriptor.spritesheet, value);
    this.classList.toggle(this._iconType, value);
    this.classList.toggle('icon-mask', value && !!this._descriptor.isMask);
    this.classList.toggle('icon-invert', value && !!this._descriptor.invert);
  }

  /**
   * @return {string}
   */
  _propertyValue() {
    if (!this._descriptor.coordinates) {
      if (!this._descriptor.position || !_positionRegex.test(this._descriptor.position)) {
        throw new Error(`ERROR: icon '${this._iconType}' has malformed position: '${this._descriptor.position}'`);
      }
      const column = this._descriptor.position[0].toLowerCase().charCodeAt(0) - 97;
      const row = parseInt(this._descriptor.position.substring(1), 10) - 1;
      this._descriptor.coordinates = {
        x: -(this._spriteSheet.cellWidth + this._spriteSheet.padding) * column,
        y: (this._spriteSheet.cellHeight + this._spriteSheet.padding) * (row + 1) - this._spriteSheet.padding
      };
    }
    return `${this._descriptor.coordinates.x}px ${this._descriptor.coordinates.y}px`;
  }
}

const _positionRegex = /^[a-z][1-9][0-9]*$/;

/** @enum {!Icon.SpriteSheet} */
const SpriteSheets = {
  'smallicons': {cellWidth: 10, cellHeight: 10, padding: 10},
  'mediumicons': {cellWidth: 16, cellHeight: 16, padding: 0},
  'largeicons': {cellWidth: 28, cellHeight: 24, padding: 0},
  'arrowicons': {cellWidth: 19, cellHeight: 19, padding: 0}
};

/** @enum {!Icon.Descriptor} */
export const Descriptors = {
  'smallicon-bezier': {position: 'a5', spritesheet: 'smallicons', isMask: true},
  'smallicon-checkmark': {position: 'b5', spritesheet: 'smallicons'},
  'smallicon-checkmark-square': {position: 'b6', spritesheet: 'smallicons', isMask: true},
  'smallicon-checkmark-behind': {position: 'd6', spritesheet: 'smallicons', isMask: true},
  'smallicon-command-result': {position: 'a4', spritesheet: 'smallicons'},
  'smallicon-contrast-ratio': {position: 'a6', spritesheet: 'smallicons', isMask: true},
  'smallicon-cross': {position: 'b4', spritesheet: 'smallicons'},
  'smallicon-device': {position: 'c5', spritesheet: 'smallicons'},
  'smallicon-error': {position: 'c4', spritesheet: 'smallicons'},
  'smallicon-expand-less': {position: 'f5', spritesheet: 'smallicons', isMask: true},
  'smallicon-expand-more': {position: 'e6', spritesheet: 'smallicons', isMask: true},
  'smallicon-green-arrow': {position: 'a3', spritesheet: 'smallicons'},
  'smallicon-green-ball': {position: 'b3', spritesheet: 'smallicons'},
  'smallicon-info': {position: 'c3', spritesheet: 'smallicons'},
  'smallicon-inline-breakpoint-conditional': {position: 'd4', spritesheet: 'smallicons'},
  'smallicon-inline-breakpoint': {position: 'd5', spritesheet: 'smallicons'},
  'smallicon-no': {position: 'c6', spritesheet: 'smallicons', isMask: true},
  'smallicon-orange-ball': {position: 'd3', spritesheet: 'smallicons'},
  'smallicon-red-ball': {position: 'a2', spritesheet: 'smallicons'},
  'smallicon-shadow': {position: 'b2', spritesheet: 'smallicons', isMask: true},
  'smallicon-step-in': {position: 'c2', spritesheet: 'smallicons'},
  'smallicon-step-out': {position: 'd2', spritesheet: 'smallicons'},
  'smallicon-text-prompt': {position: 'e5', spritesheet: 'smallicons'},
  'smallicon-thick-left-arrow': {position: 'e4', spritesheet: 'smallicons'},
  'smallicon-thick-right-arrow': {position: 'e3', spritesheet: 'smallicons'},
  'smallicon-triangle-down': {position: 'e2', spritesheet: 'smallicons', isMask: true},
  'smallicon-triangle-right': {position: 'a1', spritesheet: 'smallicons', isMask: true},
  'smallicon-triangle-up': {position: 'b1', spritesheet: 'smallicons', isMask: true},
  'smallicon-user-command': {position: 'c1', spritesheet: 'smallicons'},
  'smallicon-warning': {position: 'd1', spritesheet: 'smallicons'},
  'smallicon-network-product': {position: 'e1', spritesheet: 'smallicons'},
  'smallicon-clear-warning': {position: 'f1', spritesheet: 'smallicons', isMask: true},
  'smallicon-clear-info': {position: 'f2', spritesheet: 'smallicons'},
  'smallicon-clear-error': {position: 'f3', spritesheet: 'smallicons'},
  'smallicon-account-circle': {position: 'f4', spritesheet: 'smallicons'},
  'smallicon-videoplayer-paused': {position: 'f6', spritesheet: 'smallicons', isMask: true},
  'smallicon-videoplayer-playing': {position: 'g6', spritesheet: 'smallicons', isMask: true},
  'smallicon-videoplayer-destroyed': {position: 'g5', spritesheet: 'smallicons', isMask: true},

  'mediumicon-clear-storage': {position: 'a4', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-cookie': {position: 'b4', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-database': {position: 'c4', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-info': {position: 'c1', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-manifest': {position: 'd4', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-service-worker': {position: 'a3', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-table': {position: 'b3', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-arrow-in-circle': {position: 'c3', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-file-sync': {position: 'd3', spritesheet: 'mediumicons', invert: true},
  'mediumicon-file': {position: 'a2', spritesheet: 'mediumicons', invert: true},
  'mediumicon-gray-cross-active': {position: 'b2', spritesheet: 'mediumicons'},
  'mediumicon-gray-cross-hover': {position: 'c2', spritesheet: 'mediumicons'},
  'mediumicon-red-cross-active': {position: 'd2', spritesheet: 'mediumicons'},
  'mediumicon-red-cross-hover': {position: 'a1', spritesheet: 'mediumicons'},
  'mediumicon-search': {position: 'b1', spritesheet: 'mediumicons'},
  'mediumicon-replace': {position: 'c5', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-account-circle': {position: 'e4', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-warning-triangle': {position: 'e1', spritesheet: 'mediumicons'},
  'mediumicon-error-circle': {position: 'e3', spritesheet: 'mediumicons'},
  'mediumicon-info-circle': {position: 'e2', spritesheet: 'mediumicons'},
  'mediumicon-bug': {position: 'd1', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-list': {position: 'e5', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-warning': {position: 'd5', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-sync': {position: 'a5', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-fetch': {position: 'b5', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-cloud': {position: 'a6', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-bell': {position: 'b6', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-payment': {position: 'c6', spritesheet: 'mediumicons', isMask: true},
  'mediumicon-schedule': {position: 'd6', spritesheet: 'mediumicons', isMask: true},

  'badge-navigator-file-sync': {position: 'a9', spritesheet: 'largeicons'},
  'largeicon-activate-breakpoints': {position: 'b9', spritesheet: 'largeicons', isMask: true},
  'largeicon-add': {position: 'a8', spritesheet: 'largeicons', isMask: true},
  'largeicon-background-color': {position: 'b8', spritesheet: 'largeicons', isMask: true},
  'largeicon-box-shadow': {position: 'a7', spritesheet: 'largeicons', isMask: true},
  'largeicon-camera': {position: 'b7', spritesheet: 'largeicons', isMask: true},
  'largeicon-center': {position: 'c9', spritesheet: 'largeicons', isMask: true},
  'largeicon-checkmark': {position: 'c8', spritesheet: 'largeicons', isMask: true},
  'largeicon-chevron': {position: 'c7', spritesheet: 'largeicons', isMask: true},
  'largeicon-clear': {position: 'a6', spritesheet: 'largeicons', isMask: true},
  'largeicon-copy': {position: 'b6', spritesheet: 'largeicons', isMask: true},
  'largeicon-deactivate-breakpoints': {position: 'c6', spritesheet: 'largeicons', isMask: true},
  'largeicon-delete': {position: 'd9', spritesheet: 'largeicons', isMask: true},
  'largeicon-dock-to-bottom': {position: 'd8', spritesheet: 'largeicons', isMask: true},
  'largeicon-dock-to-left': {position: 'd7', spritesheet: 'largeicons', isMask: true},
  'largeicon-dock-to-right': {position: 'd6', spritesheet: 'largeicons', isMask: true},
  'largeicon-download': {position: 'h6', spritesheet: 'largeicons', isMask: true},
  'largeicon-edit': {position: 'a5', spritesheet: 'largeicons', isMask: true},
  'largeicon-eyedropper': {position: 'b5', spritesheet: 'largeicons', isMask: true},
  'largeicon-filter': {position: 'c5', spritesheet: 'largeicons', isMask: true},
  'largeicon-foreground-color': {position: 'd5', spritesheet: 'largeicons', isMask: true},
  'largeicon-hide-bottom-sidebar': {position: 'e9', spritesheet: 'largeicons', isMask: true},
  'largeicon-hide-left-sidebar': {position: 'e8', spritesheet: 'largeicons', isMask: true},
  'largeicon-hide-right-sidebar': {position: 'e7', spritesheet: 'largeicons', isMask: true},
  'largeicon-hide-top-sidebar': {position: 'e6', spritesheet: 'largeicons', isMask: true},
  'largeicon-large-list': {position: 'e5', spritesheet: 'largeicons', isMask: true},
  'largeicon-layout-editor': {position: 'a4', spritesheet: 'largeicons', isMask: true},
  'largeicon-load': {position: 'h5', spritesheet: 'largeicons', isMask: true},
  'largeicon-longclick-triangle': {position: 'b4', spritesheet: 'largeicons', isMask: true},
  'largeicon-menu': {position: 'c4', spritesheet: 'largeicons', isMask: true},
  'largeicon-navigator-domain': {position: 'd4', spritesheet: 'largeicons', isMask: true},
  'largeicon-navigator-file': {position: 'e4', spritesheet: 'largeicons', isMask: true},
  'largeicon-navigator-file-sync': {position: 'f9', spritesheet: 'largeicons', isMask: true},
  'largeicon-navigator-folder': {position: 'f8', spritesheet: 'largeicons', isMask: true},
  'largeicon-navigator-frame': {position: 'f7', spritesheet: 'largeicons', isMask: true},
  'largeicon-navigator-snippet': {position: 'f6', spritesheet: 'largeicons', isMask: true},
  'largeicon-navigator-worker': {position: 'f5', spritesheet: 'largeicons', isMask: true},
  'largeicon-node-search': {position: 'f4', spritesheet: 'largeicons', isMask: true},
  'largeicon-pan': {position: 'a3', spritesheet: 'largeicons', isMask: true},
  'largeicon-pause-animation': {position: 'b3', spritesheet: 'largeicons', isMask: true},
  'largeicon-pause': {position: 'c3', spritesheet: 'largeicons', isMask: true},
  'largeicon-pause-on-exceptions': {position: 'd3', spritesheet: 'largeicons', isMask: true},
  'largeicon-phone': {position: 'e3', spritesheet: 'largeicons', isMask: true},
  'largeicon-play-animation': {position: 'f3', spritesheet: 'largeicons', isMask: true},
  'largeicon-play-back': {position: 'a2', spritesheet: 'largeicons', isMask: true},
  'largeicon-play': {position: 'b2', spritesheet: 'largeicons', isMask: true},
  'largeicon-pretty-print': {position: 'c2', spritesheet: 'largeicons', isMask: true},
  'largeicon-refresh': {position: 'd2', spritesheet: 'largeicons', isMask: true},
  'largeicon-replay-animation': {position: 'e2', spritesheet: 'largeicons', isMask: true},
  'largeicon-resume': {position: 'f2', spritesheet: 'largeicons', isMask: true},
  'largeicon-rotate': {position: 'g9', spritesheet: 'largeicons', isMask: true},
  'largeicon-rotate-screen': {position: 'g8', spritesheet: 'largeicons', isMask: true},
  'largeicon-search': {position: 'h4', spritesheet: 'largeicons', isMask: true},
  'largeicon-settings-gear': {position: 'g7', spritesheet: 'largeicons', isMask: true},
  'largeicon-show-bottom-sidebar': {position: 'g6', spritesheet: 'largeicons', isMask: true},
  'largeicon-show-left-sidebar': {position: 'g5', spritesheet: 'largeicons', isMask: true},
  'largeicon-show-right-sidebar': {position: 'g4', spritesheet: 'largeicons', isMask: true},
  'largeicon-show-top-sidebar': {position: 'g3', spritesheet: 'largeicons', isMask: true},
  'largeicon-start-recording': {position: 'g2', spritesheet: 'largeicons', isMask: true},
  'largeicon-step-into': {position: 'a1', spritesheet: 'largeicons', isMask: true},
  'largeicon-step-out': {position: 'b1', spritesheet: 'largeicons', isMask: true},
  'largeicon-step-over': {position: 'c1', spritesheet: 'largeicons', isMask: true},
  'largeicon-step': {position: 'h1', spritesheet: 'largeicons', isMask: true},
  'largeicon-stop-recording': {position: 'd1', spritesheet: 'largeicons', isMask: true},
  'largeicon-terminate-execution': {position: 'h2', spritesheet: 'largeicons', isMask: true},
  'largeicon-text-shadow': {position: 'e1', spritesheet: 'largeicons', isMask: true},
  'largeicon-trash-bin': {position: 'f1', spritesheet: 'largeicons', isMask: true},
  'largeicon-undo': {position: 'h7', spritesheet: 'largeicons', isMask: true},
  'largeicon-undock': {position: 'g1', spritesheet: 'largeicons', isMask: true},
  'largeicon-visibility': {position: 'h9', spritesheet: 'largeicons', isMask: true},
  'largeicon-waterfall': {position: 'h8', spritesheet: 'largeicons', isMask: true},

  'mediumicon-arrow-top': {position: 'a4', spritesheet: 'arrowicons'},
  'mediumicon-arrow-bottom': {position: 'a3', spritesheet: 'arrowicons'},
  'mediumicon-arrow-left': {position: 'a2', spritesheet: 'arrowicons'},
  'mediumicon-arrow-right': {position: 'a1', spritesheet: 'arrowicons'}
};

/* Legacy exported object*/
self.UI = self.UI || {};

/* Legacy exported object*/
UI = UI || {};

/** @constructor */
UI.Icon = Icon;

/** @enum {!Icon.Descriptor} */
UI.Icon.Descriptors = Descriptors;

/** @typedef {{position: string, spritesheet: string, isMask: (boolean|undefined), coordinates: ({x: number, y: number}|undefined), invert: (boolean|undefined)}} */
UI.Icon.Descriptor;

/** @typedef {{cellWidth: number, cellHeight: number, padding: number}} */
UI.Icon.SpriteSheet;
