|
|
- 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);
- }
- }
- }
|