A lot of things.
This commit is contained in:
114
resources/js/RomPatcher.js
Normal file
114
resources/js/RomPatcher.js
Normal file
@@ -0,0 +1,114 @@
|
||||
export function RomPatcher( initialPatches = {} ) {
|
||||
|
||||
let patchesArray = [];
|
||||
if (initialPatches) {
|
||||
patchesArray = Array.isArray(initialPatches) ? initialPatches : [initialPatches];
|
||||
}
|
||||
patchesArray = patchesArray.filter(p => p && p.file);
|
||||
|
||||
return {
|
||||
|
||||
/**
|
||||
* @type {string}
|
||||
*/
|
||||
romFileName: '',
|
||||
|
||||
/**
|
||||
* @type {string}
|
||||
*/
|
||||
patchFileName: '',
|
||||
|
||||
/**
|
||||
* @type {boolean}
|
||||
*/
|
||||
isRomDragOver: false,
|
||||
|
||||
/**
|
||||
* @type {boolean}
|
||||
*/
|
||||
isPatchDragOver: false,
|
||||
|
||||
/**
|
||||
* @type {boolean}
|
||||
*/
|
||||
showStatusBox: false,
|
||||
|
||||
/**
|
||||
* @type {object}
|
||||
*/
|
||||
patchesData: patchesArray,
|
||||
hasEmbedded: patchesArray.length > 0,
|
||||
|
||||
init() {
|
||||
|
||||
const CONFIG = {language: 'en', requireValidation: false};
|
||||
|
||||
if (!RomPatcherWeb.isInitialized()){
|
||||
if (this.hasEmbedded) {
|
||||
RomPatcherWeb.initialize(CONFIG, ...this.patchesData);
|
||||
} else {
|
||||
RomPatcherWeb.initialize(CONFIG);
|
||||
}
|
||||
}
|
||||
|
||||
const STAT_BOX = document.getElementById('patcher-status');
|
||||
const OBSERVER = new MutationObserver(() => {
|
||||
const CRC = document.getElementById('rom-patcher-span-crc32').textContent;
|
||||
const DESC = document.getElementById('rom-patcher-patch-description').textContent;
|
||||
const PATCH = document.getElementById('rom-patcher-patch-requirements-value').textContent;
|
||||
|
||||
this.showStatusBox = CRC.trim().length > 0 || DESC.trim().length > 0 || PATCH.trim().length > 0;
|
||||
});
|
||||
|
||||
OBSERVER.observe(STAT_BOX, { childList: true, subtree: true, characterData: true });
|
||||
},
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} id
|
||||
*/
|
||||
triggerFileInput(id){
|
||||
const I = document.getElementById(id);
|
||||
if( !I.disabled )
|
||||
I.click();
|
||||
},
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {Event} e
|
||||
* @param {string} type
|
||||
*/
|
||||
handleInputChange(e, type){
|
||||
const file = e.target.files[0];
|
||||
if(file){
|
||||
if( type === 'rom' ) this.romFileName = file.name;
|
||||
if( type === 'patch' ) this.patchFileName = file.name;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {Event} e
|
||||
* @param {string} type
|
||||
*/
|
||||
handleDrop(e, type ){
|
||||
|
||||
const file = e.dataTransfer.files[0];
|
||||
if( !file )
|
||||
return;
|
||||
|
||||
const ID = type === 'rom' ? 'rom-patcher-input-file-rom' : 'rom-patcher-input-file-patch';
|
||||
const I = document.getElementById(ID);
|
||||
|
||||
if( I.disabled )
|
||||
return;
|
||||
|
||||
I.files = e.dataTransfer.files;
|
||||
|
||||
if( type === 'rom' ) this.romFileName = file.name;
|
||||
if( type === 'patch' ) this.patchFileName = file.name;
|
||||
|
||||
I.dispatchEvent(new Event('change', { bubbles: true }));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user