(function(){
let MenuTpl =
'
' +
''
;
window.ESX_MENU = {};
ESX_MENU.ResourceName = '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);
});
};
})();