export class helpers { static runOnTargetOrSelectedTokens (runFunc) { let tokens = [] const targets = Array.from(game.user.targets) if (targets.length > 0) { tokens = targets } else if (canvas.tokens.controlled.length > 0) { tokens = canvas.tokens.controlled } if (tokens.length > 0) { runFunc(tokens) } else { ui.notifications.error('Please select or target a token') } } static createEffectDocument (icon, name, durationRounds, changes) { const effectData = { icon, id: name, label: name, duration: { rounds: 5 }, flags: { swade: { expiration: CONFIG.SWADE.CONST.STATUS_EFFECT_EXPIRATION.EndOfTurnPrompt, loseTurnOnHold: true } }, changes } return effectData } static createMutationWithEffect (icon, name, durationRounds, changes) { const effect = helpers.createEffectDocument(icon, name, durationRounds, changes) const mutate = { embedded: { ActiveEffect: {} } } mutate.embedded.ActiveEffect[name] = effect return mutate } static defaultMutationOptions (name) { const mutateOptions = { comparisonKeys: { ActiveEffect: 'label' }, name, permanent: false, description: name } return mutateOptions } }