(function(){
// A FINIR
let MenuTpl =
'
' +
''
;
window.ESX_MENU = {};
ESX_MENU.ResourceName = 'esx_menu_default';
ESX_MENU.opened = {};
ESX_MENU.focus = [];
ESX_MENU.pos = {};
ESX_MENU.open = function(namespace, name, data){
if(typeof ESX_MENU.opened[namespace] == 'undefined')
ESX_MENU.opened[namespace] = {};
if(typeof ESX_MENU.opened[namespace][name] != 'undefined')
ESX_MENU.close(namespace, name);
if(typeof ESX_MENU.pos[namespace] == 'undefined')
ESX_MENU.pos[namespace] = {};
for(let i=0; i {
switch(data.action){
case 'openMenu' : {
ESX_MENU.open(data.namespace, data.name, data.data);
break;
}
case 'closeMenu' : {
ESX_MENU.close(data.namespace, data.name);
break;
}
case 'controlPressed' : {
switch(data.control){
case 'ENTER' : {
let focused = ESX_MENU.getFocused();
if(typeof focused != 'undefined') {
let menu = ESX_MENU.opened[focused.namespace][focused.name];
let pos = ESX_MENU.pos[focused.namespace][focused.name];
let elem = menu.elements[pos];
if(menu.elements.length > 0)
ESX_MENU.submit(focused.namespace, focused.name, elem);
}
break;
}
case 'BACKSPACE' : {
let focused = ESX_MENU.getFocused();
if(typeof focused != 'undefined') {
ESX_MENU.cancel(focused.namespace, focused.name);
}
break;
}
case 'TOP' : {
let focused = ESX_MENU.getFocused();
if(typeof focused != 'undefined') {
let menu = ESX_MENU.opened[focused.namespace][focused.name];
let pos = ESX_MENU.pos[focused.namespace][focused.name];
if(pos > 0)
ESX_MENU.pos[focused.namespace][focused.name]--;
else
ESX_MENU.pos[focused.namespace][focused.name] = menu.elements.length - 1;
let elem = menu.elements[ESX_MENU.pos[focused.namespace][focused.name]];
for(let i=0; i min){
elem.value--;
ESX_MENU.change(focused.namespace, focused.name, elem)
}
ESX_MENU.render();
break;
}
default: break;
}
$('#menu_' + focused.namespace + '_' + focused.name).find('.menu-item.selected')[0].scrollIntoView();
}
break;
}
case 'RIGHT' : {
let focused = ESX_MENU.getFocused();
if(typeof focused != 'undefined') {
let menu = ESX_MENU.opened[focused.namespace][focused.name];
let pos = ESX_MENU.pos[focused.namespace][focused.name];
let elem = menu.elements[pos];
switch(elem.type){
case 'default': break;
case 'slider' : {
if(typeof elem.options != 'undefined' && elem.value < elem.options.length - 1){
elem.value++;
ESX_MENU.change(focused.namespace, focused.name, elem)
}
if(typeof elem.max != 'undefined' && elem.value < elem.max){
elem.value++;
ESX_MENU.change(focused.namespace, focused.name, elem)
}
ESX_MENU.render();
break;
}
default: break;
}
$('#menu_' + focused.namespace + '_' + focused.name).find('.menu-item.selected')[0].scrollIntoView();
}
break;
}
default : break;
}
break;
}
}
}
window.onload = function(e){
window.addEventListener('message', (event) => {
onData(event.data)
});
}
})()