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