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