import { DialogSplitItem } from "./dialog-split-item.js"; import { Misc } from "./misc.js"; export class RdDSheetUtility { static getItem(event, actor) { return actor.items.get(RdDSheetUtility.getItemId(event)); } static getItemId(event) { return RdDSheetUtility.getEventItemData(event, "item-id"); } static getEventItemData(event, property) { const node = RdDSheetUtility.getEventElement(event); return node?.data(property); } static getEventElement(event) { return $(event.currentTarget)?.parents(".item"); } static prepareItemDropParameters(destItemId, actorId, dragData, objetVersConteneur) { const itemId = dragData.id || dragData._id return { destId: destItemId, targetActorId: actorId, itemId: itemId, sourceActorId: dragData.actorId, srcId: objetVersConteneur[itemId], onEnleverConteneur: () => { delete objetVersConteneur[itemId]; }, onAjouterDansConteneur: (itemId, conteneurId) => { objetVersConteneur[itemId] = conteneurId; } } } static async splitItem(item, actor, onSplit = () => { }) { const dialog = await DialogSplitItem.create(item, async (item, split) => { await RdDSheetUtility._onSplitItem(item, split, actor); onSplit(); }); dialog.render(true); } static async _onSplitItem(item, split, actor) { if (split >= 1 && split < Misc.data(item).data.quantite) { await item.diminuerQuantite(split); const itemData = duplicate(Misc.data(item)); // todo: ajouter dans le même conteneur? itemData.data.quantite = split; await actor.createEmbeddedDocuments('Item', [itemData]) } } }