import { RdDBaseActorSheet } from "../actor/base-actor-sheet.js";
import { RdDSheetUtility } from "../rdd-sheet-utility.js";
import { RdDUtility } from "../rdd-utility.js";
import { RdDItemInventaireSheet } from "./sheet-base-inventaire.js";

export class RdDConteneurItemSheet extends RdDItemInventaireSheet {

  static get ITEM_TYPE() { return "conteneur" };

  async getData() {
    const formData = await super.getData();
    if (this.actor) {
      this.prepareConteneurData(formData);
    }
    return formData;
  }

  activateListeners(html) {
    super.activateListeners(html);

    if (!this.options.editable) return;

    this.html.find('.conteneur-name a').click(async event => {
      RdDUtility.toggleAfficheContenu(RdDSheetUtility.getItemId(event));
      this.render(true);
    });
  }

  /* -------------------------------------------- */
  prepareConteneurData(formData) {
    RdDBaseActorSheet.filterItemsPerTypeForSheet(formData, this.actor.itemTypes);
    this.objetVersConteneur = RdDUtility.buildArbreDeConteneurs(formData.conteneurs, formData.objets);
    formData.subItems = formData.conteneurs.find(it => it._id == this.item.id)?.subItems;
  }

  async _onDragStart(event) {
    console.log("_onDragStart", event);
    if (event.target.classList.contains("entity-link")) return;

    const itemId = event.srcElement?.attributes["data-item-id"].value;
    const item = this.actor.items.get(itemId);
    // Create drag data
    const dragData = {
      actorId: this.actor.id,
      type: "Item",
      data: item.system,
      uuid: item.uuid
    };

    event.dataTransfer.setData("text/plain", JSON.stringify(dragData));
  }

  async _onDropItem(event, dragData) {
    if (this.actor) {
      const destItemId = this.html.find(event.target)?.closest('.item').attr('data-item-id') ?? this.item.id
      const dropParams = await RdDSheetUtility.prepareItemDropParameters(destItemId, this.actor, dragData, this.objetVersConteneur);
      await this.actor.processDropItem(dropParams);
      await this.render(true);
    }
  }

}
