(function ()()

in src/main/resources/static/gr-imagare-list-item.js [15:107]


(function () {
  'use strict';

  Polymer({
    is: 'gr-imagare-list-item',

    properties: {
      imageUrl: {
        type: String,
        reflectToAttribute: true,
      },
      imageName: {
        type: String,
        reflectToAttribute: true,
      },
      imageData: {
        type: String,
        reflectToAttribute: true,
      },
      uploaded: {
        type: Boolean,
        observer: '_uploadedChanged',
        reflectToAttribute: true,
      },
      _originalImageName: String,
      _editing: {
        type: Boolean,
        value: false,
      },
      _imageSrc: String,
    },

    attached() {
      this._originalImageName = this.imageName;
      this._setImage();
    },

    _handleCancelRenameName() {
      this.imageName = this._originalImageName;
      this._editing = false;
    },

    _handleClearImage() {
      this.fire("clear");
    },

    _handleDeleteImage() {
      this.fire("delete");
    },

    _handleEditImage() {
      this._editing = true;
    },

    _handleSaveName() {
      this._editing = false;

      if (this._originalImageName === this.imageName) {
        return;
      }

      let oldFileType = this._originalImageName.split('.').pop();
      let newFileType = this.imageName.split('.').pop();
      if (oldFileType !== newFileType) {
        this.imageName += `.${oldFileType}`;
      }

      this.fire("editName", {oldName: this._originalImageName, newName: this.imageName});
    },

    _handleUploadImage() {
      this.fire("upload");
    },

    _openDeleteDialog() {
      this.$.deleteOverlay.open();
    },

    _setImage() {
      if (this.uploaded) {
        this.$.thumbnail.setAttribute('src', this.imageUrl);
      } else {
        this.$.thumbnail.setAttribute('src', this.imageData);
      }
    },

    _uploadedChanged(uploaded) {
      this.$.uploading.hidden = !uploaded;
      this.$.staging.hidden = uploaded;
      this._setImage();
    },
  });
})();