export default class EditScriptConfig extends FormApplication {
|
|
constructor(script, callback) {
|
|
super({}, {});
|
|
this.script = script;
|
|
this.callback = callback;
|
|
}
|
|
|
|
static get defaultOptions() {
|
|
return mergeObject(super.defaultOptions, {
|
|
id: 'token-variants-config-script-edit',
|
|
classes: ['sheet'],
|
|
template: 'modules/token-variants/templates/configScriptEdit.html',
|
|
resizable: true,
|
|
minimizable: false,
|
|
title: 'Scripts',
|
|
width: 640,
|
|
height: 640,
|
|
});
|
|
}
|
|
|
|
async getData(options) {
|
|
const data = super.getData(options);
|
|
|
|
const script = this.script ? this.script : {};
|
|
data.hasScript = !isEmpty(script);
|
|
data.onApply = script.onApply;
|
|
data.onRemove = script.onRemove;
|
|
data.macroOnApply = script.macroOnApply;
|
|
data.macroOnRemove = script.macroOnRemove;
|
|
|
|
data.tmfxPreset = script.tmfxPreset;
|
|
data.tmfxActive = game.modules.get('tokenmagic')?.active;
|
|
if (data.tmfxActive) {
|
|
data.tmfxPresets = TokenMagic.getPresets().map((p) => p.name);
|
|
}
|
|
|
|
data.ceActive = game.modules.get('dfreds-convenient-effects')?.active;
|
|
if (data.ceActive) {
|
|
data.ceEffect = script.ceEffect ?? { apply: true, remove: true };
|
|
data.ceEffects = game.dfreds.effects.all.map((ef) => ef.name);
|
|
}
|
|
|
|
data.macros = game.macros.map((m) => m.name);
|
|
|
|
return data;
|
|
}
|
|
|
|
/**
|
|
* @param {JQuery} html
|
|
*/
|
|
activateListeners(html) {
|
|
super.activateListeners(html);
|
|
// Override 'Tab' key to insert spaces
|
|
html.on('keydown', '.command textarea', function (e) {
|
|
if (e.key === 'Tab' && !e.shiftKey) {
|
|
e.preventDefault();
|
|
var start = this.selectionStart;
|
|
var end = this.selectionEnd;
|
|
this.value = this.value.substring(0, start) + ' ' + this.value.substring(end);
|
|
this.selectionStart = this.selectionEnd = start + 2;
|
|
return false;
|
|
}
|
|
});
|
|
|
|
html.find('.remove').click(this._onRemove.bind(this));
|
|
}
|
|
|
|
async _onRemove(event) {
|
|
if (this.callback) this.callback(null);
|
|
this.close();
|
|
}
|
|
|
|
/**
|
|
* @param {Event} event
|
|
* @param {Object} formData
|
|
*/
|
|
async _updateObject(event, formData) {
|
|
formData = expandObject(formData);
|
|
['onApply', 'onRemove', 'macroOnApply', 'macroOnRemove'].forEach((k) => {
|
|
formData[k] = formData[k].trim();
|
|
});
|
|
if (formData.ceEffect?.name) formData.ceEffect.name = formData.ceEffect.name.trim();
|
|
|
|
if (
|
|
!formData.onApply &&
|
|
!formData.onRemove &&
|
|
!formData.tmfxPreset &&
|
|
!formData.ceEffect.name &&
|
|
!formData.macroOnApply &&
|
|
!formData.macroOnRemove
|
|
) {
|
|
if (this.callback) this.callback(null);
|
|
} else {
|
|
if (this.callback) this.callback(formData);
|
|
}
|
|
}
|
|
}
|