diff --git a/auto-build/logs/build.log b/auto-build/logs/build.log deleted file mode 100644 index e05ddaf1..00000000 --- a/auto-build/logs/build.log +++ /dev/null @@ -1,11 +0,0 @@ -[EXECUTE] Executing commands: -[EXECUTE] git pull -[EXECUTE] git submodule update --init --recursive --remote --checkout -[EXECUTE] git status &>/dev/null -$> git pull -$> git submodule update --init --recursive --remote --checkout -$> git status &>/dev/null -[EXECUTE] Command exited with exit code 0 (Runtime 1657ms) -[EXECUTE] Executing command "npm install" -$> npm install -[EXECUTE] Command exited with exit code 2 (Runtime 26ms) diff --git a/client/.gitignore b/client/.gitignore index 6fca0f0d..3d981ffa 100644 --- a/client/.gitignore +++ b/client/.gitignore @@ -4,4 +4,5 @@ css/**/*.css.map js/**/*.js js/**/*.js.map -declarations/ \ No newline at end of file +declarations/ +generated/ \ No newline at end of file diff --git a/client/generated/client.js b/client/generated/client.js deleted file mode 100644 index 999f693b..00000000 --- a/client/generated/client.js +++ /dev/null @@ -1,37117 +0,0 @@ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { - step(generator.next(value)); - } - catch (e) { - reject(e); - } } - function rejected(value) { try { - step(generator["throw"](value)); - } - catch (e) { - reject(e); - } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["a5a03ca85c8240449664e3b10fd8fcc34885e4fa5642d49e9e09fc9a59670cdc"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["a5a03ca85c8240449664e3b10fd8fcc34885e4fa5642d49e9e09fc9a59670cdc"] = "a5a03ca85c8240449664e3b10fd8fcc34885e4fa5642d49e9e09fc9a59670cdc"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "Wl8vrliw", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (68,48)" }, { name: "TRAT_MvL", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (84,51)" }, { name: "NHpPYFZ5", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (91,51)" }, { name: "xmHiPaM0", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (104,51)" }, { name: "bkWPmlLQ", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (122,34)" }, { name: "VLiaGQGx", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (227,43)" }, { name: "qDGtVdSI", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (235,44)" }, { name: "GkVHr9AU", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (242,39)" }, { name: "laReoH3i", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (346,56)" }, { name: "hs5uHkoO", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (356,60)" }, { name: "lr1fckIz", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (367,55)" }, { name: "dy0SUBbK", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (371,56)" }, { name: "Cw58TNMU", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (375,56)" }, { name: "N46z9byK", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (379,52)" }, { name: "DychQff8", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (389,56)" }, { name: "fJ5NHwOd", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (397,56)" }, { name: "ja_xbzKa", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (398,53)" }, { name: "EES58bn8", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (406,55)" }, { name: "PMONgu7p", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (411,55)" }, { name: "E3YbqUC5", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (415,52)" }, { name: "SYcW1j9s", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (426,55)" }, { name: "QG0sTpJs", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (431,55)" }, { name: "PeE5Y0gF", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (437,52)" }, { name: "LnZyAOSW", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (564,48)" }, { name: "UIzPrFR8", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (567,48)" }, { name: "n5XDhypA", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (652,47)" }, { name: "jIjjhpiZ", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (656,51)" }, { name: "NBBzTYcx", path: "D:/TeaSpeak/web/shared/js/BrowserIPC.ts (669,34)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var bipc; -(function (bipc) { - function uuidv4() { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - const r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); - return v.toString(16); - }); - } - class BasicIPCHandler { - constructor() { - this._channels = []; - this._query_results = {}; - this._cert_accept_callbacks = {}; - this._cert_accept_succeeded = {}; - } - setup() { - this.unique_id = uuidv4(); /* lets get an unique identifier */ - } - get_local_address() { return this.unique_id; } - handle_message(message) { - //log.trace(LogCategory.IPC, tr("Received message %o"), message); - if (message.receiver === BasicIPCHandler.BROADCAST_UNIQUE_ID) { - if (message.type == "process-query") { - log.debug(LogCategory.IPC, _translations.Wl8vrliw || (_translations.Wl8vrliw = tr("Received a device query from %s.")), message.sender); - this.send_message("process-query-response", { - request_query_id: message.data.query_id, - request_timestamp: message.data.timestamp, - device_id: this.unique_id, - protocol: BasicIPCHandler.PROTOCOL_VERSION - }, message.sender); - return; - } - } - else if (message.receiver === this.unique_id) { - if (message.type == "process-query-response") { - const response = message.data; - if (this._query_results[response.request_query_id]) - this._query_results[response.request_query_id].push(response); - else { - log.warn(LogCategory.IPC, _translations.TRAT_MvL || (_translations.TRAT_MvL = tr("Received a query response for an unknown request."))); - } - return; - } - else if (message.type == "certificate-accept-callback") { - const data = message.data; - if (!this._cert_accept_callbacks[data.request_id]) { - log.warn(LogCategory.IPC, _translations.NHpPYFZ5 || (_translations.NHpPYFZ5 = tr("Received certificate accept callback for an unknown request ID."))); - return; - } - this._cert_accept_callbacks[data.request_id](); - delete this._cert_accept_callbacks[data.request_id]; - this.send_message("certificate-accept-succeeded", {}, message.sender); - return; - } - else if (message.type == "certificate-accept-succeeded") { - if (!this._cert_accept_succeeded[message.sender]) { - log.warn(LogCategory.IPC, _translations.xmHiPaM0 || (_translations.xmHiPaM0 = tr("Received certificate accept succeeded, but haven't a callback."))); - return; - } - this._cert_accept_succeeded[message.sender](); - return; - } - } - if (message.type === "channel") { - const data = message.data; - let channel_invoked = false; - for (const channel of this._channels) - if (channel.channel_id === data.channel_id && (typeof (channel.target_id) === "undefined" || channel.target_id === message.sender)) { - if (channel.message_handler) - channel.message_handler(message.sender, message.receiver === BasicIPCHandler.BROADCAST_UNIQUE_ID, data); - channel_invoked = true; - } - if (!channel_invoked) { - console.warn(_translations.bkWPmlLQ || (_translations.bkWPmlLQ = tr("Received channel message for unknown channel (%s)")), data.channel_id); - } - } - } - create_channel(target_id, channel_id) { - let channel = { - target_id: target_id, - channel_id: channel_id || uuidv4(), - message_handler: undefined, - send_message: (type, data, target) => { - if (typeof target !== "undefined") { - if (typeof channel.target_id === "string" && target != channel.target_id) - throw "target id does not match channel target"; - } - this.send_message("channel", { - type: type, - data: data, - channel_id: channel.channel_id - }, target || channel.target_id || BasicIPCHandler.BROADCAST_UNIQUE_ID); - } - }; - this._channels.push(channel); - return channel; - } - channels() { return this._channels; } - delete_channel(channel) { - this._channels = this._channels.filter(e => e !== channel); - } - query_processes(timeout) { - return __awaiter(this, void 0, void 0, function* () { - const query_id = uuidv4(); - this._query_results[query_id] = []; - this.send_message("process-query", { - query_id: query_id, - timestamp: Date.now() - }); - yield new Promise(resolve => setTimeout(resolve, timeout || 250)); - const result = this._query_results[query_id]; - delete this._query_results[query_id]; - return result; - }); - } - register_certificate_accept_callback(callback) { - const id = uuidv4(); - this._cert_accept_callbacks[id] = callback; - return this.unique_id + ":" + id; - } - post_certificate_accpected(id, timeout) { - return new Promise((resolve, reject) => { - const data = id.split(":"); - const timeout_id = setTimeout(() => { - delete this._cert_accept_succeeded[data[0]]; - clearTimeout(timeout_id); - reject("timeout"); - }, timeout || 250); - this._cert_accept_succeeded[data[0]] = () => { - delete this._cert_accept_succeeded[data[0]]; - clearTimeout(timeout_id); - resolve(); - }; - this.send_message("certificate-accept-callback", { - request_id: data[1] - }, data[0]); - }); - } - } - BasicIPCHandler.BROADCAST_UNIQUE_ID = "00000000-0000-4000-0000-000000000000"; - BasicIPCHandler.PROTOCOL_VERSION = 1; - bipc.BasicIPCHandler = BasicIPCHandler; - class BroadcastChannelIPC extends BasicIPCHandler { - constructor() { - super(); - } - setup() { - super.setup(); - this.channel = new BroadcastChannel(BroadcastChannelIPC.CHANNEL_NAME); - this.channel.onmessage = this.on_message.bind(this); - this.channel.onmessageerror = this.on_error.bind(this); - } - on_message(event) { - if (typeof (event.data) !== "string") { - log.warn(LogCategory.IPC, _translations.VLiaGQGx || (_translations.VLiaGQGx = tr("Received message with an invalid type (%s): %o")), typeof (event.data), event.data); - return; - } - let message; - try { - message = JSON.parse(event.data); - } - catch (error) { - log.error(LogCategory.IPC, _translations.qDGtVdSI || (_translations.qDGtVdSI = tr("Received an invalid encoded message: %o")), event.data); - return; - } - super.handle_message(message); - } - on_error(event) { - log.warn(LogCategory.IPC, _translations.GkVHr9AU || (_translations.GkVHr9AU = tr("Received error: %o")), event); - } - send_message(type, data, target) { - const message = {}; - message.sender = this.unique_id; - message.receiver = target ? target : BasicIPCHandler.BROADCAST_UNIQUE_ID; - message.timestamp = Date.now(); - message.type = type; - message.data = data; - this.channel.postMessage(JSON.stringify(message)); - } - } - BroadcastChannelIPC.CHANNEL_NAME = "TeaSpeak-Web"; - let connect; - (function (connect) { - /* The connect process: - * 1. Broadcast an offer - * 2. Wait 50ms for all offer responses or until the first one respond with "ok" - * 3. Select (if possible) on accepted offer and execute the connect - */ - class ConnectHandler { - constructor(ipc_handler) { - this.callback_available = () => false; - this.callback_execute = () => false; - this._pending_connect_offers = []; - this._pending_connects_requests = []; - this.ipc_handler = ipc_handler; - } - setup() { - this.ipc_channel = this.ipc_handler.create_channel(undefined, ConnectHandler.CHANNEL_NAME); - this.ipc_channel.message_handler = this.on_message.bind(this); - } - on_message(sender, broadcast, message) { - if (broadcast) { - if (message.type == "offer") { - const data = message.data; - const response = { - accepted: this.callback_available(data.data), - request_id: data.request_id - }; - if (response.accepted) { - log.debug(LogCategory.IPC, _translations.laReoH3i || (_translations.laReoH3i = tr("Received new connect offer from %s: %s")), sender, data.request_id); - const ld = { - remote_handler: sender, - data: data.data, - id: data.request_id, - timeout: 0 - }; - this._pending_connect_offers.push(ld); - ld.timeout = setTimeout(() => { - log.debug(LogCategory.IPC, _translations.hs5uHkoO || (_translations.hs5uHkoO = tr("Dropping connect request %s, because we never received an execute.")), ld.id); - this._pending_connect_offers.remove(ld); - }, 120 * 1000); - } - this.ipc_channel.send_message("offer-answer", response, sender); - } - } - else { - if (message.type == "offer-answer") { - const data = message.data; - const request = this._pending_connects_requests.find(e => e.id === data.request_id); - if (!request) { - log.warn(LogCategory.IPC, _translations.lr1fckIz || (_translations.lr1fckIz = tr("Received connect offer answer with unknown request id (%s).")), data.request_id); - return; - } - if (!data.accepted) { - log.debug(LogCategory.IPC, _translations.dy0SUBbK || (_translations.dy0SUBbK = tr("Client %s rejected the connect offer (%s).")), sender, request.id); - return; - } - if (request.remote_handler) { - log.debug(LogCategory.IPC, _translations.Cw58TNMU || (_translations.Cw58TNMU = tr("Client %s accepted the connect offer (%s), but offer has already been accepted.")), sender, request.id); - return; - } - log.debug(LogCategory.IPC, _translations.N46z9byK || (_translations.N46z9byK = tr("Client %s accepted the connect offer (%s). Request local acceptance.")), sender, request.id); - request.remote_handler = sender; - clearTimeout(request.timeout); - request.callback_avail().then(flag => { - if (!flag) { - request.callback_failed("local avail rejected"); - return; - } - log.debug(LogCategory.IPC, _translations.DychQff8 || (_translations.DychQff8 = tr("Executing connect with client %s")), request.remote_handler); - this.ipc_channel.send_message("execute", { - request_id: request.id - }, request.remote_handler); - request.timeout = setTimeout(() => { - request.callback_failed("connect execute timeout"); - }, 1000); - }).catch(error => { - log.error(LogCategory.IPC, _translations.fJ5NHwOd || (_translations.fJ5NHwOd = tr("Local avail callback caused an error: %o")), error); - request.callback_failed(_translations.ja_xbzKa || (_translations.ja_xbzKa = tr("local avail callback caused an error"))); - }); - } - else if (message.type == "executed") { - const data = message.data; - const request = this._pending_connects_requests.find(e => e.id === data.request_id); - if (!request) { - log.warn(LogCategory.IPC, _translations.EES58bn8 || (_translations.EES58bn8 = tr("Received connect executed with unknown request id (%s).")), data.request_id); - return; - } - if (request.remote_handler != sender) { - log.warn(LogCategory.IPC, _translations.PMONgu7p || (_translations.PMONgu7p = tr("Received connect executed for request %s, but from wrong client: %s (expected %s)")), data.request_id, sender, request.remote_handler); - return; - } - log.debug(LogCategory.IPC, _translations.E3YbqUC5 || (_translations.E3YbqUC5 = tr("Received connect executed response from client %s for request %s. Succeeded: %o (%s)")), sender, data.request_id, data.succeeded, data.message); - clearTimeout(request.timeout); - if (data.succeeded) - request.callback_success(); - else - request.callback_failed(data.message); - } - else if (message.type == "execute") { - const data = message.data; - const request = this._pending_connect_offers.find(e => e.id === data.request_id); - if (!request) { - log.warn(LogCategory.IPC, _translations.SYcW1j9s || (_translations.SYcW1j9s = tr("Received connect execute with unknown request id (%s).")), data.request_id); - return; - } - if (request.remote_handler != sender) { - log.warn(LogCategory.IPC, _translations.QG0sTpJs || (_translations.QG0sTpJs = tr("Received connect execute for request %s, but from wrong client: %s (expected %s)")), data.request_id, sender, request.remote_handler); - return; - } - clearTimeout(request.timeout); - this._pending_connect_offers.remove(request); - log.debug(LogCategory.IPC, _translations.PeE5Y0gF || (_translations.PeE5Y0gF = tr("Executing connect for %s")), data.request_id); - const cr = this.callback_execute(request.data); - const response = { - request_id: data.request_id, - succeeded: typeof (cr) !== "string" && cr, - message: typeof (cr) === "string" ? cr : "", - }; - this.ipc_channel.send_message("executed", response, request.remote_handler); - } - } - } - post_connect_request(data, callback_avail) { - return new Promise((resolve, reject) => { - const pd = { - data: data, - id: uuidv4(), - timeout: 0, - callback_success: () => { - this._pending_connects_requests.remove(pd); - clearTimeout(pd.timeout); - resolve(); - }, - callback_failed: error => { - this._pending_connects_requests.remove(pd); - clearTimeout(pd.timeout); - reject(error); - }, - callback_avail: callback_avail, - }; - this._pending_connects_requests.push(pd); - this.ipc_channel.send_message("offer", { - request_id: pd.id, - data: pd.data - }); - pd.timeout = setTimeout(() => { - pd.callback_failed("received no response to offer"); - }, 50); - }); - } - } - ConnectHandler.CHANNEL_NAME = "connect"; - connect.ConnectHandler = ConnectHandler; - })(connect = bipc.connect || (bipc.connect = {})); - let mproxy; - (function (mproxy) { - class MethodProxy { - constructor(ipc_handler, connect_params) { - this._proxied_methods = {}; - this._proxied_callbacks = {}; - this.ipc_handler = ipc_handler; - this._ipc_parameters = connect_params; - this._connected = false; - this._slave = typeof (connect_params) !== "undefined"; - this._local = typeof (connect_params) !== "undefined" && connect_params.channel_id === "local" && connect_params.client_id === "local"; - } - setup() { - if (this._local) { - this._connected = true; - this.on_connected(); - } - else { - if (this._slave) - this._ipc_channel = this.ipc_handler.create_channel(this._ipc_parameters.client_id, this._ipc_parameters.channel_id); - else - this._ipc_channel = this.ipc_handler.create_channel(); - this._ipc_channel.message_handler = this._handle_message.bind(this); - if (this._slave) - this._ipc_channel.send_message("initialize", {}); - } - } - finalize() { - if (!this._local) { - if (this._connected) - this._ipc_channel.send_message("finalize", {}); - this.ipc_handler.delete_channel(this._ipc_channel); - this._ipc_channel = undefined; - } - for (const promise of Object.values(this._proxied_callbacks)) - promise.reject("disconnected"); - this._proxied_callbacks = {}; - this._connected = false; - this.on_disconnected(); - } - register_method(method) { - let method_name; - if (typeof method === "function") { - log.debug(LogCategory.IPC, _translations.LnZyAOSW || (_translations.LnZyAOSW = tr("Registering method proxy for %s")), method.name); - method_name = method.name; - } - else { - log.debug(LogCategory.IPC, _translations.UIzPrFR8 || (_translations.UIzPrFR8 = tr("Registering method proxy for %s")), method); - method_name = method; - } - if (!this[method_name]) - throw "method is missing in current object"; - this._proxied_methods[method_name] = this[method_name]; - if (!this._local) { - this[method_name] = (...args) => { - if (!this._connected) - return Promise.reject("not connected"); - const proxy_callback = { - promise_id: uuidv4() - }; - this._proxied_callbacks[proxy_callback.promise_id] = proxy_callback; - proxy_callback.promise = new Promise((resolve, reject) => { - proxy_callback.resolve = resolve; - proxy_callback.reject = reject; - }); - this._ipc_channel.send_message("invoke", { - promise_id: proxy_callback.promise_id, - arguments: [...args], - method_name: method_name - }); - return proxy_callback.promise; - }; - } - } - _handle_message(remote_id, boradcast, message) { - if (message.type === "finalize") { - this._handle_finalize(); - } - else if (message.type === "initialize") { - this._handle_remote_callback(remote_id); - } - else if (message.type === "invoke") { - this._handle_invoke(message.data); - } - else if (message.type === "result") { - this._handle_result(message.data); - } - } - _handle_finalize() { - this.on_disconnected(); - this.finalize(); - this._connected = false; - } - _handle_remote_callback(remote_id) { - if (!this._ipc_channel.target_id) { - if (this._slave) - throw "initialize wrong state!"; - this._ipc_channel.target_id = remote_id; /* now we're able to send messages */ - this.on_connected(); - this._ipc_channel.send_message("initialize", true); - } - else { - if (!this._slave) - throw "initialize wrong state!"; - this.on_connected(); - } - this._connected = true; - } - _send_result(promise_id, success, message) { - this._ipc_channel.send_message("result", { - promise_id: promise_id, - result: message, - success: success - }); - } - _handle_invoke(data) { - if (this._proxied_methods[data.method_name]) - throw "we could not invoke a local proxied method!"; - if (!this[data.method_name]) { - this._send_result(data.promise_id, false, "missing method"); - return; - } - try { - log.info(LogCategory.IPC, _translations.n5XDhypA || (_translations.n5XDhypA = tr("Invoking method %s with arguments: %o")), data.method_name, data.arguments); - const promise = this[data.method_name](...data.arguments); - promise.then(result => { - log.info(LogCategory.IPC, _translations.jIjjhpiZ || (_translations.jIjjhpiZ = tr("Result: %o")), result); - this._send_result(data.promise_id, true, result); - }).catch(error => { - this._send_result(data.promise_id, false, error); - }); - } - catch (error) { - this._send_result(data.promise_id, false, error); - return; - } - } - _handle_result(data) { - if (!this._proxied_callbacks[data.promise_id]) { - console.warn(_translations.NBBzTYcx || (_translations.NBBzTYcx = tr("Received proxy method result for unknown promise"))); - return; - } - const callback = this._proxied_callbacks[data.promise_id]; - delete this._proxied_callbacks[data.promise_id]; - if (data.success) - callback.resolve(data.result); - else - callback.reject(data.result); - } - generate_connect_parameters() { - if (this._slave) - throw "only masters can generate connect parameters!"; - if (!this._ipc_channel) - throw "please call setup() before"; - return { - channel_id: this._ipc_channel.channel_id, - client_id: this.ipc_handler.get_local_address() - }; - } - is_slave() { return this._local || this._slave; } /* the popout modal */ - is_master() { return this._local || !this._slave; } /* the host (teaweb application) */ - } - mproxy.MethodProxy = MethodProxy; - })(mproxy = bipc.mproxy || (bipc.mproxy = {})); - let handler; - let connect_handler; - function setup() { - if (!supported()) - return; - handler = new BroadcastChannelIPC(); - handler.setup(); - connect_handler = new connect.ConnectHandler(handler); - connect_handler.setup(); - } - bipc.setup = setup; - function get_handler() { - return handler; - } - bipc.get_handler = get_handler; - function get_connect_handler() { - return connect_handler; - } - bipc.get_connect_handler = get_connect_handler; - function supported() { - /* ios does not support this */ - return typeof (window.BroadcastChannel) !== "undefined"; - } - bipc.supported = supported; -})(bipc || (bipc = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["e9465f7ab2e9767c098f57c8330ffbeb335dfeb60c7988bf4ae7bdaefb93a0be"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["e9465f7ab2e9767c098f57c8330ffbeb335dfeb60c7988bf4ae7bdaefb93a0be"] = "e9465f7ab2e9767c098f57c8330ffbeb335dfeb60c7988bf4ae7bdaefb93a0be"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "Z7deKCo1", path: "D:/TeaSpeak/web/shared/js/log.ts (168,30)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -//Used by CertAccept popup -var LogCategory; -(function (LogCategory) { - LogCategory[LogCategory["CHANNEL"] = 0] = "CHANNEL"; - LogCategory[LogCategory["CHANNEL_PROPERTIES"] = 1] = "CHANNEL_PROPERTIES"; - LogCategory[LogCategory["CLIENT"] = 2] = "CLIENT"; - LogCategory[LogCategory["BOOKMARKS"] = 3] = "BOOKMARKS"; - LogCategory[LogCategory["SERVER"] = 4] = "SERVER"; - LogCategory[LogCategory["PERMISSIONS"] = 5] = "PERMISSIONS"; - LogCategory[LogCategory["GENERAL"] = 6] = "GENERAL"; - LogCategory[LogCategory["NETWORKING"] = 7] = "NETWORKING"; - LogCategory[LogCategory["VOICE"] = 8] = "VOICE"; - LogCategory[LogCategory["CHAT"] = 9] = "CHAT"; - LogCategory[LogCategory["AUDIO"] = 10] = "AUDIO"; - LogCategory[LogCategory["I18N"] = 11] = "I18N"; - LogCategory[LogCategory["IPC"] = 12] = "IPC"; - LogCategory[LogCategory["IDENTITIES"] = 13] = "IDENTITIES"; - LogCategory[LogCategory["STATISTICS"] = 14] = "STATISTICS"; - LogCategory[LogCategory["DNS"] = 15] = "DNS"; -})(LogCategory || (LogCategory = {})); -var log; -(function (log_1) { - let LogType; - (function (LogType) { - LogType[LogType["TRACE"] = 0] = "TRACE"; - LogType[LogType["DEBUG"] = 1] = "DEBUG"; - LogType[LogType["INFO"] = 2] = "INFO"; - LogType[LogType["WARNING"] = 3] = "WARNING"; - LogType[LogType["ERROR"] = 4] = "ERROR"; - })(LogType = log_1.LogType || (log_1.LogType = {})); - let category_mapping = new Map([ - [LogCategory.CHANNEL, "Channel "], - [LogCategory.CHANNEL_PROPERTIES, "Channel "], - [LogCategory.CLIENT, "Client "], - [LogCategory.SERVER, "Server "], - [LogCategory.BOOKMARKS, "Bookmark "], - [LogCategory.PERMISSIONS, "Permission "], - [LogCategory.GENERAL, "General "], - [LogCategory.NETWORKING, "Network "], - [LogCategory.VOICE, "Voice "], - [LogCategory.AUDIO, "Audio "], - [LogCategory.CHANNEL, "Chat "], - [LogCategory.I18N, "I18N "], - [LogCategory.IDENTITIES, "Identities "], - [LogCategory.IPC, "IPC "], - [LogCategory.STATISTICS, "Statistics "], - [LogCategory.DNS, "DNS "] - ]); - log_1.enabled_mapping = new Map([ - [LogCategory.CHANNEL, true], - [LogCategory.CHANNEL_PROPERTIES, false], - [LogCategory.CLIENT, true], - [LogCategory.SERVER, true], - [LogCategory.BOOKMARKS, true], - [LogCategory.PERMISSIONS, true], - [LogCategory.GENERAL, true], - [LogCategory.NETWORKING, true], - [LogCategory.VOICE, true], - [LogCategory.AUDIO, true], - [LogCategory.CHAT, true], - [LogCategory.I18N, false], - [LogCategory.IDENTITIES, true], - [LogCategory.IPC, true], - [LogCategory.STATISTICS, true], - [LogCategory.DNS, true] - ]); - //Values will be overridden by initialize() - log_1.level_mapping = new Map([ - [LogType.TRACE, true], - [LogType.DEBUG, true], - [LogType.INFO, true], - [LogType.WARNING, true], - [LogType.ERROR, true] - ]); - let GroupMode; - (function (GroupMode) { - GroupMode[GroupMode["NATIVE"] = 0] = "NATIVE"; - GroupMode[GroupMode["PREFIX"] = 1] = "PREFIX"; - })(GroupMode || (GroupMode = {})); - const group_mode = GroupMode.PREFIX; - //Category Example: ?log.i18n.enabled=0 - //Level Example A: ?log.level.trace.enabled=0 - //Level Example B: ?log.level=0 - function initialize(default_level) { - for (const category of Object.keys(LogCategory).map(e => parseInt(e))) { - if (isNaN(category)) - continue; - const category_name = LogCategory[category].toLowerCase(); - log_1.enabled_mapping.set(category, settings.static_global("log." + category_name.toLowerCase() + ".enabled", log_1.enabled_mapping.get(category))); - } - const base_level = settings.static_global("log.level", default_level); - for (const level of Object.keys(LogType).map(e => parseInt(e))) { - if (isNaN(level)) - continue; - const level_name = LogType[level].toLowerCase(); - log_1.level_mapping.set(level, settings.static_global("log." + level_name + ".enabled", level >= base_level)); - } - } - log_1.initialize = initialize; - function logDirect(type, message, ...optionalParams) { - if (!log_1.level_mapping.get(type)) - return; - switch (type) { - case LogType.TRACE: - case LogType.DEBUG: - console.debug(message, ...optionalParams); - break; - case LogType.INFO: - console.log(message, ...optionalParams); - break; - case LogType.WARNING: - console.warn(message, ...optionalParams); - break; - case LogType.ERROR: - console.error(message, ...optionalParams); - break; - } - } - function log(type, category, message, ...optionalParams) { - if (!log_1.enabled_mapping.get(category)) - return; - optionalParams.unshift(category_mapping.get(category)); - message = "[%s] " + message; - logDirect(type, message, ...optionalParams); - } - log_1.log = log; - function trace(category, message, ...optionalParams) { - log(LogType.TRACE, category, message, ...optionalParams); - } - log_1.trace = trace; - function debug(category, message, ...optionalParams) { - log(LogType.DEBUG, category, message, ...optionalParams); - } - log_1.debug = debug; - function info(category, message, ...optionalParams) { - log(LogType.INFO, category, message, ...optionalParams); - } - log_1.info = info; - function warn(category, message, ...optionalParams) { - log(LogType.WARNING, category, message, ...optionalParams); - } - log_1.warn = warn; - function error(category, message, ...optionalParams) { - log(LogType.ERROR, category, message, ...optionalParams); - } - log_1.error = error; - function group(level, category, name, ...optionalParams) { - name = "[%s] " + name; - optionalParams.unshift(category_mapping.get(category)); - return new Group(group_mode, level, category, name, optionalParams); - } - log_1.group = group; - function table(level, category, title, arguments) { - if (group_mode == GroupMode.NATIVE) { - console.groupCollapsed(title); - console.table(arguments); - console.groupEnd(); - } - else { - if (!log_1.enabled_mapping.get(category) || !log_1.level_mapping.get(level)) - return; - logDirect(level, _translations.Z7deKCo1 || (_translations.Z7deKCo1 = tr("Snipped table \"%s\"")), title); - } - } - log_1.table = table; - class Group { - constructor(mode, level, category, name, optionalParams, owner = undefined) { - this.owner = undefined; - this._collapsed = false; - this.initialized = false; - this.level = level; - this.mode = mode; - this.category = category; - this.name = name; - this.optionalParams = optionalParams; - this.enabled = log_1.enabled_mapping.get(category); - } - group(level, name, ...optionalParams) { - return new Group(this.mode, level, this.category, name, optionalParams, this); - } - collapsed(flag = true) { - this._collapsed = flag; - return this; - } - log(message, ...optionalParams) { - if (!this.enabled) - return this; - if (!this.initialized) { - if (this.mode == GroupMode.NATIVE) { - if (this._collapsed && console.groupCollapsed) - console.groupCollapsed(this.name, ...this.optionalParams); - else - console.group(this.name, ...this.optionalParams); - } - else { - this._log_prefix = " "; - let parent = this.owner; - while (parent) { - if (parent.mode == GroupMode.PREFIX) - this._log_prefix = this._log_prefix + parent._log_prefix; - else - break; - } - } - this.initialized = true; - } - if (this.mode == GroupMode.NATIVE) - logDirect(this.level, message, ...optionalParams); - else { - logDirect(this.level, "[%s] " + this._log_prefix + message, category_mapping.get(this.category), ...optionalParams); - } - return this; - } - end() { - if (this.initialized) { - if (this.mode == GroupMode.NATIVE) - console.groupEnd(); - } - } - get prefix() { - return this._log_prefix; - } - set prefix(prefix) { - this._log_prefix = prefix; - } - } - log_1.Group = Group; -})(log || (log = {})); -var LogType = log.LogType; -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["20f9ceefb8afb92246cf15502902caa1a99609daaa67d6f61840b5171d8bbc8d"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["20f9ceefb8afb92246cf15502902caa1a99609daaa67d6f61840b5171d8bbc8d"] = "20f9ceefb8afb92246cf15502902caa1a99609daaa67d6f61840b5171d8bbc8d"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "zYWR4o3Z", path: "D:/TeaSpeak/web/shared/js/proto.ts (65,31)" }, { name: "iE5caXLV", path: "D:/TeaSpeak/web/shared/js/proto.ts (69,31)" }, { name: "TjsDTpLS", path: "D:/TeaSpeak/web/shared/js/proto.ts (91,26)" }, { name: "gwdhfC2P", path: "D:/TeaSpeak/web/shared/js/proto.ts (244,33)" }, { name: "owW67Cw3", path: "D:/TeaSpeak/web/shared/js/proto.ts (246,32)" }, { name: "CdWCrwjn", path: "D:/TeaSpeak/web/shared/js/proto.ts (248,33)" }, { name: "HTRvaP1x", path: "D:/TeaSpeak/web/shared/js/proto.ts (250,35)" }, { name: "bgcJDudo", path: "D:/TeaSpeak/web/shared/js/proto.ts (252,35)" }, { name: "q1rcyqp9", path: "D:/TeaSpeak/web/shared/js/proto.ts (254,18)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -if (!JSON.map_to) { - JSON.map_to = function (object, json, variables, validator, variable_direction) { - if (!validator) - validator = (a, b) => true; - if (!variables) { - variables = []; - if (!variable_direction || variable_direction == 0) { - for (let field in json) - variables.push(field); - } - else if (variable_direction == 1) { - for (let field in object) - variables.push(field); - } - } - else if (!Array.isArray(variables)) { - variables = [variables]; - } - let updates = 0; - for (let field of variables) { - if (typeof json[field] === "undefined") { - console.trace(_translations.zYWR4o3Z || (_translations.zYWR4o3Z = tr("Json does not contains %s")), field); - continue; - } - if (!validator(field, json[field])) { - console.trace(_translations.iE5caXLV || (_translations.iE5caXLV = tr("Validator results in false for %s")), field); - continue; - } - if (JSON.map_field_to(object, json[field], field)) - updates++; - } - return updates; - }; -} -if (!JSON.map_field_to) { - JSON.map_field_to = function (object, value, field) { - let field_type = typeof (object[field]); - let new_object; - if (field_type == "string" || field_type == "object" || field_type == "undefined") - new_object = value; - else if (field_type == "number") - new_object = parseFloat(value); - else if (field_type == "boolean") - new_object = value == "1" || value == "true"; - else { - console.warn(_translations.TjsDTpLS || (_translations.TjsDTpLS = tr("Invalid object type %s for entry %s")), field_type, field); - return false; - } - if (new_object === object[field]) - return false; - object[field] = new_object; - return true; - }; -} -if (!Array.prototype.remove) { - Array.prototype.remove = function (elem) { - const index = this.indexOf(elem, 0); - if (index > -1) { - this.splice(index, 1); - return true; - } - return false; - }; -} -if (!Array.prototype.pop_front) { - Array.prototype.pop_front = function () { - if (this.length == 0) - return undefined; - return this.splice(0, 1)[0]; - }; -} -if (!Array.prototype.last) { - Array.prototype.last = function () { - if (this.length == 0) - return undefined; - return this[this.length - 1]; - }; -} -if (typeof ($) !== "undefined") { - if (!$.spawn) { - $.spawn = function (tagName) { - return $(document.createElement(tagName)); - }; - } - if (!$.fn.renderTag) { - $.fn.renderTag = function (values) { - let result; - if (this.render) { - result = $(this.render(values)); - } - else { - const template = window.jsrender.render[this.attr("id")]; - if (!template) { - console.error("Tried to render template %o, but template is not available!", this.attr("id")); - throw "missing template " + this.attr("id"); - } - /* - result = window.jsrender.templates("tmpl_permission_entry", $("#tmpl_permission_entry").html()); - result = window.jsrender.templates("xxx", this.html()); - */ - result = template(values); - result = $(result); - } - result.find("node").each((index, element) => { - $(element).replaceWith(values[$(element).attr("key")] || (values[0] || [])[$(element).attr("key")]); - }); - return result; - }; - } - if (!$.fn.hasScrollBar) - $.fn.hasScrollBar = function (direction) { - if (this.length <= 0) - return false; - const scroll_height = this.get(0).scrollHeight > this.height(); - const scroll_width = this.get(0).scrollWidth > this.width(); - if (typeof (direction) === "string") { - if (direction === "height") - return scroll_height; - if (direction === "width") - return scroll_width; - } - return scroll_width || scroll_height; - }; - if (!$.fn.visible_height) - $.fn.visible_height = function () { - const original_style = this.attr("style"); - this.css({ - position: 'absolute!important', - visibility: 'hidden!important', - display: 'block!important' - }); - const result = this.height(); - this.attr("style", original_style || ""); - return result; - }; - if (!$.fn.visible_width) - $.fn.visible_width = function () { - const original_style = this.attr("style"); - this.css({ - position: 'absolute!important', - visibility: 'hidden!important', - display: 'block!important' - }); - const result = this.width(); - this.attr("style", original_style || ""); - return result; - }; - if (!$.fn.firstParent) - $.fn.firstParent = function (selector) { - if (this.is(selector)) - return this; - return this.parent(selector); - }; -} -if (!String.prototype.format) { - String.prototype.format = function () { - const args = arguments; - let array = args.length == 1 && $.isArray(args[0]); - return this.replace(/\{\{|\}\}|\{(\d+)\}/g, function (m, n) { - if (m == "{{") { - return "{"; - } - if (m == "}}") { - return "}"; - } - return array ? args[0][n] : args[n]; - }); - }; -} -function concatenate(resultConstructor, ...arrays) { - let totalLength = 0; - for (const arr of arrays) { - totalLength += arr.length; - } - const result = new resultConstructor(totalLength); - let offset = 0; - for (const arr of arrays) { - result.set(arr, offset); - offset += arr.length; - } - return result; -} -function formatDate(secs) { - let years = Math.floor(secs / (60 * 60 * 24 * 365)); - let days = Math.floor(secs / (60 * 60 * 24)) % 365; - let hours = Math.floor(secs / (60 * 60)) % 24; - let minutes = Math.floor(secs / 60) % 60; - let seconds = Math.floor(secs % 60); - let result = ""; - if (years > 0) - result += years + " " + (_translations.gwdhfC2P || (_translations.gwdhfC2P = tr("years"))) + " "; - if (years > 0 || days > 0) - result += days + " " + (_translations.owW67Cw3 || (_translations.owW67Cw3 = tr("days"))) + " "; - if (years > 0 || days > 0 || hours > 0) - result += hours + " " + (_translations.CdWCrwjn || (_translations.CdWCrwjn = tr("hours"))) + " "; - if (years > 0 || days > 0 || hours > 0 || minutes > 0) - result += minutes + " " + (_translations.HTRvaP1x || (_translations.HTRvaP1x = tr("minutes"))) + " "; - if (years > 0 || days > 0 || hours > 0 || minutes > 0 || seconds > 0) - result += seconds + " " + (_translations.bgcJDudo || (_translations.bgcJDudo = tr("seconds"))) + " "; - else - result = (_translations.q1rcyqp9 || (_translations.q1rcyqp9 = tr("now"))) + " "; - return result.substr(0, result.length - 1); -} -function calculate_width(text) { - let element = $.spawn("div"); - element.text(text) - .css("display", "none") - .css("margin", 0); - $("body").append(element); - let size = element.width(); - element.detach(); - return size; -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["da3cc8c2045432c24c8da99176efcb06d5865aeca6fdc4cbb6208410d361cae2"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["da3cc8c2045432c24c8da99176efcb06d5865aeca6fdc4cbb6208410d361cae2"] = "da3cc8c2045432c24c8da99176efcb06d5865aeca6fdc4cbb6208410d361cae2"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/* -interface Window { - TextEncoder: any; -} -*/ -var sha; -(function (sha) { - /* - * [js-sha1]{@link https://github.com/emn178/js-sha1} - * - * @version 0.6.0 - * @author Chen, Yi-Cyuan [emn178@gmail.com] - * @copyright Chen, Yi-Cyuan 2014-2017 - * @license MIT - */ - /*jslint bitwise: true */ - (function () { - 'use strict'; - let root = typeof window === 'object' ? window : {}; - let NODE_JS = !root.JS_SHA1_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node; - if (NODE_JS) { - root = global; - } - let COMMON_JS = !root.JS_SHA1_NO_COMMON_JS && typeof module === 'object' && module.exports; - let AMD = typeof define === 'function' && define.amd; - let HEX_CHARS = '0123456789abcdef'.split(''); - let EXTRA = [-2147483648, 8388608, 32768, 128]; - let SHIFT = [24, 16, 8, 0]; - let OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer']; - let blocks = []; - let createOutputMethod = function (outputType) { - return function (message) { - return new Sha1(true).update(message)[outputType](); - }; - }; - let createMethod = function () { - let method = createOutputMethod('hex'); - if (NODE_JS) { - method = nodeWrap(method); - } - method.create = function () { - return new Sha1(); - }; - method.update = function (message) { - return method.create().update(message); - }; - for (var i = 0; i < OUTPUT_TYPES.length; ++i) { - var type = OUTPUT_TYPES[i]; - method[type] = createOutputMethod(type); - } - return method; - }; - var nodeWrap = function (method) { - var crypto = eval("require('crypto')"); - var Buffer = eval("require('buffer').Buffer"); - var nodeMethod = function (message) { - if (typeof message === 'string') { - return crypto.createHash('sha1').update(message, 'utf8').digest('hex'); - } - else if (message.constructor === ArrayBuffer) { - message = new Uint8Array(message); - } - else if (message.length === undefined) { - return method(message); - } - return crypto.createHash('sha1').update(new Buffer(message)).digest('hex'); - }; - return nodeMethod; - }; - function Sha1(sharedMemory) { - if (sharedMemory) { - blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = - blocks[4] = blocks[5] = blocks[6] = blocks[7] = - blocks[8] = blocks[9] = blocks[10] = blocks[11] = - blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; - this.blocks = blocks; - } - else { - this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - } - this.h0 = 0x67452301; - this.h1 = 0xEFCDAB89; - this.h2 = 0x98BADCFE; - this.h3 = 0x10325476; - this.h4 = 0xC3D2E1F0; - this.block = this.start = this.bytes = this.hBytes = 0; - this.finalized = this.hashed = false; - this.first = true; - } - Sha1.prototype.update = function (message) { - if (this.finalized) { - return; - } - var notString = typeof (message) !== 'string'; - if (notString && message.constructor === root.ArrayBuffer) { - message = new Uint8Array(message); - } - var code, index = 0, i, length = message.length || 0, blocks = this.blocks; - while (index < length) { - if (this.hashed) { - this.hashed = false; - blocks[0] = this.block; - blocks[16] = blocks[1] = blocks[2] = blocks[3] = - blocks[4] = blocks[5] = blocks[6] = blocks[7] = - blocks[8] = blocks[9] = blocks[10] = blocks[11] = - blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; - } - if (notString) { - for (i = this.start; index < length && i < 64; ++index) { - blocks[i >> 2] |= message[index] << SHIFT[i++ & 3]; - } - } - else { - for (i = this.start; index < length && i < 64; ++index) { - code = message.charCodeAt(index); - if (code < 0x80) { - blocks[i >> 2] |= code << SHIFT[i++ & 3]; - } - else if (code < 0x800) { - blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; - } - else if (code < 0xd800 || code >= 0xe000) { - blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; - } - else { - code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); - blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; - } - } - } - this.lastByteIndex = i; - this.bytes += i - this.start; - if (i >= 64) { - this.block = blocks[16]; - this.start = i - 64; - this.hash(); - this.hashed = true; - } - else { - this.start = i; - } - } - if (this.bytes > 4294967295) { - this.hBytes += this.bytes / 4294967296 << 0; - this.bytes = this.bytes % 4294967296; - } - return this; - }; - Sha1.prototype.finalize = function () { - if (this.finalized) { - return; - } - this.finalized = true; - var blocks = this.blocks, i = this.lastByteIndex; - blocks[16] = this.block; - blocks[i >> 2] |= EXTRA[i & 3]; - this.block = blocks[16]; - if (i >= 56) { - if (!this.hashed) { - this.hash(); - } - blocks[0] = this.block; - blocks[16] = blocks[1] = blocks[2] = blocks[3] = - blocks[4] = blocks[5] = blocks[6] = blocks[7] = - blocks[8] = blocks[9] = blocks[10] = blocks[11] = - blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; - } - blocks[14] = this.hBytes << 3 | this.bytes >>> 29; - blocks[15] = this.bytes << 3; - this.hash(); - }; - Sha1.prototype.hash = function () { - var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4; - var f, j, t, blocks = this.blocks; - for (j = 16; j < 80; ++j) { - t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16]; - blocks[j] = (t << 1) | (t >>> 31); - } - for (j = 0; j < 20; j += 5) { - f = (b & c) | ((~b) & d); - t = (a << 5) | (a >>> 27); - e = t + f + e + 1518500249 + blocks[j] << 0; - b = (b << 30) | (b >>> 2); - f = (a & b) | ((~a) & c); - t = (e << 5) | (e >>> 27); - d = t + f + d + 1518500249 + blocks[j + 1] << 0; - a = (a << 30) | (a >>> 2); - f = (e & a) | ((~e) & b); - t = (d << 5) | (d >>> 27); - c = t + f + c + 1518500249 + blocks[j + 2] << 0; - e = (e << 30) | (e >>> 2); - f = (d & e) | ((~d) & a); - t = (c << 5) | (c >>> 27); - b = t + f + b + 1518500249 + blocks[j + 3] << 0; - d = (d << 30) | (d >>> 2); - f = (c & d) | ((~c) & e); - t = (b << 5) | (b >>> 27); - a = t + f + a + 1518500249 + blocks[j + 4] << 0; - c = (c << 30) | (c >>> 2); - } - for (; j < 40; j += 5) { - f = b ^ c ^ d; - t = (a << 5) | (a >>> 27); - e = t + f + e + 1859775393 + blocks[j] << 0; - b = (b << 30) | (b >>> 2); - f = a ^ b ^ c; - t = (e << 5) | (e >>> 27); - d = t + f + d + 1859775393 + blocks[j + 1] << 0; - a = (a << 30) | (a >>> 2); - f = e ^ a ^ b; - t = (d << 5) | (d >>> 27); - c = t + f + c + 1859775393 + blocks[j + 2] << 0; - e = (e << 30) | (e >>> 2); - f = d ^ e ^ a; - t = (c << 5) | (c >>> 27); - b = t + f + b + 1859775393 + blocks[j + 3] << 0; - d = (d << 30) | (d >>> 2); - f = c ^ d ^ e; - t = (b << 5) | (b >>> 27); - a = t + f + a + 1859775393 + blocks[j + 4] << 0; - c = (c << 30) | (c >>> 2); - } - for (; j < 60; j += 5) { - f = (b & c) | (b & d) | (c & d); - t = (a << 5) | (a >>> 27); - e = t + f + e - 1894007588 + blocks[j] << 0; - b = (b << 30) | (b >>> 2); - f = (a & b) | (a & c) | (b & c); - t = (e << 5) | (e >>> 27); - d = t + f + d - 1894007588 + blocks[j + 1] << 0; - a = (a << 30) | (a >>> 2); - f = (e & a) | (e & b) | (a & b); - t = (d << 5) | (d >>> 27); - c = t + f + c - 1894007588 + blocks[j + 2] << 0; - e = (e << 30) | (e >>> 2); - f = (d & e) | (d & a) | (e & a); - t = (c << 5) | (c >>> 27); - b = t + f + b - 1894007588 + blocks[j + 3] << 0; - d = (d << 30) | (d >>> 2); - f = (c & d) | (c & e) | (d & e); - t = (b << 5) | (b >>> 27); - a = t + f + a - 1894007588 + blocks[j + 4] << 0; - c = (c << 30) | (c >>> 2); - } - for (; j < 80; j += 5) { - f = b ^ c ^ d; - t = (a << 5) | (a >>> 27); - e = t + f + e - 899497514 + blocks[j] << 0; - b = (b << 30) | (b >>> 2); - f = a ^ b ^ c; - t = (e << 5) | (e >>> 27); - d = t + f + d - 899497514 + blocks[j + 1] << 0; - a = (a << 30) | (a >>> 2); - f = e ^ a ^ b; - t = (d << 5) | (d >>> 27); - c = t + f + c - 899497514 + blocks[j + 2] << 0; - e = (e << 30) | (e >>> 2); - f = d ^ e ^ a; - t = (c << 5) | (c >>> 27); - b = t + f + b - 899497514 + blocks[j + 3] << 0; - d = (d << 30) | (d >>> 2); - f = c ^ d ^ e; - t = (b << 5) | (b >>> 27); - a = t + f + a - 899497514 + blocks[j + 4] << 0; - c = (c << 30) | (c >>> 2); - } - this.h0 = this.h0 + a << 0; - this.h1 = this.h1 + b << 0; - this.h2 = this.h2 + c << 0; - this.h3 = this.h3 + d << 0; - this.h4 = this.h4 + e << 0; - }; - Sha1.prototype.hex = function () { - this.finalize(); - var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4; - return HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] + - HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] + - HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] + - HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] + - HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] + - HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] + - HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] + - HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] + - HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] + - HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] + - HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] + - HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] + - HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] + - HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] + - HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] + - HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] + - HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] + - HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] + - HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] + - HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F]; - }; - Sha1.prototype.toString = Sha1.prototype.hex; - Sha1.prototype.digest = function () { - this.finalize(); - var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4; - return [ - (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF, - (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF, - (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF, - (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF, - (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF - ]; - }; - Sha1.prototype.array = Sha1.prototype.digest; - Sha1.prototype.arrayBuffer = function () { - this.finalize(); - var buffer = new ArrayBuffer(20); - var dataView = new DataView(buffer); - dataView.setUint32(0, this.h0); - dataView.setUint32(4, this.h1); - dataView.setUint32(8, this.h2); - dataView.setUint32(12, this.h3); - dataView.setUint32(16, this.h4); - return buffer; - }; - var exports = createMethod(); - if (COMMON_JS) { - module.exports = exports; - } - else { - root._sha1 = exports; - if (AMD) { - define(function () { - return exports; - }); - } - } - })(); - function encode_text(buffer) { - if (window.TextEncoder) { - return new TextEncoder().encode(buffer).buffer; - } - let utf8 = unescape(encodeURIComponent(buffer)); - let result = new Uint8Array(utf8.length); - for (let i = 0; i < utf8.length; i++) { - result[i] = utf8.charCodeAt(i); - } - return result.buffer; - } - sha.encode_text = encode_text; - function sha1(message) { - if (!(typeof (message) === "string" || message instanceof ArrayBuffer)) - throw "Invalid type!"; - let buffer = message instanceof ArrayBuffer ? message : encode_text(message); - if (!crypto || !crypto.subtle || !crypto.subtle.digest || /Edge/.test(navigator.userAgent)) - return new Promise(resolve => { - resolve(_sha1.arrayBuffer(buffer)); - }); - else - return crypto.subtle.digest("SHA-1", buffer); - } - sha.sha1 = sha1; -})(sha || (sha = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["935e0da2013d91ea7f19563d4f99c3afd9a64fbd92648d10f12100847a7e2706"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["935e0da2013d91ea7f19563d4f99c3afd9a64fbd92648d10f12100847a7e2706"] = "935e0da2013d91ea7f19563d4f99c3afd9a64fbd92648d10f12100847a7e2706"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "vp3qN7Lv", path: "D:/TeaSpeak/web/shared/js/utils/helpers.ts (64,17)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -var helpers; -(function (helpers) { - function hashPassword(password) { - return new Promise((resolve, reject) => { - sha.sha1(password).then(result => { - resolve(btoa(String.fromCharCode.apply(null, new Uint8Array(result)))); - }); - }); - } - helpers.hashPassword = hashPassword; -})(helpers || (helpers = {})); -class LaterPromise extends Promise { - constructor() { - super((resolve, reject) => { }); - this._handle = new Promise((resolve, reject) => { - this._resolve = resolve; - this._reject = reject; - }); - this._time = Date.now(); - } - resolved(object) { - this._resolve(object); - } - rejected(reason) { - this._reject(reason); - } - function_rejected() { - return error => this.rejected(error); - } - time() { return this._time; } - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled, onrejected) { - return this._handle.then(onfulfilled, onrejected); - } - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected) { - return this._handle.then(onrejected); - } -} -const copy_to_clipboard = str => { - console.log(_translations.vp3qN7Lv || (_translations.vp3qN7Lv = tr("Copy text to clipboard: %s")), str); - const el = document.createElement('textarea'); - el.value = str; - el.setAttribute('readonly', ''); - el.style.position = 'absolute'; - el.style.left = '-9999px'; - document.body.appendChild(el); - const selected = document.getSelection().rangeCount > 0 - ? document.getSelection().getRangeAt(0) - : false; - el.select(); - document.execCommand('copy'); - document.body.removeChild(el); - if (selected) { - document.getSelection().removeAllRanges(); - document.getSelection().addRange(selected); - } -}; -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["ea470d3765848757dcda6d47b98223fcb9ac6df163ab3f988099385249d28f40"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["ea470d3765848757dcda6d47b98223fcb9ac6df163ab3f988099385249d28f40"] = "ea470d3765848757dcda6d47b98223fcb9ac6df163ab3f988099385249d28f40"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "hhpJHMRa", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (279,36)" }, { name: "knrsc2gO", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (286,36)" }, { name: "xE5tdDeb", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (293,36)" }, { name: "QB55gRZX", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (300,36)" }, { name: "MbfBEncM", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (307,36)" }, { name: "Vsb7qSul", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (410,44)" }, { name: "ue16j2uQ", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (509,28)" }, { name: "uA6gN1CT", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (514,28)" }, { name: "Q5gkqCHu", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (525,23)" }, { name: "ZbnjV_nC", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (540,40)" }, { name: "_NrpAgeh", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (547,40)" }, { name: "QmKAmMQq", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (554,40)" }, { name: "K_D5E5Qr", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (565,23)" }, { name: "SE5yjugN", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (572,59)" }, { name: "xQ2nlySI", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (599,23)" }, { name: "Z8BBjPN6", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (611,23)" }, { name: "pWVzIrse", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (614,41)" }, { name: "gDrg7wuy", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (614,73)" }, { name: "N3R6GVVn", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (620,42)" }, { name: "JmxXwa_z", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (620,98)" }, { name: "TWGmtLXk", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (628,23)" }, { name: "i2ZLxHht", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (634,23)" }, { name: "lytbqzbt", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (712,82)" }, { name: "UH_cWHFT", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (835,30)" }, { name: "LeX07FON", path: "D:/TeaSpeak/web/shared/js/ui/channel.ts (835,54)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -var ChannelType; -(function (ChannelType) { - ChannelType[ChannelType["PERMANENT"] = 0] = "PERMANENT"; - ChannelType[ChannelType["SEMI_PERMANENT"] = 1] = "SEMI_PERMANENT"; - ChannelType[ChannelType["TEMPORARY"] = 2] = "TEMPORARY"; -})(ChannelType || (ChannelType = {})); -(function (ChannelType) { - function normalize(mode) { - let value = ChannelType[mode]; - value = value.toLowerCase(); - return value[0].toUpperCase() + value.substr(1); - } - ChannelType.normalize = normalize; -})(ChannelType || (ChannelType = {})); -var ChannelSubscribeMode; -(function (ChannelSubscribeMode) { - ChannelSubscribeMode[ChannelSubscribeMode["SUBSCRIBED"] = 0] = "SUBSCRIBED"; - ChannelSubscribeMode[ChannelSubscribeMode["UNSUBSCRIBED"] = 1] = "UNSUBSCRIBED"; - ChannelSubscribeMode[ChannelSubscribeMode["INHERITED"] = 2] = "INHERITED"; -})(ChannelSubscribeMode || (ChannelSubscribeMode = {})); -class ChannelProperties { - constructor() { - this.channel_order = 0; - this.channel_name = ""; - this.channel_name_phonetic = ""; - this.channel_topic = ""; - this.channel_password = ""; - this.channel_codec = 4; - this.channel_codec_quality = 0; - this.channel_codec_is_unencrypted = false; - this.channel_maxclients = -1; - this.channel_maxfamilyclients = -1; - this.channel_needed_talk_power = 1; - this.channel_flag_permanent = false; - this.channel_flag_semi_permanent = false; - this.channel_flag_default = false; - this.channel_flag_password = false; - this.channel_flag_maxclients_unlimited = false; - this.channel_flag_maxfamilyclients_inherited = false; - this.channel_flag_maxfamilyclients_unlimited = false; - this.channel_icon_id = 0; - this.channel_delete_delay = 0; - //Only after request - this.channel_description = ""; - this.channel_flag_conversation_private = true; /* TeamSpeak mode */ - this.channel_conversation_history_length = -1; - } -} -class ChannelEntry { - constructor(channelId, channelName, parent = null) { - this.properties = new ChannelProperties(); - this._channel_name_alignment = undefined; - this._channel_name_formatted = undefined; - this._family_index = 0; - this._destroyed = false; - this._cached_channel_description = undefined; - this._cached_channel_description_promise = undefined; - this._cached_channel_description_promise_resolve = undefined; - this._cached_channel_description_promise_reject = undefined; - this.properties = new ChannelProperties(); - this.channelId = channelId; - this.properties.channel_name = channelName; - this.parent = parent; - this.channelTree = null; - this.initializeTag(); - this.__updateChannelName(); - } - destroy() { - this._destroyed = true; - if (this._tag_root) { - this._tag_root.remove(); /* removes also all other tags */ - this._tag_root = undefined; - } - this._tag_siblings = undefined; - this._tag_channel = undefined; - this._tag_clients = undefined; - this._cached_channel_description_promise = undefined; - this._cached_channel_description_promise_resolve = undefined; - this._cached_channel_description_promise_reject = undefined; - this.channel_previous = undefined; - this.parent = undefined; - this.channel_next = undefined; - this.channelTree = undefined; - } - channelName() { - return this.properties.channel_name; - } - formattedChannelName() { - return this._channel_name_formatted || this.properties.channel_name; - } - getChannelDescription() { - if (this._cached_channel_description) - return new Promise(resolve => resolve(this._cached_channel_description)); - if (this._cached_channel_description_promise) - return this._cached_channel_description_promise; - this.channelTree.client.serverConnection.send_command("channelgetdescription", { cid: this.channelId }).catch(error => { - this._cached_channel_description_promise_reject(error); - }); - return this._cached_channel_description_promise = new Promise((resolve, reject) => { - this._cached_channel_description_promise_resolve = resolve; - this._cached_channel_description_promise_reject = reject; - }); - } - parent_channel() { return this.parent; } - hasParent() { return this.parent != null; } - getChannelId() { return this.channelId; } - children(deep = false) { - const result = []; - if (this.channelTree == null) - return []; - const self = this; - this.channelTree.channels.forEach(function (entry) { - let current = entry; - if (deep) { - while (current) { - if (current.parent_channel() == self) { - result.push(entry); - break; - } - current = current.parent_channel(); - } - } - else if (current.parent_channel() == self) - result.push(entry); - }); - return result; - } - clients(deep = false) { - const result = []; - if (this.channelTree == null) - return []; - const self = this; - this.channelTree.clients.forEach(function (entry) { - let current = entry.currentChannel(); - if (deep) { - while (current) { - if (current == self) { - result.push(entry); - break; - } - current = current.parent_channel(); - } - } - else if (current == self) - result.push(entry); - }); - return result; - } - clients_ordered() { - const clients = this.clients(false); - clients.sort((a, b) => { - if (a.properties.client_talk_power < b.properties.client_talk_power) - return 1; - if (a.properties.client_talk_power > b.properties.client_talk_power) - return -1; - if (a.properties.client_nickname > b.properties.client_nickname) - return 1; - if (a.properties.client_nickname < b.properties.client_nickname) - return -1; - return 0; - }); - return clients; - } - update_family_index(enforce) { - const current_index = this._family_index; - const new_index = this.calculate_family_index(true); - if (current_index == new_index && !enforce) - return; - this._tag_channel.css("z-index", this._family_index); - this._tag_channel.css("padding-left", ((this._family_index + 1) * 16 + 10) + "px"); - } - calculate_family_index(enforce_recalculate = false) { - if (this._family_index !== undefined && !enforce_recalculate) - return this._family_index; - this._family_index = 0; - let channel = this.parent_channel(); - while (channel) { - this._family_index++; - channel = channel.parent_channel(); - } - return this._family_index; - } - initializeTag() { - const tag_channel = $.spawn("div").addClass("tree-entry channel"); - { - const container_entry = $.spawn("div").addClass("container-channel"); - container_entry.attr("channel-id", this.channelId); - container_entry.addClass(this._channel_name_alignment); - /* unread marker */ - { - container_entry.append($.spawn("div") - .addClass("marker-text-unread hidden") - .attr("conversation", this.channelId)); - } - /* channel icon (type) */ - { - container_entry.append($.spawn("div") - .addClass("show-channel-normal-only channel-type icon client-channel_green_subscribed")); - } - /* channel name */ - { - container_entry.append($.spawn("div") - .addClass("container-channel-name") - .append($.spawn("a") - .addClass("channel-name") - .text(this.channelName()))); - } - /* all icons (last element) */ - { - //Icons - let container_icons = $.spawn("span").addClass("icons"); - //Default icon (5) - container_icons.append($.spawn("div") - .addClass("show-channel-normal-only icon_entry icon_default icon client-channel_default") - .attr("title", _translations.hhpJHMRa || (_translations.hhpJHMRa = tr("Default channel")))); - //Password icon (4) - container_icons.append($.spawn("div") - .addClass("show-channel-normal-only icon_entry icon_password icon client-register") - .attr("title", _translations.knrsc2gO || (_translations.knrsc2gO = tr("The channel is password protected")))); - //Music icon (3) - container_icons.append($.spawn("div") - .addClass("show-channel-normal-only icon_entry icon_music icon client-music") - .attr("title", _translations.xE5tdDeb || (_translations.xE5tdDeb = tr("Music quality")))); - //Channel moderated (2) - container_icons.append($.spawn("div") - .addClass("show-channel-normal-only icon_entry icon_moderated icon client-moderated") - .attr("title", _translations.QB55gRZX || (_translations.QB55gRZX = tr("Channel is moderated")))); - //Channel Icon (1) - container_icons.append($.spawn("div") - .addClass("show-channel-normal-only icon_entry channel_icon") - .attr("title", _translations.MbfBEncM || (_translations.MbfBEncM = tr("Channel icon")))); - //Default no sound (0) - let container = $.spawn("div") - .css("position", "relative") - .addClass("icon_no_sound"); - let noSound = $.spawn("div") - .addClass("icon_entry icon client-conflict-icon") - .attr("title", "You don't support the channel codec"); - let bg = $.spawn("div") - .width(10) - .height(14) - .css("background", "red") - .css("position", "absolute") - .css("top", "1px") - .css("left", "3px") - .css("z-index", "-1"); - bg.appendTo(container); - noSound.appendTo(container); - container_icons.append(container); - container_icons.appendTo(container_entry); - } - tag_channel.append(this._tag_channel = container_entry); - this.update_family_index(true); - } - { - const container_client = $.spawn("div").addClass("container-clients"); - tag_channel.append(this._tag_clients = container_client); - } - { - const container_children = $.spawn("div").addClass("container-children"); - tag_channel.append(this._tag_siblings = container_children); - } - /* - setInterval(() => { - let color = (Math.random() * 10000000).toString(16).substr(0, 6); - tag_channel.css("background", "#" + color); - }, 150); - */ - this._tag_root = tag_channel; - } - rootTag() { - return this._tag_root; - } - channelTag() { - return this._tag_channel; - } - siblingTag() { - return this._tag_siblings; - } - clientTag() { - return this._tag_clients; - } - reorderClients(sync) { - if (this._reorder_timer) { - if (!sync) - return; - clearTimeout(this._reorder_timer); - this._reorder_timer = undefined; - } - else if (!sync) { - this._reorder_timer = setTimeout(() => { - this._reorder_timer = undefined; - this.reorderClients(true); - }, 5); - return; - } - let clients = this.clients(); - if (clients.length > 1) { - clients.sort((a, b) => { - if (a.properties.client_talk_power < b.properties.client_talk_power) - return 1; - if (a.properties.client_talk_power > b.properties.client_talk_power) - return -1; - if (a.properties.client_nickname > b.properties.client_nickname) - return 1; - if (a.properties.client_nickname < b.properties.client_nickname) - return -1; - return 0; - }); - clients.reverse(); - for (let index = 0; index + 1 < clients.length; index++) - clients[index].tag.before(clients[index + 1].tag); - log.debug(LogCategory.CHANNEL, _translations.Vsb7qSul || (_translations.Vsb7qSul = tr("Reordered channel clients: %d")), clients.length); - for (let client of clients) { - log.debug(LogCategory.CHANNEL, "- %i %s", client.properties.client_talk_power, client.properties.client_nickname); - } - } - } - initializeListener() { - const tag_channel = this.channelTag(); - tag_channel.on('click', () => this.channelTree.onSelect(this)); - tag_channel.on('dblclick', () => { - if ($.isArray(this.channelTree.currently_selected)) { //Multiselect - return; - } - this.joinChannel(); - }); - let last_touch = 0; - let touch_start = 0; - tag_channel.on('touchend', event => { - /* if over 250ms then its not a click its more a drag */ - if (Date.now() - touch_start > 250) { - touch_start = 0; - return; - } - if (Date.now() - last_touch > 750) { - last_touch = Date.now(); - return; - } - last_touch = Date.now(); - /* double touch */ - tag_channel.trigger('dblclick'); - }); - tag_channel.on('touchstart', event => { - touch_start = Date.now(); - }); - if (!settings.static(Settings.KEY_DISABLE_CONTEXT_MENU, false)) { - this.channelTag().on("contextmenu", (event) => { - event.preventDefault(); - if ($.isArray(this.channelTree.currently_selected)) { //Multiselect - (this.channelTree.currently_selected_context_callback || ((_) => null))(event); - return; - } - this.channelTree.onSelect(this, true); - this.showContextMenu(event.pageX, event.pageY, () => { - this.channelTree.onSelect(undefined, true); - }); - }); - } - } - showContextMenu(x, y, on_close = undefined) { - let channelCreate = !![ - PermissionType.B_CHANNEL_CREATE_TEMPORARY, - PermissionType.B_CHANNEL_CREATE_SEMI_PERMANENT, - PermissionType.B_CHANNEL_CREATE_PERMANENT - ].find(e => this.channelTree.client.permissions.neededPermission(e).granted(1)); - let channelModify = !![ - PermissionType.B_CHANNEL_MODIFY_MAKE_DEFAULT, - PermissionType.B_CHANNEL_MODIFY_MAKE_PERMANENT, - PermissionType.B_CHANNEL_MODIFY_MAKE_SEMI_PERMANENT, - PermissionType.B_CHANNEL_MODIFY_MAKE_TEMPORARY, - PermissionType.B_CHANNEL_MODIFY_NAME, - PermissionType.B_CHANNEL_MODIFY_TOPIC, - PermissionType.B_CHANNEL_MODIFY_DESCRIPTION, - PermissionType.B_CHANNEL_MODIFY_PASSWORD, - PermissionType.B_CHANNEL_MODIFY_CODEC, - PermissionType.B_CHANNEL_MODIFY_CODEC_QUALITY, - PermissionType.B_CHANNEL_MODIFY_CODEC_LATENCY_FACTOR, - PermissionType.B_CHANNEL_MODIFY_MAXCLIENTS, - PermissionType.B_CHANNEL_MODIFY_MAXFAMILYCLIENTS, - PermissionType.B_CHANNEL_MODIFY_SORTORDER, - PermissionType.B_CHANNEL_MODIFY_NEEDED_TALK_POWER, - PermissionType.B_CHANNEL_MODIFY_MAKE_CODEC_ENCRYPTED, - PermissionType.B_CHANNEL_MODIFY_TEMP_DELETE_DELAY, - PermissionType.B_ICON_MANAGE - ].find(e => this.channelTree.client.permissions.neededPermission(e).granted(1)); - let flagDelete = true; - if (this.clients(true).length > 0) - flagDelete = this.channelTree.client.permissions.neededPermission(PermissionType.B_CHANNEL_DELETE_FLAG_FORCE).granted(1); - if (flagDelete) { - if (this.properties.channel_flag_permanent) - flagDelete = this.channelTree.client.permissions.neededPermission(PermissionType.B_CHANNEL_DELETE_PERMANENT).granted(1); - else if (this.properties.channel_flag_semi_permanent) - flagDelete = this.channelTree.client.permissions.neededPermission(PermissionType.B_CHANNEL_DELETE_PERMANENT).granted(1); - else - flagDelete = this.channelTree.client.permissions.neededPermission(PermissionType.B_CHANNEL_DELETE_TEMPORARY).granted(1); - } - let trigger_close = true; - const bold = text => contextmenu.get_provider().html_format_enabled() ? "" + text + "" : text; - contextmenu.spawn_context_menu(x, y, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-channel_switch", - name: bold(_translations.ue16j2uQ || (_translations.ue16j2uQ = tr("Switch to channel"))), - callback: () => this.joinChannel() - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-channel_switch", - name: bold(_translations.uA6gN1CT || (_translations.uA6gN1CT = tr("Join text channel"))), - callback: () => { - this.channelTree.client.side_bar.channel_conversations().set_current_channel(this.getChannelId()); - this.channelTree.client.side_bar.show_channel_conversations(); - }, - visible: !settings.static_global(Settings.KEY_SWITCH_INSTANT_CHAT) - }, { - type: contextmenu.MenuEntryType.HR, - name: '' - }, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.Q5gkqCHu || (_translations.Q5gkqCHu = tr("Show channel info")), - callback: () => { - trigger_close = false; - Modals.openChannelInfo(this); - }, - icon_class: "client-about" - }, ...(() => { - const local_client = this.channelTree.client.getClient(); - if (!local_client || local_client.currentChannel() !== this) - return [ - contextmenu.Entry.HR(), - { - type: contextmenu.MenuEntryType.ENTRY, - icon: "client-subscribe_to_channel", - name: bold(_translations.ZbnjV_nC || (_translations.ZbnjV_nC = tr("Subscribe to channel"))), - callback: () => this.subscribe(), - visible: !this.flag_subscribed - }, - { - type: contextmenu.MenuEntryType.ENTRY, - icon: "client-channel_unsubscribed", - name: bold(_translations._NrpAgeh || (_translations._NrpAgeh = tr("Unsubscribe from channel"))), - callback: () => this.unsubscribe(), - visible: this.flag_subscribed - }, - { - type: contextmenu.MenuEntryType.ENTRY, - icon: "client-subscribe_mode", - name: bold(_translations.QmKAmMQq || (_translations.QmKAmMQq = tr("Use inherited subscribe mode"))), - callback: () => this.unsubscribe(true), - visible: this.subscribe_mode != ChannelSubscribeMode.INHERITED - } - ]; - return []; - })(), contextmenu.Entry.HR(), { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-channel_edit", - name: _translations.K_D5E5Qr || (_translations.K_D5E5Qr = tr("Edit channel")), - invalidPermission: !channelModify, - callback: () => { - Modals.createChannelModal(this.channelTree.client, this, undefined, this.channelTree.client.permissions, (changes, permissions) => { - if (changes) { - changes["cid"] = this.channelId; - this.channelTree.client.serverConnection.send_command("channeledit", changes); - log.info(LogCategory.CHANNEL, _translations.SE5yjugN || (_translations.SE5yjugN = tr("Changed channel properties of channel %s: %o")), this.channelName(), changes); - } - if (permissions && permissions.length > 0) { - let perms = []; - for (let perm of permissions) { - perms.push({ - permvalue: perm.value, - permnegated: false, - permskip: false, - permid: perm.type.id - }); - } - perms[0]["cid"] = this.channelId; - this.channelTree.client.serverConnection.send_command("channeladdperm", perms, { - flagset: ["continueonerror"] - }).then(() => { - this.channelTree.client.sound.play(Sound.CHANNEL_EDITED_SELF); - }); - } - }); - } - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-channel_delete", - name: _translations.xQ2nlySI || (_translations.xQ2nlySI = tr("Delete channel")), - invalidPermission: !flagDelete, - callback: () => { - this.channelTree.client.serverConnection.send_command("channeldelete", { cid: this.channelId }).then(() => { - this.channelTree.client.sound.play(Sound.CHANNEL_DELETED); - }); - } - }, contextmenu.Entry.HR(), { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-addon-collection", - name: _translations.Z8BBjPN6 || (_translations.Z8BBjPN6 = tr("Create music bot")), - callback: () => { - this.channelTree.client.serverConnection.send_command("musicbotcreate", { cid: this.channelId }).then(() => { - createInfoModal(_translations.pWVzIrse || (_translations.pWVzIrse = tr("Bot successfully created")), _translations.gDrg7wuy || (_translations.gDrg7wuy = tr("Bot has been successfully created."))).open(); - }).catch(error => { - if (error instanceof CommandResult) { - error = error.extra_message || error.message; - } - createErrorModal(_translations.N3R6GVVn || (_translations.N3R6GVVn = tr("Failed to create bot")), MessageHelper.formatMessage(_translations.JmxXwa_z || (_translations.JmxXwa_z = tr("Failed to create the music bot:
{0}")), error)).open(); - }); - } - }, contextmenu.Entry.HR(), { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-channel_create_sub", - name: _translations.TWGmtLXk || (_translations.TWGmtLXk = tr("Create sub channel")), - invalidPermission: !(channelCreate && this.channelTree.client.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_CHILD).granted(1)), - callback: () => this.channelTree.spawnCreateChannel(this) - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-channel_create", - name: _translations.i2ZLxHht || (_translations.i2ZLxHht = tr("Create channel")), - invalidPermission: !channelCreate, - callback: () => this.channelTree.spawnCreateChannel() - }, contextmenu.Entry.CLOSE(() => trigger_close ? on_close() : {})); - } - handle_frame_resized() { - if (this._channel_name_formatted === "align-repetitive") - this.__updateChannelName(); - } - __updateChannelName() { - this._channel_name_formatted = undefined; - parse_type: if (this.parent_channel() == null && this.properties.channel_name.charAt(0) == '[') { - let end = this.properties.channel_name.indexOf(']'); - if (end == -1) - break parse_type; - let options = this.properties.channel_name.substr(1, end - 1); - if (options.indexOf("spacer") == -1) - break parse_type; - options = options.substr(0, options.indexOf("spacer")); - if (options.length == 0) - options = "l"; - else if (options.length > 1) - options = options[0]; - switch (options) { - case "r": - this._channel_name_alignment = "align-right"; - break; - case "l": - this._channel_name_alignment = "align-left"; - break; - case "c": - this._channel_name_alignment = "align-center"; - break; - case "*": - this._channel_name_alignment = "align-repetitive"; - break; - default: - this._channel_name_alignment = undefined; - break parse_type; - } - this._channel_name_formatted = this.properties.channel_name.substr(end + 1) || ""; - } - this._tag_channel.find(".show-channel-normal-only").toggleClass("channel-normal", this._channel_name_formatted === undefined); - const tag_container_name = this._tag_channel.find(".container-channel-name"); - tag_container_name.removeClass(ChannelEntry.NAME_ALIGNMENTS.join(" ")); - const tag_name = tag_container_name.find(".channel-name"); - let text = this._channel_name_formatted === undefined ? this.properties.channel_name : this._channel_name_formatted; - if (this._channel_name_formatted !== undefined) { - tag_container_name.addClass(this._channel_name_alignment); - if (this._channel_name_alignment == "align-repetitive" && text.length > 0) { - while (text.length < 1024 * 8) - text += text; - } - } - tag_name.text(text); - } - recalculate_repetitive_name() { - if (this._channel_name_alignment == "align-repetitive") - this.__updateChannelName(); - } - updateVariables(...variables) { - let group = log.group(log.LogType.DEBUG, LogCategory.CHANNEL_PROPERTIES, _translations.lytbqzbt || (_translations.lytbqzbt = tr("Update properties (%i) of %s (%i)")), variables.length, this.channelName(), this.getChannelId()); - { - const entries = []; - for (const variable of variables) - entries.push({ - key: variable.key, - value: variable.value, - type: typeof (this.properties[variable.key]) - }); - log.table(LogType.DEBUG, LogCategory.PERMISSIONS, "Clannel update properties", entries); - } - let info_update = false; - for (let variable of variables) { - let key = variable.key; - let value = variable.value; - JSON.map_field_to(this.properties, value, variable.key); - if (key == "channel_name") { - this.__updateChannelName(); - info_update = true; - } - else if (key == "channel_order") { - let order = this.channelTree.findChannel(this.properties.channel_order); - this.channelTree.moveChannel(this, order, this.parent); - } - else if (key == "channel_icon_id") { - /* For more detail lookup client::updateVariables and client_icon_id! - * ATTENTION: This is required! - */ - this.properties.channel_icon_id = variable.value >>> 0; - let tag = this.channelTag().find(".icons .channel_icon"); - (this.properties.channel_icon_id > 0 ? $.fn.show : $.fn.hide).apply(tag); - if (this.properties.channel_icon_id > 0) { - tag.children().detach(); - this.channelTree.client.fileManager.icons.generateTag(this.properties.channel_icon_id).appendTo(tag); - } - info_update = true; - } - else if (key == "channel_codec") { - (this.properties.channel_codec == 5 || this.properties.channel_codec == 3 ? $.fn.show : $.fn.hide).apply(this.channelTag().find(".icons .icon_music")); - this.channelTag().find(".icons .icon_no_sound").toggle(!(this.channelTree.client.serverConnection.support_voice() && - this.channelTree.client.serverConnection.voice_connection().decoding_supported(this.properties.channel_codec))); - } - else if (key == "channel_flag_default") { - (this.properties.channel_flag_default ? $.fn.show : $.fn.hide).apply(this.channelTag().find(".icons .icon_default")); - } - else if (key == "channel_flag_password") - (this.properties.channel_flag_password ? $.fn.show : $.fn.hide).apply(this.channelTag().find(".icons .icon_password")); - else if (key == "channel_needed_talk_power") - (this.properties.channel_needed_talk_power > 0 ? $.fn.show : $.fn.hide).apply(this.channelTag().find(".icons .icon_moderated")); - else if (key == "channel_description") { - this._cached_channel_description = undefined; - if (this._cached_channel_description_promise_resolve) - this._cached_channel_description_promise_resolve(value); - this._cached_channel_description_promise = undefined; - this._cached_channel_description_promise_resolve = undefined; - this._cached_channel_description_promise_reject = undefined; - } - if (key == "channel_maxclients" || key == "channel_maxfamilyclients" || key == "channel_flag_private" || key == "channel_flag_password") { - this.updateChannelTypeIcon(); - info_update = true; - } - if (key == "channel_flag_conversation_private") { - const conversations = this.channelTree.client.side_bar.channel_conversations(); - const conversation = conversations.conversation(this.channelId, false); - if (conversation) - conversation.set_flag_private(this.properties.channel_flag_conversation_private); - } - } - group.end(); - if (info_update) { - const _client = this.channelTree.client.getClient(); - if (_client.currentChannel() === this) - this.channelTree.client.side_bar.info_frame().update_channel_talk(); - //TODO chat channel! - } - } - updateChannelTypeIcon() { - let tag = this.channelTag().find(".channel-type"); - tag.removeAttr('class'); - tag.addClass("show-channel-normal-only channel-type icon"); - if (this._channel_name_formatted === undefined) - tag.addClass("channel-normal"); - let type; - if (this.properties.channel_flag_password == true && !this._cachedPassword) - type = "yellow"; - else if ((!this.properties.channel_flag_maxclients_unlimited && this.clients().length >= this.properties.channel_maxclients) || - (!this.properties.channel_flag_maxfamilyclients_unlimited && this.properties.channel_maxfamilyclients >= 0 && this.clients(true).length >= this.properties.channel_maxfamilyclients)) - type = "red"; - else - type = "green"; - tag.addClass("client-channel_" + type + (this._flag_subscribed ? "_subscribed" : "")); - } - generate_bbcode() { - return "[url=channel://" + this.channelId + "/" + encodeURIComponent(this.properties.channel_name) + "]" + this.formattedChannelName() + "[/url]"; - } - generate_tag(braces = false) { - return $(htmltags.generate_channel({ - channel_name: this.properties.channel_name, - channel_id: this.channelId, - add_braces: braces - })); - } - channelType() { - if (this.properties.channel_flag_permanent == true) - return ChannelType.PERMANENT; - if (this.properties.channel_flag_semi_permanent == true) - return ChannelType.SEMI_PERMANENT; - return ChannelType.TEMPORARY; - } - joinChannel() { - if (this.properties.channel_flag_password == true && - !this._cachedPassword && - !this.channelTree.client.permissions.neededPermission(PermissionType.B_CHANNEL_JOIN_IGNORE_PASSWORD).granted(1)) { - createInputModal(_translations.UH_cWHFT || (_translations.UH_cWHFT = tr("Channel password")), _translations.LeX07FON || (_translations.LeX07FON = tr("Channel password:")), () => true, text => { - if (typeof (text) == typeof (true)) - return; - helpers.hashPassword(text).then(result => { - this._cachedPassword = result; - this.joinChannel(); - this.updateChannelTypeIcon(); - }); - }).open(); - } - else if (this.channelTree.client.getClient().currentChannel() != this) - this.channelTree.client.getServerConnection().command_helper.joinChannel(this, this._cachedPassword).then(() => { - this.channelTree.client.sound.play(Sound.CHANNEL_JOINED); - }).catch(error => { - if (error instanceof CommandResult) { - if (error.id == 781) { //Invalid password - this._cachedPassword = undefined; - this.updateChannelTypeIcon(); - } - } - }); - } - cached_password() { return this._cachedPassword; } - subscribe() { - return __awaiter(this, void 0, void 0, function* () { - if (this.subscribe_mode == ChannelSubscribeMode.SUBSCRIBED) - return; - this.subscribe_mode = ChannelSubscribeMode.SUBSCRIBED; - const connection = this.channelTree.client.getServerConnection(); - if (!this.flag_subscribed && connection) - yield connection.send_command('channelsubscribe', { - 'cid': this.getChannelId() - }); - else - this.flag_subscribed = false; - }); - } - unsubscribe(inherited_subscription_mode) { - return __awaiter(this, void 0, void 0, function* () { - const connection = this.channelTree.client.getServerConnection(); - let unsubscribe; - if (inherited_subscription_mode) { - this.subscribe_mode = ChannelSubscribeMode.INHERITED; - unsubscribe = this.flag_subscribed && !this.channelTree.client.client_status.channel_subscribe_all; - } - else { - this.subscribe_mode = ChannelSubscribeMode.UNSUBSCRIBED; - unsubscribe = this.flag_subscribed; - } - if (unsubscribe) { - if (connection) - yield connection.send_command('channelunsubscribe', { - 'cid': this.getChannelId() - }); - else - this.flag_subscribed = false; - for (const client of this.clients(false)) - this.channelTree.deleteClient(client, false); - } - }); - } - get flag_subscribed() { - return this._flag_subscribed; - } - set flag_subscribed(flag) { - if (this._flag_subscribed == flag) - return; - this._flag_subscribed = flag; - this.updateChannelTypeIcon(); - } - get subscribe_mode() { - return typeof (this._subscribe_mode) !== 'undefined' ? this._subscribe_mode : (this._subscribe_mode = this.channelTree.client.settings.server(Settings.FN_SERVER_CHANNEL_SUBSCRIBE_MODE(this.channelId), ChannelSubscribeMode.INHERITED)); - } - set subscribe_mode(mode) { - if (this.subscribe_mode == mode) - return; - this._subscribe_mode = mode; - this.channelTree.client.settings.changeServer(Settings.FN_SERVER_CHANNEL_SUBSCRIBE_MODE(this.channelId), mode); - } - set flag_text_unread(flag) { - this._tag_channel.find(".marker-text-unread").toggleClass("hidden", !flag); - } - log_data() { - return { - channel_name: this.channelName(), - channel_id: this.channelId - }; - } -} -ChannelEntry.NAME_ALIGNMENTS = ["align-left", "align-center", "align-right", "align-repetitive"]; -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["3a726f47d44c83f2e45a85cc387e80ebef9b1d8512dfcad3ffb69d77002c410e"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["3a726f47d44c83f2e45a85cc387e80ebef9b1d8512dfcad3ffb69d77002c410e"] = "3a726f47d44c83f2e45a85cc387e80ebef9b1d8512dfcad3ffb69d77002c410e"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "jlXiTChR", path: "D:/TeaSpeak/web/shared/js/PPTListener.ts (161,31)" }, { name: "nn_CMtx4", path: "D:/TeaSpeak/web/shared/js/PPTListener.ts (163,31)" }, { name: "ivWvObQX", path: "D:/TeaSpeak/web/shared/js/PPTListener.ts (165,31)" }, { name: "NjOPG_IO", path: "D:/TeaSpeak/web/shared/js/PPTListener.ts (167,31)" }, { name: "UUiQqGoU", path: "D:/TeaSpeak/web/shared/js/PPTListener.ts (170,20)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var KeyCode; -(function (KeyCode) { - KeyCode[KeyCode["KEY_CANCEL"] = 3] = "KEY_CANCEL"; - KeyCode[KeyCode["KEY_HELP"] = 6] = "KEY_HELP"; - KeyCode[KeyCode["KEY_BACK_SPACE"] = 8] = "KEY_BACK_SPACE"; - KeyCode[KeyCode["KEY_TAB"] = 9] = "KEY_TAB"; - KeyCode[KeyCode["KEY_CLEAR"] = 12] = "KEY_CLEAR"; - KeyCode[KeyCode["KEY_RETURN"] = 13] = "KEY_RETURN"; - KeyCode[KeyCode["KEY_ENTER"] = 14] = "KEY_ENTER"; - KeyCode[KeyCode["KEY_SHIFT"] = 16] = "KEY_SHIFT"; - KeyCode[KeyCode["KEY_CONTROL"] = 17] = "KEY_CONTROL"; - KeyCode[KeyCode["KEY_ALT"] = 18] = "KEY_ALT"; - KeyCode[KeyCode["KEY_PAUSE"] = 19] = "KEY_PAUSE"; - KeyCode[KeyCode["KEY_CAPS_LOCK"] = 20] = "KEY_CAPS_LOCK"; - KeyCode[KeyCode["KEY_ESCAPE"] = 27] = "KEY_ESCAPE"; - KeyCode[KeyCode["KEY_SPACE"] = 32] = "KEY_SPACE"; - KeyCode[KeyCode["KEY_PAGE_UP"] = 33] = "KEY_PAGE_UP"; - KeyCode[KeyCode["KEY_PAGE_DOWN"] = 34] = "KEY_PAGE_DOWN"; - KeyCode[KeyCode["KEY_END"] = 35] = "KEY_END"; - KeyCode[KeyCode["KEY_HOME"] = 36] = "KEY_HOME"; - KeyCode[KeyCode["KEY_LEFT"] = 37] = "KEY_LEFT"; - KeyCode[KeyCode["KEY_UP"] = 38] = "KEY_UP"; - KeyCode[KeyCode["KEY_RIGHT"] = 39] = "KEY_RIGHT"; - KeyCode[KeyCode["KEY_DOWN"] = 40] = "KEY_DOWN"; - KeyCode[KeyCode["KEY_PRINTSCREEN"] = 44] = "KEY_PRINTSCREEN"; - KeyCode[KeyCode["KEY_INSERT"] = 45] = "KEY_INSERT"; - KeyCode[KeyCode["KEY_DELETE"] = 46] = "KEY_DELETE"; - KeyCode[KeyCode["KEY_0"] = 48] = "KEY_0"; - KeyCode[KeyCode["KEY_1"] = 49] = "KEY_1"; - KeyCode[KeyCode["KEY_2"] = 50] = "KEY_2"; - KeyCode[KeyCode["KEY_3"] = 51] = "KEY_3"; - KeyCode[KeyCode["KEY_4"] = 52] = "KEY_4"; - KeyCode[KeyCode["KEY_5"] = 53] = "KEY_5"; - KeyCode[KeyCode["KEY_6"] = 54] = "KEY_6"; - KeyCode[KeyCode["KEY_7"] = 55] = "KEY_7"; - KeyCode[KeyCode["KEY_8"] = 56] = "KEY_8"; - KeyCode[KeyCode["KEY_9"] = 57] = "KEY_9"; - KeyCode[KeyCode["KEY_SEMICOLON"] = 59] = "KEY_SEMICOLON"; - KeyCode[KeyCode["KEY_EQUALS"] = 61] = "KEY_EQUALS"; - KeyCode[KeyCode["KEY_A"] = 65] = "KEY_A"; - KeyCode[KeyCode["KEY_B"] = 66] = "KEY_B"; - KeyCode[KeyCode["KEY_C"] = 67] = "KEY_C"; - KeyCode[KeyCode["KEY_D"] = 68] = "KEY_D"; - KeyCode[KeyCode["KEY_E"] = 69] = "KEY_E"; - KeyCode[KeyCode["KEY_F"] = 70] = "KEY_F"; - KeyCode[KeyCode["KEY_G"] = 71] = "KEY_G"; - KeyCode[KeyCode["KEY_H"] = 72] = "KEY_H"; - KeyCode[KeyCode["KEY_I"] = 73] = "KEY_I"; - KeyCode[KeyCode["KEY_J"] = 74] = "KEY_J"; - KeyCode[KeyCode["KEY_K"] = 75] = "KEY_K"; - KeyCode[KeyCode["KEY_L"] = 76] = "KEY_L"; - KeyCode[KeyCode["KEY_M"] = 77] = "KEY_M"; - KeyCode[KeyCode["KEY_N"] = 78] = "KEY_N"; - KeyCode[KeyCode["KEY_O"] = 79] = "KEY_O"; - KeyCode[KeyCode["KEY_P"] = 80] = "KEY_P"; - KeyCode[KeyCode["KEY_Q"] = 81] = "KEY_Q"; - KeyCode[KeyCode["KEY_R"] = 82] = "KEY_R"; - KeyCode[KeyCode["KEY_S"] = 83] = "KEY_S"; - KeyCode[KeyCode["KEY_T"] = 84] = "KEY_T"; - KeyCode[KeyCode["KEY_U"] = 85] = "KEY_U"; - KeyCode[KeyCode["KEY_V"] = 86] = "KEY_V"; - KeyCode[KeyCode["KEY_W"] = 87] = "KEY_W"; - KeyCode[KeyCode["KEY_X"] = 88] = "KEY_X"; - KeyCode[KeyCode["KEY_Y"] = 89] = "KEY_Y"; - KeyCode[KeyCode["KEY_Z"] = 90] = "KEY_Z"; - KeyCode[KeyCode["KEY_LEFT_CMD"] = 91] = "KEY_LEFT_CMD"; - KeyCode[KeyCode["KEY_RIGHT_CMD"] = 93] = "KEY_RIGHT_CMD"; - KeyCode[KeyCode["KEY_CONTEXT_MENU"] = 93] = "KEY_CONTEXT_MENU"; - KeyCode[KeyCode["KEY_NUMPAD0"] = 96] = "KEY_NUMPAD0"; - KeyCode[KeyCode["KEY_NUMPAD1"] = 97] = "KEY_NUMPAD1"; - KeyCode[KeyCode["KEY_NUMPAD2"] = 98] = "KEY_NUMPAD2"; - KeyCode[KeyCode["KEY_NUMPAD3"] = 99] = "KEY_NUMPAD3"; - KeyCode[KeyCode["KEY_NUMPAD4"] = 100] = "KEY_NUMPAD4"; - KeyCode[KeyCode["KEY_NUMPAD5"] = 101] = "KEY_NUMPAD5"; - KeyCode[KeyCode["KEY_NUMPAD6"] = 102] = "KEY_NUMPAD6"; - KeyCode[KeyCode["KEY_NUMPAD7"] = 103] = "KEY_NUMPAD7"; - KeyCode[KeyCode["KEY_NUMPAD8"] = 104] = "KEY_NUMPAD8"; - KeyCode[KeyCode["KEY_NUMPAD9"] = 105] = "KEY_NUMPAD9"; - KeyCode[KeyCode["KEY_MULTIPLY"] = 106] = "KEY_MULTIPLY"; - KeyCode[KeyCode["KEY_ADD"] = 107] = "KEY_ADD"; - KeyCode[KeyCode["KEY_SEPARATOR"] = 108] = "KEY_SEPARATOR"; - KeyCode[KeyCode["KEY_SUBTRACT"] = 109] = "KEY_SUBTRACT"; - KeyCode[KeyCode["KEY_DECIMAL"] = 110] = "KEY_DECIMAL"; - KeyCode[KeyCode["KEY_DIVIDE"] = 111] = "KEY_DIVIDE"; - KeyCode[KeyCode["KEY_F1"] = 112] = "KEY_F1"; - KeyCode[KeyCode["KEY_F2"] = 113] = "KEY_F2"; - KeyCode[KeyCode["KEY_F3"] = 114] = "KEY_F3"; - KeyCode[KeyCode["KEY_F4"] = 115] = "KEY_F4"; - KeyCode[KeyCode["KEY_F5"] = 116] = "KEY_F5"; - KeyCode[KeyCode["KEY_F6"] = 117] = "KEY_F6"; - KeyCode[KeyCode["KEY_F7"] = 118] = "KEY_F7"; - KeyCode[KeyCode["KEY_F8"] = 119] = "KEY_F8"; - KeyCode[KeyCode["KEY_F9"] = 120] = "KEY_F9"; - KeyCode[KeyCode["KEY_F10"] = 121] = "KEY_F10"; - KeyCode[KeyCode["KEY_F11"] = 122] = "KEY_F11"; - KeyCode[KeyCode["KEY_F12"] = 123] = "KEY_F12"; - KeyCode[KeyCode["KEY_F13"] = 124] = "KEY_F13"; - KeyCode[KeyCode["KEY_F14"] = 125] = "KEY_F14"; - KeyCode[KeyCode["KEY_F15"] = 126] = "KEY_F15"; - KeyCode[KeyCode["KEY_F16"] = 127] = "KEY_F16"; - KeyCode[KeyCode["KEY_F17"] = 128] = "KEY_F17"; - KeyCode[KeyCode["KEY_F18"] = 129] = "KEY_F18"; - KeyCode[KeyCode["KEY_F19"] = 130] = "KEY_F19"; - KeyCode[KeyCode["KEY_F20"] = 131] = "KEY_F20"; - KeyCode[KeyCode["KEY_F21"] = 132] = "KEY_F21"; - KeyCode[KeyCode["KEY_F22"] = 133] = "KEY_F22"; - KeyCode[KeyCode["KEY_F23"] = 134] = "KEY_F23"; - KeyCode[KeyCode["KEY_F24"] = 135] = "KEY_F24"; - KeyCode[KeyCode["KEY_NUM_LOCK"] = 144] = "KEY_NUM_LOCK"; - KeyCode[KeyCode["KEY_SCROLL_LOCK"] = 145] = "KEY_SCROLL_LOCK"; - KeyCode[KeyCode["KEY_COMMA"] = 188] = "KEY_COMMA"; - KeyCode[KeyCode["KEY_PERIOD"] = 190] = "KEY_PERIOD"; - KeyCode[KeyCode["KEY_SLASH"] = 191] = "KEY_SLASH"; - KeyCode[KeyCode["KEY_BACK_QUOTE"] = 192] = "KEY_BACK_QUOTE"; - KeyCode[KeyCode["KEY_OPEN_BRACKET"] = 219] = "KEY_OPEN_BRACKET"; - KeyCode[KeyCode["KEY_BACK_SLASH"] = 220] = "KEY_BACK_SLASH"; - KeyCode[KeyCode["KEY_CLOSE_BRACKET"] = 221] = "KEY_CLOSE_BRACKET"; - KeyCode[KeyCode["KEY_QUOTE"] = 222] = "KEY_QUOTE"; - KeyCode[KeyCode["KEY_META"] = 224] = "KEY_META"; -})(KeyCode || (KeyCode = {})); -var ppt; -(function (ppt) { - let EventType; - (function (EventType) { - EventType[EventType["KEY_PRESS"] = 0] = "KEY_PRESS"; - EventType[EventType["KEY_RELEASE"] = 1] = "KEY_RELEASE"; - EventType[EventType["KEY_TYPED"] = 2] = "KEY_TYPED"; - })(EventType = ppt.EventType || (ppt.EventType = {})); - let SpecialKey; - (function (SpecialKey) { - SpecialKey[SpecialKey["CTRL"] = 0] = "CTRL"; - SpecialKey[SpecialKey["WINDOWS"] = 1] = "WINDOWS"; - SpecialKey[SpecialKey["SHIFT"] = 2] = "SHIFT"; - SpecialKey[SpecialKey["ALT"] = 3] = "ALT"; - })(SpecialKey = ppt.SpecialKey || (ppt.SpecialKey = {})); - function key_description(key) { - let result = ""; - if (key.key_shift) - result += " + " + (_translations.jlXiTChR || (_translations.jlXiTChR = tr("Shift"))); - if (key.key_alt) - result += " + " + (_translations.nn_CMtx4 || (_translations.nn_CMtx4 = tr("Alt"))); - if (key.key_ctrl) - result += " + " + (_translations.ivWvObQX || (_translations.ivWvObQX = tr("CTRL"))); - if (key.key_windows) - result += " + " + (_translations.NjOPG_IO || (_translations.NjOPG_IO = tr("Win"))); - if (!result && !key.key_code) - return _translations.UUiQqGoU || (_translations.UUiQqGoU = tr("unset")); - if (key.key_code) - result += " + " + key.key_code; - return result.substr(3); - } - ppt.key_description = key_description; -})(ppt || (ppt = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["e85c12b4ba32fa88e1cf62cff6c27ebb393473443cb8a69f01892fe496e32840"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["e85c12b4ba32fa88e1cf62cff6c27ebb393473443cb8a69f01892fe496e32840"] = "e85c12b4ba32fa88e1cf62cff6c27ebb393473443cb8a69f01892fe496e32840"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -var ElementType; -(function (ElementType) { - ElementType[ElementType["HEADER"] = 0] = "HEADER"; - ElementType[ElementType["BODY"] = 1] = "BODY"; - ElementType[ElementType["FOOTER"] = 2] = "FOOTER"; -})(ElementType || (ElementType = {})); -const ModalFunctions = { - divify: function (val) { - if (val.length > 1) - return $.spawn("div").append(val); - return val; - }, - jqueriefy: function (val, type) { - if (typeof (val) === "function") - val = val(); - if (val instanceof jQuery) - return val; - if (Array.isArray(val)) { - if (val.length == 0) - return undefined; - return val.map(e => this.jqueriefy(e)); - } - switch (typeof val) { - case "string": - if (type == ElementType.HEADER) - return $.spawn("div").addClass("modal-title").text(val); - return $("
" + val + "
"); - case "object": return val; - case "undefined": - return undefined; - default: - console.error(("Invalid type %o"), typeof val); - return $(); - } - }, - warpProperties(data) { - if (data instanceof ModalProperties) { - return data; - } - else { - const props = new ModalProperties(); - for (const key of Object.keys(data)) - props[key] = data[key]; - return props; - } - } -}; -class ModalProperties { - constructor() { - this.header = () => "HEADER"; - this.body = () => "BODY"; - this.footer = () => "FOOTER"; - this.closeListener = () => { }; - this.height = "auto"; - this.closeable = true; - this.template_properties = {}; - this.trigger_tab = true; - this.full_size = false; - } - registerCloseListener(listener) { - if (this.closeListener) { - if ($.isArray(this.closeListener)) - this.closeListener.push(listener); - else - this.closeListener = [this.closeListener, listener]; - } - else - this.closeListener = listener; - return this; - } - triggerClose() { - if ($.isArray(this.closeListener)) - for (let listener of this.closeListener) - listener(); - else - this.closeListener(); - } -} -var modal; -(function (modal) { - function initialize_modals() { - register_global_events(); - } - modal.initialize_modals = initialize_modals; - const scrollSize = 18; - function scroll_bar_clicked(event) { - const x = event.pageX, y = event.pageY, e = $(event.target); - if (e.hasScrollBar("height")) { - const top = e.offset().top; - const right = e.offset().left + e.width(); - const bottom = top + e.height(); - const left = right - scrollSize; - if ((y >= top && y <= bottom) && (x >= left && x <= right)) - return true; - } - if (e.hasScrollBar("width")) { - const bottom = e.offset().top + e.height(); - const top = bottom - scrollSize; - const left = e.offset().left; - const right = left + e.width(); - if ((y >= top && y <= bottom) && (x >= left && x <= right)) - return true; - } - return false; - } - function register_global_events() { - $(document).on('mousedown', (event) => { - /* pageX or pageY are undefined if this is an event executed via .trigger('click'); */ - if (_global_modal_count == 0 || typeof (event.pageX) === "undefined" || typeof (event.pageY) === "undefined") - return; - let element = event.target; - const original = element; - do { - if (element.classList.contains('modal-content')) - break; - if (!element.classList.contains('modal')) - continue; - if (element == _global_modal_last && _global_modal_last_time + 100 > Date.now()) - break; - if (element === original && scroll_bar_clicked(event)) { - _global_modal_last_time = Date.now(); - break; - } - $(element).find("> .modal-dialog > .modal-content > .modal-header .button-modal-close").trigger('click'); - break; - } while ((element = element.parentElement)); - }); - $(document).on('keyup', (event) => { - if (_global_modal_count == 0 || typeof (event.target) === "undefined") - return; - if (event.key !== "Escape") - return; - let element = event.target; - if (element.nodeName == "HTMLInputElement" || element.nodeName == "HTMLSelectElement" || element.nodeName == "HTMLTextAreaElement") - return; - do { - if (element.classList.contains('modal-content')) - break; - if (!element.classList.contains('modal')) - continue; - if (element == _global_modal_last && _global_modal_last_time + 100 > Date.now()) - break; - $(element).find("> .modal-dialog > .modal-content > .modal-header .button-modal-close").trigger('click'); - break; - } while ((element = element.parentElement)); - }); - } -})(modal || (modal = {})); -modal.initialize_modals(); -let _global_modal_count = 0; -let _global_modal_last; -let _global_modal_last_time; -class Modal { - constructor(props) { - this.open_listener = []; - this.close_listener = []; - this.properties = props; - this.shown = false; - } - get htmlTag() { - if (!this._htmlTag) - this._create(); - return this._htmlTag; - } - _create() { - const header = ModalFunctions.jqueriefy(this.properties.header, ElementType.HEADER); - const body = ModalFunctions.jqueriefy(this.properties.body, ElementType.BODY); - const footer = ModalFunctions.jqueriefy(this.properties.footer, ElementType.FOOTER); - //FIXME: cache template - const template = $(this.properties.template || "#tmpl_modal"); - const properties = { - modal_header: header, - modal_body: body, - modal_footer: footer, - closeable: this.properties.closeable, - full_size: this.properties.full_size - }; - if (this.properties.template_properties) - Object.assign(properties, this.properties.template_properties); - const tag = template.renderTag(properties); - if (typeof (this.properties.width) !== "undefined" && typeof (this.properties.min_width) !== "undefined") - tag.find(".modal-content") - .css("min-width", this.properties.min_width) - .css("width", this.properties.width); - else if (typeof (this.properties.width) !== "undefined") //Legacy support - tag.find(".modal-content").css("min-width", this.properties.width); - else if (typeof (this.properties.min_width) !== "undefined") - tag.find(".modal-content").css("min-width", this.properties.min_width); - this.close_elements = tag.find(".button-modal-close"); - this.close_elements.toggle(this.properties.closeable).on('click', event => { - if (this.properties.closeable) - this.close(); - }); - this._htmlTag = tag; - this._htmlTag.find("input").on('change', event => { - $(event.target).parents(".form-group").toggleClass('is-filled', !!event.target.value); - }); - //TODO: After the animation! - this._htmlTag.on('hide.bs.modal', event => !this.properties.closeable || this.close()); - this._htmlTag.on('hidden.bs.modal', event => this._htmlTag.remove()); - } - open() { - if (this.shown) - return; - _global_modal_last_time = Date.now(); - _global_modal_last = this.htmlTag[0]; - this.shown = true; - this.htmlTag.appendTo($("body")); - _global_modal_count++; - this.htmlTag.show(); - setTimeout(() => this.htmlTag.addClass('shown'), 0); - setTimeout(() => { - for (const listener of this.open_listener) - listener(); - this.htmlTag.find(".tab").trigger('tab.resize'); - }, 300); - } - close() { - if (!this.shown) - return; - _global_modal_count--; - if (_global_modal_last === this.htmlTag[0]) - _global_modal_last = undefined; - this.shown = false; - this.htmlTag.removeClass('shown'); - setTimeout(() => { - this.htmlTag.remove(); - this._htmlTag = undefined; - }, 300); - this.properties.triggerClose(); - for (const listener of this.close_listener) - listener(); - } - set_closeable(flag) { - if (flag === this.properties.closeable) - return; - this.properties.closeable = flag; - this.close_elements.toggle(flag); - } -} -function createModal(data) { - return new Modal(ModalFunctions.warpProperties(data)); -} -class InputModalProperties extends ModalProperties { -} -function createInputModal(headMessage, question, validator, callback, props = {}) { - props = ModalFunctions.warpProperties(props); - props.template_properties || (props.template_properties = {}); - props.template_properties.field_title = props.field_title; - props.template_properties.field_label = props.field_label; - props.template_properties.field_placeholder = props.field_placeholder; - props.template_properties.error_message = props.error_message; - props.template = "#tmpl_modal_input"; - props.header = headMessage; - props.template_properties.question = ModalFunctions.jqueriefy(question); - const modal = createModal(props); - const input = modal.htmlTag.find(".container-value input"); - const button_cancel = modal.htmlTag.find(".button-cancel"); - const button_submit = modal.htmlTag.find(".button-submit"); - let submited = false; - input.on('keyup change', event => { - const str = input.val(); - const valid = str !== undefined && validator(str); - input.attr("pattern", valid ? null : "^[a]{1000}$").toggleClass("is-invalid", !valid); - button_submit.prop("disabled", !valid); - }); - input.on('keydown', event => { - if (event.keyCode !== KeyCode.KEY_RETURN || event.shiftKey) - return; - if (button_submit.prop("disabled")) - return; - button_submit.trigger('click'); - }); - button_submit.on('click', event => { - if (!submited) { - submited = true; - const str = input.val(); - if (str !== undefined && validator(str)) - callback(str); - else - callback(false); - } - modal.close(); - }).prop("disabled", !validator("")); /* disabled if empty input isn't allowed */ - button_cancel.on('click', event => { - if (!submited) { - submited = true; - callback(false); - } - modal.close(); - }); - modal.open_listener.push(() => input.focus()); - modal.close_listener.push(() => button_cancel.trigger('click')); - return modal; -} -function createErrorModal(header, message, props = { footer: undefined }) { - props = ModalFunctions.warpProperties(props); - (props.template_properties || (props.template_properties = {})).header_class = "modal-header-error"; - props.header = header; - props.body = message; - const modal = createModal(props); - modal.htmlTag.find(".modal-body").addClass("modal-error"); - return modal; -} -function createInfoModal(header, message, props = { footer: undefined }) { - props = ModalFunctions.warpProperties(props); - (props.template_properties || (props.template_properties = {})).header_class = "modal-header-info"; - props.header = header; - props.body = message; - const modal = createModal(props); - modal.htmlTag.find(".modal-body").addClass("modal-info"); - return modal; -} -$.fn.modalize = function (entry_callback, properties) { - properties = properties || {}; - entry_callback = entry_callback || ((a, b, c) => undefined); - let tag_modal = this[0].tagName.toLowerCase() == "modal" ? this : undefined; /* TODO may throw exception? */ - let tag_head = tag_modal ? tag_modal.find("modal-header") : ModalFunctions.jqueriefy(properties.header); - let tag_body = tag_modal ? tag_modal.find("modal-body") : this; - let tag_footer = tag_modal ? tag_modal.find("modal-footer") : ModalFunctions.jqueriefy(properties.footer); - const result = entry_callback(tag_head, tag_body, tag_footer) || {}; - properties.header = result.header || tag_head; - properties.body = result.body || tag_body; - properties.footer = result.footer || tag_footer; - return createModal(properties); -}; -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["daf6447bfb4db78245da21e8a415df1fbffd01dea2eead594ce099db160614b4"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["daf6447bfb4db78245da21e8a415df1fbffd01dea2eead594ce099db160614b4"] = "daf6447bfb4db78245da21e8a415df1fbffd01dea2eead594ce099db160614b4"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "WyjTP88B", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChangeVolume.ts (14,29)" }, { name: "Ajoev9cN", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChangeVolume.ts (14,57)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - //TODO: Use the max limit! - let modal; - function spawnChangeVolume(client, local, current, max, callback) { - if (modal) - modal.close(); - let new_value; - modal = createModal({ - header: local ? _translations.WyjTP88B || (_translations.WyjTP88B = tr("Change local volume")) : _translations.Ajoev9cN || (_translations.Ajoev9cN = tr("Change remote volume")), - body: function () { - let tag = $("#tmpl_change_volume").renderTag({ - client: htmltags.generate_client_object({ - add_braces: false, - client_name: client.clientNickName(), - client_unique_id: client.properties.client_unique_identifier, - client_id: client.clientId() - }), - local: local - }); - const container_value = tag.find(".info .value"); - const set_value = value => { - const number = value > 100 ? value - 100 : 100 - value; - container_value.html((value == 100 ? "±" : value > 100 ? "+" : "-") + number + "%"); - new_value = value / 100; - if (local) - callback(new_value); - }; - set_value(current * 100); - const slider_tag = tag.find(".container-slider"); - const slider = sliderfy(slider_tag, { - initial_value: current * 100, - step: 1, - max_value: 200, - min_value: 0, - unit: '%' - }); - slider_tag.on('change', event => set_value(parseInt(slider_tag.attr("value")))); - tag.find(".button-save").on('click', event => { - if (typeof (new_value) !== "undefined") - callback(new_value); - modal.close(); - }); - tag.find(".button-cancel").on('click', event => { - callback(current); - modal.close(); - }); - tag.find(".button-reset").on('click', event => { - slider.value(100); - }); - tag.find(".button-apply").on('click', event => { - callback(new_value); - new_value = undefined; - }); - return tag.children(); - }, - footer: null, - width: 600 - }); - modal.close_listener.push(() => modal = undefined); - modal.open(); - modal.htmlTag.find(".modal-body").addClass("modal-volume"); - } - Modals.spawnChangeVolume = spawnChangeVolume; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["8826f72b6f1d2cf9a2064e176a47bf3754cd63eaf3c1a19fc6ed100e765e2fe8"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["8826f72b6f1d2cf9a2064e176a47bf3754cd63eaf3c1a19fc6ed100e765e2fe8"] = "8826f72b6f1d2cf9a2064e176a47bf3754cd63eaf3c1a19fc6ed100e765e2fe8"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "KEIZ2p_a", path: "D:/TeaSpeak/web/shared/js/ui/client_move.ts (53,40)" }, { name: "crLZ2vSF", path: "D:/TeaSpeak/web/shared/js/ui/client_move.ts (115,40)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -class ClientMover { - constructor(tree) { - this.enabled = true; - this._active = false; - this.origin_point = undefined; - this.channel_tree = tree; - } - is_active() { return this._active; } - hover_text() { - if ($.isArray(this.selected_client)) { - return this.selected_client.filter(client => !!client).map(client => client.clientNickName()).join(", "); - } - else if (this.selected_client) { - return this.selected_client.clientNickName(); - } - else - return ""; - } - bbcode_text() { - if ($.isArray(this.selected_client)) { - return this.selected_client.filter(client => !!client).map(client => client.create_bbcode()).join(", "); - } - else if (this.selected_client) { - return this.selected_client.create_bbcode(); - } - else - return ""; - } - activate(client, callback, event) { - this.finish_listener(undefined); - if (!this.enabled) - return false; - this.selected_client = client; - this.callback = callback; - log.debug(LogCategory.GENERAL, _translations.KEIZ2p_a || (_translations.KEIZ2p_a = tr("Starting mouse move"))); - ClientMover.listener_root.on('mouseup', this._bound_finish = this.finish_listener.bind(this)).on('mousemove', this._bound_move = this.move_listener.bind(this)); - { - const content = ClientMover.move_element.find(".container"); - content.empty(); - content.append($.spawn("a").text(this.hover_text())); - } - this.move_listener(event); - } - move_listener(event) { - if (!this.enabled) - return; - //console.log("Mouse move: " + event.pageX + " - " + event.pageY); - if (!event.pageX || !event.pageY) - return; - if (!this.origin_point) - this.origin_point = { x: event.pageX, y: event.pageY }; - ClientMover.move_element.css({ - "top": (event.pageY - 1) + "px", - "left": (event.pageX + 10) + "px" - }); - if (!this._active) { - const d_x = this.origin_point.x - event.pageX; - const d_y = this.origin_point.y - event.pageY; - this._active = Math.sqrt(d_x * d_x + d_y * d_y) > 5 * 5; - if (this._active) { - if ($.isArray(this.selected_client)) { - this.channel_tree.onSelect(this.selected_client[0], true); - for (const client of this.selected_client.slice(1)) - this.channel_tree.onSelect(client, false, true); - } - else { - this.channel_tree.onSelect(this.selected_client, true); - } - ClientMover.move_element.show(); - } - } - const elements = document.elementsFromPoint(event.pageX, event.pageY); - while (elements.length > 0) { - if (elements[0].classList.contains("container-channel")) - break; - elements.pop_front(); - } - if (this.hovered_channel) { - this.hovered_channel.classList.remove("move-selected"); - this.hovered_channel = undefined; - } - if (elements.length > 0) { - elements[0].classList.add("move-selected"); - this.hovered_channel = elements[0]; - } - } - finish_listener(event) { - ClientMover.move_element.hide(); - log.debug(LogCategory.GENERAL, _translations.crLZ2vSF || (_translations.crLZ2vSF = tr("Finishing mouse move"))); - const channel_id = this.hovered_channel ? parseInt(this.hovered_channel.getAttribute("channel-id")) : 0; - ClientMover.listener_root.unbind('mouseleave', this._bound_finish); - ClientMover.listener_root.unbind('mouseup', this._bound_finish); - ClientMover.listener_root.unbind('mousemove', this._bound_move); - if (this.hovered_channel) { - this.hovered_channel.classList.remove("move-selected"); - this.hovered_channel = undefined; - } - this.origin_point = undefined; - if (!this._active) { - this.selected_client = undefined; - this.callback = undefined; - return; - } - this._active = false; - if (this.callback) { - if (!channel_id) - this.callback(undefined); - else { - this.callback(this.channel_tree.findChannel(channel_id)); - } - this.callback = undefined; - } - /* test for the chat box */ - { - const elements = document.elementsFromPoint(event.pageX, event.pageY); - console.error(elements); - while (elements.length > 0) { - if (elements[0].classList.contains("client-chat-box-field")) - break; - elements.pop_front(); - } - if (elements.length > 0) { - const element = $(elements[0]); - element.val((element.val() || "") + this.bbcode_text()); - } - } - } - deactivate() { - this.callback = undefined; - this.finish_listener(undefined); - } -} -ClientMover.listener_root = $(document); -ClientMover.move_element = $("#mouse-move"); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["4246282d77c925162d2c06841ca915232cba6ac6d2a1d1085c05fb0ff54920bb"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["4246282d77c925162d2c06841ca915232cba6ac6d2a1d1085c05fb0ff54920bb"] = "4246282d77c925162d2c06841ca915232cba6ac6d2a1d1085c05fb0ff54920bb"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "imtMC86F", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (154,41)" }, { name: "aVeKeOqo", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (158,45)" }, { name: "SkYDkDbr", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (174,45)" }, { name: "K9iUYVHs", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (323,87)" }, { name: "MKsTvtiO", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (323,109)" }, { name: "sKUcAWYo", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (394,19)" }, { name: "NkRVbrEL", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (408,19)" }, { name: "DQmH806h", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (415,19)" }, { name: "FBafbYH1", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (420,27)" }, { name: "QONLfGGw", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (426,27)" }, { name: "XQqk0hQm", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (482,25)" }, { name: "Wamj6lZp", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (492,23)" }, { name: "NAP7iNGX", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (499,23)" }, { name: "wle1DPL6", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (501,38)" }, { name: "IhKp1U6b", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (501,57)" }, { name: "wfJ0cnuF", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (516,23)" }, { name: "SkDvmbF4", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (518,38)" }, { name: "UUmz0RUR", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (518,71)" }, { name: "IqCkK5LB", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (536,23)" }, { name: "mgE4Z1Js", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (546,23)" }, { name: "Gj78RvOz", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (548,38)" }, { name: "xhyckLyH", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (548,70)" }, { name: "ZCjZNTae", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (564,23)" }, { name: "PXTiLlh1", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (566,38)" }, { name: "U9VbSk_j", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (566,69)" }, { name: "t1_5DwD9", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (582,23)" }, { name: "_SOYYOpq", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (623,23)" }, { name: "LGRXJbyk", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (636,23)" }, { name: "HXDWIypp", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (649,23)" }, { name: "qPADwJeS", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (655,23)" }, { name: "mwXcnRVj", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (820,70)" }, { name: "BwKYcCsM", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (891,47)" }, { name: "TWJRawAz", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1143,25)" }, { name: "QXkvf75y", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1149,23)" }, { name: "eo0BTEUD", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1152,38)" }, { name: "cGSxzOs8", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1152,68)" }, { name: "KltoFGs6", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1154,41)" }, { name: "XbLxNlO8", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1319,23)" }, { name: "pmicCstj", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1324,38)" }, { name: "vqukZhk9", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1324,72)" }, { name: "KwxFZl6L", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1336,23)" }, { name: "mYzzfhcQ", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1340,38)" }, { name: "ZTCZj4qo", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1340,75)" }, { name: "JLASYUDm", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1362,23)" }, { name: "ecR9BnOb", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1373,42)" }, { name: "bjVFcLvv", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1373,69)" }, { name: "cCQHXsEN", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1375,42)" }, { name: "z0TAFloZ", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1375,75)" }, { name: "v3a_2VKL", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1381,23)" }, { name: "qP0cnomf", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1385,38)" }, { name: "yQiADIEs", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1385,66)" }, { name: "LAv5uiVz", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1396,50)" }, { name: "y7NwSbFu", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1408,23)" }, { name: "l4FBtA8t", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1418,23)" }, { name: "I7AyThLI", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1420,38)" }, { name: "Xd1D_Zzu", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1420,70)" }, { name: "mWrcl55N", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1422,41)" }, { name: "GjpMhrnj", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1436,23)" }, { name: "xbWCjjmW", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1447,23)" }, { name: "eRh0JpMP", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1468,23)" }, { name: "J7K_FqfX", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1481,23)" }, { name: "RjNsfIH5", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1485,83)" }, { name: "UryMTw7o", path: "D:/TeaSpeak/web/shared/js/ui/client.ts (1486,39)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var ClientType; -(function (ClientType) { - ClientType[ClientType["CLIENT_VOICE"] = 0] = "CLIENT_VOICE"; - ClientType[ClientType["CLIENT_QUERY"] = 1] = "CLIENT_QUERY"; - ClientType[ClientType["CLIENT_INTERNAL"] = 2] = "CLIENT_INTERNAL"; - ClientType[ClientType["CLIENT_WEB"] = 3] = "CLIENT_WEB"; - ClientType[ClientType["CLIENT_MUSIC"] = 4] = "CLIENT_MUSIC"; - ClientType[ClientType["CLIENT_UNDEFINED"] = 5] = "CLIENT_UNDEFINED"; -})(ClientType || (ClientType = {})); -class ClientProperties { - constructor() { - this.client_type = ClientType.CLIENT_VOICE; //TeamSpeaks type - this.client_type_exact = ClientType.CLIENT_VOICE; - this.client_database_id = 0; - this.client_version = ""; - this.client_platform = ""; - this.client_nickname = "unknown"; - this.client_unique_identifier = "unknown"; - this.client_description = ""; - this.client_servergroups = ""; - this.client_channel_group_id = 0; - this.client_lastconnected = 0; - this.client_created = 0; - this.client_totalconnections = 0; - this.client_flag_avatar = ""; - this.client_icon_id = 0; - this.client_away_message = ""; - this.client_away = false; - this.client_country = ""; - this.client_input_hardware = false; - this.client_output_hardware = false; - this.client_input_muted = false; - this.client_output_muted = false; - this.client_is_channel_commander = false; - this.client_teaforo_id = 0; - this.client_teaforo_name = ""; - this.client_teaforo_flags = 0; /* 0x01 := Banned | 0x02 := Stuff | 0x04 := Premium */ - /* not updated in view! */ - this.client_month_bytes_uploaded = 0; - this.client_month_bytes_downloaded = 0; - this.client_total_bytes_uploaded = 0; - this.client_total_bytes_downloaded = 0; - this.client_talk_power = 0; - this.client_is_priority_speaker = false; - } -} -class ClientConnectionInfo { - constructor() { - this.connection_bandwidth_received_last_minute_control = -1; - this.connection_bandwidth_received_last_minute_keepalive = -1; - this.connection_bandwidth_received_last_minute_speech = -1; - this.connection_bandwidth_received_last_second_control = -1; - this.connection_bandwidth_received_last_second_keepalive = -1; - this.connection_bandwidth_received_last_second_speech = -1; - this.connection_bandwidth_sent_last_minute_control = -1; - this.connection_bandwidth_sent_last_minute_keepalive = -1; - this.connection_bandwidth_sent_last_minute_speech = -1; - this.connection_bandwidth_sent_last_second_control = -1; - this.connection_bandwidth_sent_last_second_keepalive = -1; - this.connection_bandwidth_sent_last_second_speech = -1; - this.connection_bytes_received_control = -1; - this.connection_bytes_received_keepalive = -1; - this.connection_bytes_received_speech = -1; - this.connection_bytes_sent_control = -1; - this.connection_bytes_sent_keepalive = -1; - this.connection_bytes_sent_speech = -1; - this.connection_packets_received_control = -1; - this.connection_packets_received_keepalive = -1; - this.connection_packets_received_speech = -1; - this.connection_packets_sent_control = -1; - this.connection_packets_sent_keepalive = -1; - this.connection_packets_sent_speech = -1; - this.connection_ping = -1; - this.connection_ping_deviation = -1; - this.connection_server2client_packetloss_control = -1; - this.connection_server2client_packetloss_keepalive = -1; - this.connection_server2client_packetloss_speech = -1; - this.connection_server2client_packetloss_total = -1; - this.connection_client2server_packetloss_speech = -1; - this.connection_client2server_packetloss_keepalive = -1; - this.connection_client2server_packetloss_control = -1; - this.connection_client2server_packetloss_total = -1; - this.connection_filetransfer_bandwidth_sent = -1; - this.connection_filetransfer_bandwidth_received = -1; - this.connection_connected_time = -1; - this.connection_idle_time = -1; - this.connection_client_port = -1; - } -} -class ClientEntry { - constructor(clientId, clientName, properties = new ClientProperties()) { - this.lastVariableUpdate = 0; - this.events = new events.Registry(); - this._properties = properties; - this._properties.client_nickname = clientName; - this._clientId = clientId; - this.channelTree = null; - this._channel = null; - } - destroy() { - if (this._tag) { - this._tag.remove(); - this._tag = undefined; - } - if (this._audio_handle) { - log.warn(LogCategory.AUDIO, _translations.imtMC86F || (_translations.imtMC86F = tr("Destroying client with an active audio handle. This could cause memory leaks!"))); - try { - this._audio_handle.abort_replay(); - } - catch (error) { - log.warn(LogCategory.AUDIO, _translations.aVeKeOqo || (_translations.aVeKeOqo = tr("Failed to abort replay: %o")), error); - } - this._audio_handle.callback_playback = undefined; - this._audio_handle.callback_stopped = undefined; - this._audio_handle = undefined; - } - this._channel = undefined; - } - tree_unregistered() { - this.channelTree = undefined; - if (this._audio_handle) { - try { - this._audio_handle.abort_replay(); - } - catch (error) { - log.warn(LogCategory.AUDIO, _translations.SkYDkDbr || (_translations.SkYDkDbr = tr("Failed to abort replay: %o")), error); - } - this._audio_handle.callback_playback = undefined; - this._audio_handle.callback_stopped = undefined; - this._audio_handle = undefined; - } - this._channel = undefined; - } - set_audio_handle(handle) { - if (this._audio_handle === handle) - return; - if (this._audio_handle) { - this._audio_handle.callback_playback = undefined; - this._audio_handle.callback_stopped = undefined; - } - //TODO may ensure that the id is the same? - this._audio_handle = handle; - if (!handle) { - this.speaking = false; - return; - } - handle.callback_playback = () => this.speaking = true; - handle.callback_stopped = () => this.speaking = false; - } - get_audio_handle() { - return this._audio_handle; - } - get properties() { - return this._properties; - } - currentChannel() { return this._channel; } - clientNickName() { return this.properties.client_nickname; } - clientUid() { return this.properties.client_unique_identifier; } - clientId() { return this._clientId; } - is_muted() { return !!this._audio_muted; } - set_muted(flag, update_icon, force) { - if (this._audio_muted === flag && !force) - return; - if (flag) { - this.channelTree.client.serverConnection.send_command('clientmute', { - clid: this.clientId() - }); - } - else if (this._audio_muted) { - this.channelTree.client.serverConnection.send_command('clientunmute', { - clid: this.clientId() - }); - } - this._audio_muted = flag; - this.channelTree.client.settings.changeServer("mute_client_" + this.clientUid(), flag); - if (this._audio_handle) { - if (flag) { - this._audio_handle.set_volume(0); - } - else { - this._audio_handle.set_volume(this._audio_volume); - } - } - if (update_icon) - this.updateClientSpeakIcon(); - for (const client of this.channelTree.clients) { - if (client === this || client.properties.client_unique_identifier != this.properties.client_unique_identifier) - continue; - client.set_muted(flag, true); - } - } - initializeListener() { - if (this._listener_initialized) - return; - this._listener_initialized = true; - this.tag.on('mouseup', event => { - if (!this.channelTree.client_mover.is_active()) { - this.channelTree.onSelect(this); - } - }); - if (!(this instanceof LocalClientEntry) && !(this instanceof MusicClientEntry)) - this.tag.dblclick(event => { - if ($.isArray(this.channelTree.currently_selected)) { //Multiselect - return; - } - this.open_text_chat(); - }); - if (!settings.static(Settings.KEY_DISABLE_CONTEXT_MENU, false)) { - this.tag.on("contextmenu", (event) => { - event.preventDefault(); - if ($.isArray(this.channelTree.currently_selected)) { //Multiselect - (this.channelTree.currently_selected_context_callback || ((_) => null))(event); - return; - } - this.channelTree.onSelect(this, true); - this.showContextMenu(event.pageX, event.pageY, () => { }); - return false; - }); - } - this.tag.on('mousedown', event => { - if (event.which != 1) - return; //Only the left button - let clients = this.channelTree.currently_selected; - if (ppt.key_pressed(ppt.SpecialKey.SHIFT)) { - if (clients != this && !($.isArray(clients) && clients.indexOf(this) != -1)) - clients = $.isArray(clients) ? [...clients, this] : [clients, this]; - } - else { - clients = this; - } - this.channelTree.client_mover.activate(clients, target => { - if (!target) - return; - for (const client of $.isArray(clients) ? clients : [clients]) { - if (target == client._channel) - continue; - const source = client._channel; - const self = this.channelTree.client.getClient(); - this.channelTree.client.serverConnection.send_command("clientmove", { - clid: client.clientId(), - cid: target.getChannelId() - }).then(event => { - if (client.clientId() == this.channelTree.client.clientId) - this.channelTree.client.sound.play(Sound.CHANNEL_JOINED); - else if (target !== source && target != self.currentChannel()) - this.channelTree.client.sound.play(Sound.USER_MOVED); - }); - } - this.channelTree.onSelect(); - }, event); - }); - } - contextmenu_info() { - return [ - { - type: contextmenu.MenuEntryType.ENTRY, - name: this.properties.client_type_exact === ClientType.CLIENT_MUSIC ? _translations.K9iUYVHs || (_translations.K9iUYVHs = tr("Show bot info")) : _translations.MKsTvtiO || (_translations.MKsTvtiO = tr("Show client info")), - callback: () => { - this.channelTree.client.side_bar.show_client_info(this); - }, - icon_class: "client-about", - visible: !settings.static_global(Settings.KEY_SWITCH_INSTANT_CLIENT) - }, { - callback: () => { }, - type: contextmenu.MenuEntryType.HR, - name: "", - visible: !settings.static_global(Settings.KEY_SWITCH_INSTANT_CLIENT) - } - ]; - } - assignment_context() { - let server_groups = []; - for (let group of this.channelTree.client.groups.serverGroups.sort(GroupManager.sorter())) { - if (group.type != GroupType.NORMAL) - continue; - let entry = {}; - //TODO: May add the server group icon? - entry.checkbox_checked = this.groupAssigned(group); - entry.name = group.name + " [" + (group.properties.savedb ? "perm" : "tmp") + "]"; - if (this.groupAssigned(group)) { - entry.callback = () => { - this.channelTree.client.serverConnection.send_command("servergroupdelclient", { - sgid: group.id, - cldbid: this.properties.client_database_id - }); - }; - entry.disabled = !this.channelTree.client.permissions.neededPermission(PermissionType.I_GROUP_MEMBER_ADD_POWER).granted(group.requiredMemberRemovePower); - } - else { - entry.callback = () => { - this.channelTree.client.serverConnection.send_command("servergroupaddclient", { - sgid: group.id, - cldbid: this.properties.client_database_id - }); - }; - entry.disabled = !this.channelTree.client.permissions.neededPermission(PermissionType.I_GROUP_MEMBER_REMOVE_POWER).granted(group.requiredMemberAddPower); - } - entry.type = contextmenu.MenuEntryType.CHECKBOX; - server_groups.push(entry); - } - let channel_groups = []; - for (let group of this.channelTree.client.groups.channelGroups.sort(GroupManager.sorter())) { - if (group.type != GroupType.NORMAL) - continue; - let entry = {}; - //TODO: May add the channel group icon? - entry.checkbox_checked = this.assignedChannelGroup() == group.id; - entry.name = group.name + " [" + (group.properties.savedb ? "perm" : "tmp") + "]"; - entry.callback = () => { - this.channelTree.client.serverConnection.send_command("setclientchannelgroup", { - cldbid: this.properties.client_database_id, - cgid: group.id, - cid: this.currentChannel().channelId - }); - }; - entry.disabled = !this.channelTree.client.permissions.neededPermission(PermissionType.I_GROUP_MEMBER_ADD_POWER).granted(group.requiredMemberRemovePower); - entry.type = contextmenu.MenuEntryType.CHECKBOX; - channel_groups.push(entry); - } - return [{ - type: contextmenu.MenuEntryType.SUB_MENU, - icon_class: "client-permission_server_groups", - name: _translations.sKUcAWYo || (_translations.sKUcAWYo = tr("Set server group")), - sub_menu: [ - { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-permission_server_groups", - name: "Server groups dialog", - callback: () => this.open_assignment_modal() - }, - contextmenu.Entry.HR(), - ...server_groups - ] - }, { - type: contextmenu.MenuEntryType.SUB_MENU, - icon_class: "client-permission_channel", - name: _translations.NkRVbrEL || (_translations.NkRVbrEL = tr("Set channel group")), - sub_menu: [ - ...channel_groups - ] - }, { - type: contextmenu.MenuEntryType.SUB_MENU, - icon_class: "client-permission_client", - name: _translations.DQmH806h || (_translations.DQmH806h = tr("Permissions")), - sub_menu: [ - { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-permission_client", - name: _translations.FBafbYH1 || (_translations.FBafbYH1 = tr("Client permissions")), - callback: () => Modals.spawnPermissionEdit(this.channelTree.client, "clp", { unique_id: this.clientUid() }).open() - }, - { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-permission_client", - name: _translations.QONLfGGw || (_translations.QONLfGGw = tr("Client channel permissions")), - callback: () => Modals.spawnPermissionEdit(this.channelTree.client, "clchp", { unique_id: this.clientUid(), channel_id: this._channel ? this._channel.channelId : undefined }).open() - } - ] - }]; - } - open_assignment_modal() { - Modals.createServerGroupAssignmentModal(this, (groups, flag) => { - if (groups.length == 0) - return Promise.resolve(true); - if (groups.length == 1) { - if (flag) { - return this.channelTree.client.serverConnection.send_command("servergroupaddclient", { - sgid: groups[0], - cldbid: this.properties.client_database_id - }).then(result => true); - } - else - return this.channelTree.client.serverConnection.send_command("servergroupdelclient", { - sgid: groups[0], - cldbid: this.properties.client_database_id - }).then(result => true); - } - else { - const data = groups.map(e => { return { sgid: e }; }); - data[0]["cldbid"] = this.properties.client_database_id; - if (flag) { - return this.channelTree.client.serverConnection.send_command("clientaddservergroup", data, { flagset: ["continueonerror"] }).then(result => true); - } - else - return this.channelTree.client.serverConnection.send_command("clientdelservergroup", data, { flagset: ["continueonerror"] }).then(result => true); - } - }); - } - open_text_chat() { - const chat = this.channelTree.client.side_bar; - const conversation = chat.private_conversations().find_conversation({ - name: this.clientNickName(), - client_id: this.clientId(), - unique_id: this.clientUid() - }, { - attach: true, - create: true - }); - chat.private_conversations().set_selected_conversation(conversation); - chat.show_private_conversations(); - chat.private_conversations().try_input_focus(); - } - showContextMenu(x, y, on_close = undefined) { - let trigger_close = true; - contextmenu.spawn_context_menu(x, y, ...this.contextmenu_info(), { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-change_nickname", - name: (contextmenu.get_provider().html_format_enabled() ? "" : "") + (_translations.XQqk0hQm || (_translations.XQqk0hQm = tr("Open text chat"))) + - (contextmenu.get_provider().html_format_enabled() ? "" : ""), - callback: () => { - this.open_text_chat(); - } - }, contextmenu.Entry.HR(), { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-about", - name: _translations.Wamj6lZp || (_translations.Wamj6lZp = tr("Show client info")), - callback: () => Modals.openClientInfo(this) - }, contextmenu.Entry.HR(), { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-poke", - name: _translations.NAP7iNGX || (_translations.NAP7iNGX = tr("Poke client")), - callback: () => { - createInputModal(_translations.wle1DPL6 || (_translations.wle1DPL6 = tr("Poke client")), _translations.IhKp1U6b || (_translations.IhKp1U6b = tr("Poke message:
")), text => true, result => { - if (typeof (result) === "string") { - //TODO tr - console.log("Poking client " + this.clientNickName() + " with message " + result); - this.channelTree.client.serverConnection.send_command("clientpoke", { - clid: this.clientId(), - msg: result - }); - } - }, { width: 400, maxLength: 512 }).open(); - } - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-edit", - name: _translations.wfJ0cnuF || (_translations.wfJ0cnuF = tr("Change description")), - callback: () => { - createInputModal(_translations.SkDvmbF4 || (_translations.SkDvmbF4 = tr("Change client description")), _translations.UUmz0RUR || (_translations.UUmz0RUR = tr("New description:
")), text => true, result => { - if (typeof (result) === "string") { - //TODO tr - console.log("Changing " + this.clientNickName() + "'s description to " + result); - this.channelTree.client.serverConnection.send_command("clientedit", { - clid: this.clientId(), - client_description: result - }); - } - }, { width: 400, maxLength: 1024 }).open(); - } - }, contextmenu.Entry.HR(), ...this.assignment_context(), contextmenu.Entry.HR(), { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-move_client_to_own_channel", - name: _translations.IqCkK5LB || (_translations.IqCkK5LB = tr("Move client to your channel")), - callback: () => { - this.channelTree.client.serverConnection.send_command("clientmove", { - clid: this.clientId(), - cid: this.channelTree.client.getClient().currentChannel().getChannelId() - }); - } - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-kick_channel", - name: _translations.mgE4Z1Js || (_translations.mgE4Z1Js = tr("Kick client from channel")), - callback: () => { - createInputModal(_translations.Gj78RvOz || (_translations.Gj78RvOz = tr("Kick client from channel")), _translations.xhyckLyH || (_translations.xhyckLyH = tr("Kick reason:
")), text => true, result => { - if (typeof (result) !== 'boolean' || result) { - //TODO tr - console.log("Kicking client " + this.clientNickName() + " from channel with reason " + result); - this.channelTree.client.serverConnection.send_command("clientkick", { - clid: this.clientId(), - reasonid: ViewReasonId.VREASON_CHANNEL_KICK, - reasonmsg: result - }); - } - }, { width: 400, maxLength: 255 }).open(); - } - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-kick_server", - name: _translations.ZCjZNTae || (_translations.ZCjZNTae = tr("Kick client fom server")), - callback: () => { - createInputModal(_translations.PXTiLlh1 || (_translations.PXTiLlh1 = tr("Kick client from server")), _translations.U9VbSk_j || (_translations.U9VbSk_j = tr("Kick reason:
")), text => true, result => { - if (typeof (result) !== 'boolean' || result) { - //TODO tr - console.log("Kicking client " + this.clientNickName() + " from server with reason " + result); - this.channelTree.client.serverConnection.send_command("clientkick", { - clid: this.clientId(), - reasonid: ViewReasonId.VREASON_SERVER_KICK, - reasonmsg: result - }); - } - }, { width: 400, maxLength: 255 }).open(); - } - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-ban_client", - name: _translations.t1_5DwD9 || (_translations.t1_5DwD9 = tr("Ban client")), - invalidPermission: !this.channelTree.client.permissions.neededPermission(PermissionType.I_CLIENT_BAN_MAX_BANTIME).granted(1), - callback: () => { - Modals.spawnBanClient(this.channelTree.client, [{ - name: this.properties.client_nickname, - unique_id: this.properties.client_unique_identifier - }], (data) => { - this.channelTree.client.serverConnection.send_command("banclient", { - uid: this.properties.client_unique_identifier, - banreason: data.reason, - time: data.length - }, { - flagset: [data.no_ip ? "no-ip" : "", data.no_hwid ? "no-hardware-id" : "", data.no_name ? "no-nickname" : ""] - }).then(() => { - this.channelTree.client.sound.play(Sound.USER_BANNED); - }); - }); - } - }, contextmenu.Entry.HR(), - /* - { - type: MenuEntryType.ENTRY, - icon: "client-kick_server", - name: "Add group to client", - invalidPermission: true, //!this.channelTree.client.permissions.neededPermission(PermissionType.I_CLIENT_BAN_MAX_BANTIME).granted(1), - callback: () => { - Modals.spawnBanClient(this.properties.client_nickname, (duration, reason) => { - this.channelTree.client.serverConnection.send_command("banclient", { - uid: this.properties.client_unique_identifier, - banreason: reason, - time: duration - }); - }); - } - }, - MenuEntry.HR(), - */ - { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-volume", - name: _translations._SOYYOpq || (_translations._SOYYOpq = tr("Change Volume")), - callback: () => { - Modals.spawnChangeVolume(this, true, this._audio_volume, undefined, volume => { - this._audio_volume = volume; - this.channelTree.client.settings.changeServer("volume_client_" + this.clientUid(), volume); - if (this._audio_handle) - this._audio_handle.set_volume(volume); - //TODO: Update in info - }); - } - }, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.LGRXJbyk || (_translations.LGRXJbyk = tr("Change playback latency")), - callback: () => { - Modals.spawnChangeLatency(this, this._audio_handle.latency_settings(), () => { - this._audio_handle.reset_latency_settings(); - return this._audio_handle.latency_settings(); - }, settings => this._audio_handle.latency_settings(settings), this._audio_handle.support_flush ? () => { - this._audio_handle.flush(); - } : undefined); - }, - visible: this._audio_handle && this._audio_handle.support_latency_settings() - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-input_muted_local", - name: _translations.HXDWIypp || (_translations.HXDWIypp = tr("Mute client")), - visible: !this._audio_muted, - callback: () => this.set_muted(true, true) - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-input_muted_local", - name: _translations.qPADwJeS || (_translations.qPADwJeS = tr("Unmute client")), - visible: this._audio_muted, - callback: () => this.set_muted(false, true) - }, contextmenu.Entry.CLOSE(() => trigger_close && on_close ? on_close() : {})); - } - get tag() { - if (this._tag) - return this._tag; - let container_client = $.spawn("div") - .addClass("tree-entry client") - .attr("client-id", this.clientId()); - /* unread marker */ - { - container_client.append($.spawn("div") - .addClass("marker-text-unread hidden") - .attr("private-conversation", this._clientId)); - } - container_client.append($.spawn("div") - .addClass("icon_client_state") - .attr("title", "Client state")); - container_client.append($.spawn("div") - .addClass("group-prefix") - .attr("title", "Server groups prefixes") - .hide()); - container_client.append($.spawn("div") - .addClass("client-name") - .text(this.clientNickName())); - container_client.append($.spawn("div") - .addClass("group-suffix") - .attr("title", "Server groups suffix") - .hide()); - container_client.append($.spawn("div") - .addClass("client-away-message") - .text(this.clientNickName())); - let container_icons = $.spawn("div").addClass("container-icons"); - container_icons.append($.spawn("div") - .addClass("icon icon_talk_power client-input_muted") - .hide()); - container_icons.append($.spawn("div") - .addClass("container-icons-group")); - container_icons.append($.spawn("div") - .addClass("container-icon-client")); - container_client.append(container_icons); - this._tag = container_client; - this.initializeListener(); - return this._tag; - } - static bbcodeTag(id, name, uid) { - return "[url=client://" + id + "/" + uid + "~" + encodeURIComponent(name) + "]" + name + "[/url]"; - } - static chatTag(id, name, uid, braces = false) { - return $(htmltags.generate_client({ - client_name: name, - client_id: id, - client_unique_id: uid, - add_braces: braces - })); - } - create_bbcode() { - return ClientEntry.bbcodeTag(this.clientId(), this.clientNickName(), this.clientUid()); - } - createChatTag(braces = false) { - return ClientEntry.chatTag(this.clientId(), this.clientNickName(), this.clientUid(), braces); - } - set speaking(flag) { - if (flag === this._speaking) - return; - this._speaking = flag; - this.updateClientSpeakIcon(); - } - updateClientStatusIcons() { - let talk_power = this.properties.client_talk_power >= this._channel.properties.channel_needed_talk_power; - if (talk_power) - this.tag.find(".icon_talk_power").hide(); - else - this.tag.find(".icon_talk_power").show(); - } - updateClientSpeakIcon() { - let icon = ""; - let clicon = ""; - if (this.properties.client_type_exact == ClientType.CLIENT_QUERY) { - icon = "client-server_query"; - console.log("Server query!"); - } - else { - if (this.properties.client_away) { - icon = "client-away"; - } - else if (this._audio_muted && !(this instanceof LocalClientEntry)) { - icon = "client-input_muted_local"; - } - else if (!this.properties.client_output_hardware) { - icon = "client-hardware_output_muted"; - } - else if (this.properties.client_output_muted) { - icon = "client-output_muted"; - } - else if (!this.properties.client_input_hardware) { - icon = "client-hardware_input_muted"; - } - else if (this.properties.client_input_muted) { - icon = "client-input_muted"; - } - else { - if (this._speaking) { - if (this.properties.client_is_channel_commander) - clicon = "client_cc_talk"; - else - clicon = "client_talk"; - } - else { - if (this.properties.client_is_channel_commander) - clicon = "client_cc_idle"; - else - clicon = "client_idle"; - } - } - } - if (clicon.length > 0) - this.tag.find(".icon_client_state").attr('class', 'icon_client_state clicon ' + clicon); - else if (icon.length > 0) - this.tag.find(".icon_client_state").attr('class', 'icon_client_state icon ' + icon); - else - this.tag.find(".icon_client_state").attr('class', 'icon_client_state icon_empty'); - } - updateAwayMessage() { - let tag = this.tag.find(".client-away-message"); - if (this.properties.client_away == true && this.properties.client_away_message) { - tag.text("[" + this.properties.client_away_message + "]"); - tag.show(); - } - else { - tag.hide(); - } - } - updateVariables(...variables) { - let group = log.group(log.LogType.DEBUG, LogCategory.CLIENT, _translations.mwXcnRVj || (_translations.mwXcnRVj = tr("Update properties (%i) of %s (%i)")), variables.length, this.clientNickName(), this.clientId()); - let update_icon_status = false; - let update_icon_speech = false; - let update_away = false; - let reorder_channel = false; - let update_avatar = false; - { - const entries = []; - for (const variable of variables) - entries.push({ - key: variable.key, - value: variable.value, - type: typeof (this.properties[variable.key]) - }); - log.table(LogType.DEBUG, LogCategory.PERMISSIONS, "Client update properties", entries); - } - for (const variable of variables) { - const old_value = this._properties[variable.key]; - JSON.map_field_to(this._properties, variable.value, variable.key); - if (variable.key == "client_nickname") { - if (variable.value !== old_value && typeof (old_value) === "string") { - if (!(this instanceof LocalClientEntry)) { /* own changes will be logged somewhere else */ - this.channelTree.client.log.log(log.server.Type.CLIENT_NICKNAME_CHANGED, { - own_client: false, - client: this.log_data(), - new_name: variable.value, - old_name: old_value - }); - } - } - this.tag.find(".client-name").text(variable.value); - const chat = this.channelTree.client.side_bar; - const conversation = chat.private_conversations().find_conversation({ - name: this.clientNickName(), - client_id: this.clientId(), - unique_id: this.clientUid() - }, { - attach: false, - create: false - }); - if (conversation) - conversation.set_client_name(variable.value); - reorder_channel = true; - } - if (variable.key == "client_away" || - variable.key == "client_input_hardware" || - variable.key == "client_output_hardware" || - variable.key == "client_output_muted" || - variable.key == "client_input_muted" || - variable.key == "client_is_channel_commander") { - update_icon_speech = true; - } - if (variable.key == "client_away_message" || variable.key == "client_away") { - update_away = true; - } - if (variable.key == "client_unique_identifier") { - this._audio_volume = parseFloat(this.channelTree.client.settings.server("volume_client_" + this.clientUid(), "1")); - const mute_status = this.channelTree.client.settings.server("mute_client_" + this.clientUid(), false); - this.set_muted(mute_status, false, mute_status); /* force only needed when we want to mute the client */ - if (this._audio_handle) - this._audio_handle.set_volume(this._audio_muted ? 0 : this._audio_volume); - update_icon_speech = true; - log.debug(LogCategory.CLIENT, _translations.BwKYcCsM || (_translations.BwKYcCsM = tr("Loaded client (%s) server specific properties. Volume: %o Muted: %o.")), this.clientUid(), this._audio_volume, this._audio_muted); - } - if (variable.key == "client_talk_power") { - reorder_channel = true; - update_icon_status = true; - } - if (variable.key == "client_icon_id") { - /* yeah we like javascript. Due to JS wiered integer behaviour parsing for example fails for 18446744073409829863. - * parseInt("18446744073409829863") evaluates to 18446744073409829000. - * In opposite "18446744073409829863" >>> 0 evaluates to 3995244544, which is the icon id :) - */ - this.properties.client_icon_id = variable.value >>> 0; - this.updateClientIcon(); - } - if (variable.key == "client_channel_group_id" || variable.key == "client_servergroups") - this.update_displayed_client_groups(); - else if (variable.key == "client_flag_avatar") - update_avatar = true; - } - /* process updates after variables have been set */ - if (this._channel && reorder_channel) - this._channel.reorderClients(); - if (update_icon_speech) - this.updateClientSpeakIcon(); - if (update_icon_status) - this.updateClientStatusIcons(); - if (update_away) - this.updateAwayMessage(); - const side_bar = this.channelTree.client.side_bar; - { - const client_info = side_bar.client_info(); - if (client_info.current_client() === this) - client_info.set_current_client(this, true); /* force an update */ - } - if (update_avatar) { - this.channelTree.client.fileManager.avatars.update_cache(this.avatarId(), this.properties.client_flag_avatar); - const conversations = side_bar.private_conversations(); - const conversation = conversations.find_conversation({ name: this.clientNickName(), unique_id: this.clientUid(), client_id: this.clientId() }, { create: false, attach: false }); - if (conversation) - conversation.update_avatar(); - } - group.end(); - this.events.fire("property_update", { - properties: variables.map(e => e.key) - }); - } - update_displayed_client_groups() { - this.tag.find(".container-icons-group").children().remove(); - for (let id of this.assignedServerGroupIds()) - this.updateGroupIcon(this.channelTree.client.groups.serverGroup(id)); - this.update_group_icon_order(); - this.updateGroupIcon(this.channelTree.client.groups.channelGroup(this.properties.client_channel_group_id)); - let prefix_groups = []; - let suffix_groups = []; - for (const group_id of this.assignedServerGroupIds()) { - const group = this.channelTree.client.groups.serverGroup(group_id); - if (!group) - continue; - if (group.properties.namemode == 1) - prefix_groups.push(group.name); - else if (group.properties.namemode == 2) - suffix_groups.push(group.name); - } - const tag_group_prefix = this.tag.find(".group-prefix"); - const tag_group_suffix = this.tag.find(".group-suffix"); - if (prefix_groups.length > 0) { - tag_group_prefix.text("[" + prefix_groups.join("][") + "]").show(); - } - else { - tag_group_prefix.hide(); - } - if (suffix_groups.length > 0) { - tag_group_suffix.text("[" + suffix_groups.join("][") + "]").show(); - } - else { - tag_group_suffix.hide(); - } - } - updateClientVariables(force_update) { - if (Date.now() - 10 * 60 * 1000 < this._info_variables_promise_timestamp && this._info_variables_promise && (typeof (force_update) !== "boolean" || force_update)) - return this._info_variables_promise; - this._info_variables_promise_timestamp = Date.now(); - return (this._info_variables_promise = new Promise((resolve, reject) => { - this.channelTree.client.serverConnection.send_command("clientgetvariables", { clid: this.clientId() }).then(() => resolve()).catch(error => { - this._info_connection_promise_timestamp = 0; /* not succeeded */ - reject(error); - }); - })); - } - updateClientIcon() { - this.tag.find(".container-icon-client").children().remove(); - if (this.properties.client_icon_id > 0) { - this.channelTree.client.fileManager.icons.generateTag(this.properties.client_icon_id).attr("title", "Client icon") - .appendTo(this.tag.find(".container-icon-client")); - } - } - updateGroupIcon(group) { - if (!group) - return; - const container = this.tag.find(".container-icons-group"); - container.find(".icon_group_" + group.id).remove(); - if (group.properties.iconid > 0) { - container.append($.spawn("div").attr('group-power', group.properties.sortid) - .addClass("container-group-icon icon_group_" + group.id) - .append(this.channelTree.client.fileManager.icons.generateTag(group.properties.iconid)).attr("title", group.name)); - } - } - update_group_icon_order() { - const container = this.tag.find(".container-icons-group"); - container.append(...[...container.children()].sort((a, b) => parseInt(a.getAttribute("group-power")) - parseInt(b.getAttribute("group-power")))); - } - assignedServerGroupIds() { - let result = []; - for (let id of this.properties.client_servergroups.split(",")) { - if (id.length == 0) - continue; - result.push(Number.parseInt(id)); - } - return result; - } - assignedChannelGroup() { - return this.properties.client_channel_group_id; - } - groupAssigned(group) { - if (group.target == GroupTarget.SERVER) { - for (let id of this.assignedServerGroupIds()) - if (id == group.id) - return true; - return false; - } - else - return group.id == this.assignedChannelGroup(); - } - onDelete() { } - calculateOnlineTime() { - return Date.now() / 1000 - this.properties.client_lastconnected; - } - avatarId() { - function str2ab(str) { - let buf = new ArrayBuffer(str.length); // 2 bytes for each char - let bufView = new Uint8Array(buf); - for (let i = 0, strLen = str.length; i < strLen; i++) { - bufView[i] = str.charCodeAt(i); - } - return buf; - } - try { - let raw = atob(this.properties.client_unique_identifier); - let input = hex.encode(str2ab(raw)); - let result = ""; - for (let index = 0; index < input.length; index++) { - let c = input.charAt(index); - let offset = 0; - if (c >= '0' && c <= '9') - offset = c.charCodeAt(0) - '0'.charCodeAt(0); - else if (c >= 'A' && c <= 'F') - offset = c.charCodeAt(0) - 'A'.charCodeAt(0) + 0x0A; - else if (c >= 'a' && c <= 'f') - offset = c.charCodeAt(0) - 'a'.charCodeAt(0) + 0x0A; - result += String.fromCharCode('a'.charCodeAt(0) + offset); - } - return result; - } - catch (e) { //invalid base 64 (like music bot etc) - return undefined; - } - } - update_family_index() { - if (!this._channel) - return; - const index = this._channel.calculate_family_index(); - this.tag.css('padding-left', (5 + (index + 2) * 16) + "px"); - } - log_data() { - return { - client_unique_id: this.properties.client_unique_identifier, - client_name: this.clientNickName(), - client_id: this._clientId - }; - } - /* max 1s ago, so we could update every second */ - request_connection_info() { - if (Date.now() - 900 < this._info_connection_promise_timestamp && this._info_connection_promise) - return this._info_connection_promise; - if (this._info_connection_promise_reject) - this._info_connection_promise_resolve("timeout"); - let _local_reject; /* to ensure we're using the right resolve! */ - this._info_connection_promise = new Promise((resolve, reject) => { - this._info_connection_promise_resolve = resolve; - this._info_connection_promise_reject = reject; - _local_reject = reject; - }); - this._info_connection_promise_timestamp = Date.now(); - this.channelTree.client.serverConnection.send_command("getconnectioninfo", { clid: this._clientId }).catch(error => _local_reject(error)); - return this._info_connection_promise; - } - set_connection_info(info) { - if (!this._info_connection_promise_resolve) - return; - this._info_connection_promise_resolve(info); - this._info_connection_promise_resolve = undefined; - this._info_connection_promise_reject = undefined; - } - set flag_text_unread(flag) { - this._tag.find(".marker-text-unread").toggleClass("hidden", !flag); - } -} -class LocalClientEntry extends ClientEntry { - constructor(handle) { - super(0, "local client"); - this.handle = handle; - } - showContextMenu(x, y, on_close = undefined) { - const _self = this; - contextmenu.spawn_context_menu(x, y, ...this.contextmenu_info(), { - name: (contextmenu.get_provider().html_format_enabled() ? "" : "") + (_translations.TWJRawAz || (_translations.TWJRawAz = tr("Change name"))) + - (contextmenu.get_provider().html_format_enabled() ? "" : ""), - icon_class: "client-change_nickname", - callback: () => _self.openRename(), - type: contextmenu.MenuEntryType.ENTRY - }, { - name: _translations.QXkvf75y || (_translations.QXkvf75y = tr("Change description")), - icon_class: "client-edit", - callback: () => { - createInputModal(_translations.eo0BTEUD || (_translations.eo0BTEUD = tr("Change own description")), _translations.cGSxzOs8 || (_translations.cGSxzOs8 = tr("New description:
")), text => true, result => { - if (result) { - console.log(_translations.KltoFGs6 || (_translations.KltoFGs6 = tr("Changing own description to %s")), result); - _self.channelTree.client.serverConnection.send_command("clientedit", { - clid: _self.clientId(), - client_description: result - }); - } - }, { width: 400, maxLength: 1024 }).open(); - }, - type: contextmenu.MenuEntryType.ENTRY - }, contextmenu.Entry.HR(), ...this.assignment_context(), contextmenu.Entry.CLOSE(on_close)); - } - initializeListener() { - if (this._listener_initialized) - this.tag.off(); - this._listener_initialized = false; /* could there be a better system */ - super.initializeListener(); - this.tag.find(".client-name").addClass("client-name-own"); - this.tag.on('dblclick', () => { - if (Array.isArray(this.channelTree.currently_selected)) { //Multiselect - return; - } - this.openRename(); - }); - } - openRename() { - this.channelTree.client_mover.enabled = false; - const elm = this.tag.find(".client-name"); - elm.attr("contenteditable", "true"); - elm.removeClass("client-name-own"); - elm.css("background-color", "white"); - elm.focus(); - this.renaming = true; - elm.on('keypress', event => { - if (event.keyCode == KeyCode.KEY_RETURN) { - $(event.target).trigger("focusout"); - return false; - } - }); - elm.on('focusout', event => { - this.channelTree.client_mover.enabled = true; - if (!this.renaming) - return; - this.renaming = false; - elm.css("background-color", ""); - elm.removeAttr("contenteditable"); - elm.addClass("client-name-own"); - let text = elm.text().toString(); - if (this.clientNickName() == text) - return; - elm.text(this.clientNickName()); - const old_name = this.clientNickName(); - this.handle.serverConnection.command_helper.updateClient("client_nickname", text).then((e) => { - settings.changeGlobal(Settings.KEY_CONNECT_USERNAME, text); - this.channelTree.client.log.log(log.server.Type.CLIENT_NICKNAME_CHANGED, { - client: this.log_data(), - old_name: old_name, - new_name: text, - own_client: true - }); - }).catch((e) => { - this.channelTree.client.log.log(log.server.Type.CLIENT_NICKNAME_CHANGE_FAILED, { - reason: e.extra_message - }); - this.openRename(); - }); - }); - } -} -class MusicClientProperties extends ClientProperties { - constructor() { - super(...arguments); - this.player_state = 0; - this.player_volume = 0; - this.client_playlist_id = 0; - this.client_disabled = false; - this.client_flag_notify_song_change = false; - this.client_bot_type = 0; - this.client_uptime_mode = 0; - } -} -/* - * command[index]["song_id"] = element ? element->getSongId() : 0; - command[index]["song_url"] = element ? element->getUrl() : ""; - command[index]["song_invoker"] = element ? element->getInvoker() : 0; - command[index]["song_loaded"] = false; - - auto entry = dynamic_pointer_cast(element); - if(entry) { - auto data = entry->song_loaded_data(); - command[index]["song_loaded"] = entry->song_loaded() && data; - - if(entry->song_loaded() && data) { - command[index]["song_title"] = data->title; - command[index]["song_description"] = data->description; - command[index]["song_thumbnail"] = data->thumbnail; - command[index]["song_length"] = data->length.count(); - } - } - */ -class SongInfo { - constructor() { - this.song_id = 0; - this.song_url = ""; - this.song_invoker = 0; - this.song_loaded = false; - /* only if song_loaded = true */ - this.song_title = ""; - this.song_description = ""; - this.song_thumbnail = ""; - this.song_length = 0; - } -} -class MusicClientPlayerInfo extends SongInfo { - constructor() { - super(...arguments); - this.bot_id = 0; - this.player_state = 0; - this.player_buffered_index = 0; - this.player_replay_index = 0; - this.player_max_index = 0; - this.player_seekable = false; - this.player_title = ""; - this.player_description = ""; - } -} -class MusicClientEntry extends ClientEntry { - constructor(clientId, clientName) { - super(clientId, clientName, new MusicClientProperties()); - this._info_promise_age = 0; - } - destroy() { - super.destroy(); - this._info_promise = undefined; - this._info_promise_reject = undefined; - this._info_promise_resolve = undefined; - } - get properties() { - return this._properties; - } - showContextMenu(x, y, on_close = undefined) { - let trigger_close = true; - contextmenu.spawn_context_menu(x, y, ...this.contextmenu_info(), { - name: (contextmenu.get_provider().html_format_enabled() ? "" : "") + (_translations.XbLxNlO8 || (_translations.XbLxNlO8 = tr("Change bot name"))) + - (contextmenu.get_provider().html_format_enabled() ? "" : ""), - icon_class: "client-change_nickname", - disabled: false, - callback: () => { - createInputModal(_translations.pmicCstj || (_translations.pmicCstj = tr("Change music bots nickname")), _translations.vqukZhk9 || (_translations.vqukZhk9 = tr("New nickname:
")), text => text.length >= 3 && text.length <= 31, result => { - if (result) { - this.channelTree.client.serverConnection.send_command("clientedit", { - clid: this.clientId(), - client_nickname: result - }); - } - }, { width: "40em", min_width: "10em", maxLength: 255 }).open(); - }, - type: contextmenu.MenuEntryType.ENTRY - }, { - name: _translations.KwxFZl6L || (_translations.KwxFZl6L = tr("Change bot description")), - icon_class: "client-edit", - disabled: false, - callback: () => { - createInputModal(_translations.mYzzfhcQ || (_translations.mYzzfhcQ = tr("Change music bots description")), _translations.ZTCZj4qo || (_translations.ZTCZj4qo = tr("New description:
")), text => true, result => { - if (typeof (result) === 'string') { - this.channelTree.client.serverConnection.send_command("clientedit", { - clid: this.clientId(), - client_description: result - }); - } - }, { width: "60em", min_width: "10em", maxLength: 255 }).open(); - }, - type: contextmenu.MenuEntryType.ENTRY - }, - /* - { - name: tr("Open music panel"), - icon: "client-edit", - disabled: true, - callback: () => {}, - type: MenuEntryType.ENTRY - }, - */ - { - name: _translations.JLASYUDm || (_translations.JLASYUDm = tr("Open bot's playlist")), - icon_class: "client-edit", - disabled: false, - callback: () => { - this.channelTree.client.serverConnection.command_helper.request_playlist_list().then(lists => { - for (const entry of lists) { - if (entry.playlist_id == this.properties.client_playlist_id) { - Modals.spawnPlaylistEdit(this.channelTree.client, entry); - return; - } - } - createErrorModal(_translations.ecR9BnOb || (_translations.ecR9BnOb = tr("Invalid permissions")), _translations.bjVFcLvv || (_translations.bjVFcLvv = tr("You dont have to see the bots playlist."))).open(); - }).catch(error => { - createErrorModal(_translations.cCQHXsEN || (_translations.cCQHXsEN = tr("Failed to query playlist.")), _translations.z0TAFloZ || (_translations.z0TAFloZ = tr("Failed to query playlist info."))).open(); - }); - }, - type: contextmenu.MenuEntryType.ENTRY - }, { - name: _translations.v3a_2VKL || (_translations.v3a_2VKL = tr("Quick url replay")), - icon_class: "client-edit", - disabled: false, - callback: () => { - createInputModal(_translations.qP0cnomf || (_translations.qP0cnomf = tr("Please enter the URL")), _translations.yQiADIEs || (_translations.yQiADIEs = tr("URL:")), text => true, result => { - if (result) { - this.channelTree.client.serverConnection.send_command("musicbotqueueadd", { - bot_id: this.properties.client_database_id, - type: "yt", - url: result - }).catch(error => { - if (error instanceof CommandResult) { - error = error.extra_message || error.message; - } - //TODO tr - createErrorModal(_translations.LAv5uiVz || (_translations.LAv5uiVz = tr("Failed to replay url")), "Failed to enqueue url:
" + error).open(); - }); - } - }, { width: 400, maxLength: 255 }).open(); - }, - type: contextmenu.MenuEntryType.ENTRY - }, contextmenu.Entry.HR(), ...super.assignment_context(), contextmenu.Entry.HR(), { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-move_client_to_own_channel", - name: _translations.y7NwSbFu || (_translations.y7NwSbFu = tr("Move client to your channel")), - callback: () => { - this.channelTree.client.serverConnection.send_command("clientmove", { - clid: this.clientId(), - cid: this.channelTree.client.getClient().currentChannel().getChannelId() - }); - } - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-kick_channel", - name: _translations.l4FBtA8t || (_translations.l4FBtA8t = tr("Kick client from channel")), - callback: () => { - createInputModal(_translations.I7AyThLI || (_translations.I7AyThLI = tr("Kick client from channel")), _translations.Xd1D_Zzu || (_translations.Xd1D_Zzu = tr("Kick reason:
")), text => true, result => { - if (typeof (result) !== 'boolean' || result) { - console.log(_translations.mWrcl55N || (_translations.mWrcl55N = tr("Kicking client %o from channel with reason %o")), this.clientNickName(), result); - this.channelTree.client.serverConnection.send_command("clientkick", { - clid: this.clientId(), - reasonid: ViewReasonId.VREASON_CHANNEL_KICK, - reasonmsg: result - }); - } - }, { width: 400, maxLength: 255 }).open(); - } - }, contextmenu.Entry.HR(), { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-volume", - name: _translations.GjpMhrnj || (_translations.GjpMhrnj = tr("Change local volume")), - callback: () => { - Modals.spawnChangeVolume(this, true, this._audio_handle.get_volume(), undefined, volume => { - this.channelTree.client.settings.changeServer("volume_client_" + this.clientUid(), volume); - this._audio_handle.set_volume(volume); - }); - } - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-volume", - name: _translations.xbWCjjmW || (_translations.xbWCjjmW = tr("Change remote volume")), - callback: () => { - let max_volume = this.channelTree.client.permissions.neededPermission(PermissionType.I_CLIENT_MUSIC_CREATE_MODIFY_MAX_VOLUME).value; - if (max_volume < 0) - max_volume = 100; - Modals.spawnChangeVolume(this, false, this.properties.player_volume, max_volume / 100, value => { - if (typeof (value) !== "number") - return; - this.channelTree.client.serverConnection.send_command("clientedit", { - clid: this.clientId(), - player_volume: value, - }).then(() => { - //TODO: Update in info - }); - }); - } - }, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.eRh0JpMP || (_translations.eRh0JpMP = tr("Change playback latency")), - callback: () => { - Modals.spawnChangeLatency(this, this._audio_handle.latency_settings(), () => { - this._audio_handle.reset_latency_settings(); - return this._audio_handle.latency_settings(); - }, settings => this._audio_handle.latency_settings(settings), this._audio_handle.support_flush ? () => { - this._audio_handle.flush(); - } : undefined); - }, - visible: this._audio_handle && this._audio_handle.support_latency_settings() - }, contextmenu.Entry.HR(), { - name: _translations.J7K_FqfX || (_translations.J7K_FqfX = tr("Delete bot")), - icon_class: "client-delete", - disabled: false, - callback: () => { - const tag = $.spawn("div").append(MessageHelper.formatMessage(_translations.RjNsfIH5 || (_translations.RjNsfIH5 = tr("Do you really want to delete {0}")), this.createChatTag(false))); - Modals.spawnYesNo(_translations.UryMTw7o || (_translations.UryMTw7o = tr("Are you sure?")), $.spawn("div").append(tag), result => { - if (result) { - this.channelTree.client.serverConnection.send_command("musicbotdelete", { - bot_id: this.properties.client_database_id - }); - } - }); - }, - type: contextmenu.MenuEntryType.ENTRY - }, contextmenu.Entry.CLOSE(() => trigger_close && on_close ? on_close() : {})); - } - initializeListener() { - super.initializeListener(); - } - handlePlayerInfo(json) { - if (json) { - const info = new MusicClientPlayerInfo(); - JSON.map_to(info, json); - if (this._info_promise_resolve) - this._info_promise_resolve(info); - this._info_promise_reject = undefined; - this._info_promise_resolve = undefined; - } - } - requestPlayerInfo(max_age = 1000) { - if (this._info_promise !== undefined && this._info_promise_age > 0 && Date.now() - max_age <= this._info_promise_age) - return this._info_promise; - this._info_promise_age = Date.now(); - this._info_promise = new Promise((resolve, reject) => { - this._info_promise_reject = reject; - this._info_promise_resolve = resolve; - }); - this.channelTree.client.serverConnection.send_command("musicbotplayerinfo", { bot_id: this.properties.client_database_id }); - return this._info_promise; - } -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["05ca7973a11a972f3d6b90eb9141fa51cfc36ba0897d1a7ec39adb5cbe0a6f99"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["05ca7973a11a972f3d6b90eb9141fa51cfc36ba0897d1a7ec39adb5cbe0a6f99"] = "05ca7973a11a972f3d6b90eb9141fa51cfc36ba0897d1a7ec39adb5cbe0a6f99"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "BJLONISG", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerEdit.ts (35,21)" }, { name: "GqQnNwWS", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerEdit.ts (211,29)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var Modals; -(function (Modals) { - function createServerModal(server, callback) { - const properties = Object.assign({}, server.properties); - let _valid_states = { - general: false - }; - let _toggle_valid = (key, value) => { - if (typeof (key) === "string") { - _valid_states[key] = value; - } - let flag = true; - for (const key of Object.keys(_valid_states)) - if (!_valid_states[key]) { - flag = false; - break; - } - if (flag) { - flag = false; - for (const property_name of Object.keys(properties)) { - if (server.properties[property_name] !== properties[property_name]) { - flag = true; - break; - } - } - } - button_save.prop("disabled", !flag); - }; - const modal = createModal({ - header: _translations.BJLONISG || (_translations.BJLONISG = tr("Manage the Virtual Server")), - body: () => { - const template = $("#tmpl_server_edit").renderTag(Object.assign(Object.assign({}, server.properties), { - server_icon: server.channelTree.client.fileManager.icons.generateTag(server.properties.virtualserver_icon_id) - })); - /* the tab functionality */ - { - const container_tabs = template.find(".container-categories"); - container_tabs.find(".categories .entry").on('click', event => { - const entry = $(event.target); - container_tabs.find(".bodies > .body").addClass("hidden"); - container_tabs.find(".categories > .selected").removeClass("selected"); - entry.addClass("selected"); - container_tabs.find(".bodies > .body." + entry.attr("container")).removeClass("hidden"); - }); - container_tabs.find(".entry").first().trigger('click'); - } - apply_general_listener(template.find(".container-general"), server, properties, _toggle_valid); - apply_host_listener(template.find(".container-host"), server, properties, _toggle_valid); - apply_network_listener(template.find(".container-network"), server, properties, _toggle_valid, modal); - apply_security_listener(template.find(".container-security"), server, properties, _toggle_valid); - apply_messages_listener(template.find(".container-messages"), server, properties, _toggle_valid); - apply_misc_listener(template.find(".container-misc"), server, properties, _toggle_valid); - return template.contents(); - }, - footer: null, - min_width: "35em" - }); - tooltip(modal.htmlTag); - const button_save = modal.htmlTag.find(".button-save"); - button_save.on('click', event => { - const changed = {}; - for (const property_name of Object.keys(properties)) - if (server.properties[property_name] !== properties[property_name]) - changed[property_name] = properties[property_name]; - callback(changed).then(() => { - _toggle_valid(undefined); - }); - }); - modal.htmlTag.find(".button-cancel").on('click', event => { - modal.close(); - callback(); - }); - _toggle_valid("general", true); - modal.htmlTag.find(".modal-body").addClass("modal-server-edit modal-blue"); - modal.open(); - } - Modals.createServerModal = createServerModal; - function apply_general_listener(tag, server, properties, callback_valid) { - /* name */ - { - const container = tag.find(".virtualserver_name"); - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_NAME).granted(1); - container.on('change', event => { - properties.virtualserver_name = container.val(); - const invalid = properties.virtualserver_name.length > 70 || properties.virtualserver_name.length < 1; - container.firstParent(".input-boxed").toggleClass("is-invalid", invalid); - callback_valid("virtualserver_name", !invalid); - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - /* icon */ - { - tag.find(".button-select-icon").on('click', event => { - Modals.spawnIconSelect(server.channelTree.client, id => { - const icon_node = tag.find(".icon-preview"); - icon_node.children().remove(); - icon_node.append(server.channelTree.client.fileManager.icons.generateTag(id)); - console.log("Selected icon ID: %d", id); - properties.virtualserver_icon_id = id; - callback_valid(undefined); //Toggle save button update - }, properties.virtualserver_icon_id); - }); - tag.find(".button-icon-remove").on('click', event => { - const icon_node = tag.find(".icon-preview"); - icon_node.children().remove(); - icon_node.append(server.channelTree.client.fileManager.icons.generateTag(0)); - console.log("Remove server icon"); - properties.virtualserver_icon_id = 0; - callback_valid(undefined); //Toggle save button update - }); - } - /* password */ - { - //TODO: On save let the user retype his password? - const container = tag.find(".virtualserver_password"); - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_PASSWORD).granted(1); - container.on('change', event => { - const password = container.val(); - properties.virtualserver_flag_password = !!password; - if (properties.virtualserver_flag_password) { - helpers.hashPassword(password).then(pass => properties.virtualserver_password = pass); - } - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - /* slots */ - { - const container_max = tag.find(".virtualserver_maxclients"); - const container_reserved = tag.find(".virtualserver_reserved_slots"); - /* max users */ - { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_MAXCLIENTS).granted(1); - container_max.on('change', event => { - properties.virtualserver_maxclients = parseInt(container_max.val()); - const invalid = properties.virtualserver_maxclients < 1 || properties.virtualserver_maxclients > 1024; - container_max.firstParent(".input-boxed").toggleClass("is-invalid", invalid); - callback_valid("virtualserver_maxclients", !invalid); - container_reserved.trigger('change'); /* update the flag */ - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - /* reserved */ - { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_RESERVED_SLOTS).granted(1); - container_reserved.on('change', event => { - properties.virtualserver_reserved_slots = parseInt(container_reserved.val()); - const invalid = properties.virtualserver_reserved_slots > properties.virtualserver_maxclients; - container_reserved.firstParent(".input-boxed").toggleClass("is-invalid", invalid); - callback_valid("virtualserver_reserved_slots", !invalid); - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - } - /* Welcome message */ - { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_WELCOMEMESSAGE).granted(1); - const container = tag.find(".container-welcome-message"); - const input = container.find("textarea"); - const insert_tag = (open, close) => { - if (input.prop("disabled")) - return; - const node = input[0]; - if (node.selectionStart || node.selectionStart == 0) { - const startPos = node.selectionStart; - const endPos = node.selectionEnd; - node.value = node.value.substring(0, startPos) + open + node.value.substring(startPos, endPos) + close + node.value.substring(endPos); - node.selectionEnd = endPos + open.length; - node.selectionStart = node.selectionEnd; - } - else { - node.value += open + close; - node.selectionEnd = node.value.length - close.length; - node.selectionStart = node.selectionEnd; - } - input.focus().trigger('change'); - }; - input.on('change', event => { - console.log(_translations.GqQnNwWS || (_translations.GqQnNwWS = tr("Welcome message edited: %o")), input.val()); - properties.virtualserver_welcomemessage = input.val(); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - container.find(".button-bold").on('click', () => insert_tag('[b]', '[/b]')); - container.find(".button-italic").on('click', () => insert_tag('[i]', '[/i]')); - container.find(".button-underline").on('click', () => insert_tag('[u]', '[/u]')); - container.find(".button-color input").on('change', event => { - insert_tag('[color=' + event.target.value + ']', '[/color]'); - }); - } - } - function apply_network_listener(tag, server, properties, callback_valid, modal) { - /* binding */ - { - /* host */ - { - const container = tag.find(".virtualserver_host"); - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_HOST).granted(1); - container.on('change', event => { - properties.virtualserver_host = container.val(); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_host)); - } - /* port */ - { - const container = tag.find(".virtualserver_port"); - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_PORT).granted(1); - container.on('change', event => { - const value = parseInt(container.val()); - properties.virtualserver_port = value; - const valid = value >= 1 && value < 65536; - callback_valid("virtualserver_port", valid); - container.firstParent(".input-boxed").toggleClass("is-invalid", !valid); - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_port)); - } - /* TeamSpeak server list */ - { - const container = tag.find(".virtualserver_weblist_enabled"); - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_WEBLIST).granted(1); - container.on('change', event => { - properties.virtualserver_weblist_enabled = container.prop("checked"); - callback_valid(undefined); - }).prop("disabled", !permission).firstParent(".checkbox").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.prop("checked", server.properties.virtualserver_weblist_enabled)); - } - } - /* file download */ - { - /* bandwidth */ - { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_FT_SETTINGS).granted(1); - const container = tag.find(".virtualserver_max_download_total_bandwidth"); - container.on('change', event => { - properties.virtualserver_max_download_total_bandwidth = parseInt(container.val()); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_max_download_total_bandwidth)); - } - /* Quota */ - { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_FT_QUOTAS).granted(1); - const container = tag.find(".virtualserver_download_quota"); - container.on('change', event => { - properties.virtualserver_download_quota = parseInt(container.val()); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_download_quota)); - } - } - /* file upload */ - { - /* bandwidth */ - { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_FT_SETTINGS).granted(1); - const container = tag.find(".virtualserver_max_upload_total_bandwidth"); - container.on('change', event => { - properties.virtualserver_max_upload_total_bandwidth = parseInt(container.val()); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_max_upload_total_bandwidth)); - } - /* Quota */ - { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_FT_QUOTAS).granted(1); - const container = tag.find(".virtualserver_upload_quota"); - container.on('change', event => { - properties.virtualserver_upload_quota = parseInt(container.val()); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_upload_quota)); - } - } - /* quota info */ - { - server.updateProperties().then(() => { - tag.find(".value.virtualserver_month_bytes_downloaded").text(MessageHelper.network.format_bytes(server.properties.virtualserver_month_bytes_downloaded)); - tag.find(".value.virtualserver_month_bytes_uploaded").text(MessageHelper.network.format_bytes(server.properties.virtualserver_month_bytes_uploaded)); - tag.find(".value.virtualserver_total_bytes_downloaded").text(MessageHelper.network.format_bytes(server.properties.virtualserver_total_bytes_downloaded)); - tag.find(".value.virtualserver_total_bytes_uploaded").text(MessageHelper.network.format_bytes(server.properties.virtualserver_total_bytes_uploaded)); - }); - } - /* quota update task */ - if (server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_CONNECTIONINFO_VIEW).granted(1)) { - const month_bytes_downloaded = tag.find(".value.virtualserver_month_bytes_downloaded")[0]; - const month_bytes_uploaded = tag.find(".value.virtualserver_month_bytes_uploaded")[0]; - const total_bytes_downloaded = tag.find(".value.virtualserver_total_bytes_downloaded")[0]; - const total_bytes_uploaded = tag.find(".value.virtualserver_total_bytes_uploaded")[0]; - let id = setInterval(() => { - if (!modal.shown) { - clearInterval(id); - return; - } - server.request_connection_info().then(info => { - if (info.connection_filetransfer_bytes_sent_month && month_bytes_downloaded) - month_bytes_downloaded.innerText = MessageHelper.network.format_bytes(info.connection_filetransfer_bytes_sent_month); - if (info.connection_filetransfer_bytes_received_month && month_bytes_uploaded) - month_bytes_uploaded.innerText = MessageHelper.network.format_bytes(info.connection_filetransfer_bytes_received_month); - if (info.connection_filetransfer_bytes_sent_total && total_bytes_downloaded) - total_bytes_downloaded.innerText = MessageHelper.network.format_bytes(info.connection_filetransfer_bytes_sent_total); - if (info.connection_filetransfer_bytes_received_total && total_bytes_uploaded) - total_bytes_uploaded.innerText = MessageHelper.network.format_bytes(info.connection_filetransfer_bytes_received_total); - }); - }, 1000); - modal.close_listener.push(() => clearInterval(id)); - } - } - function apply_host_listener(tag, server, properties, callback_valid) { - /* host message */ - { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_HOSTMESSAGE).granted(1); - /* message */ - { - const container = tag.find(".virtualserver_hostmessage"); - container.on('change', event => { - properties.virtualserver_hostmessage = container.val(); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - /* mode */ - { - const container = tag.find(".virtualserver_hostmessage_mode"); - container.on('change', event => { - properties.virtualserver_hostmessage_mode = Math.min(3, Math.max(0, parseInt(container.val()))); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - } - /* host banner */ - { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_HOSTBANNER).granted(1); - /* URL */ - { - const container = tag.find(".virtualserver_hostbanner_url"); - container.on('change', event => { - properties.virtualserver_hostbanner_url = container.val(); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - /* Image URL/Image Preview */ - { - const container = tag.find(".virtualserver_hostbanner_gfx_url"); - const container_preview = tag.find(".container-host-message .container-gfx-preview img"); - container.on('change', event => { - properties.virtualserver_hostbanner_gfx_url = container.val(); - container_preview.attr("src", properties.virtualserver_hostbanner_gfx_url).toggle(!!properties.virtualserver_hostbanner_gfx_url); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - /* Image Refresh */ - { - const container = tag.find(".virtualserver_hostbanner_gfx_interval"); - container.on('change', event => { - const value = parseInt(container.val()); - properties.virtualserver_hostbanner_gfx_interval = value; - const invalid = value < 60 && value != 0; - container.firstParent(".input-boxed").toggleClass("is-invalid", invalid); - callback_valid("virtualserver_hostbanner_gfx_interval", !invalid); - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - /* mode */ - { - const container = tag.find(".virtualserver_hostbanner_mode"); - container.on('change', event => { - properties.virtualserver_hostbanner_mode = Math.min(2, Math.max(0, parseInt(container.val()))); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - } - /* host button */ - { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_HOSTBUTTON).granted(1); - /* URL */ - { - const container = tag.find(".virtualserver_hostbutton_url"); - container.on('change', event => { - properties.virtualserver_hostbutton_url = container.val(); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - /* Tooltip */ - { - const container = tag.find(".virtualserver_hostbutton_tooltip"); - container.on('change', event => { - properties.virtualserver_hostbutton_tooltip = container.val(); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - /* Icon URL/Icon Preview */ - { - const container = tag.find(".virtualserver_hostbutton_gfx_url"); - const container_preview = tag.find(".container-host-button .container-gfx-preview img"); - container.on('change', event => { - properties.virtualserver_hostbutton_gfx_url = container.val(); - container_preview.attr("src", properties.virtualserver_hostbutton_gfx_url).toggle(!!properties.virtualserver_hostbutton_gfx_url); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - } - } - function apply_security_listener(tag, server, properties, callback_valid) { - /* Anti flood */ - { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_ANTIFLOOD).granted(1); - /* reduce */ - { - const container = tag.find(".virtualserver_antiflood_points_tick_reduce"); - container.on('change', event => { - const value = parseInt(container.val()); - properties.virtualserver_antiflood_points_tick_reduce = value; - const invalid = value < 1 || value > 999999; - container.firstParent(".input-boxed").toggleClass("is-invalid", invalid); - callback_valid("virtualserver_antiflood_points_tick_reduce", !invalid); - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_antiflood_points_tick_reduce)); - } - /* block commands */ - { - const container = tag.find(".virtualserver_antiflood_points_needed_command_block"); - container.on('change', event => { - const value = parseInt(container.val()); - properties.virtualserver_antiflood_points_needed_command_block = value; - const invalid = value < 1 || value > 999999; - container.firstParent(".input-boxed").toggleClass("is-invalid", invalid); - callback_valid("virtualserver_antiflood_points_needed_command_block", !invalid); - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_antiflood_points_needed_command_block)); - } - /* block ip */ - { - const container = tag.find(".virtualserver_antiflood_points_needed_ip_block"); - container.on('change', event => { - const value = parseInt(container.val()); - properties.virtualserver_antiflood_points_needed_ip_block = value; - const invalid = value < 1 || value > 999999; - container.firstParent(".input-boxed").toggleClass("is-invalid", invalid); - callback_valid("virtualserver_antiflood_points_needed_ip_block", !invalid); - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_antiflood_points_needed_ip_block)); - } - } - /* encryption */ - { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_CODEC_ENCRYPTION_MODE).granted(1); - const container = tag.find(".virtualserver_codec_encryption_mode"); - container.on('change', event => { - properties.virtualserver_codec_encryption_mode = Math.min(2, Math.max(0, parseInt(container.val()))); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - /* security level */ - { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_NEEDED_IDENTITY_SECURITY_LEVEL).granted(1); - const container = tag.find(".virtualserver_needed_identity_security_level"); - container.on('change', event => { - const value = parseInt(container.val()); - properties.virtualserver_needed_identity_security_level = value; - const invalid = value < 8 || value > 99; - container.firstParent(".input-boxed").toggleClass("is-invalid", invalid); - callback_valid("virtualserver_needed_identity_security_level", !invalid); - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_needed_identity_security_level)); - } - } - function apply_messages_listener(tag, server, properties, callback_valid) { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_DEFAULT_MESSAGES).granted(1); - /* channel topic */ - { - const container = tag.find(".virtualserver_default_channel_topic"); - container.on('change', event => { - properties.virtualserver_default_channel_topic = container.val(); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - /* channel description */ - { - const container = tag.find(".virtualserver_default_channel_description"); - container.on('change', event => { - properties.virtualserver_default_channel_description = container.val(); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_default_channel_description)); - } - /* client description */ - { - const container = tag.find(".virtualserver_default_client_description"); - container.on('change', event => { - properties.virtualserver_default_client_description = container.val(); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_default_client_description)); - } - } - function apply_misc_listener(tag, server, properties, callback_valid) { - /* default groups */ - { - /* Server Group */ - { - const container = tag.find(".virtualserver_default_server_group"); - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_DEFAULT_SERVERGROUP).granted(1); - container.on('change', event => { - properties.virtualserver_default_server_group = parseInt(container.val()); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - for (const group of server.channelTree.client.groups.serverGroups.sort(GroupManager.sorter())) { - if (group.type != 2) - continue; - let group_tag = $.spawn("option").text(group.name + " [" + (group.properties.savedb ? "perm" : "tmp") + "]").attr("group-id", group.id); - if (group.id == server.properties.virtualserver_default_server_group) - group_tag.prop("selected", true); - group_tag.appendTo(container); - } - } - /* Music Group */ - { - const container = tag.find(".virtualserver_default_music_group"); - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_DEFAULT_MUSICGROUP).granted(1); - container.on('change', event => { - properties.virtualserver_default_music_group = parseInt(container.val()); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - for (const group of server.channelTree.client.groups.serverGroups.sort(GroupManager.sorter())) { - if (group.type != 2) - continue; - let group_tag = $.spawn("option").text(group.name + " [" + (group.properties.savedb ? "perm" : "tmp") + "]").attr("group-id", group.id); - if (group.id == server.properties.virtualserver_default_music_group) - group_tag.prop("selected", true); - group_tag.appendTo(container); - } - } - /* Channel Admin Group */ - { - const container = tag.find(".virtualserver_default_channel_admin_group"); - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_DEFAULT_CHANNELADMINGROUP).granted(1); - container.on('change', event => { - properties.virtualserver_default_channel_admin_group = parseInt(container.val()); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - for (const group of server.channelTree.client.groups.channelGroups.sort(GroupManager.sorter())) { - if (group.type != 2) - continue; - let group_tag = $.spawn("option").text(group.name + " [" + (group.properties.savedb ? "perm" : "tmp") + "]").attr("group-id", group.id); - if (group.id == server.properties.virtualserver_default_channel_admin_group) - group_tag.prop("selected", true); - group_tag.appendTo(container); - } - } - /* Channel Guest Group */ - { - const container = tag.find(".virtualserver_default_channel_group"); - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_DEFAULT_CHANNELGROUP).granted(1); - container.on('change', event => { - properties.virtualserver_default_channel_group = parseInt(container.val()); - callback_valid(undefined); //Toggle save button update - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - for (const group of server.channelTree.client.groups.channelGroups.sort(GroupManager.sorter())) { - if (group.type != 2) - continue; - let group_tag = $.spawn("option").text(group.name + " [" + (group.properties.savedb ? "perm" : "tmp") + "]").attr("group-id", group.id); - if (group.id == server.properties.virtualserver_default_channel_group) - group_tag.prop("selected", true); - group_tag.appendTo(container); - } - } - } - /* complains */ - { - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_COMPLAIN).granted(1); - /* ban threshold */ - { - const container = tag.find(".virtualserver_complain_autoban_count"); - container.on('change', event => { - properties.virtualserver_complain_autoban_count = parseInt(container.val()); - callback_valid(undefined); - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_complain_autoban_count)); - } - /* ban time */ - { - const container = tag.find(".virtualserver_complain_autoban_time"); - container.on('change', event => { - properties.virtualserver_complain_autoban_time = parseInt(container.val()); - callback_valid(undefined); - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_complain_autoban_time)); - } - /* auto remove time */ - { - const container = tag.find(".virtualserver_complain_remove_time"); - container.on('change', event => { - properties.virtualserver_complain_remove_time = parseInt(container.val()); - callback_valid(undefined); - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_complain_remove_time)); - } - } - /* others */ - { - /* clients before silence */ - { - const container = tag.find(".virtualserver_min_clients_in_channel_before_forced_silence"); - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_CHANNEL_FORCED_SILENCE).granted(1); - container.on('change', event => { - const value = parseInt(container.val()); - properties.virtualserver_min_clients_in_channel_before_forced_silence = value; - callback_valid("virtualserver_min_clients_in_channel_before_forced_silence", value > 1); - container.firstParent(".input-boxed").toggleClass("is-invalid", value <= 1); - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - server.updateProperties().then(() => container.val(server.properties.virtualserver_min_clients_in_channel_before_forced_silence)); - } - /* priority speaker dim factor */ - { - const container = tag.find(".virtualserver_priority_speaker_dimm_modificator"); - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_PRIORITY_SPEAKER_DIMM_MODIFICATOR).granted(1); - container.on('change', event => { - properties.virtualserver_priority_speaker_dimm_modificator = parseInt(container.val()); - callback_valid(undefined); - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - /* channel delete delay */ - { - const container = tag.find(".virtualserver_channel_temp_delete_delay_default"); - const permission = server.channelTree.client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_MODIFY_CHANNEL_TEMP_DELETE_DELAY_DEFAULT).granted(1); - container.on('change', event => { - properties.virtualserver_channel_temp_delete_delay_default = parseInt(container.val()); - callback_valid(undefined); - }).prop("disabled", !permission).firstParent(".input-boxed").toggleClass("disabled", !permission); - } - } - } -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["6079f752d3ed1818f65c23c2166c43f6d4e67d4994e5849c20b0297e41e704b6"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["6079f752d3ed1818f65c23c2166c43f6d4e67d4994e5849c20b0297e41e704b6"] = "6079f752d3ed1818f65c23c2166c43f6d4e67d4994e5849c20b0297e41e704b6"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "xl5h3fOx", path: "D:/TeaSpeak/web/shared/js/ui/server.ts (209,23)" }, { name: "n60We1tw", path: "D:/TeaSpeak/web/shared/js/ui/server.ts (218,23)" }, { name: "xTkdlACq", path: "D:/TeaSpeak/web/shared/js/ui/server.ts (226,23)" }, { name: "dKIgGTUq", path: "D:/TeaSpeak/web/shared/js/ui/server.ts (235,23)" }, { name: "zjiyeNdR", path: "D:/TeaSpeak/web/shared/js/ui/server.ts (238,54)" }, { name: "simVGxCY", path: "D:/TeaSpeak/web/shared/js/ui/server.ts (239,37)" }, { name: "MKb9CCNC", path: "D:/TeaSpeak/web/shared/js/ui/server.ts (257,23)" }, { name: "aUKw1raS", path: "D:/TeaSpeak/web/shared/js/ui/server.ts (262,23)" }, { name: "CDsTVwgK", path: "D:/TeaSpeak/web/shared/js/ui/server.ts (271,70)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -class ServerProperties { - constructor() { - this.virtualserver_host = ""; - this.virtualserver_port = 0; - this.virtualserver_name = ""; - this.virtualserver_name_phonetic = ""; - this.virtualserver_icon_id = 0; - this.virtualserver_version = "unknown"; - this.virtualserver_platform = "unknown"; - this.virtualserver_unique_identifier = ""; - this.virtualserver_clientsonline = 0; - this.virtualserver_queryclientsonline = 0; - this.virtualserver_channelsonline = 0; - this.virtualserver_uptime = 0; - this.virtualserver_created = 0; - this.virtualserver_maxclients = 0; - this.virtualserver_reserved_slots = 0; - this.virtualserver_password = ""; - this.virtualserver_flag_password = false; - this.virtualserver_ask_for_privilegekey = false; - this.virtualserver_welcomemessage = ""; - this.virtualserver_hostmessage = ""; - this.virtualserver_hostmessage_mode = 0; - this.virtualserver_hostbanner_url = ""; - this.virtualserver_hostbanner_gfx_url = ""; - this.virtualserver_hostbanner_gfx_interval = 0; - this.virtualserver_hostbanner_mode = 0; - this.virtualserver_hostbutton_tooltip = ""; - this.virtualserver_hostbutton_url = ""; - this.virtualserver_hostbutton_gfx_url = ""; - this.virtualserver_codec_encryption_mode = 0; - this.virtualserver_default_music_group = 0; - this.virtualserver_default_server_group = 0; - this.virtualserver_default_channel_group = 0; - this.virtualserver_default_channel_admin_group = 0; - //Special requested properties - this.virtualserver_default_client_description = ""; - this.virtualserver_default_channel_description = ""; - this.virtualserver_default_channel_topic = ""; - this.virtualserver_antiflood_points_tick_reduce = 0; - this.virtualserver_antiflood_points_needed_command_block = 0; - this.virtualserver_antiflood_points_needed_ip_block = 0; - this.virtualserver_country_code = "XX"; - this.virtualserver_complain_autoban_count = 0; - this.virtualserver_complain_autoban_time = 0; - this.virtualserver_complain_remove_time = 0; - this.virtualserver_needed_identity_security_level = 8; - this.virtualserver_weblist_enabled = false; - this.virtualserver_min_clients_in_channel_before_forced_silence = 0; - this.virtualserver_channel_temp_delete_delay_default = 60; - this.virtualserver_priority_speaker_dimm_modificator = -18; - this.virtualserver_max_upload_total_bandwidth = 0; - this.virtualserver_upload_quota = 0; - this.virtualserver_max_download_total_bandwidth = 0; - this.virtualserver_download_quota = 0; - this.virtualserver_month_bytes_downloaded = 0; - this.virtualserver_month_bytes_uploaded = 0; - this.virtualserver_total_bytes_downloaded = 0; - this.virtualserver_total_bytes_uploaded = 0; - } -} -class ServerEntry { - constructor(tree, name, address) { - this.info_request_promise = undefined; - this.info_request_promise_resolve = undefined; - this.info_request_promise_reject = undefined; - this.lastInfoRequest = 0; - this.nextInfoRequest = 0; - this._destroyed = false; - this.properties = new ServerProperties(); - this.channelTree = tree; - this.remote_address = Object.assign({}, address); /* close the address because it might get changed due to the DNS resolve */ - this.properties.virtualserver_name = name; - } - get htmlTag() { - if (this._destroyed) - throw "destoryed"; - if (this._htmlTag) - return this._htmlTag; - let tag = $.spawn("div").addClass("tree-entry server"); - /* unread marker */ - { - tag.append($.spawn("div") - .addClass("marker-text-unread hidden") - .attr("conversation", 0)); - } - tag.append($.spawn("div") - .addClass("server_type icon client-server_green")); - tag.append($.spawn("div") - .addClass("name") - .text(this.properties.virtualserver_name)); - tag.append($.spawn("div") - .addClass("icon_property icon_empty")); - return this._htmlTag = tag; - } - destroy() { - this._destroyed = true; - if (this._htmlTag) { - this._htmlTag.remove(); - this._htmlTag = undefined; - } - this.info_request_promise = undefined; - this.info_request_promise_resolve = undefined; - this.info_request_promise_reject = undefined; - this.channelTree = undefined; - this.remote_address = undefined; - } - initializeListener() { - this._htmlTag.on('click', () => { - this.channelTree.onSelect(this); - this.updateProperties(); /* just prepare to show some server info */ - }); - if (!settings.static(Settings.KEY_DISABLE_CONTEXT_MENU, false)) { - this.htmlTag.on("contextmenu", (event) => { - event.preventDefault(); - if ($.isArray(this.channelTree.currently_selected)) { //Multiselect - (this.channelTree.currently_selected_context_callback || ((_) => null))(event); - return; - } - this.channelTree.onSelect(this, true); - this.spawnContextMenu(event.pageX, event.pageY, () => { this.channelTree.onSelect(undefined, true); }); - }); - } - } - spawnContextMenu(x, y, on_close = () => { }) { - let trigger_close = true; - contextmenu.spawn_context_menu(x, y, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.xl5h3fOx || (_translations.xl5h3fOx = tr("Show server info")), - callback: () => { - trigger_close = false; - Modals.openServerInfo(this); - }, - icon_class: "client-about" - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-invite_buddy", - name: _translations.n60We1tw || (_translations.n60We1tw = tr("Invite buddy")), - callback: () => Modals.spawnInviteEditor(this.channelTree.client) - }, { - type: contextmenu.MenuEntryType.HR, - name: '' - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-channel_switch", - name: _translations.xTkdlACq || (_translations.xTkdlACq = tr("Join server text channel")), - callback: () => { - this.channelTree.client.side_bar.channel_conversations().set_current_channel(0); - this.channelTree.client.side_bar.show_channel_conversations(); - }, - visible: !settings.static_global(Settings.KEY_SWITCH_INSTANT_CHAT) - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-virtualserver_edit", - name: _translations.dKIgGTUq || (_translations.dKIgGTUq = tr("Edit")), - callback: () => { - Modals.createServerModal(this, properties => { - log.info(LogCategory.SERVER, _translations.zjiyeNdR || (_translations.zjiyeNdR = tr("Changing server properties %o")), properties); - console.log(_translations.simVGxCY || (_translations.simVGxCY = tr("Changed properties: %o")), properties); - if (properties) { - if (Object.keys(properties)) { - return this.channelTree.client.serverConnection.send_command("serveredit", properties).then(() => { - this.channelTree.client.sound.play(Sound.SERVER_EDITED_SELF); - }); - } - } - return Promise.resolve(); - }); - } - }, { - type: contextmenu.MenuEntryType.HR, - visible: true, - name: '' - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-iconviewer", - name: _translations.MKb9CCNC || (_translations.MKb9CCNC = tr("View icons")), - callback: () => Modals.spawnIconSelect(this.channelTree.client) - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: 'client-iconsview', - name: _translations.aUKw1raS || (_translations.aUKw1raS = tr("View avatars")), - visible: false, - callback: () => Modals.spawnAvatarList(this.channelTree.client) - }, contextmenu.Entry.CLOSE(() => trigger_close ? on_close() : {})); - } - updateVariables(is_self_notify, ...variables) { - let group = log.group(log.LogType.DEBUG, LogCategory.SERVER, _translations.CDsTVwgK || (_translations.CDsTVwgK = tr("Update properties (%i)")), variables.length); - { - const entries = []; - for (const variable of variables) - entries.push({ - key: variable.key, - value: variable.value, - type: typeof (this.properties[variable.key]) - }); - log.table(LogType.DEBUG, LogCategory.PERMISSIONS, "Server update properties", entries); - } - let update_bannner = false, update_button = false; - for (let variable of variables) { - JSON.map_field_to(this.properties, variable.value, variable.key); - if (variable.key == "virtualserver_name") { - this.htmlTag.find(".name").text(variable.value); - this.channelTree.client.tag_connection_handler.find(".server-name").text(variable.value); - server_connections.update_ui(); - } - else if (variable.key == "virtualserver_icon_id") { - /* For more detail lookup client::updateVariables and client_icon_id! - * ATTENTION: This is required! - */ - this.properties.virtualserver_icon_id = variable.value >>> 0; - const bmarks = bookmarks.bookmarks_flat() - .filter(e => e.server_properties.server_address === this.remote_address.host && e.server_properties.server_port == this.remote_address.port) - .filter(e => e.last_icon_id !== this.properties.virtualserver_icon_id); - if (bmarks.length > 0) { - bmarks.forEach(e => { - e.last_icon_id = this.properties.virtualserver_icon_id; - }); - bookmarks.save_bookmark(); - top_menu.rebuild_bookmarks(); - control_bar.update_bookmarks(); - } - if (this.channelTree.client.fileManager && this.channelTree.client.fileManager.icons) - this.htmlTag.find(".icon_property").replaceWith(this.channelTree.client.fileManager.icons.generateTag(this.properties.virtualserver_icon_id).addClass("icon_property")); - } - else if (variable.key.indexOf('hostbanner') != -1) { - update_bannner = true; - } - else if (variable.key.indexOf('hostbutton') != -1) { - update_button = true; - } - } - if (update_bannner) - this.channelTree.client.hostbanner.update(); - if (update_button) - if (control_bar.current_connection_handler() === this.channelTree.client) - control_bar.apply_server_hostbutton(); - group.end(); - if (is_self_notify && this.info_request_promise_resolve) { - this.info_request_promise_resolve(); - this.info_request_promise = undefined; - this.info_request_promise_reject = undefined; - this.info_request_promise_resolve = undefined; - } - connection_log.update_address_info({ - hostname: this.remote_address.host, - port: this.remote_address.port - }, { - clients_online: this.properties.virtualserver_clientsonline, - clients_total: this.properties.virtualserver_maxclients, - country: this.properties.virtualserver_country_code, - flag_password: this.properties.virtualserver_flag_password, - name: this.properties.virtualserver_name, - icon_id: this.properties.virtualserver_icon_id, - password_hash: undefined /* we've here no clue */ - }); - } - /* this result !must! be cached for at least a second */ - updateProperties() { - if (this.info_request_promise && Date.now() - this.lastInfoRequest < 1000) - return this.info_request_promise; - this.lastInfoRequest = Date.now(); - this.nextInfoRequest = this.lastInfoRequest + 10 * 1000; - this.channelTree.client.serverConnection.send_command("servergetvariables").catch(error => { - this.info_request_promise_reject(error); - this.info_request_promise = undefined; - this.info_request_promise_reject = undefined; - this.info_request_promise_resolve = undefined; - }); - return this.info_request_promise = new Promise((resolve, reject) => { - this.info_request_promise_reject = reject; - this.info_request_promise_resolve = resolve; - }); - } - /* max 1s ago, so we could update every second */ - request_connection_info() { - if (Date.now() - 900 < this._info_connection_promise_timestamp && this._info_connection_promise) - return this._info_connection_promise; - if (this._info_connection_promise_reject) - this._info_connection_promise_resolve("timeout"); - let _local_reject; /* to ensure we're using the right resolve! */ - this._info_connection_promise = new Promise((resolve, reject) => { - this._info_connection_promise_resolve = resolve; - this._info_connection_promise_reject = reject; - _local_reject = reject; - }); - this._info_connection_promise_timestamp = Date.now(); - this.channelTree.client.serverConnection.send_command("serverrequestconnectioninfo", {}, { process_result: false }).catch(error => _local_reject(error)); - return this._info_connection_promise; - } - set_connection_info(info) { - if (!this._info_connection_promise_resolve) - return; - this._info_connection_promise_resolve(info); - this._info_connection_promise_resolve = undefined; - this._info_connection_promise_reject = undefined; - } - shouldUpdateProperties() { - return this.nextInfoRequest < Date.now(); - } - calculateUptime() { - if (this.properties.virtualserver_uptime == 0 || this.lastInfoRequest == 0) - return this.properties.virtualserver_uptime; - return this.properties.virtualserver_uptime + (new Date().getTime() - this.lastInfoRequest) / 1000; - } - set flag_text_unread(flag) { - this._htmlTag.find(".marker-text-unread").toggleClass("hidden", !flag); - } -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["5e6667919c371c71e6b16bc446ba82c5a2073d295e0e7274d5af19bf6357bc7c"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["5e6667919c371c71e6b16bc446ba82c5a2073d295e0e7274d5af19bf6357bc7c"] = "5e6667919c371c71e6b16bc446ba82c5a2073d295e0e7274d5af19bf6357bc7c"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "m49fBygK", path: "D:/TeaSpeak/web/shared/js/bookmarks.ts (98,46)" }, { name: "wwys9akP", path: "D:/TeaSpeak/web/shared/js/bookmarks.ts (241,30)" }, { name: "i7HT3n9l", path: "D:/TeaSpeak/web/shared/js/bookmarks.ts (241,58)" }, { name: "CSYw4ecH", path: "D:/TeaSpeak/web/shared/js/bookmarks.ts (255,37)" }, { name: "OpoQAmLI", path: "D:/TeaSpeak/web/shared/js/bookmarks.ts (255,57)" }, { name: "pLzs3OvD", path: "D:/TeaSpeak/web/shared/js/bookmarks.ts (259,30)" }, { name: "I6qHm5Vw", path: "D:/TeaSpeak/web/shared/js/bookmarks.ts (259,62)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var bookmarks; -(function (bookmarks_1) { - function guid() { - function s4() { - return Math - .floor((1 + Math.random()) * 0x10000) - .toString(16) - .substring(1); - } - return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); - } - bookmarks_1.boorkmak_connect = (mark, new_tab) => { - const profile = profiles.find_profile(mark.connect_profile) || profiles.default_profile(); - if (profile.valid()) { - const connection = (typeof (new_tab) !== "boolean" || !new_tab) ? server_connections.active_connection_handler() : server_connections.spawn_server_connection_handler(); - server_connections.set_active_connection_handler(connection); - connection.startConnection(mark.server_properties.server_address + ":" + mark.server_properties.server_port, profile, true, { - nickname: mark.nickname === "Another TeaSpeak user" || !mark.nickname ? profile.connect_username() : mark.nickname, - password: mark.server_properties.server_password_hash ? { - password: mark.server_properties.server_password_hash, - hashed: true - } : mark.server_properties.server_password ? { - hashed: false, - password: mark.server_properties.server_password - } : undefined - }); - } - else { - Modals.spawnConnectModal({}, { - url: mark.server_properties.server_address + ":" + mark.server_properties.server_port, - enforce: true - }, { - profile: profile, - enforce: true - }); - } - }; - let BookmarkType; - (function (BookmarkType) { - BookmarkType[BookmarkType["ENTRY"] = 0] = "ENTRY"; - BookmarkType[BookmarkType["DIRECTORY"] = 1] = "DIRECTORY"; - })(BookmarkType = bookmarks_1.BookmarkType || (bookmarks_1.BookmarkType = {})); - let _bookmark_config; - function bookmark_config() { - if (_bookmark_config) - return _bookmark_config; - let bookmark_json = localStorage.getItem("bookmarks"); - let bookmarks; - try { - bookmarks = JSON.parse(bookmark_json) || {}; - } - catch (error) { - log.error(LogCategory.BOOKMARKS, _translations.m49fBygK || (_translations.m49fBygK = tr("Failed to load bookmarks: %o")), error); - bookmarks = {}; - } - _bookmark_config = bookmarks; - _bookmark_config.root_bookmark = _bookmark_config.root_bookmark || { content: [], display_name: "root", type: BookmarkType.DIRECTORY }; - if (!_bookmark_config.default_added) { - _bookmark_config.default_added = true; - create_bookmark("TeaSpeak official Test-Server", _bookmark_config.root_bookmark, { - server_address: "ts.teaspeak.de", - server_port: 9987 - }, undefined); - save_config(); - } - const fix_parent = (parent, entry) => { - entry.parent = parent; - if (entry.type === BookmarkType.DIRECTORY) - for (const child of entry.content) - fix_parent(entry, child); - }; - for (const entry of _bookmark_config.root_bookmark.content) - fix_parent(_bookmark_config.root_bookmark, entry); - return _bookmark_config; - } - function save_config() { - localStorage.setItem("bookmarks", JSON.stringify(bookmark_config(), (key, value) => { - if (key === "parent") - return undefined; - return value; - })); - } - function bookmarks() { - return bookmark_config().root_bookmark; - } - bookmarks_1.bookmarks = bookmarks; - function bookmarks_flat() { - const result = []; - const _flat = (bookmark) => { - if (bookmark.type == BookmarkType.DIRECTORY) - for (const book of bookmark.content) - _flat(book); - else - result.push(bookmark); - }; - _flat(bookmark_config().root_bookmark); - return result; - } - bookmarks_1.bookmarks_flat = bookmarks_flat; - function find_bookmark_recursive(parent, uuid) { - for (const entry of parent.content) { - if (entry.unique_id == uuid) - return entry; - if (entry.type == BookmarkType.DIRECTORY) { - const result = find_bookmark_recursive(entry, uuid); - if (result) - return result; - } - } - return undefined; - } - function find_bookmark(uuid) { - return find_bookmark_recursive(bookmarks(), uuid); - } - bookmarks_1.find_bookmark = find_bookmark; - function parent_bookmark(bookmark) { - const books = [bookmarks()]; - while (!books.length) { - const directory = books.pop_front(); - if (directory.type == BookmarkType.DIRECTORY) { - const cast = directory; - if (cast.content.indexOf(bookmark) != -1) - return cast; - books.push(...cast.content); - } - } - return bookmarks(); - } - bookmarks_1.parent_bookmark = parent_bookmark; - function create_bookmark(display_name, directory, server_properties, nickname) { - const bookmark = { - display_name: display_name, - server_properties: server_properties, - nickname: nickname, - type: BookmarkType.ENTRY, - connect_profile: "default", - unique_id: guid(), - parent: directory - }; - directory.content.push(bookmark); - return bookmark; - } - bookmarks_1.create_bookmark = create_bookmark; - function create_bookmark_directory(parent, name) { - const bookmark = { - type: BookmarkType.DIRECTORY, - display_name: name, - content: [], - unique_id: guid(), - parent: parent - }; - parent.content.push(bookmark); - return bookmark; - } - bookmarks_1.create_bookmark_directory = create_bookmark_directory; - //TODO test if the new parent is within the old bookmark - function change_directory(parent, bookmark) { - delete_bookmark(bookmark); - parent.content.push(bookmark); - } - bookmarks_1.change_directory = change_directory; - function save_bookmark(bookmark) { - save_config(); /* nvm we dont give a fuck... saving everything */ - } - bookmarks_1.save_bookmark = save_bookmark; - function delete_bookmark_recursive(parent, bookmark) { - const index = parent.content.indexOf(bookmark); - if (index != -1) - parent.content.remove(bookmark); - else - for (const entry of parent.content) - if (entry.type == BookmarkType.DIRECTORY) - delete_bookmark_recursive(entry, bookmark); - } - function delete_bookmark(bookmark) { - delete_bookmark_recursive(bookmarks(), bookmark); - } - bookmarks_1.delete_bookmark = delete_bookmark; - function add_current_server() { - const ch = server_connections.active_connection_handler(); - if (ch && ch.connected) { - const ce = ch.getClient(); - const name = ce ? ce.clientNickName() : undefined; - createInputModal(_translations.wwys9akP || (_translations.wwys9akP = tr("Enter bookmarks name")), _translations.i7HT3n9l || (_translations.i7HT3n9l = tr("Please enter the bookmarks name:
")), text => text.length > 0, result => { - if (result) { - const bookmark = create_bookmark(result, bookmarks(), { - server_port: ch.serverConnection.remote_address().port, - server_address: ch.serverConnection.remote_address().host, - server_password: "", - server_password_hash: "" - }, name); - save_bookmark(bookmark); - control_bar.update_bookmarks(); - top_menu.rebuild_bookmarks(); - createInfoModal(_translations.CSYw4ecH || (_translations.CSYw4ecH = tr("Server added")), _translations.OpoQAmLI || (_translations.OpoQAmLI = tr("Server has been successfully added to your bookmarks."))).open(); - } - }).open(); - } - else { - createErrorModal(_translations.pLzs3OvD || (_translations.pLzs3OvD = tr("You have to be connected")), _translations.I6qHm5Vw || (_translations.I6qHm5Vw = tr("You have to be connected!"))).open(); - } - } - bookmarks_1.add_current_server = add_current_server; -})(bookmarks || (bookmarks = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["018fe975688693bb1725f14cbed0da456c9f39bf59179b3ef5c42e2f016eafb3"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["018fe975688693bb1725f14cbed0da456c9f39bf59179b3ef5c42e2f016eafb3"] = "018fe975688693bb1725f14cbed0da456c9f39bf59179b3ef5c42e2f016eafb3"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "Ng2RgJmg", path: "D:/TeaSpeak/web/shared/js/ui/elements/context_menu.ts (58,27)" }, { name: "RN9mTViM", path: "D:/TeaSpeak/web/shared/js/ui/elements/context_menu.ts (94,31)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var contextmenu; -(function (contextmenu) { - let MenuEntryType; - (function (MenuEntryType) { - MenuEntryType[MenuEntryType["CLOSE"] = 0] = "CLOSE"; - MenuEntryType[MenuEntryType["ENTRY"] = 1] = "ENTRY"; - MenuEntryType[MenuEntryType["CHECKBOX"] = 2] = "CHECKBOX"; - MenuEntryType[MenuEntryType["HR"] = 3] = "HR"; - MenuEntryType[MenuEntryType["SUB_MENU"] = 4] = "SUB_MENU"; - })(MenuEntryType = contextmenu.MenuEntryType || (contextmenu.MenuEntryType = {})); - class Entry { - static HR() { - return { - callback: () => { }, - type: MenuEntryType.HR, - name: "", - icon: "" - }; - } - ; - static CLOSE(callback) { - return { - callback: callback, - type: MenuEntryType.CLOSE, - name: "", - icon: "" - }; - } - } - contextmenu.Entry = Entry; - let provider; - function spawn_context_menu(x, y, ...entries) { - if (!provider) { - console.error(_translations.Ng2RgJmg || (_translations.Ng2RgJmg = tr("Failed to spawn context menu! Missing provider!"))); - return; - } - provider.spawn_context_menu(x, y, ...entries); - } - contextmenu.spawn_context_menu = spawn_context_menu; - function despawn_context_menu() { - if (!provider) - return; - provider.despawn_context_menu(); - } - contextmenu.despawn_context_menu = despawn_context_menu; - function get_provider() { return provider; } - contextmenu.get_provider = get_provider; - function set_provider(_provider) { - provider = _provider; - provider.initialize(); - } - contextmenu.set_provider = set_provider; -})(contextmenu || (contextmenu = {})); -class HTMLContextMenuProvider { - constructor() { - this._close_callbacks = []; - this._visible = false; - } - despawn_context_menu() { - if (!this._visible) - return; - let menu = this._context_menu || (this._context_menu = $(".context-menu")); - menu.animate({ opacity: 0 }, 100, () => menu.css("display", "none")); - this._visible = false; - for (const callback of this._close_callbacks) { - if (typeof (callback) !== "function") { - console.error(_translations.RN9mTViM || (_translations.RN9mTViM = tr("Given close callback is not a function!. Callback: %o")), callback); - continue; - } - callback(); - } - this._close_callbacks = []; - } - finalize() { - $(document).unbind('click', this._global_click_listener); - } - initialize() { - this._global_click_listener = this.on_global_click.bind(this); - $(document).bind('click', this._global_click_listener); - } - on_global_click(event) { - //let menu = this._context_menu || (this._context_menu = $(".context-menu")); - if (!this._visible) - return; - if ($(event.target).parents(".context-menu").length == 0) { - this.despawn_context_menu(); - event.preventDefault(); - } - } - generate_tag(entry) { - if (entry.type == contextmenu.MenuEntryType.HR) { - return $.spawn("hr"); - } - else if (entry.type == contextmenu.MenuEntryType.ENTRY) { - let icon = entry.icon_class; - if (!icon || icon.length == 0) - icon = "icon_empty"; - else - icon = "icon " + icon; - let tag = $.spawn("div").addClass("entry"); - tag.append($.spawn("div").addClass(icon)); - tag.append($.spawn("div").html($.isFunction(entry.name) ? entry.name() : entry.name)); - if (entry.disabled || entry.invalidPermission) - tag.addClass("disabled"); - else { - tag.on('click', () => { - if ($.isFunction(entry.callback)) - entry.callback(); - entry.callback = undefined; /* for some reason despawn_context_menu() causes a second click event? */ - this.despawn_context_menu(); - }); - } - return tag; - } - else if (entry.type == contextmenu.MenuEntryType.CHECKBOX) { - let checkbox = $.spawn("label").addClass("ccheckbox"); - $.spawn("input").attr("type", "checkbox").prop("checked", !!entry.checkbox_checked).appendTo(checkbox); - $.spawn("span").addClass("checkmark").appendTo(checkbox); - let tag = $.spawn("div").addClass("entry"); - tag.append(checkbox); - tag.append($.spawn("div").html($.isFunction(entry.name) ? entry.name() : entry.name)); - if (entry.disabled || entry.invalidPermission) - tag.addClass("disabled"); - else { - tag.on('click', () => { - if ($.isFunction(entry.callback)) - entry.callback(); - entry.callback = undefined; /* for some reason despawn_context_menu() causes a second click event? */ - this.despawn_context_menu(); - }); - } - return tag; - } - else if (entry.type == contextmenu.MenuEntryType.SUB_MENU) { - let icon = entry.icon_class; - if (!icon || icon.length == 0) - icon = "icon_empty"; - else - icon = "icon " + icon; - let tag = $.spawn("div").addClass("entry").addClass("sub-container"); - tag.append($.spawn("div").addClass(icon)); - tag.append($.spawn("div").html($.isFunction(entry.name) ? entry.name() : entry.name)); - tag.append($.spawn("div").addClass("arrow right")); - if (entry.disabled || entry.invalidPermission) - tag.addClass("disabled"); - else { - let menu = $.spawn("div").addClass("sub-menu").addClass("context-menu-container"); - for (const e of entry.sub_menu) { - if (typeof (entry.visible) === 'boolean' && !entry.visible) - continue; - menu.append(this.generate_tag(e)); - } - menu.appendTo(tag); - } - return tag; - } - return $.spawn("div").text("undefined"); - } - spawn_context_menu(x, y, ...entries) { - this._visible = true; - let menu_tag = this._context_menu || (this._context_menu = $(".context-menu")); - menu_tag.finish().empty().css("opacity", "0"); - const menu_container = $.spawn("div").addClass("context-menu-container"); - this._close_callbacks = []; - for (const entry of entries) { - if (typeof (entry.visible) === 'boolean' && !entry.visible) - continue; - if (entry.type == contextmenu.MenuEntryType.CLOSE) { - if (entry.callback) - this._close_callbacks.push(entry.callback); - } - else - menu_container.append(this.generate_tag(entry)); - } - menu_tag.append(menu_container); - menu_tag.animate({ opacity: 1 }, 100).css("display", "block"); - const width = menu_container.visible_width(); - if (x + width + 5 > window.innerWidth) - menu_container.addClass("left"); - // In the right position (the mouse) - menu_tag.css({ - "top": y + "px", - "left": x + "px" - }); - } - html_format_enabled() { - return true; - } -} -contextmenu.set_provider(new HTMLContextMenuProvider()); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["a1623e51d6c35dbe60874645b6eef1afcb564cc0ae6cd3c8ed09e710029bd1d4"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["a1623e51d6c35dbe60874645b6eef1afcb564cc0ae6cd3c8ed09e710029bd1d4"] = "a1623e51d6c35dbe60874645b6eef1afcb564cc0ae6cd3c8ed09e710029bd1d4"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "X2HpQ_9N", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalCreateChannel.ts (7,31)" }, { name: "RinYtSD0", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalCreateChannel.ts (7,52)" }, { name: "M3qtba3_", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalCreateChannel.ts (79,56)" }, { name: "XMi8o_cF", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalCreateChannel.ts (86,25)" }, { name: "JtIjuu6P", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalCreateChannel.ts (187,29)" }, { name: "QNuA03ZM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalCreateChannel.ts (423,33)" }, { name: "_AdLCqU0", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalCreateChannel.ts (434,33)" }, { name: "F527rAOv", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalCreateChannel.ts (467,33)" }, { name: "ljiyqr1d", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalCreateChannel.ts (480,33)" }, { name: "TKSMPptf", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalCreateChannel.ts (490,44)" }, { name: "I5FeAjFN", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalCreateChannel.ts (506,56)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -var Modals; -(function (Modals) { - function createChannelModal(connection, channel, parent, permissions, callback) { - let properties = {}; //The changes properties - const modal = createModal({ - header: channel ? _translations.X2HpQ_9N || (_translations.X2HpQ_9N = tr("Edit channel")) : _translations.RinYtSD0 || (_translations.RinYtSD0 = tr("Create channel")), - body: () => { - const render_properties = {}; - Object.assign(render_properties, channel ? channel.properties : { - channel_flag_maxfamilyclients_unlimited: true, - channel_flag_maxclients_unlimited: true, - }); - render_properties["channel_icon_tab"] = connection.fileManager.icons.generateTag(channel ? channel.properties.channel_icon_id : 0); - render_properties["channel_icon_general"] = connection.fileManager.icons.generateTag(channel ? channel.properties.channel_icon_id : 0); - render_properties["create"] = !channel; - let template = $("#tmpl_channel_edit").renderTag(render_properties); - /* the tab functionality */ - { - const container_tabs = template.find(".container-advanced"); - container_tabs.find(".categories .entry").on('click', event => { - const entry = $(event.target); - container_tabs.find(".bodies > .body").addClass("hidden"); - container_tabs.find(".categories > .selected").removeClass("selected"); - entry.addClass("selected"); - container_tabs.find(".bodies > .body." + entry.attr("container")).removeClass("hidden"); - }); - container_tabs.find(".entry").first().trigger('click'); - } - /* Advanced/normal switch */ - { - const input = template.find(".input-advanced-mode"); - const container_mode = template.find(".mode-container"); - const container_advanced = container_mode.find(".container-advanced"); - const container_simple = container_mode.find(".container-simple"); - input.on('change', event => { - const advanced = input.prop("checked"); - settings.changeGlobal(Settings.KEY_CHANNEL_EDIT_ADVANCED, advanced); - container_mode.css("overflow", "hidden"); - container_advanced.show().toggleClass("hidden", !advanced); - container_simple.show().toggleClass("hidden", advanced); - setTimeout(() => { - container_advanced.toggle(advanced); - container_simple.toggle(!advanced); - container_mode.css("overflow", "visible"); - }, 300); - }).prop("checked", settings.static_global(Settings.KEY_CHANNEL_EDIT_ADVANCED)).trigger('change'); - } - return template.tabify().children(); /* the "render" div */ - }, - footer: null, - width: 500 - }); - modal.htmlTag.find(".modal-body").addClass("modal-channel modal-blue"); - applyGeneralListener(connection, properties, modal.htmlTag.find(".container-general"), modal.htmlTag.find(".button_ok"), channel); - applyStandardListener(connection, properties, modal.htmlTag.find(".container-standard"), modal.htmlTag.find(".container-simple"), parent, channel); - applyPermissionListener(connection, properties, modal.htmlTag.find(".container-permissions"), modal.htmlTag.find(".button_ok"), permissions, channel); - applyAudioListener(connection, properties, modal.htmlTag.find(".container-audio"), modal.htmlTag.find(".container-simple"), channel); - applyAdvancedListener(connection, properties, modal.htmlTag.find(".container-misc"), modal.htmlTag.find(".button_ok"), channel); - let updated = []; - modal.htmlTag.find(".button_ok").click(() => { - modal.htmlTag.find(".container-permissions").find("input[permission]").each((index, _element) => { - let element = $(_element); - if (element.val() == element.attr("original-value")) - return; - let permission = permissions.resolveInfo(element.attr("permission")); - if (!permission) { - log.error(LogCategory.PERMISSIONS, _translations.M3qtba3_ || (_translations.M3qtba3_ = tr("Failed to resolve channel permission for name %o")), element.attr("permission")); - element.prop("disabled", true); - return; - } - updated.push(new PermissionValue(permission, element.val())); - }); - console.log(_translations.XMi8o_cF || (_translations.XMi8o_cF = tr("Updated permissions %o")), updated); - }).click(() => { - modal.close(); - for (const key of Object.keys(channel ? channel.properties : {})) - if (channel.properties[key] == properties[key]) - delete properties[key]; - callback(properties, updated); //First may create the channel - }); - tooltip(modal.htmlTag); - modal.htmlTag.find(".button_cancel").click(() => { - modal.close(); - callback(); - }); - modal.open(); - if (!channel) - modal.htmlTag.find(".channel_name").focus(); - } - Modals.createChannelModal = createChannelModal; - function applyGeneralListener(connection, properties, tag, button, channel) { - let updateButton = () => { - const status = tag.find(".input_error").length != 0; - console.log("Disabled: %o", status); - button.prop("disabled", status); - }; - { - const channel_name = tag.find(".channel_name"); - tag.find(".channel_name").on('change keyup', function () { - properties.channel_name = this.value; - channel_name.toggleClass("input_error", this.value.length < 1 || this.value.length > 40); - updateButton(); - }).prop("disabled", channel && !connection.permissions.neededPermission(PermissionType.B_CHANNEL_MODIFY_NAME).granted(1)); - } - tag.find(".button-select-icon").on('click', event => { - Modals.spawnIconSelect(connection, id => { - const icon_node = tag.find(".icon-preview"); - icon_node.children().remove(); - icon_node.append(connection.fileManager.icons.generateTag(id)); - console.log("Selected icon ID: %d", id); - properties.channel_icon_id = id; - }, channel ? channel.properties.channel_icon_id : 0); - }); - tag.find(".button-icon-remove").on('click', event => { - const icon_node = tag.find(".icon-preview"); - icon_node.children().remove(); - icon_node.append(connection.fileManager.icons.generateTag(0)); - console.log("Remove channel icon"); - properties.channel_icon_id = 0; - }); - { - const channel_password = tag.find(".channel_password"); - tag.find(".channel_password").change(function () { - properties.channel_flag_password = this.value.length != 0; - if (properties.channel_flag_password) - helpers.hashPassword(this.value).then(pass => properties.channel_password = pass); - channel_password.removeClass("input_error"); - if (!properties.channel_flag_password) - if (connection.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_MODIFY_WITH_FORCE_PASSWORD).granted(1)) - channel_password.addClass("input_error"); - updateButton(); - }).prop("disabled", !connection.permissions.neededPermission(!channel ? PermissionType.B_CHANNEL_CREATE_WITH_PASSWORD : PermissionType.B_CHANNEL_MODIFY_PASSWORD).granted(1)); - } - tag.find(".channel_topic").change(function () { - properties.channel_topic = this.value; - }).prop("disabled", !connection.permissions.neededPermission(!channel ? PermissionType.B_CHANNEL_CREATE_WITH_TOPIC : PermissionType.B_CHANNEL_MODIFY_TOPIC).granted(1)); - { - const container = tag.find(".container-description"); - const input = container.find("textarea"); - const insert_tag = (open, close) => { - if (input.prop("disabled")) - return; - const node = input[0]; - if (node.selectionStart || node.selectionStart == 0) { - const startPos = node.selectionStart; - const endPos = node.selectionEnd; - node.value = node.value.substring(0, startPos) + open + node.value.substring(startPos, endPos) + close + node.value.substring(endPos); - node.selectionEnd = endPos + open.length; - node.selectionStart = node.selectionEnd; - } - else { - node.value += open + close; - node.selectionEnd = node.value.length - close.length; - node.selectionStart = node.selectionEnd; - } - input.focus().trigger('change'); - }; - input.on('change', event => { - console.log(_translations.JtIjuu6P || (_translations.JtIjuu6P = tr("Channel description edited: %o")), input.val()); - properties.channel_description = input.val(); - }); - container.find(".button-bold").on('click', () => insert_tag('[b]', '[/b]')); - container.find(".button-italic").on('click', () => insert_tag('[i]', '[/i]')); - container.find(".button-underline").on('click', () => insert_tag('[u]', '[/u]')); - container.find(".button-color input").on('change', event => { - insert_tag('[color=' + event.target.value + ']', '[/color]'); - }); - } - tag.find(".channel_description").change(function () { - properties.channel_description = this.value; - }).prop("disabled", !connection.permissions.neededPermission(!channel ? PermissionType.B_CHANNEL_CREATE_WITH_DESCRIPTION : PermissionType.B_CHANNEL_MODIFY_DESCRIPTION).granted(1)); - if (!channel) { - setTimeout(() => { - tag.find(".channel_name").trigger("change"); - tag.find(".channel_password").trigger('change'); - }, 0); - } - } - function applyStandardListener(connection, properties, tag, simple, parent, channel) { - /* Channel type */ - { - const input_advanced_type = tag.find("input[name='channel_type']"); - let _in_update = false; - const update_simple_type = () => { - if (_in_update) - return; - let type; - if (properties.channel_flag_default || (typeof (properties.channel_flag_default) === "undefined" && channel && channel.properties.channel_flag_default)) - type = "def"; - else if (properties.channel_flag_permanent || (typeof (properties.channel_flag_permanent) === "undefined" && channel && channel.properties.channel_flag_permanent)) - type = "perm"; - else if (properties.channel_flag_semi_permanent || (typeof (properties.channel_flag_semi_permanent) === "undefined" && channel && channel.properties.channel_flag_semi_permanent)) - type = "semi"; - else - type = "temp"; - simple.find("option[name='channel-type'][value='" + type + "']").prop("selected", true); - }; - input_advanced_type.on('change', event => { - const value = [...input_advanced_type].find(e => e.checked).value; - switch (value) { - case "semi": - properties.channel_flag_permanent = false; - properties.channel_flag_semi_permanent = true; - break; - case "perm": - properties.channel_flag_permanent = true; - properties.channel_flag_semi_permanent = false; - break; - default: - properties.channel_flag_permanent = false; - properties.channel_flag_semi_permanent = false; - break; - } - update_simple_type(); - }); - const permission_temp = connection.permissions.neededPermission(!channel ? PermissionType.B_CHANNEL_CREATE_TEMPORARY : PermissionType.B_CHANNEL_MODIFY_MAKE_TEMPORARY).granted(1); - const permission_semi = connection.permissions.neededPermission(!channel ? PermissionType.B_CHANNEL_CREATE_SEMI_PERMANENT : PermissionType.B_CHANNEL_MODIFY_MAKE_SEMI_PERMANENT).granted(1); - const permission_perm = connection.permissions.neededPermission(!channel ? PermissionType.B_CHANNEL_CREATE_PERMANENT : PermissionType.B_CHANNEL_MODIFY_MAKE_PERMANENT).granted(1); - const permission_default = connection.permissions.neededPermission(!channel ? PermissionType.B_CHANNEL_CREATE_PERMANENT : PermissionType.B_CHANNEL_MODIFY_MAKE_PERMANENT).granted(1) && - connection.permissions.neededPermission(!channel ? PermissionType.B_CHANNEL_CREATE_WITH_DEFAULT : PermissionType.B_CHANNEL_MODIFY_MAKE_DEFAULT).granted(1); - /* advanced type listeners */ - const container_types = tag.find(".container-channel-type"); - const tag_type_temp = container_types.find(".type-temp"); - const tag_type_semi = container_types.find(".type-semi"); - const tag_type_perm = container_types.find(".type-perm"); - const select_default = tag.find(".input-flag-default"); - { - select_default.on('change', event => { - const node = select_default[0]; - properties.channel_flag_default = node.checked; - if (node.checked) - tag_type_perm.find("input").prop("checked", true); - tag_type_temp - .toggleClass("disabled", node.checked || !permission_temp) - .find("input").prop("disabled", node.checked || !permission_temp); - tag_type_semi - .toggleClass("disabled", node.checked || !permission_semi) - .find("input").prop("disabled", node.checked || !permission_semi); - tag_type_perm - .toggleClass("disabled", node.checked || !permission_perm) - .find("input").prop("disabled", node.checked || !permission_perm); - update_simple_type(); - }).prop("disabled", !permission_default).trigger('change').parent().toggleClass("disabled", !permission_default); - } - /* simple */ - { - simple.find("option[name='channel-type'][value='def']").prop("disabled", !permission_default); - simple.find("option[name='channel-type'][value='perm']").prop("disabled", !permission_perm); - simple.find("option[name='channel-type'][value='semi']").prop("disabled", !permission_semi); - simple.find("option[name='channel-type'][value='temp']").prop("disabled", !permission_temp); - simple.find("select[name='channel-type']").on('change', event => { - try { - _in_update = true; - switch (event.target.value) { - case "temp": - properties.channel_flag_permanent = false; - properties.channel_flag_semi_permanent = false; - properties.channel_flag_default = false; - select_default.prop("checked", false).trigger('change'); - tag_type_temp.trigger('click'); - break; - case "semi": - properties.channel_flag_permanent = false; - properties.channel_flag_semi_permanent = true; - properties.channel_flag_default = false; - select_default.prop("checked", false).trigger('change'); - tag_type_semi.trigger('click'); - break; - case "perm": - properties.channel_flag_permanent = true; - properties.channel_flag_semi_permanent = false; - properties.channel_flag_default = false; - select_default.prop("checked", false).trigger('change'); - tag_type_perm.trigger('click'); - break; - case "def": - properties.channel_flag_permanent = true; - properties.channel_flag_semi_permanent = false; - properties.channel_flag_default = true; - select_default.prop("checked", true).trigger('change'); - break; - } - } - finally { - _in_update = false; - /* We dont need to update the simple type because we changed the advanced part to the just changed simple part */ - //update_simple_type(); - } - }); - } - /* init */ - setTimeout(() => { - if (!channel) { - if (permission_perm) - tag_type_perm.find("input").trigger('click'); - else if (permission_semi) - tag_type_semi.find("input").trigger('click'); - else - tag_type_temp.find("input").trigger('click'); - } - else { - if (channel.properties.channel_flag_permanent) - tag_type_perm.find("input").trigger('click'); - else if (channel.properties.channel_flag_semi_permanent) - tag_type_semi.find("input").trigger('click'); - else - tag_type_temp.find("input").trigger('click'); - } - }, 0); - } - /* Talk power */ - { - const permission = connection.permissions.neededPermission(!channel ? PermissionType.B_CHANNEL_CREATE_WITH_NEEDED_TALK_POWER : PermissionType.B_CHANNEL_MODIFY_NEEDED_TALK_POWER).granted(1); - const input_advanced = tag.find("input[name='talk_power']").prop("disabled", !permission); - const input_simple = simple.find("input[name='talk_power']").prop("disabled", !permission); - input_advanced.on('change', event => { - properties.channel_needed_talk_power = parseInt(input_advanced.val()); - input_simple.val(input_advanced.val()); - }); - input_simple.on('change', event => { - properties.channel_needed_talk_power = parseInt(input_simple.val()); - input_advanced.val(input_simple.val()); - }); - } - /* Channel order */ - { - const permission = connection.permissions.neededPermission(!channel ? PermissionType.B_CHANNEL_CREATE_WITH_SORTORDER : PermissionType.B_CHANNEL_MODIFY_SORTORDER).granted(1); - const advanced_order_id = tag.find(".order_id").prop("disabled", !permission); - const simple_order_id = simple.find(".order_id").prop("disabled", !permission); - for (let previous_channel of (parent ? parent.children() : connection.channelTree.rootChannel())) { - let selected = channel && channel.properties.channel_order == previous_channel.channelId; - $.spawn("option").attr("channelId", previous_channel.channelId.toString()).prop("selected", selected).text(previous_channel.channelName()).appendTo(advanced_order_id); - $.spawn("option").attr("channelId", previous_channel.channelId.toString()).prop("selected", selected).text(previous_channel.channelName()).appendTo(simple_order_id); - } - advanced_order_id.on('change', event => { - simple_order_id[0].selectedIndex = advanced_order_id[0].selectedIndex; - const selected = $(advanced_order_id[0].options.item(advanced_order_id[0].selectedIndex)); - properties.channel_order = parseInt(selected.attr("channelId")); - }); - simple_order_id.on('change', event => { - advanced_order_id[0].selectedIndex = simple_order_id[0].selectedIndex; - const selected = $(simple_order_id[0].options.item(simple_order_id[0].selectedIndex)); - properties.channel_order = parseInt(selected.attr("channelId")); - }); - } - /* Advanced only */ - { - const container_max_users = tag.find(".container-max-users"); - const container_unlimited = container_max_users.find(".container-unlimited"); - const container_limited = container_max_users.find(".container-limited"); - const input_unlimited = container_unlimited.find("input[value='unlimited']"); - const input_limited = container_limited.find("input[value='limited']"); - const input_limit = container_limited.find(".channel_maxclients"); - const permission = connection.permissions.neededPermission(!channel ? PermissionType.B_CHANNEL_CREATE_WITH_MAXCLIENTS : PermissionType.B_CHANNEL_MODIFY_MAXCLIENTS).granted(1); - if (!permission) { - input_unlimited.prop("disabled", true); - input_limited.prop("disabled", true); - input_limit.prop("disabled", true); - container_limited.addClass("disabled"); - container_unlimited.addClass("disabled"); - } - else { - container_max_users.find("input[name='max_users']").on('change', event => { - const node = event.target; - console.log(_translations.QNuA03ZM || (_translations.QNuA03ZM = tr("Channel max user mode: %o")), node.value); - const flag = node.value === "unlimited"; - input_limit - .prop("disabled", flag) - .parent().toggleClass("disabled", flag); - properties.channel_flag_maxclients_unlimited = flag; - }); - input_limit.on('change', event => { - properties.channel_maxclients = parseInt(input_limit.val()); - console.log(_translations._AdLCqU0 || (_translations._AdLCqU0 = tr("Changed max user limit to %o")), properties.channel_maxclients); - }); - setTimeout(() => container_max_users.find("input:checked").trigger('change'), 100); - } - } - { - const container_max_users = tag.find(".container-max-family-users"); - const container_unlimited = container_max_users.find(".container-unlimited"); - const container_inherited = container_max_users.find(".container-inherited"); - const container_limited = container_max_users.find(".container-limited"); - const input_unlimited = container_unlimited.find("input[value='unlimited']"); - const input_inherited = container_inherited.find("input[value='inherited']"); - const input_limited = container_limited.find("input[value='limited']"); - const input_limit = container_limited.find(".channel_maxfamilyclients"); - const permission = connection.permissions.neededPermission(!channel ? PermissionType.B_CHANNEL_CREATE_WITH_MAXCLIENTS : PermissionType.B_CHANNEL_MODIFY_MAXCLIENTS).granted(1); - if (!permission) { - input_unlimited.prop("disabled", true); - input_inherited.prop("disabled", true); - input_limited.prop("disabled", true); - input_limit.prop("disabled", true); - container_limited.addClass("disabled"); - container_unlimited.addClass("disabled"); - container_inherited.addClass("disabled"); - } - else { - container_max_users.find("input[name='max_family_users']").on('change', event => { - const node = event.target; - console.log(_translations.F527rAOv || (_translations.F527rAOv = tr("Channel max family user mode: %o")), node.value); - const flag_unlimited = node.value === "unlimited"; - const flag_inherited = node.value === "inherited"; - input_limit - .prop("disabled", flag_unlimited || flag_inherited) - .parent().toggleClass("disabled", flag_unlimited || flag_inherited); - properties.channel_flag_maxfamilyclients_unlimited = flag_unlimited; - properties.channel_flag_maxfamilyclients_inherited = flag_inherited; - }); - input_limit.on('change', event => { - properties.channel_maxfamilyclients = parseInt(input_limit.val()); - console.log(_translations.ljiyqr1d || (_translations.ljiyqr1d = tr("Changed max family user limit to %o")), properties.channel_maxfamilyclients); - }); - setTimeout(() => container_max_users.find("input:checked").trigger('change'), 100); - } - } - } - function applyPermissionListener(connection, properties, tag, button, permissions, channel) { - let apply_permissions = (channel_permissions) => { - log.trace(LogCategory.CHANNEL, _translations.TKSMPptf || (_translations.TKSMPptf = tr("Received channel permissions: %o")), channel_permissions); - let required_power = -2; - for (let cperm of channel_permissions) - if (cperm.type.name == PermissionType.I_CHANNEL_NEEDED_MODIFY_POWER) { - required_power = cperm.value; - break; - } - tag.find("input[permission]").each((index, _element) => { - let element = $(_element); - element.attr("original-value", 0); - element.val(0); - let permission = permissions.resolveInfo(element.attr("permission")); - if (!permission) { - log.error(LogCategory.PERMISSIONS, _translations.I5FeAjFN || (_translations.I5FeAjFN = tr("Failed to resolve channel permission for name %o")), element.attr("permission")); - element.prop("disabled", true); - return; - } - for (let cperm of channel_permissions) - if (cperm.type == permission) { - element.val(cperm.value); - element.attr("original-value", cperm.value); - return; - } - }); - const permission = permissions.neededPermission(PermissionType.I_CHANNEL_PERMISSION_MODIFY_POWER).granted(required_power, false); - tag.find("input[permission]").prop("disabled", !permission).parent(".input-boxed").toggleClass("disabled", !permission); //No permissions - }; - if (channel) { - permissions.requestChannelPermissions(channel.getChannelId()).then(apply_permissions).catch((error) => { - tag.find("input[permission]").prop("disabled", true); - console.log("Failed to receive channel permissions (%o)", error); - }); - } - else - apply_permissions([]); - } - function applyAudioListener(connection, properties, tag, simple, channel) { - const bandwidth_mapping = [ - /* SPEEX narrow */ [2.49, 2.69, 2.93, 3.17, 3.17, 3.56, 3.56, 4.05, 4.05, 4.44, 5.22], - /* SPEEX wide */ [2.69, 2.93, 3.17, 3.42, 3.76, 4.25, 4.74, 5.13, 5.62, 6.40, 7.37], - /* SPEEX ultra */ [2.73, 3.12, 3.37, 3.61, 4.00, 4.49, 4.93, 5.32, 5.81, 6.59, 7.57], - /* CELT */ [6.10, 6.10, 7.08, 7.08, 7.08, 8.06, 8.06, 8.06, 8.06, 10.01, 13.92], - /* Opus Voice */ [2.73, 3.22, 3.71, 4.20, 4.74, 5.22, 5.71, 6.20, 6.74, 7.23, 7.71], - /* Opus Music */ [3.08, 3.96, 4.83, 5.71, 6.59, 7.47, 8.35, 9.23, 10.11, 10.99, 11.87] - ]; - let update_template = () => { - let codec = properties.channel_codec; - if (!codec && channel) - codec = channel.properties.channel_codec; - if (!codec) - return; - let quality = properties.channel_codec_quality; - if (!quality && channel) - quality = channel.properties.channel_codec_quality; - if (!quality) - return; - let template_name = "custom"; - { - if (codec == 4 && quality == 4) - template_name = "voice_mobile"; - else if (codec == 4 && quality == 6) - template_name = "voice_desktop"; - else if (codec == 5 && quality == 6) - template_name = "music"; - } - tag.find("input[name='voice_template'][value='" + template_name + "']").prop("checked", true); - simple.find("option[name='voice_template'][value='" + template_name + "']").prop("selected", true); - let bandwidth; - if (codec < 0 || codec > bandwidth_mapping.length) - bandwidth = 0; - else - bandwidth = bandwidth_mapping[codec][quality] || 0; /* OOB access results in undefined, but is allowed */ - tag.find(".container-needed-bandwidth").text(bandwidth.toFixed(2) + " KiB/s"); - }; - let change_codec = codec => { - if (properties.channel_codec == codec) - return; - tag.find(".voice_codec option").prop("selected", false).eq(codec).prop("selected", true); - properties.channel_codec = codec; - update_template(); - }; - const container_quality = tag.find(".container-quality"); - const slider_quality = sliderfy(container_quality.find(".container-slider"), { - initial_value: properties.channel_codec_quality || 6, - unit: "", - min_value: 1, - max_value: 10, - step: 1, - value_field: container_quality.find(".container-value") - }); - let change_quality = (quality) => { - if (properties.channel_codec_quality == quality) - return; - properties.channel_codec_quality = quality; - slider_quality.value(quality); - update_template(); - }; - container_quality.find(".container-slider").on('change', event => { - properties.channel_codec_quality = slider_quality.value(); - update_template(); - }); - tag.find("input[name='voice_template']").change(function () { - switch (this.value) { - case "custom": - break; - case "music": - change_codec(5); - change_quality(6); - break; - case "voice_desktop": - change_codec(4); - change_quality(6); - break; - case "voice_mobile": - change_codec(4); - change_quality(4); - break; - } - }); - simple.find("select[name='voice_template']").change(function () { - switch (this.value) { - case "custom": - break; - case "music": - change_codec(5); - change_quality(6); - break; - case "voice_desktop": - change_codec(4); - change_quality(6); - break; - case "voice_mobile": - change_codec(4); - change_quality(4); - break; - } - }); - /* disable not granted templates */ - { - tag.find("input[name='voice_template'][value='voice_mobile']") - .prop("disabled", !connection.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_MODIFY_WITH_CODEC_OPUSVOICE).granted(1)); - simple.find("option[name='voice_template'][value='voice_mobile']") - .prop("disabled", !connection.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_MODIFY_WITH_CODEC_OPUSVOICE).granted(1)); - tag.find("input[name='voice_template'][value=\"voice_desktop\"]") - .prop("disabled", !connection.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_MODIFY_WITH_CODEC_OPUSVOICE).granted(1)); - simple.find("option[name='voice_template'][value=\"voice_desktop\"]") - .prop("disabled", !connection.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_MODIFY_WITH_CODEC_OPUSVOICE).granted(1)); - tag.find("input[name='voice_template'][value=\"music\"]") - .prop("disabled", !connection.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_MODIFY_WITH_CODEC_OPUSMUSIC).granted(1)); - simple.find("option[name='voice_template'][value=\"music\"]") - .prop("disabled", !connection.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_MODIFY_WITH_CODEC_OPUSMUSIC).granted(1)); - } - let codecs = tag.find(".voice_codec option"); - codecs.eq(0).prop("disabled", !connection.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_MODIFY_WITH_CODEC_SPEEX8).granted(1)); - codecs.eq(1).prop("disabled", !connection.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_MODIFY_WITH_CODEC_SPEEX16).granted(1)); - codecs.eq(2).prop("disabled", !connection.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_MODIFY_WITH_CODEC_SPEEX32).granted(1)); - codecs.eq(3).prop("disabled", !connection.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_MODIFY_WITH_CODEC_CELTMONO48).granted(1)); - codecs.eq(4).prop("disabled", !connection.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_MODIFY_WITH_CODEC_OPUSVOICE).granted(1)); - codecs.eq(5).prop("disabled", !connection.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_MODIFY_WITH_CODEC_OPUSMUSIC).granted(1)); - tag.find(".voice_codec").change(function () { - if ($(this.item(this.selectedIndex)).prop("disabled")) - return false; - change_codec(this.selectedIndex); - }); - if (!channel) { - change_codec(4); - change_quality(6); - } - else { - change_codec(channel.properties.channel_codec); - change_quality(channel.properties.channel_codec_quality); - } - update_template(); - } - function applyAdvancedListener(connection, properties, tag, button, channel) { - tag.find(".channel_name_phonetic").change(function () { - properties.channel_topic = this.value; - }); - { - const permission = connection.permissions.neededPermission(PermissionType.B_CHANNEL_MODIFY_TEMP_DELETE_DELAY).granted(1); - tag.find(".channel_delete_delay").change(function () { - properties.channel_delete_delay = parseInt(this.value); - }).prop("disabled", !permission).parent(".input-boxed").toggleClass("disabled", !permission); - } - { - tag.find(".button-delete-max").on('click', event => { - const power = connection.permissions.neededPermission(PermissionType.I_CHANNEL_CREATE_MODIFY_WITH_TEMP_DELETE_DELAY).value; - let value = power == -2 ? 0 : power == -1 ? (7 * 24 * 60 * 60) : power; - tag.find(".channel_delete_delay").val(value).trigger('change'); - }); - } - { - const permission = connection.permissions.neededPermission(PermissionType.B_CHANNEL_MODIFY_MAKE_CODEC_ENCRYPTED).granted(1); - tag.find(".channel_codec_is_unencrypted").change(function () { - properties.channel_codec_is_unencrypted = parseInt(this.value) == 0; - }).prop("disabled", !permission).parent(".input-boxed").toggleClass("disabled", !permission); - } - } -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["d35da4bcda041ba972f8c87abdaa890518d6cde71d37e7f860e12e42688c97ce"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["d35da4bcda041ba972f8c87abdaa890518d6cde71d37e7f860e12e42688c97ce"] = "d35da4bcda041ba972f8c87abdaa890518d6cde71d37e7f860e12e42688c97ce"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "h0T6RPkj", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (129,23)" }, { name: "GFlIOGAL", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (264,27)" }, { name: "UCLC4ivJ", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (351,45)" }, { name: "ZrJ02URc", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (532,21)" }, { name: "HSzvJwwR", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (535,21)" }, { name: "Ody_8yeT", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (545,23)" }, { name: "ATXAwxWL", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (547,38)" }, { name: "vsK8laF1", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (547,58)" }, { name: "jMleGq7P", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (563,19)" }, { name: "fkTEx1Wh", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (578,23)" }, { name: "SlAO2UCb", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (580,38)" }, { name: "beWd2uCp", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (580,71)" }, { name: "Utc4LAwu", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (598,27)" }, { name: "hPN4f_xI", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (600,42)" }, { name: "jhZR81Qh", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (600,74)" }, { name: "Y10NXL7W", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (615,27)" }, { name: "CMX4tuF2", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (641,27)" }, { name: "u_LRSiVw", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (647,90)" }, { name: "O6jNMfCB", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (649,43)" }, { name: "yFR88s_P", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (712,44)" }, { name: "rAA5IByZ", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (716,52)" }, { name: "Fh5FtgZp", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (890,34)" }, { name: "pBoepRGH", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (894,26)" }, { name: "hSPoFqAs", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (911,34)" }, { name: "rbZFNFYt", path: "D:/TeaSpeak/web/shared/js/ui/view.ts (915,26)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -/// -/// -/// -/// -/// -/// -class ChannelTree { - constructor(client) { - this.channels = []; - this.clients = []; - this.currently_selected = undefined; - this.currently_selected_context_callback = undefined; - this._tree_detached = false; - this._focused = false; - this._reorder_channels = new Set(); - this.client = client; - this._tag_container = $.spawn("div").addClass("channel-tree-container"); - this._tag_entries = $.spawn("div").addClass("channel-tree"); - this.client_mover = new ClientMover(this); - this.reset(); - if (!settings.static(Settings.KEY_DISABLE_CONTEXT_MENU, false)) { - this._tag_container.on("contextmenu", (event) => { - if (event.isDefaultPrevented()) - return; - for (const element of document.elementsFromPoint(event.pageX, event.pageY)) - if (element.classList.contains("channelLine") || element.classList.contains("client")) - return; - event.preventDefault(); - if ($.isArray(this.currently_selected)) { //Multiselect - (this.currently_selected_context_callback || ((_) => null))(event); - } - else { - this.onSelect(undefined); - this.showContextMenu(event.pageX, event.pageY); - } - }); - } - this._tag_container.on('resize', this.handle_resized.bind(this)); - this._listener_document_key = event => this.handle_key_press(event); - this._listener_document_click = event => { - this._focused = false; - let element = event.target; - while (element) { - if (element === this._tag_container[0]) { - this._focused = true; - break; - } - element = element.parentNode; - } - }; - document.addEventListener('click', this._listener_document_click); - document.addEventListener('keydown', this._listener_document_key); - } - tag_tree() { - return this._tag_container; - } - destroy() { - this._listener_document_click && document.removeEventListener('click', this._listener_document_click); - this._listener_document_click = undefined; - this._listener_document_key && document.removeEventListener('keydown', this._listener_document_key); - this._listener_document_key = undefined; - if (this.server) { - this.server.destroy(); - this.server = undefined; - } - this.reset(); /* cleanup channel and clients */ - this.channel_first = undefined; - this.channel_last = undefined; - this._tag_container.remove(); - this.currently_selected = undefined; - this.currently_selected_context_callback = undefined; - } - hide_channel_tree() { - this._tag_entries.detach(); - this._tree_detached = true; - } - show_channel_tree() { - this._tree_detached = false; - this._tag_entries.appendTo(this._tag_container); - this.channels.forEach(e => { - e.recalculate_repetitive_name(); - e.reorderClients(); - }); - } - showContextMenu(x, y, on_close = undefined) { - let channelCreate = this.client.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_TEMPORARY).granted(1) || - this.client.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_SEMI_PERMANENT).granted(1) || - this.client.permissions.neededPermission(PermissionType.B_CHANNEL_CREATE_PERMANENT).granted(1); - contextmenu.spawn_context_menu(x, y, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-channel_create", - name: _translations.h0T6RPkj || (_translations.h0T6RPkj = tr("Create channel")), - invalidPermission: !channelCreate, - callback: () => this.spawnCreateChannel() - }, contextmenu.Entry.CLOSE(on_close)); - } - initialiseHead(serverName, address) { - if (this.server) { - this.server.destroy(); - this.server = undefined; - } - this.server = new ServerEntry(this, serverName, address); - this.server.htmlTag.appendTo(this._tag_entries); - this.server.initializeListener(); - } - __deleteAnimation(element) { - let tag = element instanceof ChannelEntry ? element.rootTag() : element.tag; - tag.fadeOut("slow", () => { - tag.detach(); - element.destroy(); - }); - } - rootChannel() { - return this.channels.filter(e => e.parent == undefined); - } - deleteChannel(channel) { - const _this = this; - for (let index = 0; index < this.channels.length; index++) { - let entry = this.channels[index]; - let currentEntry = this.channels[index]; - while (currentEntry != undefined && currentEntry != null) { - if (currentEntry == channel) { - _this.channels.remove(entry); - _this.__deleteAnimation(entry); - entry.channelTree = null; - index--; - break; - } - else - currentEntry = currentEntry.parent_channel(); - } - } - this.channels.remove(channel); - this.__deleteAnimation(channel); - channel.channelTree = null; - if (channel.channel_previous) - channel.channel_previous.channel_next = channel.channel_next; - if (channel.channel_next) - channel.channel_next.channel_previous = channel.channel_previous; - if (channel == this.channel_first) - this.channel_first = channel.channel_next; - if (channel == this.channel_last) - this.channel_last = channel.channel_previous; - } - insertChannel(channel) { - channel.channelTree = this; - this.channels.push(channel); - let elm = undefined; - let tag = this._tag_entries; - let previous_channel = null; - if (channel.hasParent()) { - let parent = channel.parent_channel(); - let siblings = parent.children(); - if (siblings.length == 0) { - elm = parent.rootTag(); - previous_channel = null; - } - else { - previous_channel = siblings.last(); - elm = previous_channel.tag; - } - tag = parent.siblingTag(); - } - else { - previous_channel = this.channel_last; - if (!this.channel_last) - this.channel_last = channel; - if (!this.channel_first) - this.channel_first = channel; - } - channel.channel_previous = previous_channel; - channel.channel_next = undefined; - if (previous_channel) { - channel.channel_next = previous_channel.channel_next; - previous_channel.channel_next = channel; - if (channel.channel_next) - channel.channel_next.channel_previous = channel; - } - let entry = channel.rootTag(); - if (!this._tree_detached) - entry.css({ display: "none" }).fadeIn("slow"); - entry.appendTo(tag); - if (elm != undefined) - elm.after(entry); - if (channel.channel_previous == channel) /* shall never happen */ - channel.channel_previous = undefined; - if (channel.channel_next == channel) /* shall never happen */ - channel.channel_next = undefined; - channel.initializeListener(); - channel.update_family_index(); - } - findChannel(channelId) { - for (let index = 0; index < this.channels.length; index++) - if (this.channels[index].getChannelId() == channelId) - return this.channels[index]; - return undefined; - } - find_channel_by_name(name, parent, force_parent = true) { - for (let index = 0; index < this.channels.length; index++) - if (this.channels[index].channelName() == name && (!force_parent || parent == this.channels[index].parent)) - return this.channels[index]; - return undefined; - } - moveChannel(channel, channel_previous, parent) { - if (channel_previous != null && channel_previous.parent != parent) { - console.error(_translations.GFlIOGAL || (_translations.GFlIOGAL = tr("Invalid channel move (different parents! (%o|%o)")), channel_previous.parent, parent); - return; - } - if (channel.channel_next) - channel.channel_next.channel_previous = channel.channel_previous; - if (channel.channel_previous) - channel.channel_previous.channel_next = channel.channel_next; - if (channel == this.channel_last) - this.channel_last = channel.channel_previous; - if (channel == this.channel_first) - this.channel_first = channel.channel_next; - channel.channel_next = undefined; - channel.channel_previous = channel_previous; - channel.parent = parent; - if (channel_previous) { - if (channel_previous == this.channel_last) - this.channel_last = channel; - channel.channel_next = channel_previous.channel_next; - channel_previous.channel_next = channel; - channel_previous.rootTag().after(channel.rootTag()); - if (channel.channel_next) - channel.channel_next.channel_previous = channel; - } - else { - if (parent) { - let children = parent.children(); - if (children.length <= 1) { //Self should be already in there - let left = channel.rootTag(); - left.appendTo(parent.siblingTag()); - channel.channel_next = undefined; - } - else { - channel.channel_previous = undefined; - channel.rootTag().prependTo(parent.siblingTag()); - channel.channel_next = children[1]; /* children 0 shall be the channel itself */ - channel.channel_next.channel_previous = channel; - } - } - else { - this._tag_entries.find(".server").after(channel.rootTag()); - channel.channel_next = this.channel_first; - if (this.channel_first) - this.channel_first.channel_previous = channel; - this.channel_first = channel; - } - } - channel.update_family_index(); - channel.children(true).forEach(e => e.update_family_index()); - channel.clients(true).forEach(e => e.update_family_index()); - if (channel.channel_previous == channel) { /* shall never happen */ - channel.channel_previous = undefined; - debugger; - } - if (channel.channel_next == channel) { /* shall never happen */ - channel.channel_next = undefined; - debugger; - } - } - deleteClient(client, animate_tag) { - const old_channel = client.currentChannel(); - this.clients.remove(client); - if (typeof (animate_tag) !== "boolean" || animate_tag) - this.__deleteAnimation(client); - else - client.tag.detach(); - client.onDelete(); - if (old_channel) { - this.client.side_bar.info_frame().update_channel_client_count(old_channel); - } - const voice_connection = this.client.serverConnection.voice_connection(); - if (client.get_audio_handle()) { - if (!voice_connection) { - log.warn(LogCategory.VOICE, _translations.UCLC4ivJ || (_translations.UCLC4ivJ = tr("Deleting client with a voice handle, but we haven't a voice connection!"))); - } - else { - voice_connection.unregister_client(client.get_audio_handle()); - } - } - client.set_audio_handle(undefined); - } - registerClient(client) { - this.clients.push(client); - client.channelTree = this; - const voice_connection = this.client.serverConnection.voice_connection(); - if (voice_connection) - client.set_audio_handle(voice_connection.register_client(client.clientId())); - } - unregisterClient(client) { - if (!this.clients.remove(client)) - return; - client.tree_unregistered(); - } - insertClient(client, channel) { - let newClient = this.findClient(client.clientId()); - if (newClient) - client = newClient; //Got new client :) - else { - this.registerClient(client); - } - client["_channel"] = channel; - let tag = client.tag; - if (!this._show_queries && client.properties.client_type == ClientType.CLIENT_QUERY) - client.tag.hide(); - else if (!this._tree_detached) - tag.css("display", "none").fadeIn("slow"); - tag.appendTo(channel.clientTag()); - channel.reorderClients(); - /* schedule a reorder for this channel. */ - this._reorder_channels.add(client.currentChannel()); - if (!this._update_timer) { - this._update_timer = setTimeout(() => { - this._update_timer = undefined; - for (const channel of this._reorder_channels) { - channel.updateChannelTypeIcon(); - this.client.side_bar.info_frame().update_channel_client_count(channel); - } - this._reorder_channels.clear(); - }, 5); - } - client.update_family_index(); /* why the hell is this here?! */ - return client; - } - moveClient(client, channel) { - let oldChannel = client.currentChannel(); - client["_channel"] = channel; - let tag = client.tag; - tag.detach(); - tag.appendTo(client.currentChannel().clientTag()); - if (oldChannel) { - oldChannel.updateChannelTypeIcon(); - this.client.side_bar.info_frame().update_channel_client_count(oldChannel); - } - if (channel) { - channel.reorderClients(); - channel.updateChannelTypeIcon(); - this.client.side_bar.info_frame().update_channel_client_count(channel); - } - client.updateClientStatusIcons(); - client.update_family_index(); - } - findClient(clientId) { - for (let index = 0; index < this.clients.length; index++) { - if (this.clients[index].clientId() == clientId) - return this.clients[index]; - } - return undefined; - } - find_client_by_dbid(client_dbid) { - for (let index = 0; index < this.clients.length; index++) { - if (this.clients[index].properties.client_database_id == client_dbid) - return this.clients[index]; - } - return undefined; - } - find_client_by_unique_id(unique_id) { - for (let index = 0; index < this.clients.length; index++) { - if (this.clients[index].properties.client_unique_identifier == unique_id) - return this.clients[index]; - } - return undefined; - } - static same_selected_type(a, b) { - if (a instanceof ChannelEntry) - return b instanceof ChannelEntry; - if (a instanceof ClientEntry) - return b instanceof ClientEntry; - if (a instanceof ServerEntry) - return b instanceof ServerEntry; - return a == b; - } - onSelect(entry, enforce_single, flag_shift) { - if (this.currently_selected && (ppt.key_pressed(ppt.SpecialKey.SHIFT) || flag_shift) && entry instanceof ClientEntry) { //Currently we're only supporting client multiselects :D - if (!entry) - return; //Nowhere - if ($.isArray(this.currently_selected)) { - if (!ChannelTree.same_selected_type(this.currently_selected[0], entry)) - return; //Not the same type - } - else if (ChannelTree.same_selected_type(this.currently_selected, entry)) { - this.currently_selected = [this.currently_selected]; - } - if (entry instanceof ChannelEntry) - this.currently_selected_context_callback = this.callback_multiselect_channel.bind(this); - if (entry instanceof ClientEntry) - this.currently_selected_context_callback = this.callback_multiselect_client.bind(this); - } - else - this.currently_selected = undefined; - if (!$.isArray(this.currently_selected) || enforce_single) { - this.currently_selected = entry; - this._tag_entries.find(".selected").each(function (idx, e) { - $(e).removeClass("selected"); - }); - } - else { - for (const e of this.currently_selected) - if (e == entry) { - this.currently_selected.remove(e); - if (entry instanceof ChannelEntry) - entry.channelTag().removeClass("selected"); - else if (entry instanceof ClientEntry) - entry.tag.removeClass("selected"); - else if (entry instanceof ServerEntry) - entry.htmlTag.removeClass("selected"); - if (this.currently_selected.length == 1) - this.currently_selected = this.currently_selected[0]; - else if (this.currently_selected.length == 0) - this.currently_selected = undefined; - //Already selected - return; - } - this.currently_selected.push(entry); - } - if (entry instanceof ChannelEntry) - entry.channelTag().addClass("selected"); - else if (entry instanceof ClientEntry) - entry.tag.addClass("selected"); - else if (entry instanceof ServerEntry) - entry.htmlTag.addClass("selected"); - if (!$.isArray(this.currently_selected)) { - if (this.currently_selected instanceof ClientEntry && settings.static_global(Settings.KEY_SWITCH_INSTANT_CLIENT)) { - if (this.currently_selected instanceof MusicClientEntry) - this.client.side_bar.show_music_player(this.currently_selected); - else - this.client.side_bar.show_client_info(this.currently_selected); - } - else if (this.currently_selected instanceof ChannelEntry && settings.static_global(Settings.KEY_SWITCH_INSTANT_CHAT)) { - this.client.side_bar.channel_conversations().set_current_channel(this.currently_selected.channelId); - this.client.side_bar.show_channel_conversations(); - } - else if (this.currently_selected instanceof ServerEntry && settings.static_global(Settings.KEY_SWITCH_INSTANT_CHAT)) { - this.client.side_bar.channel_conversations().set_current_channel(0); - this.client.side_bar.show_channel_conversations(); - } - } - } - callback_multiselect_channel(event) { - console.log(_translations.ZrJ02URc || (_translations.ZrJ02URc = tr("Multiselect channel"))); - } - callback_multiselect_client(event) { - console.log(_translations.HSzvJwwR || (_translations.HSzvJwwR = tr("Multiselect client"))); - const clients = this.currently_selected; - const music_only = clients.map(e => e instanceof MusicClientEntry ? 0 : 1).reduce((a, b) => a + b, 0) == 0; - const music_entry = clients.map(e => e instanceof MusicClientEntry ? 1 : 0).reduce((a, b) => a + b, 0) > 0; - const local_client = clients.map(e => e instanceof LocalClientEntry ? 1 : 0).reduce((a, b) => a + b, 0) > 0; - let entries = []; - if (!music_entry && !local_client) { //Music bots or local client cant be poked - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-poke", - name: _translations.Ody_8yeT || (_translations.Ody_8yeT = tr("Poke clients")), - callback: () => { - createInputModal(_translations.ATXAwxWL || (_translations.ATXAwxWL = tr("Poke clients")), _translations.vsK8laF1 || (_translations.vsK8laF1 = tr("Poke message:
")), text => true, result => { - if (typeof (result) === "string") { - for (const client of this.currently_selected) - this.client.serverConnection.send_command("clientpoke", { - clid: client.clientId(), - msg: result - }); - } - }, { width: 400, maxLength: 512 }).open(); - } - }); - } - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-move_client_to_own_channel", - name: _translations.jMleGq7P || (_translations.jMleGq7P = tr("Move clients to your channel")), - callback: () => { - const target = this.client.getClient().currentChannel().getChannelId(); - for (const client of clients) - this.client.serverConnection.send_command("clientmove", { - clid: client.clientId(), - cid: target - }); - } - }); - if (!local_client) { //local client cant be kicked and/or banned or kicked - entries.push(contextmenu.Entry.HR()); - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-kick_channel", - name: _translations.fkTEx1Wh || (_translations.fkTEx1Wh = tr("Kick clients from channel")), - callback: () => { - createInputModal(_translations.SlAO2UCb || (_translations.SlAO2UCb = tr("Kick clients from channel")), _translations.beWd2uCp || (_translations.beWd2uCp = tr("Kick reason:
")), text => true, result => { - if (result) { - for (const client of clients) - this.client.serverConnection.send_command("clientkick", { - clid: client.clientId(), - reasonid: ViewReasonId.VREASON_CHANNEL_KICK, - reasonmsg: result - }); - } - }, { width: 400, maxLength: 255 }).open(); - } - }); - if (!music_entry) { //Music bots cant be banned or kicked - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-kick_server", - name: _translations.Utc4LAwu || (_translations.Utc4LAwu = tr("Kick clients fom server")), - callback: () => { - createInputModal(_translations.hPN4f_xI || (_translations.hPN4f_xI = tr("Kick clients from server")), _translations.jhZR81Qh || (_translations.jhZR81Qh = tr("Kick reason:
")), text => true, result => { - if (result) { - for (const client of clients) - this.client.serverConnection.send_command("clientkick", { - clid: client.clientId(), - reasonid: ViewReasonId.VREASON_SERVER_KICK, - reasonmsg: result - }); - } - }, { width: 400, maxLength: 255 }).open(); - } - }, { - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-ban_client", - name: _translations.Y10NXL7W || (_translations.Y10NXL7W = tr("Ban clients")), - invalidPermission: !this.client.permissions.neededPermission(PermissionType.I_CLIENT_BAN_MAX_BANTIME).granted(1), - callback: () => { - Modals.spawnBanClient(this.client, (clients).map(entry => { - return { - name: entry.clientNickName(), - unique_id: entry.properties.client_unique_identifier - }; - }), (data) => { - for (const client of clients) - this.client.serverConnection.send_command("banclient", { - uid: client.properties.client_unique_identifier, - banreason: data.reason, - time: data.length - }, { - flagset: [data.no_ip ? "no-ip" : "", data.no_hwid ? "no-hardware-id" : "", data.no_name ? "no-nickname" : ""] - }).then(() => { - this.client.sound.play(Sound.USER_BANNED); - }); - }); - } - }); - } - if (music_only) { - entries.push(contextmenu.Entry.HR()); - entries.push({ - name: _translations.CMX4tuF2 || (_translations.CMX4tuF2 = tr("Delete bots")), - icon_class: "client-delete", - disabled: false, - callback: () => { - const param_string = clients.map((_, index) => "{" + index + "}").join(', '); - const param_values = clients.map(client => client.createChatTag(true)); - const tag = $.spawn("div").append(...MessageHelper.formatMessage((_translations.u_LRSiVw || (_translations.u_LRSiVw = tr("Do you really want to delete "))) + param_string, ...param_values)); - const tag_container = $.spawn("div").append(tag); - Modals.spawnYesNo(_translations.O6jNMfCB || (_translations.O6jNMfCB = tr("Are you sure?")), tag_container, result => { - if (result) { - for (const client of clients) - this.client.serverConnection.send_command("musicbotdelete", { - botid: client.properties.client_database_id - }); - } - }); - }, - type: contextmenu.MenuEntryType.ENTRY - }); - } - } - contextmenu.spawn_context_menu(event.pageX, event.pageY, ...entries); - } - clientsByGroup(group) { - let result = []; - for (let client of this.clients) { - if (client.groupAssigned(group)) - result.push(client); - } - return result; - } - clientsByChannel(channel) { - let result = []; - for (let client of this.clients) { - if (client.currentChannel() == channel) - result.push(client); - } - return result; - } - reset() { - const voice_connection = this.client.serverConnection ? this.client.serverConnection.voice_connection() : undefined; - for (const client of this.clients) { - if (client.get_audio_handle() && voice_connection) { - voice_connection.unregister_client(client.get_audio_handle()); - client.set_audio_handle(undefined); - } - client.destroy(); - } - this.clients = []; - for (const channel of this.channels) - channel.destroy(); - this.channels = []; - this._tag_entries.children().detach(); //Dont remove listeners - this.channel_first = undefined; - this.channel_last = undefined; - } - spawnCreateChannel(parent) { - Modals.createChannelModal(this.client, undefined, parent, this.client.permissions, (properties, permissions) => { - if (!properties) - return; - properties["cpid"] = parent ? parent.channelId : 0; - log.debug(LogCategory.CHANNEL, _translations.yFR88s_P || (_translations.yFR88s_P = tr("Creating a new channel.\nProperties: %o\nPermissions: %o")), properties); - this.client.serverConnection.send_command("channelcreate", properties).then(() => { - let channel = this.find_channel_by_name(properties.channel_name, parent, true); - if (!channel) { - log.error(LogCategory.CHANNEL, _translations.rAA5IByZ || (_translations.rAA5IByZ = tr("Failed to resolve channel after creation. Could not apply permissions!"))); - return; - } - if (permissions && permissions.length > 0) { - let perms = []; - for (let perm of permissions) { - perms.push({ - permvalue: perm.value, - permnegated: false, - permskip: false, - permid: perm.type.id - }); - } - perms[0]["cid"] = channel.channelId; - return this.client.serverConnection.send_command("channeladdperm", perms, { - flagset: ["continueonerror"] - }).then(() => new Promise(resolve => { resolve(channel); })); - } - return new Promise(resolve => { resolve(channel); }); - }).then(channel => { - this.client.log.log(log.server.Type.CHANNEL_CREATE, { - channel: channel.log_data(), - creator: this.client.getClient().log_data(), - own_action: true - }); - this.client.sound.play(Sound.CHANNEL_CREATED); - }); - }); - } - handle_resized() { - for (let channel of this.channels) - channel.handle_frame_resized(); - } - select_next_channel(channel, select_client) { - if (select_client) { - const clients = channel.clients_ordered(); - if (clients.length > 0) { - this.onSelect(clients[0], true); - return; - } - } - const children = channel.children(); - if (children.length > 0) { - this.onSelect(children[0], true); - return; - } - const next = channel.channel_next; - if (next) { - this.onSelect(next, true); - return; - } - let parent = channel.parent_channel(); - while (parent) { - const p_next = parent.channel_next; - if (p_next) { - this.onSelect(p_next, true); - return; - } - parent = parent.parent_channel(); - } - } - handle_key_press(event) { - //console.log("Keydown: %o | %o | %o", this._focused, this.currently_selected, Array.isArray(this.currently_selected)); - if (!this._focused || !this.currently_selected || Array.isArray(this.currently_selected)) - return; - if (event.keyCode == KeyCode.KEY_UP) { - event.preventDefault(); - if (this.currently_selected instanceof ChannelEntry) { - let previous = this.currently_selected.channel_previous; - if (previous) { - while (true) { - const siblings = previous.children(); - if (siblings.length == 0) - break; - previous = siblings.last(); - } - const clients = previous.clients_ordered(); - if (clients.length > 0) { - this.onSelect(clients.last(), true); - return; - } - else { - this.onSelect(previous, true); - return; - } - } - else if (this.currently_selected.hasParent()) { - const channel = this.currently_selected.parent_channel(); - const clients = channel.clients_ordered(); - if (clients.length > 0) { - this.onSelect(clients.last(), true); - return; - } - else { - this.onSelect(channel, true); - return; - } - } - else - this.onSelect(this.server, true); - } - else if (this.currently_selected instanceof ClientEntry) { - const channel = this.currently_selected.currentChannel(); - const clients = channel.clients_ordered(); - const index = clients.indexOf(this.currently_selected); - if (index > 0) { - this.onSelect(clients[index - 1], true); - return; - } - this.onSelect(channel, true); - return; - } - } - else if (event.keyCode == KeyCode.KEY_DOWN) { - event.preventDefault(); - if (this.currently_selected instanceof ChannelEntry) { - this.select_next_channel(this.currently_selected, true); - } - else if (this.currently_selected instanceof ClientEntry) { - const channel = this.currently_selected.currentChannel(); - const clients = channel.clients_ordered(); - const index = clients.indexOf(this.currently_selected); - if (index + 1 < clients.length) { - this.onSelect(clients[index + 1], true); - return; - } - this.select_next_channel(channel, false); - } - else if (this.currently_selected instanceof ServerEntry) - this.onSelect(this.channel_first, true); - } - else if (event.keyCode == KeyCode.KEY_RETURN) { - if (this.currently_selected instanceof ChannelEntry) { - this.currently_selected.joinChannel(); - } - } - } - toggle_server_queries(flag) { - if (this._show_queries == flag) - return; - this._show_queries = flag; - const channels = []; - for (const client of this.clients) - if (client.properties.client_type == ClientType.CLIENT_QUERY) { - if (this._show_queries) - client.tag.show(); - else - client.tag.hide(); - if (channels.indexOf(client.currentChannel()) == -1) - channels.push(client.currentChannel()); - } - } - get_first_channel() { - return this.channel_first; - } - unsubscribe_all_channels(subscribe_specified) { - if (!this.client.serverConnection || !this.client.serverConnection.connected()) - return; - this.client.serverConnection.send_command('channelunsubscribeall').then(() => { - const channels = []; - for (const channel of this.channels) { - if (channel.subscribe_mode == ChannelSubscribeMode.SUBSCRIBED) - channels.push(channel.getChannelId()); - } - if (channels.length > 0) { - this.client.serverConnection.send_command('channelsubscribe', channels.map(e => { return { cid: e }; })).catch(error => { - console.warn(_translations.Fh5FtgZp || (_translations.Fh5FtgZp = tr("Failed to subscribe to specific channels (%o)")), channels); - }); - } - }).catch(error => { - console.warn(_translations.pBoepRGH || (_translations.pBoepRGH = tr("Failed to unsubscribe to all channels! (%o)")), error); - }); - } - subscribe_all_channels() { - if (!this.client.serverConnection || !this.client.serverConnection.connected()) - return; - this.client.serverConnection.send_command('channelsubscribeall').then(() => { - const channels = []; - for (const channel of this.channels) { - if (channel.subscribe_mode == ChannelSubscribeMode.UNSUBSCRIBED) - channels.push(channel.getChannelId()); - } - if (channels.length > 0) { - this.client.serverConnection.send_command('channelunsubscribe', channels.map(e => { return { cid: e }; })).catch(error => { - console.warn(_translations.hSPoFqAs || (_translations.hSPoFqAs = tr("Failed to unsubscribe to specific channels (%o)")), channels); - }); - } - }).catch(error => { - console.warn(_translations.rbZFNFYt || (_translations.rbZFNFYt = tr("Failed to subscribe to all channels! (%o)")), error); - }); - } -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["aab7a9e827e45917f2b7350a68a622a37c8a253931f6051bba900999e332204d"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["aab7a9e827e45917f2b7350a68a622a37c8a253931f6051bba900999e332204d"] = "aab7a9e827e45917f2b7350a68a622a37c8a253931f6051bba900999e332204d"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "Li5Gw9CA", path: "D:/TeaSpeak/web/shared/js/settings.ts (379,44)" }, { name: "uS6cXSmH", path: "D:/TeaSpeak/web/shared/js/settings.ts (382,34)" }, { name: "u4KNLKf0", path: "D:/TeaSpeak/web/shared/js/settings.ts (382,72)" }, { name: "F6RUQNLg", path: "D:/TeaSpeak/web/shared/js/settings.ts (494,48)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -//Used by CertAccept popup -if (typeof (customElements) !== "undefined") { - try { - class X_Properties extends HTMLElement { - } - class X_Property extends HTMLElement { - } - customElements.define('x-properties', X_Properties, { extends: 'div' }); - customElements.define('x-property', X_Property, { extends: 'div' }); - } - catch (error) { - console.warn("failed to define costum elements"); - } -} -class SettingsBase { - static transformStO(input, _default, default_type) { - default_type = default_type || typeof _default; - if (typeof input === "undefined") - return _default; - if (default_type === "string") - return input; - else if (default_type === "number") - return parseInt(input); - else if (default_type === "boolean") - return (input == "1" || input == "true"); - else if (default_type === "undefined") - return input; - return JSON.parse(input); - } - static transformOtS(input) { - if (typeof input === "string") - return input; - else if (typeof input === "number") - return input.toString(); - else if (typeof input === "boolean") - return input ? "1" : "0"; - else if (typeof input === "undefined") - return undefined; - return JSON.stringify(input); - } - static resolveKey(key, _default, resolver, default_type) { - let value = resolver(key.key); - if (!value) { - /* trying fallbacks */ - for (const fallback of key.fallback_keys || []) { - value = resolver(fallback); - if (typeof (value) === "string") { - /* fallback key succeeded */ - const importer = (key.fallback_imports || {})[fallback]; - if (importer) - return importer(value); - break; - } - } - } - if (typeof (value) !== 'string') - return _default; - return SettingsBase.transformStO(value, _default, default_type); - } - static keyify(key) { - if (typeof (key) === "string") - return { key: key }; - if (typeof (key) === "object" && key.key) - return key; - throw "key is not a key"; - } -} -SettingsBase.UPDATE_DIRECT = true; -class StaticSettings extends SettingsBase { - constructor(_reserved = undefined) { - super(); - if (_reserved && !StaticSettings._instance) { - this._staticPropsTag = $("#properties"); - this.initializeStatic(); - } - else { - this._handle = StaticSettings.instance; - } - } - static get instance() { - if (!this._instance) - this._instance = new StaticSettings(true); - return this._instance; - } - initializeStatic() { - let search; - if (window.opener && window.opener !== window) { - search = new URL(window.location.href).search; - } - else { - search = location.search; - } - search.substr(1).split("&").forEach(part => { - let item = part.split("="); - $("") - .attr("key", item[0]) - .attr("value", item[1]) - .appendTo(this._staticPropsTag); - }); - } - static(key, _default, default_type) { - if (this._handle) - return this._handle.static(key, _default, default_type); - key = StaticSettings.keyify(key); - return StaticSettings.resolveKey(key, _default, key => { - let result = this._staticPropsTag.find("[key='" + key + "']"); - if (result.length > 0) - return decodeURIComponent(result.last().attr('value')); - return false; - }, default_type); - } - deleteStatic(key) { - if (this._handle) { - this._handle.deleteStatic(key); - return; - } - key = StaticSettings.keyify(key); - let result = this._staticPropsTag.find("[key='" + key.key + "']"); - if (result.length != 0) - result.detach(); - } -} -class Settings extends StaticSettings { - constructor() { - super(); - this.cacheGlobal = {}; - this.updated = false; - const json = localStorage.getItem("settings.global"); - try { - this.cacheGlobal = JSON.parse(json); - } - catch (error) { - log.error(LogCategory.GENERAL, _translations.Li5Gw9CA || (_translations.Li5Gw9CA = tr("Failed to load global settings!\nJson: %s\nError: %o")), json, error); - const show_popup = () => { - createErrorModal(_translations.uS6cXSmH || (_translations.uS6cXSmH = tr("Failed to load global settings")), _translations.u4KNLKf0 || (_translations.u4KNLKf0 = tr("Failed to load global client settings!\nLookup console for more information."))).open(); - }; - if (!loader.finished()) - loader.register_task(loader.Stage.LOADED, { - priority: 0, - name: "Settings error", - function: () => __awaiter(this, void 0, void 0, function* () { return show_popup(); }) - }); - else - show_popup(); - } - if (!this.cacheGlobal) - this.cacheGlobal = {}; - this.saveWorker = setInterval(() => { - if (this.updated) - this.save(); - }, 5 * 1000); - } - static initialize() { - settings = new Settings(); - } - static_global(key, _default) { - const actual_default = typeof (_default) === "undefined" && typeof (key) === "object" && 'default_value' in key ? key.default_value : _default; - const default_object = { seed: Math.random() }; - let _static = this.static(key, default_object, typeof _default); - if (_static !== default_object) - return StaticSettings.transformStO(_static, actual_default); - return this.global(key, actual_default); - } - global(key, _default) { - const actual_default = typeof (_default) === "undefined" && typeof (key) === "object" && 'default_value' in key ? key.default_value : _default; - return StaticSettings.resolveKey(Settings.keyify(key), actual_default, key => this.cacheGlobal[key]); - } - changeGlobal(key, value) { - key = Settings.keyify(key); - if (this.cacheGlobal[key.key] == value) - return; - this.updated = true; - this.cacheGlobal[key.key] = StaticSettings.transformOtS(value); - if (Settings.UPDATE_DIRECT) - this.save(); - } - save() { - this.updated = false; - let global = JSON.stringify(this.cacheGlobal); - localStorage.setItem("settings.global", global); - if (localStorage.save) - localStorage.save(); - } -} -Settings.KEY_USER_IS_NEW = { - key: 'user_is_new_user', - default_value: true -}; -Settings.KEY_DISABLE_COSMETIC_SLOWDOWN = { - key: 'disable_cosmetic_slowdown', - description: 'Disable the cosmetic slowdows in some processes, like icon upload.' -}; -Settings.KEY_DISABLE_CONTEXT_MENU = { - key: 'disableContextMenu', - description: 'Disable the context menu for the channel tree which allows to debug the DOM easier' -}; -Settings.KEY_DISABLE_GLOBAL_CONTEXT_MENU = { - key: 'disableGlobalContextMenu', - description: 'Disable the general context menu prevention', - default_value: false -}; -Settings.KEY_DISABLE_UNLOAD_DIALOG = { - key: 'disableUnloadDialog', - description: 'Disables the unload popup on side closing' -}; -Settings.KEY_DISABLE_VOICE = { - key: 'disableVoice', - description: 'Disables the voice bridge. If disabled, the audio and codec workers aren\'t required anymore' -}; -Settings.KEY_DISABLE_MULTI_SESSION = { - key: 'disableMultiSession', - default_value: false, - require_restart: true -}; -Settings.KEY_LOAD_DUMMY_ERROR = { - key: 'dummy_load_error', - description: 'Triggers a loading error at the end of the loading process.' -}; -/* Control bar */ -Settings.KEY_CONTROL_MUTE_INPUT = { - key: 'mute_input' -}; -Settings.KEY_CONTROL_MUTE_OUTPUT = { - key: 'mute_output' -}; -Settings.KEY_CONTROL_SHOW_QUERIES = { - key: 'show_server_queries' -}; -Settings.KEY_CONTROL_CHANNEL_SUBSCRIBE_ALL = { - key: 'channel_subscribe_all' -}; -/* Connect parameters */ -Settings.KEY_FLAG_CONNECT_DEFAULT = { - key: 'connect_default' -}; -Settings.KEY_CONNECT_ADDRESS = { - key: 'connect_address' -}; -Settings.KEY_CONNECT_PROFILE = { - key: 'connect_profile', - default_value: 'default' -}; -Settings.KEY_CONNECT_USERNAME = { - key: 'connect_username' -}; -Settings.KEY_CONNECT_PASSWORD = { - key: 'connect_password' -}; -Settings.KEY_FLAG_CONNECT_PASSWORD = { - key: 'connect_password_hashed' -}; -Settings.KEY_CONNECT_HISTORY = { - key: 'connect_history' -}; -Settings.KEY_CONNECT_NO_DNSPROXY = { - key: 'connect_no_dnsproxy', - default_value: false -}; -Settings.KEY_CERTIFICATE_CALLBACK = { - key: 'certificate_callback' -}; -/* sounds */ -Settings.KEY_SOUND_MASTER = { - key: 'audio_master_volume', - default_value: 100 -}; -Settings.KEY_SOUND_MASTER_SOUNDS = { - key: 'audio_master_volume_sounds', - default_value: 100 -}; -Settings.KEY_CHAT_FIXED_TIMESTAMPS = { - key: 'chat_fixed_timestamps', - default_value: false, - description: 'Enables fixed timestamps for chat messages and disabled the updating once (2 seconds ago... etc)' -}; -Settings.KEY_CHAT_COLLOQUIAL_TIMESTAMPS = { - key: 'chat_colloquial_timestamps', - default_value: true, - description: 'Enabled colloquial timestamp formatting like "Yesterday at ..." or "Today at ..."' -}; -Settings.KEY_CHAT_COLORED_EMOJIES = { - key: 'chat_colored_emojies', - default_value: true, - description: 'Enables colored emojies powered by Twemoji' -}; -Settings.KEY_CHAT_TAG_URLS = { - key: 'chat_tag_urls', - default_value: true, - description: 'Automatically link urls with [url]' -}; -Settings.KEY_CHAT_ENABLE_MARKDOWN = { - key: 'chat_enable_markdown', - default_value: true, - description: 'Enabled markdown chat support.' -}; -Settings.KEY_CHAT_ENABLE_BBCODE = { - key: 'chat_enable_bbcode', - default_value: false, - description: 'Enabled bbcode support in chat.' -}; -Settings.KEY_CHAT_IMAGE_WHITELIST_REGEX = { - key: 'chat_image_whitelist_regex', - default_value: JSON.stringify([]) -}; -Settings.KEY_SWITCH_INSTANT_CHAT = { - key: 'switch_instant_chat', - default_value: true, - description: 'Directly switch to channel chat on channel select' -}; -Settings.KEY_SWITCH_INSTANT_CLIENT = { - key: 'switch_instant_client', - default_value: true, - description: 'Directly switch to client info on client select' -}; -Settings.KEY_HOSTBANNER_BACKGROUND = { - key: 'hostbanner_background', - default_value: false, - description: 'Enables a default background begind the hostbanner' -}; -Settings.KEY_CHANNEL_EDIT_ADVANCED = { - key: 'channel_edit_advanced', - default_value: false, - description: 'Edit channels in advanced mode with a lot more settings' -}; -Settings.KEY_PERMISSIONS_SHOW_ALL = { - key: 'permissions_show_all', - default_value: false, - description: 'Show all permissions even thou they dont make sense for the server/channel group' -}; -Settings.KEY_TEAFORO_URL = { - key: "teaforo_url", - default_value: "https://forum.teaspeak.de/" -}; -Settings.KEY_FONT_SIZE = { - key: "font_size" -}; -Settings.KEY_ICON_SIZE = { - key: "icon_size", - default_value: 100 -}; -Settings.KEY_LAST_INVITE_LINK_TYPE = { - key: "last_invite_link_type", - default_value: "tea-web" -}; -Settings.FN_INVITE_LINK_SETTING = name => { - return { - key: 'invite_link_setting_' + name - }; -}; -Settings.FN_SERVER_CHANNEL_SUBSCRIBE_MODE = channel => { - return { - key: 'channel_subscribe_mode_' + channel - }; -}; -Settings.FN_PROFILE_RECORD = name => { - return { - key: 'profile_record' + name - }; -}; -Settings.KEYS = (() => { - const result = []; - for (const key in Settings) { - if (!key.toUpperCase().startsWith("KEY_")) - continue; - if (key.toUpperCase() == "KEYS") - continue; - result.push(key); - } - return result; -})(); -class ServerSettings extends SettingsBase { - constructor() { - super(); - this.cacheServer = {}; - this._server_settings_updated = false; - this._destroyed = false; - this._server_save_worker = setInterval(() => { - if (this._server_settings_updated) - this.save(); - }, 5 * 1000); - } - destroy() { - this._destroyed = true; - this._server_unique_id = undefined; - this.cacheServer = undefined; - clearInterval(this._server_save_worker); - this._server_save_worker = undefined; - } - server(key, _default) { - if (this._destroyed) - throw "destroyed"; - return StaticSettings.resolveKey(Settings.keyify(key), _default, key => this.cacheServer[key]); - } - changeServer(key, value) { - if (this._destroyed) - throw "destroyed"; - key = Settings.keyify(key); - if (this.cacheServer[key.key] == value) - return; - this._server_settings_updated = true; - this.cacheServer[key.key] = StaticSettings.transformOtS(value); - if (Settings.UPDATE_DIRECT) - this.save(); - } - setServer(server_unique_id) { - if (this._destroyed) - throw "destroyed"; - if (this._server_unique_id) { - this.save(); - this.cacheServer = {}; - this._server_unique_id = undefined; - } - this._server_unique_id = server_unique_id; - if (this._server_unique_id) { - const json = localStorage.getItem("settings.server_" + server_unique_id); - try { - this.cacheServer = JSON.parse(json); - } - catch (error) { - log.error(LogCategory.GENERAL, _translations.F6RUQNLg || (_translations.F6RUQNLg = tr("Failed to load server settings for server %s!\nJson: %s\nError: %o")), server_unique_id, json, error); - } - if (!this.cacheServer) - this.cacheServer = {}; - } - } - save() { - if (this._destroyed) - throw "destroyed"; - this._server_settings_updated = false; - if (this._server_unique_id) { - let server = JSON.stringify(this.cacheServer); - localStorage.setItem("settings.server_" + this._server_unique_id, server); - if (localStorage.save) - localStorage.save(); - } - } -} -let settings; -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["9905e0706fb3679c8418586821d6454792687444f209b49eeb1a5af522c90114"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["9905e0706fb3679c8418586821d6454792687444f209b49eeb1a5af522c90114"] = "9905e0706fb3679c8418586821d6454792687444f209b49eeb1a5af522c90114"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "Iazp8WAl", path: "D:/TeaSpeak/web/shared/js/connection/ConnectionBase.ts (168,30)" }, { name: "osT4NYsM", path: "D:/TeaSpeak/web/shared/js/connection/ConnectionBase.ts (197,35)" }, { name: "kb_ARAZP", path: "D:/TeaSpeak/web/shared/js/connection/ConnectionBase.ts (209,35)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var connection; -(function (connection_1) { - connection_1.CommandOptionDefaults = { - flagset: [], - process_result: true, - timeout: 1000 - }; - class AbstractServerConnection { - constructor(client) { - this.client = client; - this.command_helper = new connection_1.CommandHelper(this); - } - } - connection_1.AbstractServerConnection = AbstractServerConnection; - let voice; - (function (voice) { - let PlayerState; - (function (PlayerState) { - PlayerState[PlayerState["PREBUFFERING"] = 0] = "PREBUFFERING"; - PlayerState[PlayerState["PLAYING"] = 1] = "PLAYING"; - PlayerState[PlayerState["BUFFERING"] = 2] = "BUFFERING"; - PlayerState[PlayerState["STOPPING"] = 3] = "STOPPING"; - PlayerState[PlayerState["STOPPED"] = 4] = "STOPPED"; - })(PlayerState = voice.PlayerState || (voice.PlayerState = {})); - class AbstractVoiceConnection { - constructor(connection) { - this.connection = connection; - } - } - voice.AbstractVoiceConnection = AbstractVoiceConnection; - })(voice = connection_1.voice || (connection_1.voice = {})); - class ServerCommand { - } - connection_1.ServerCommand = ServerCommand; - class AbstractCommandHandler { - constructor(connection) { - this.volatile_handler_boss = false; /* if true than the command handler could be registered twice to two or more handlers */ - this.ignore_consumed = false; - this.connection = connection; - } - } - connection_1.AbstractCommandHandler = AbstractCommandHandler; - class AbstractCommandHandlerBoss { - constructor(connection) { - this.command_handlers = []; - /* TODO: Timeout */ - this.single_command_handler = []; - this.connection = connection; - } - destroy() { - this.command_handlers = undefined; - this.single_command_handler = undefined; - } - register_handler(handler) { - if (!handler.volatile_handler_boss && handler.handler_boss) - throw "handler already registered"; - this.command_handlers.remove(handler); /* just to be sure */ - this.command_handlers.push(handler); - handler.handler_boss = this; - } - unregister_handler(handler) { - if (!handler.volatile_handler_boss && handler.handler_boss !== this) { - console.warn(_translations.Iazp8WAl || (_translations.Iazp8WAl = tr("Tried to unregister command handler which does not belong to the handler boss"))); - return; - } - this.command_handlers.remove(handler); - handler.handler_boss = undefined; - } - register_single_handler(handler) { - this.single_command_handler.push(handler); - } - remove_single_handler(handler) { - this.single_command_handler.remove(handler); - } - handlers() { - return this.command_handlers; - } - invoke_handle(command) { - let flag_consumed = false; - for (const handler of this.command_handlers) { - try { - if (!flag_consumed || handler.ignore_consumed) - flag_consumed = flag_consumed || handler.handle_command(command); - } - catch (error) { - console.error(_translations.osT4NYsM || (_translations.osT4NYsM = tr("Failed to invoke command handler. Invocation results in an exception: %o")), error); - } - } - for (const handler of [...this.single_command_handler]) { - if (handler.command && handler.command != command.command) - continue; - try { - if (handler.function(command)) - this.single_command_handler.remove(handler); - } - catch (error) { - console.error(_translations.kb_ARAZP || (_translations.kb_ARAZP = tr("Failed to invoke single command handler. Invocation results in an exception: %o")), error); - } - } - return flag_consumed; - } - } - connection_1.AbstractCommandHandlerBoss = AbstractCommandHandlerBoss; -})(connection || (connection = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["37651e247358097e3a713c020f24649c058880f6fa693a9c81181c5193e5b8ef"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["37651e247358097e3a713c020f24649c058880f6fa693a9c81181c5193e5b8ef"] = "37651e247358097e3a713c020f24649c058880f6fa693a9c81181c5193e5b8ef"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "pCk7xYst", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (98,47)" }, { name: "G_WEzBlb", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (112,59)" }, { name: "y8lxS0mg", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (143,50)" }, { name: "RBhEfyBT", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (163,51)" }, { name: "N3Jb_ujY", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (165,51)" }, { name: "byMDJXBp", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (199,33)" }, { name: "kJ99wZWj", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (228,34)" }, { name: "vSKb8F5P", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (228,61)" }, { name: "z78_SMMr", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (236,45)" }, { name: "smS5MNGV", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (236,70)" }, { name: "yKYk5MrN", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (238,46)" }, { name: "T9XgymAy", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (238,99)" }, { name: "xGqliR_T", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (274,50)" }, { name: "hTYqyg0W", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (290,59)" }, { name: "LZKNb1ud", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (297,55)" }, { name: "m95mid7y", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (329,47)" }, { name: "cO7AsMbZ", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (351,46)" }, { name: "Tr8N0T8J", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (356,55)" }, { name: "tGrW50fT", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (367,46)" }, { name: "tqXi_0qx", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (372,55)" }, { name: "YwXRwg0u", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (442,38)" }, { name: "cJ2nujBf", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (498,55)" }, { name: "NTMrV0pQ", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (551,63)" }, { name: "gEcJmHRi", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (586,51)" }, { name: "rsbbZ5vo", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (591,51)" }, { name: "FUu2Z3p0", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (597,55)" }, { name: "BuZ27Ktg", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (601,25)" }, { name: "BID316jI", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (684,30)" }, { name: "fzc4kFcz", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (694,51)" }, { name: "mF6Ppr3u", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (700,51)" }, { name: "XxAerQnq", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (706,51)" }, { name: "tBW9j_7C", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (719,51)" }, { name: "_E2eMYr4", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (767,55)" }, { name: "kgIHfhjS", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (767,136)" }, { name: "ruiHzDfv", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (767,159)" }, { name: "U0exVRxM", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (871,47)" }, { name: "suQhKZ2M", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (882,51)" }, { name: "BxOvO8Ec", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (938,46)" }, { name: "_5Wlb_tM", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (990,34)" }, { name: "HMeyZ6hh", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (1002,34)" }, { name: "bkMX72xe", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (1016,50)" }, { name: "Pqgsw3nk", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (1056,46)" }, { name: "acswhp6U", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (1072,46)" }, { name: "JHeDrma5", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (1094,46)" }, { name: "KYFQM8h2", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (1118,46)" }, { name: "MX9isGwd", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (1132,46)" }, { name: "x8tCYqXl", path: "D:/TeaSpeak/web/shared/js/connection/CommandHandler.ts (1147,46)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -var connection; -(function (connection_2) { - class ServerConnectionCommandBoss extends connection_2.AbstractCommandHandlerBoss { - constructor(connection) { - super(connection); - } - } - connection_2.ServerConnectionCommandBoss = ServerConnectionCommandBoss; - class ConnectionCommandHandler extends connection_2.AbstractCommandHandler { - constructor(connection) { - super(connection); - this.connection_handler = connection.client; - this["error"] = this.handleCommandResult; - this["channellist"] = this.handleCommandChannelList; - this["channellistfinished"] = this.handleCommandChannelListFinished; - this["notifychannelcreated"] = this.handleCommandChannelCreate; - this["notifychanneldeleted"] = this.handleCommandChannelDelete; - this["notifychannelhide"] = this.handleCommandChannelHide; - this["notifychannelshow"] = this.handleCommandChannelShow; - this["notifyserverconnectioninfo"] = this.handleNotifyServerConnectionInfo; - this["notifyconnectioninfo"] = this.handleNotifyConnectionInfo; - this["notifycliententerview"] = this.handleCommandClientEnterView; - this["notifyclientleftview"] = this.handleCommandClientLeftView; - this["notifyclientmoved"] = this.handleNotifyClientMoved; - this["initserver"] = this.handleCommandServerInit; - this["notifychannelmoved"] = this.handleNotifyChannelMoved; - this["notifychanneledited"] = this.handleNotifyChannelEdited; - this["notifytextmessage"] = this.handleNotifyTextMessage; - this["notifyclientchatcomposing"] = this.notifyClientChatComposing; - this["notifyclientchatclosed"] = this.handleNotifyClientChatClosed; - this["notifyclientupdated"] = this.handleNotifyClientUpdated; - this["notifyserveredited"] = this.handleNotifyServerEdited; - this["notifyserverupdated"] = this.handleNotifyServerUpdated; - this["notifyclientpoke"] = this.handleNotifyClientPoke; - this["notifymusicplayerinfo"] = this.handleNotifyMusicPlayerInfo; - this["notifyservergroupclientadded"] = this.handleNotifyServerGroupClientAdd; - this["notifyservergroupclientdeleted"] = this.handleNotifyServerGroupClientRemove; - this["notifyclientchannelgroupchanged"] = this.handleNotifyClientChannelGroupChanged; - this["notifychannelsubscribed"] = this.handleNotifyChannelSubscribed; - this["notifychannelunsubscribed"] = this.handleNotifyChannelUnsubscribed; - this["notifyconversationhistory"] = this.handleNotifyConversationHistory; - this["notifyconversationmessagedelete"] = this.handleNotifyConversationMessageDelete; - this["notifymusicstatusupdate"] = this.handleNotifyMusicStatusUpdate; - this["notifymusicplayersongchange"] = this.handleMusicPlayerSongChange; - this["notifyplaylistsongadd"] = this.handleNotifyPlaylistSongAdd; - this["notifyplaylistsongremove"] = this.handleNotifyPlaylistSongRemove; - this["notifyplaylistsongreorder"] = this.handleNotifyPlaylistSongReorder; - this["notifyplaylistsongloaded"] = this.handleNotifyPlaylistSongLoaded; - } - loggable_invoker(unique_id, client_id, name) { - const id = parseInt(client_id); - if (typeof (client_id) === "undefined" || Number.isNaN(id)) - return undefined; - if (id == 0) - return { - client_id: 0, - client_unique_id: this.connection_handler.channelTree.server.properties.virtualserver_unique_identifier, - client_name: this.connection_handler.channelTree.server.properties.virtualserver_name, - }; - return { - client_unique_id: unique_id, - client_name: name, - client_id: client_id - }; - } - proxy_command_promise(promise, options) { - if (!options.process_result) - return promise; - return promise.catch(ex => { - if (options.process_result) { - if (ex instanceof CommandResult) { - let res = ex; - if (!res.success) { - if (res.id == ErrorID.PERMISSION_ERROR) { //Permission error - const permission = this.connection_handler.permissions.resolveInfo(res.json["failed_permid"]); - res.message = (_translations.pCk7xYst || (_translations.pCk7xYst = tr("Insufficient client permissions. Failed on permission "))) + (permission ? permission.name : "unknown"); - this.connection_handler.log.log(log.server.Type.ERROR_PERMISSION, { - permission: this.connection_handler.permissions.resolveInfo(res.json["failed_permid"]) - }); - this.connection_handler.sound.play(Sound.ERROR_INSUFFICIENT_PERMISSIONS); - } - else if (res.id != ErrorID.EMPTY_RESULT) { - this.connection_handler.log.log(log.server.Type.ERROR_CUSTOM, { - message: res.extra_message.length == 0 ? res.message : res.extra_message - }); - } - } - } - else if (typeof (ex) === "string") { - this.connection_handler.log.log(log.server.Type.CONNECTION_COMMAND_ERROR, { error: ex }); - } - else { - log.error(LogCategory.NETWORKING, _translations.G_WEzBlb || (_translations.G_WEzBlb = tr("Invalid promise result type: %s. Result: %o")), typeof (ex), ex); - } - } - return Promise.reject(ex); - }); - } - handle_command(command) { - if (this[command.command]) { - this[command.command](command.arguments); - return true; - } - return false; - } - set_handler(command, handler) { - this[command] = handler; - } - unset_handler(command, handler) { - if (handler && this[command] != handler) - return; - this[command] = undefined; - } - handleCommandResult(json) { - json = json[0]; //Only one bulk - let code = json["return_code"]; - if (!code || code.length == 0) { - log.warn(LogCategory.NETWORKING, _translations.y8lxS0mg || (_translations.y8lxS0mg = tr("Invalid return code! (%o)")), json); - return; - } - let retListeners = this.connection["_retListener"]; - for (let e of retListeners) { - if (e.code != code) - continue; - retListeners.remove(e); - let result = new CommandResult(json); - if (result.success) - e.resolve(result); - else - e.reject(result); - break; - } - } - handleCommandServerInit(json) { - //We could setup the voice channel - if (this.connection.support_voice()) { - log.debug(LogCategory.NETWORKING, _translations.RBhEfyBT || (_translations.RBhEfyBT = tr("Setting up voice"))); - } - else { - log.debug(LogCategory.NETWORKING, _translations.N3Jb_ujY || (_translations.N3Jb_ujY = tr("Skipping voice setup (No voice bridge available)"))); - } - json = json[0]; //Only one bulk - this.connection_handler.channelTree.registerClient(this.connection_handler.getClient()); - this.connection.client.side_bar.channel_conversations().reset(); - this.connection.client.clientId = parseInt(json["aclid"]); - this.connection.client.getClient().updateVariables({ key: "client_nickname", value: json["acn"] }); - let updates = []; - for (let key in json) { - if (key === "aclid") - continue; - if (key === "acn") - continue; - updates.push({ key: key, value: json[key] }); - } - this.connection.client.channelTree.server.updateVariables(false, ...updates); - const properties = this.connection.client.channelTree.server.properties; - /* host message */ - if (properties.virtualserver_hostmessage_mode > 0) { - if (properties.virtualserver_hostmessage_mode == 1) { - /* show in log */ - this.connection_handler.log.log(log.server.Type.SERVER_HOST_MESSAGE, { - message: properties.virtualserver_hostmessage - }); - } - else { - /* create modal/create modal and quit */ - createModal({ - header: _translations.byMDJXBp || (_translations.byMDJXBp = tr("Host message")), - body: MessageHelper.bbcode_chat(properties.virtualserver_hostmessage), - footer: undefined - }).open(); - if (properties.virtualserver_hostmessage_mode == 3) { - /* first let the client initialize his stuff */ - setTimeout(() => { - this.connection_handler.log.log(log.server.Type.SERVER_HOST_MESSAGE_DISCONNECT, { - message: properties.virtualserver_welcomemessage - }); - this.connection.disconnect("host message disconnect"); - this.connection_handler.handleDisconnect(DisconnectReason.SERVER_HOSTMESSAGE); - this.connection_handler.sound.play(Sound.CONNECTION_DISCONNECTED); - }, 100); - } - } - } - /* welcome message */ - if (properties.virtualserver_welcomemessage) { - this.connection_handler.log.log(log.server.Type.SERVER_WELCOME_MESSAGE, { - message: properties.virtualserver_welcomemessage - }); - } - /* priviledge key */ - if (properties.virtualserver_ask_for_privilegekey) { - createInputModal(_translations.kJ99wZWj || (_translations.kJ99wZWj = tr("Use a privilege key")), _translations.vSKb8F5P || (_translations.vSKb8F5P = tr("This is a newly created server for which administrator privileges have not yet been claimed.
Please enter the \"privilege key\" that was automatically generated when this server was created to gain administrator permissions.")), message => message.length > 0, result => { - if (!result) - return; - const scon = server_connections.active_connection_handler(); - if (scon.serverConnection.connected) - scon.serverConnection.send_command("tokenuse", { - token: result - }).then(() => { - createInfoModal(_translations.z78_SMMr || (_translations.z78_SMMr = tr("Use privilege key")), _translations.smS5MNGV || (_translations.smS5MNGV = tr("Privilege key successfully used!"))).open(); - }).catch(error => { - createErrorModal(_translations.yKYk5MrN || (_translations.yKYk5MrN = tr("Use privilege key")), MessageHelper.formatMessage(_translations.T9XgymAy || (_translations.T9XgymAy = tr("Failed to use privilege key: {}")), error instanceof CommandResult ? error.message : error)).open(); - }); - }, { field_placeholder: 'Enter Privilege Key' }).open(); - } - this.connection_handler.log.log(log.server.Type.CONNECTION_CONNECTED, { - own_client: this.connection_handler.getClient().log_data() - }); - this.connection_handler.sound.play(Sound.CONNECTION_CONNECTED); - this.connection.client.onConnected(); - } - handleNotifyServerConnectionInfo(json) { - json = json[0]; - /* everything is a number, so lets parse it */ - for (const key of Object.keys(json)) - json[key] = parseFloat(json[key]); - this.connection_handler.channelTree.server.set_connection_info(json); - } - handleNotifyConnectionInfo(json) { - json = json[0]; - const object = new ClientConnectionInfo(); - /* everything is a number (except ip), so lets parse it */ - for (const key of Object.keys(json)) { - if (key === "connection_client_ip") - object[key] = json[key]; - else - object[key] = parseFloat(json[key]); - } - const client = this.connection_handler.channelTree.findClient(parseInt(json["clid"])); - if (!client) { - log.warn(LogCategory.NETWORKING, _translations.xGqliR_T || (_translations.xGqliR_T = tr("Received client connection info for unknown client (%o)")), json["clid"]); - return; - } - client.set_connection_info(object); - } - createChannelFromJson(json, ignoreOrder = false) { - let tree = this.connection.client.channelTree; - let channel = new ChannelEntry(parseInt(json["cid"]), json["channel_name"], tree.findChannel(json["cpid"])); - tree.insertChannel(channel); - if (json["channel_order"] !== "0") { - let prev = tree.findChannel(json["channel_order"]); - if (!prev && json["channel_order"] != 0) { - if (!ignoreOrder) { - log.error(LogCategory.NETWORKING, _translations.hTYqyg0W || (_translations.hTYqyg0W = tr("Invalid channel order id!"))); - return; - } - } - let parent = tree.findChannel(json["cpid"]); - if (!parent && json["cpid"] != 0) { - log.error(LogCategory.NETWORKING, _translations.LZKNb1ud || (_translations.LZKNb1ud = tr("Invalid channel parent"))); - return; - } - tree.moveChannel(channel, prev, parent); //TODO test if channel exists! - } - if (ignoreOrder) { - for (let ch of tree.channels) { - if (ch.properties.channel_order == channel.channelId) { - tree.moveChannel(ch, channel, channel.parent); //Corrent the order :) - } - } - } - let updates = []; - for (let key in json) { - if (key === "cid") - continue; - if (key === "cpid") - continue; - if (key === "invokerid") - continue; - if (key === "invokername") - continue; - if (key === "invokeruid") - continue; - if (key === "reasonid") - continue; - updates.push({ key: key, value: json[key] }); - } - channel.updateVariables(...updates); - } - handleCommandChannelList(json) { - this.connection.client.channelTree.hide_channel_tree(); /* dont perform channel inserts on the dom to prevent style recalculations */ - log.debug(LogCategory.NETWORKING, _translations.m95mid7y || (_translations.m95mid7y = tr("Got %d new channels")), json.length); - for (let index = 0; index < json.length; index++) - this.createChannelFromJson(json[index], true); - } - handleCommandChannelListFinished(json) { - this.connection.client.channelTree.show_channel_tree(); - } - handleCommandChannelCreate(json) { - this.createChannelFromJson(json[0]); - } - handleCommandChannelShow(json) { - this.createChannelFromJson(json[0]); //TODO may chat? - } - handleCommandChannelDelete(json) { - let tree = this.connection.client.channelTree; - const conversations = this.connection.client.side_bar.channel_conversations(); - log.info(LogCategory.NETWORKING, _translations.cO7AsMbZ || (_translations.cO7AsMbZ = tr("Got %d channel deletions")), json.length); - for (let index = 0; index < json.length; index++) { - conversations.delete_conversation(parseInt(json[index]["cid"])); - let channel = tree.findChannel(json[index]["cid"]); - if (!channel) { - log.error(LogCategory.NETWORKING, _translations.Tr8N0T8J || (_translations.Tr8N0T8J = tr("Invalid channel onDelete (Unknown channel)"))); - continue; - } - tree.deleteChannel(channel); - } - } - handleCommandChannelHide(json) { - let tree = this.connection.client.channelTree; - const conversations = this.connection.client.side_bar.channel_conversations(); - log.info(LogCategory.NETWORKING, _translations.tGrW50fT || (_translations.tGrW50fT = tr("Got %d channel hides")), json.length); - for (let index = 0; index < json.length; index++) { - conversations.delete_conversation(parseInt(json[index]["cid"])); - let channel = tree.findChannel(json[index]["cid"]); - if (!channel) { - log.error(LogCategory.NETWORKING, _translations.tqXi_0qx || (_translations.tqXi_0qx = tr("Invalid channel on hide (Unknown channel)"))); - continue; - } - tree.deleteChannel(channel); - } - } - handleCommandClientEnterView(json) { - let tree = this.connection.client.channelTree; - let client; - let channel = undefined; - let old_channel = undefined; - let reason_id, reason_msg; - let invokerid, invokername, invokeruid; - for (const entry of json) { - /* attempt to update properties if given */ - channel = typeof (entry["ctid"]) !== "undefined" ? tree.findChannel(parseInt(entry["ctid"])) : channel; - old_channel = typeof (entry["cfid"]) !== "undefined" ? tree.findChannel(parseInt(entry["cfid"])) : old_channel; - reason_id = typeof (entry["reasonid"]) !== "undefined" ? entry["reasonid"] : reason_id; - reason_msg = typeof (entry["reason_msg"]) !== "undefined" ? entry["reason_msg"] : reason_msg; - invokerid = typeof (entry["invokerid"]) !== "undefined" ? parseInt(entry["invokerid"]) : invokerid; - invokername = typeof (entry["invokername"]) !== "undefined" ? entry["invokername"] : invokername; - invokeruid = typeof (entry["invokeruid"]) !== "undefined" ? entry["invokeruid"] : invokeruid; - client = tree.findClient(parseInt(entry["clid"])); - if (!client) { - if (parseInt(entry["client_type_exact"]) == ClientType.CLIENT_MUSIC) { - client = new MusicClientEntry(parseInt(entry["clid"]), entry["client_nickname"]); - } - else { - client = new ClientEntry(parseInt(entry["clid"]), entry["client_nickname"]); - } - client.properties.client_type = parseInt(entry["client_type"]); - client = tree.insertClient(client, channel); - } - else { - tree.moveClient(client, channel); - } - if (this.connection_handler.client_status.queries_visible || client.properties.client_type != ClientType.CLIENT_QUERY) { - const own_channel = this.connection.client.getClient().currentChannel(); - this.connection_handler.log.log(log.server.Type.CLIENT_VIEW_ENTER, { - channel_from: old_channel ? old_channel.log_data() : undefined, - channel_to: channel ? channel.log_data() : undefined, - client: client.log_data(), - invoker: this.loggable_invoker(invokeruid, invokerid, invokername), - message: reason_msg, - reason: parseInt(reason_id), - own_channel: channel == own_channel - }); - if (reason_id == ViewReasonId.VREASON_USER_ACTION) { - if (own_channel == channel) - if (old_channel) - this.connection_handler.sound.play(Sound.USER_ENTERED); - else - this.connection_handler.sound.play(Sound.USER_ENTERED_CONNECT); - } - else if (reason_id == ViewReasonId.VREASON_MOVED) { - if (own_channel == channel) - this.connection_handler.sound.play(Sound.USER_ENTERED_MOVED); - } - else if (reason_id == ViewReasonId.VREASON_CHANNEL_KICK) { - if (own_channel == channel) - this.connection_handler.sound.play(Sound.USER_ENTERED_KICKED); - } - else if (reason_id == ViewReasonId.VREASON_SYSTEM) { - } - else { - console.warn(_translations.YwXRwg0u || (_translations.YwXRwg0u = tr("Unknown reasonid for %o")), reason_id); - } - } - let updates = []; - for (let key in entry) { - if (key == "cfid") - continue; - if (key == "ctid") - continue; - if (key === "invokerid") - continue; - if (key === "invokername") - continue; - if (key === "invokeruid") - continue; - if (key === "reasonid") - continue; - updates.push({ key: key, value: entry[key] }); - } - client.updateVariables(...updates); - /* if its a new client join, or a system reason (like we joined) */ - if (!old_channel || reason_id == 2) { - /* client new join */ - const conversation_manager = this.connection_handler.side_bar.private_conversations(); - const conversation = conversation_manager.find_conversation({ - unique_id: client.properties.client_unique_identifier, - client_id: client.clientId(), - name: client.clientNickName() - }, { - create: false, - attach: true - }); - if (conversation) - client.flag_text_unread = conversation.is_unread(); - } - if (client instanceof LocalClientEntry) { - client.initializeListener(); - this.connection_handler.update_voice_status(); - this.connection_handler.side_bar.info_frame().update_channel_talk(); - const conversations = this.connection.client.side_bar.channel_conversations(); - conversations.set_current_channel(client.currentChannel().channelId); - } - } - } - handleCommandClientLeftView(json) { - let reason_id = -1; - for (const entry of json) { - reason_id = entry["reasonid"] || reason_id; - let tree = this.connection.client.channelTree; - let client = tree.findClient(entry["clid"]); - if (!client) { - log.error(LogCategory.NETWORKING, _translations.cJ2nujBf || (_translations.cJ2nujBf = tr("Unknown client left!"))); - return 0; - } - if (client == this.connection.client.getClient()) { - if (reason_id == ViewReasonId.VREASON_BAN) { - this.connection.client.handleDisconnect(DisconnectReason.CLIENT_BANNED, entry); - } - else if (reason_id == ViewReasonId.VREASON_SERVER_KICK) { - this.connection.client.handleDisconnect(DisconnectReason.CLIENT_KICKED, entry); - } - else if (reason_id == ViewReasonId.VREASON_SERVER_SHUTDOWN) { - this.connection.client.handleDisconnect(DisconnectReason.SERVER_CLOSED, entry); - } - else if (reason_id == ViewReasonId.VREASON_SERVER_STOPPED) { - this.connection.client.handleDisconnect(DisconnectReason.SERVER_CLOSED, entry); - } - else { - this.connection.client.handleDisconnect(DisconnectReason.UNKNOWN, entry); - } - this.connection_handler.side_bar.info_frame().update_channel_talk(); - return; - } - if (this.connection_handler.client_status.queries_visible || client.properties.client_type != ClientType.CLIENT_QUERY) { - const own_channel = this.connection.client.getClient().currentChannel(); - let channel_from = tree.findChannel(entry["cfid"]); - let channel_to = tree.findChannel(entry["ctid"]); - const is_own_channel = channel_from == own_channel; - this.connection_handler.log.log(log.server.Type.CLIENT_VIEW_LEAVE, { - channel_from: channel_from ? channel_from.log_data() : undefined, - channel_to: channel_to ? channel_to.log_data() : undefined, - client: client.log_data(), - invoker: this.loggable_invoker(entry["invokeruid"], entry["invokerid"], entry["invokername"]), - message: entry["reasonmsg"], - reason: parseInt(entry["reasonid"]), - ban_time: parseInt(entry["bantime"]), - own_channel: is_own_channel - }); - if (is_own_channel) { - if (reason_id == ViewReasonId.VREASON_USER_ACTION) { - this.connection_handler.sound.play(Sound.USER_LEFT); - } - else if (reason_id == ViewReasonId.VREASON_SERVER_LEFT) { - this.connection_handler.sound.play(Sound.USER_LEFT_DISCONNECT); - } - else if (reason_id == ViewReasonId.VREASON_SERVER_KICK) { - this.connection_handler.sound.play(Sound.USER_LEFT_KICKED_SERVER); - } - else if (reason_id == ViewReasonId.VREASON_CHANNEL_KICK) { - this.connection_handler.sound.play(Sound.USER_LEFT_KICKED_CHANNEL); - } - else if (reason_id == ViewReasonId.VREASON_BAN) { - this.connection_handler.sound.play(Sound.USER_LEFT_BANNED); - } - else if (reason_id == ViewReasonId.VREASON_TIMEOUT) { - this.connection_handler.sound.play(Sound.USER_LEFT_TIMEOUT); - } - else if (reason_id == ViewReasonId.VREASON_MOVED) { - this.connection_handler.sound.play(Sound.USER_LEFT_MOVED); - } - else { - log.error(LogCategory.NETWORKING, _translations.NTMrV0pQ || (_translations.NTMrV0pQ = tr("Unknown client left reason %d!")), reason_id); - } - } - if (!channel_to) { - /* client left the server */ - const conversation_manager = this.connection_handler.side_bar.private_conversations(); - const conversation = conversation_manager.find_conversation({ - unique_id: client.properties.client_unique_identifier, - client_id: client.clientId(), - name: client.clientNickName() - }, { - create: false, - attach: false - }); - if (conversation) { - conversation.set_state(chat.PrivateConversationState.DISCONNECTED); - } - } - } - tree.deleteClient(client); - } - } - handleNotifyClientMoved(json) { - json = json[0]; //Only one bulk - let tree = this.connection.client.channelTree; - let client = tree.findClient(json["clid"]); - let self = client instanceof LocalClientEntry; - let channel_to = tree.findChannel(parseInt(json["ctid"])); - let channel_from = tree.findChannel(parseInt(json["cfid"])); - if (!client) { - log.error(LogCategory.NETWORKING, _translations.gEcJmHRi || (_translations.gEcJmHRi = tr("Unknown client move (Client)!"))); - return 0; - } - if (!channel_to) { - log.error(LogCategory.NETWORKING, _translations.rsbbZ5vo || (_translations.rsbbZ5vo = tr("Unknown client move (Channel to)!"))); - return 0; - } - if (!self) { - if (!channel_from) { - log.error(LogCategory.NETWORKING, _translations.FUu2Z3p0 || (_translations.FUu2Z3p0 = tr("Unknown client move (Channel from)!"))); - channel_from = client.currentChannel(); - } - else if (channel_from != client.currentChannel()) { - log.error(LogCategory.NETWORKING, _translations.BuZ27Ktg || (_translations.BuZ27Ktg = tr("Client move from invalid source channel! Local client registered in channel %d but server send %d.")), client.currentChannel().channelId, channel_from.channelId); - } - } - else { - channel_from = client.currentChannel(); - } - tree.moveClient(client, channel_to); - if (self) { - this.connection_handler.update_voice_status(channel_to); - for (const entry of client.channelTree.clientsByChannel(channel_from)) { - if (entry !== client && entry.get_audio_handle()) { - entry.get_audio_handle().abort_replay(); - entry.speaking = false; - } - } - const side_bar = this.connection_handler.side_bar; - side_bar.info_frame().update_channel_talk(); - const conversation_to = side_bar.channel_conversations().conversation(channel_to.channelId, false); - if (conversation_to) - conversation_to.update_private_state(); - if (channel_from) { - const conversation_from = side_bar.channel_conversations().conversation(channel_from.channelId, false); - if (conversation_from) - conversation_from.update_private_state(); - } - side_bar.channel_conversations().update_chat_box(); - } - const own_channel = this.connection.client.getClient().currentChannel(); - this.connection_handler.log.log(log.server.Type.CLIENT_VIEW_MOVE, { - channel_from: channel_from ? { - channel_id: channel_from.channelId, - channel_name: channel_from.channelName() - } : undefined, - channel_from_own: channel_from == own_channel, - channel_to: channel_to ? { - channel_id: channel_to.channelId, - channel_name: channel_to.channelName() - } : undefined, - channel_to_own: channel_to == own_channel, - client: { - client_id: client.clientId(), - client_name: client.clientNickName(), - client_unique_id: client.properties.client_unique_identifier - }, - client_own: self, - invoker: this.loggable_invoker(json["invokeruid"], json["invokerid"], json["invokername"]), - message: json["reasonmsg"], - reason: parseInt(json["reasonid"]), - }); - if (json["reasonid"] == ViewReasonId.VREASON_MOVED) { - if (self) - this.connection_handler.sound.play(Sound.USER_MOVED_SELF); - else if (own_channel == channel_to) - this.connection_handler.sound.play(Sound.USER_ENTERED_MOVED); - else if (own_channel == channel_from) - this.connection_handler.sound.play(Sound.USER_LEFT_MOVED); - } - else if (json["reasonid"] == ViewReasonId.VREASON_USER_ACTION) { - if (self) { } //If we do an action we wait for the error response - else if (own_channel == channel_to) - this.connection_handler.sound.play(Sound.USER_ENTERED); - else if (own_channel == channel_from) - this.connection_handler.sound.play(Sound.USER_LEFT); - } - else if (json["reasonid"] == ViewReasonId.VREASON_CHANNEL_KICK) { - if (self) { - this.connection_handler.sound.play(Sound.CHANNEL_KICKED); - } - else if (own_channel == channel_to) - this.connection_handler.sound.play(Sound.USER_ENTERED_KICKED); - else if (own_channel == channel_from) - this.connection_handler.sound.play(Sound.USER_LEFT_KICKED_CHANNEL); - } - else { - console.warn(_translations.BID316jI || (_translations.BID316jI = tr("Unknown reason id %o")), json["reasonid"]); - } - } - handleNotifyChannelMoved(json) { - json = json[0]; //Only one bulk - let tree = this.connection.client.channelTree; - let channel = tree.findChannel(json["cid"]); - if (!channel) { - log.error(LogCategory.NETWORKING, _translations.fzc4kFcz || (_translations.fzc4kFcz = tr("Unknown channel move (Channel)!"))); - return 0; - } - let prev = tree.findChannel(json["order"]); - if (!prev && json["order"] != 0) { - log.error(LogCategory.NETWORKING, _translations.mF6Ppr3u || (_translations.mF6Ppr3u = tr("Unknown channel move (prev)!"))); - return 0; - } - let parent = tree.findChannel(json["cpid"]); - if (!parent && json["cpid"] != 0) { - log.error(LogCategory.NETWORKING, _translations.XxAerQnq || (_translations.XxAerQnq = tr("Unknown channel move (parent)!"))); - return 0; - } - tree.moveChannel(channel, prev, parent); - } - handleNotifyChannelEdited(json) { - json = json[0]; //Only one bulk - let tree = this.connection.client.channelTree; - let channel = tree.findChannel(json["cid"]); - if (!channel) { - log.error(LogCategory.NETWORKING, _translations.tBW9j_7C || (_translations.tBW9j_7C = tr("Unknown channel edit (Channel)!"))); - return 0; - } - let updates = []; - for (let key in json) { - if (key === "cid") - continue; - if (key === "invokerid") - continue; - if (key === "invokername") - continue; - if (key === "invokeruid") - continue; - if (key === "reasonid") - continue; - updates.push({ key: key, value: json[key] }); - } - channel.updateVariables(...updates); - if (this.connection_handler.getClient().currentChannel() === channel) { - //TODO: Playback sound that your channel has been edited - this.connection_handler.update_voice_status(); - } - } - handleNotifyTextMessage(json) { - json = json[0]; //Only one bulk - let mode = json["targetmode"]; - if (mode == 1) { - //json["invokerid"], json["invokername"], json["invokeruid"] - const target_client_id = parseInt(json["target"]); - const target_own = target_client_id === this.connection.client.getClientId(); - if (target_own && target_client_id === json["invokerid"]) { - log.error(LogCategory.NETWORKING, tr("Received conversation message from invalid client id. Data: %o", json)); - return; - } - const conversation_manager = this.connection_handler.side_bar.private_conversations(); - const conversation = conversation_manager.find_conversation({ - client_id: target_own ? parseInt(json["invokerid"]) : target_client_id, - unique_id: target_own ? json["invokeruid"] : undefined, - name: target_own ? json["invokername"] : undefined - }, { - create: target_own, - attach: target_own - }); - if (!conversation) { - log.error(LogCategory.NETWORKING, _translations._E2eMYr4 || (_translations._E2eMYr4 = tr("Received conversation message for unknown conversation! (%s)")), target_own ? _translations.kgIHfhjS || (_translations.kgIHfhjS = tr("Remote message")) : _translations.ruiHzDfv || (_translations.ruiHzDfv = tr("Own message"))); - return; - } - conversation.append_message(json["msg"], { - type: target_own ? "partner" : "self", - name: json["invokername"], - unique_id: json["invokeruid"], - client_id: parseInt(json["invokerid"]) - }); - if (target_own) { - this.connection_handler.sound.play(Sound.MESSAGE_RECEIVED, { default_volume: .5 }); - const client = this.connection_handler.channelTree.findClient(parseInt(json["invokerid"])); - if (client) /* the client itself might be invisible */ - client.flag_text_unread = conversation.is_unread(); - } - else { - this.connection_handler.sound.play(Sound.MESSAGE_SEND, { default_volume: .5 }); - } - } - else if (mode == 2) { - const invoker = this.connection_handler.channelTree.findClient(parseInt(json["invokerid"])); - const own_channel_id = this.connection.client.getClient().currentChannel().channelId; - const channel_id = typeof (json["cid"]) !== "undefined" ? parseInt(json["cid"]) : own_channel_id; - const channel = this.connection_handler.channelTree.findChannel(channel_id) || this.connection_handler.getClient().currentChannel(); - if (json["invokerid"] == this.connection.client.clientId) - this.connection_handler.sound.play(Sound.MESSAGE_SEND, { default_volume: .5 }); - else if (channel_id == own_channel_id) { - this.connection_handler.sound.play(Sound.MESSAGE_RECEIVED, { default_volume: .5 }); - } - const conversations = this.connection_handler.side_bar.channel_conversations(); - const conversation = conversations.conversation(channel_id); - conversation.register_new_message({ - sender_database_id: invoker ? invoker.properties.client_database_id : 0, - sender_name: json["invokername"], - sender_unique_id: json["invokeruid"], - timestamp: typeof (json["timestamp"]) === "undefined" ? Date.now() : parseInt(json["timestamp"]), - message: json["msg"] - }); - if (conversation.is_unread() && channel) - channel.flag_text_unread = true; - } - else if (mode == 3) { - this.connection_handler.log.log(log.server.Type.GLOBAL_MESSAGE, { - message: json["msg"], - sender: { - client_unique_id: json["invokeruid"], - client_name: json["invokername"], - client_id: parseInt(json["invokerid"]) - } - }); - const invoker = this.connection_handler.channelTree.findClient(parseInt(json["invokerid"])); - const conversations = this.connection_handler.side_bar.channel_conversations(); - const conversation = conversations.conversation(0); - conversation.register_new_message({ - sender_database_id: invoker ? invoker.properties.client_database_id : 0, - sender_name: json["invokername"], - sender_unique_id: json["invokeruid"], - timestamp: typeof (json["timestamp"]) === "undefined" ? Date.now() : parseInt(json["timestamp"]), - message: json["msg"] - }); - this.connection_handler.channelTree.server.flag_text_unread = conversation.is_unread(); - } - } - notifyClientChatComposing(json) { - json = json[0]; - const conversation_manager = this.connection_handler.side_bar.private_conversations(); - const conversation = conversation_manager.find_conversation({ - client_id: parseInt(json["clid"]), - unique_id: json["cluid"], - name: undefined - }, { - create: false, - attach: false - }); - if (!conversation) - return; - conversation.trigger_typing(); - } - handleNotifyClientChatClosed(json) { - json = json[0]; //Only one bulk - //Chat partner has closed the conversation - //clid: "6" - //cluid: "YoWmG+dRGKD+Rxb7SPLAM5+B9tY=" - const conversation_manager = this.connection_handler.side_bar.private_conversations(); - const conversation = conversation_manager.find_conversation({ - client_id: parseInt(json["clid"]), - unique_id: json["cluid"], - name: undefined - }, { - create: false, - attach: false - }); - if (!conversation) { - log.warn(LogCategory.GENERAL, _translations.U0exVRxM || (_translations.U0exVRxM = tr("Received chat close for client, but we haven't a chat open."))); - return; - } - conversation.set_state(chat.PrivateConversationState.CLOSED); - } - handleNotifyClientUpdated(json) { - json = json[0]; //Only one bulk - let client = this.connection.client.channelTree.findClient(json["clid"]); - if (!client) { - log.error(LogCategory.NETWORKING, _translations.suQhKZ2M || (_translations.suQhKZ2M = tr("Tried to update an non existing client"))); - return; - } - let updates = []; - for (let key in json) { - if (key == "clid") - continue; - updates.push({ key: key, value: json[key] }); - } - client.updateVariables(...updates); - } - handleNotifyServerEdited(json) { - json = json[0]; - let updates = []; - for (let key in json) { - if (key === "invokerid") - continue; - if (key === "invokername") - continue; - if (key === "invokeruid") - continue; - if (key === "reasonid") - continue; - updates.push({ key: key, value: json[key] }); - } - this.connection.client.channelTree.server.updateVariables(false, ...updates); - } - handleNotifyServerUpdated(json) { - json = json[0]; - let updates = []; - for (let key in json) { - if (key === "invokerid") - continue; - if (key === "invokername") - continue; - if (key === "invokeruid") - continue; - if (key === "reasonid") - continue; - updates.push({ key: key, value: json[key] }); - } - this.connection.client.channelTree.server.updateVariables(true, ...updates); - } - handleNotifyMusicPlayerInfo(json) { - json = json[0]; - let bot = this.connection.client.channelTree.find_client_by_dbid(json["bot_id"]); - if (!bot || !(bot instanceof MusicClientEntry)) { - log.warn(LogCategory.CLIENT, _translations.BxOvO8Ec || (_translations.BxOvO8Ec = tr("Got music player info for unknown or invalid bot! (ID: %i, Entry: %o)")), json["bot_id"], bot); - return; - } - bot.handlePlayerInfo(json); - } - handleNotifyClientPoke(json) { - json = json[0]; - Modals.spawnPoke(this.connection_handler, { - id: parseInt(json["invokerid"]), - name: json["invokername"], - unique_id: json["invokeruid"] - }, json["msg"]); - this.connection_handler.sound.play(Sound.USER_POKED_SELF); - } - //TODO server chat message - handleNotifyServerGroupClientAdd(json) { - json = json[0]; - const self = this.connection.client.getClient(); - if (json["clid"] == self.clientId()) - this.connection_handler.sound.play(Sound.GROUP_SERVER_ASSIGNED_SELF); - } - //TODO server chat message - handleNotifyServerGroupClientRemove(json) { - json = json[0]; - const self = this.connection.client.getClient(); - if (json["clid"] == self.clientId()) { - this.connection_handler.sound.play(Sound.GROUP_SERVER_REVOKED_SELF); - } - else { - } - } - //TODO server chat message - handleNotifyClientChannelGroupChanged(json) { - json = json[0]; - const self = this.connection.client.getClient(); - if (json["clid"] == self.clientId()) { - this.connection_handler.sound.play(Sound.GROUP_CHANNEL_CHANGED_SELF); - } - } - handleNotifyChannelSubscribed(json) { - for (const entry of json) { - const channel = this.connection.client.channelTree.findChannel(entry["cid"]); - if (!channel) { - console.warn(_translations._5Wlb_tM || (_translations._5Wlb_tM = tr("Received channel subscribed for not visible channel (cid: %d)")), entry['cid']); - continue; - } - channel.flag_subscribed = true; - } - } - handleNotifyChannelUnsubscribed(json) { - for (const entry of json) { - const channel = this.connection.client.channelTree.findChannel(entry["cid"]); - if (!channel) { - console.warn(_translations.HMeyZ6hh || (_translations.HMeyZ6hh = tr("Received channel unsubscribed for not visible channel (cid: %d)")), entry['cid']); - continue; - } - channel.flag_subscribed = false; - for (const client of channel.clients(false)) - this.connection.client.channelTree.deleteClient(client); - } - } - handleNotifyConversationHistory(json) { - const conversations = this.connection.client.side_bar.channel_conversations(); - const conversation = conversations.conversation(parseInt(json[0]["cid"])); - if (!conversation) { - log.warn(LogCategory.NETWORKING, _translations.bkMX72xe || (_translations.bkMX72xe = tr("Received conversation history for invalid or unknown conversation (%o)")), json[0]["cid"]); - return; - } - for (const entry of json) { - conversation.register_new_message({ - message: entry["msg"], - sender_unique_id: entry["sender_unique_id"], - sender_name: entry["sender_name"], - timestamp: parseInt(entry["timestamp"]), - sender_database_id: parseInt(entry["sender_database_id"]) - }, false); - } - /* now update the boxes */ - /* No update needed because the command which triggers this notify should update the chat box on success - conversation.fix_scroll(true); - conversation.handle.update_chat_box(); - */ - } - handleNotifyConversationMessageDelete(json) { - let conversation; - const conversations = this.connection.client.side_bar.channel_conversations(); - for (const entry of json) { - if (typeof (entry["cid"]) !== "undefined") - conversation = conversations.conversation(parseInt(entry["cid"]), false); - if (!conversation) - continue; - conversation.delete_messages(parseInt(entry["timestamp_begin"]), parseInt(entry["timestamp_end"]), parseInt(entry["cldbid"]), parseInt(entry["limit"])); - } - } - handleNotifyMusicStatusUpdate(json) { - json = json[0]; - const bot_id = parseInt(json["bot_id"]); - const client = this.connection.client.channelTree.find_client_by_dbid(bot_id); - if (!client) { - log.warn(LogCategory.CLIENT, _translations.Pqgsw3nk || (_translations.Pqgsw3nk = tr("Received music bot status update for unknown bot (%d)")), bot_id); - return; - } - client.events.fire("music_status_update", { - player_replay_index: parseInt(json["player_replay_index"]), - player_buffered_index: parseInt(json["player_buffered_index"]) - }); - } - handleMusicPlayerSongChange(json) { - json = json[0]; - const bot_id = parseInt(json["bot_id"]); - const client = this.connection.client.channelTree.find_client_by_dbid(bot_id); - if (!client) { - log.warn(LogCategory.CLIENT, _translations.acswhp6U || (_translations.acswhp6U = tr("Received music bot status update for unknown bot (%d)")), bot_id); - return; - } - const song_id = parseInt(json["song_id"]); - let song; - if (song_id) { - song = new SongInfo(); - JSON.map_to(song, json); - } - client.events.fire("music_song_change", { - song: song - }); - } - handleNotifyPlaylistSongAdd(json) { - json = json[0]; - const playlist_id = parseInt(json["playlist_id"]); - const client = this.connection.client.channelTree.clients.find(e => e instanceof MusicClientEntry && e.properties.client_playlist_id === playlist_id); - if (!client) { - log.warn(LogCategory.CLIENT, _translations.JHeDrma5 || (_translations.JHeDrma5 = tr("Received playlist song add event, but we've no music bot for the playlist (%d)")), playlist_id); - return; - } - client.events.fire("playlist_song_add", { - song: { - song_id: parseInt(json["song_id"]), - song_invoker: json["song_invoker"], - song_previous_song_id: parseInt(json["song_previous_song_id"]), - song_url: json["song_url"], - song_url_loader: json["song_url_loader"], - song_loaded: json["song_loaded"] == true || json["song_loaded"] == "1", - song_metadata: json["song_metadata"] - } - }); - } - handleNotifyPlaylistSongRemove(json) { - json = json[0]; - const playlist_id = parseInt(json["playlist_id"]); - const client = this.connection.client.channelTree.clients.find(e => e instanceof MusicClientEntry && e.properties.client_playlist_id === playlist_id); - if (!client) { - log.warn(LogCategory.CLIENT, _translations.KYFQM8h2 || (_translations.KYFQM8h2 = tr("Received playlist song remove event, but we've no music bot for the playlist (%d)")), playlist_id); - return; - } - const song_id = parseInt(json["song_id"]); - client.events.fire("playlist_song_remove", { song_id: song_id }); - } - handleNotifyPlaylistSongReorder(json) { - json = json[0]; - const playlist_id = parseInt(json["playlist_id"]); - const client = this.connection.client.channelTree.clients.find(e => e instanceof MusicClientEntry && e.properties.client_playlist_id === playlist_id); - if (!client) { - log.warn(LogCategory.CLIENT, _translations.MX9isGwd || (_translations.MX9isGwd = tr("Received playlist song reorder event, but we've no music bot for the playlist (%d)")), playlist_id); - return; - } - const song_id = parseInt(json["song_id"]); - const previous_song_id = parseInt(json["song_previous_song_id"]); - client.events.fire("playlist_song_reorder", { song_id: song_id, previous_song_id: previous_song_id }); - } - handleNotifyPlaylistSongLoaded(json) { - json = json[0]; - const playlist_id = parseInt(json["playlist_id"]); - const client = this.connection.client.channelTree.clients.find(e => e instanceof MusicClientEntry && e.properties.client_playlist_id === playlist_id); - if (!client) { - log.warn(LogCategory.CLIENT, _translations.x8tCYqXl || (_translations.x8tCYqXl = tr("Received playlist song loaded event, but we've no music bot for the playlist (%d)")), playlist_id); - return; - } - const song_id = parseInt(json["song_id"]); - client.events.fire("playlist_song_loaded", { - song_id: song_id, - success: json["success"] == 1, - error_msg: json["load_error_msg"], - metadata: json["song_metadata"] - }); - } - } - connection_2.ConnectionCommandHandler = ConnectionCommandHandler; -})(connection || (connection = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["e9e95922a16d121df1c28714498c8e3967cc4a33184c1c27b9daebcd034ed5cd"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["e9e95922a16d121df1c28714498c8e3967cc4a33184c1c27b9daebcd034ed5cd"] = "e9e95922a16d121df1c28714498c8e3967cc4a33184c1c27b9daebcd034ed5cd"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "MwbGPBq7", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (248,43)" }, { name: "nF1SZku6", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (271,43)" }, { name: "Ycyq5vFI", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (545,26)" }, { name: "xjn9wuVk", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (672,47)" }, { name: "Dqn_5EM4", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (681,47)" }, { name: "yJaaczeF", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (726,43)" }, { name: "HC0JhWOd", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (772,47)" }, { name: "Zfxv8Gh8", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (881,48)" }, { name: "RpfhT5G_", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (890,48)" }, { name: "qcVDOT3t", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (928,43)" }, { name: "KjfmxVkY", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (931,48)" }, { name: "N9t94bx_", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (940,48)" }, { name: "h_SQX0Ol", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (952,55)" }, { name: "W3cTHtbm", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (997,47)" }, { name: "n7xfvxab", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (999,74)" }, { name: "N5oq_P39", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (1062,48)" }, { name: "UUEkQF5a", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (1076,48)" }, { name: "qeVWbl1T", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (1082,56)" }, { name: "yPO5jFrp", path: "D:/TeaSpeak/web/shared/js/FileManager.ts (1099,46)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -class FileEntry { -} -class FileListRequest { -} -var transfer; -(function (transfer) { - function spawn_download_transfer(key) { - return new RequestFileDownload(key); - } - transfer.spawn_download_transfer = spawn_download_transfer; - function spawn_upload_transfer(key) { - return new RequestFileUpload(key); - } - transfer.spawn_upload_transfer = spawn_upload_transfer; -})(transfer || (transfer = {})); -class RequestFileDownload { - constructor(key) { - this.transfer_key = key; - } - request_file() { - return __awaiter(this, void 0, void 0, function* () { - return yield this.try_fetch("https://" + this.transfer_key.peer.hosts[0] + ":" + this.transfer_key.peer.port); - }); - } - try_fetch(url) { - return __awaiter(this, void 0, void 0, function* () { - const response = yield fetch(url, { - method: 'GET', - cache: "no-cache", - mode: 'cors', - headers: { - 'transfer-key': this.transfer_key.key, - 'download-name': this.transfer_key.file_name, - 'Access-Control-Allow-Headers': '*', - 'Access-Control-Expose-Headers': '*' - } - }); - if (!response.ok) { - debugger; - throw (response.type == 'opaque' || response.type == 'opaqueredirect' ? "invalid cross origin flag! May target isn't a TeaSpeak server?" : response.statusText || "response is not ok"); - } - return response; - }); - } - get_key() { - return this.transfer_key; - } -} -class RequestFileUpload { - constructor(key) { - this.transfer_key = key; - } - get_key() { - return this.transfer_key; - } - put_data(data) { - return __awaiter(this, void 0, void 0, function* () { - const form_data = new FormData(); - if (data instanceof File) { - if (data.size != this.transfer_key.total_size) - throw "invalid size"; - form_data.append("file", data); - } - else if (typeof (data) === "string") { - if (data.length != this.transfer_key.total_size) - throw "invalid size"; - form_data.append("file", new Blob([data], { type: "application/octet-stream" })); - } - else { - const buffer = data; - if (buffer.byteLength != this.transfer_key.total_size) - throw "invalid size"; - form_data.append("file", new Blob([buffer], { type: "application/octet-stream" })); - } - yield this.try_put(form_data, "https://" + this.transfer_key.peer.hosts[0] + ":" + this.transfer_key.peer.port); - }); - } - try_put(data, url) { - return __awaiter(this, void 0, void 0, function* () { - const response = yield fetch(url, { - method: 'POST', - cache: "no-cache", - mode: 'cors', - body: data, - headers: { - 'transfer-key': this.transfer_key.key, - 'Access-Control-Allow-Headers': '*', - 'Access-Control-Expose-Headers': '*' - } - }); - if (!response.ok) - throw (response.type == 'opaque' || response.type == 'opaqueredirect' ? "invalid cross origin flag! May target isn't a TeaSpeak server?" : response.statusText || "response is not ok"); - }); - } -} -class FileManager extends connection.AbstractCommandHandler { - constructor(client) { - super(client.serverConnection); - this.listRequests = []; - this.pending_download_requests = []; - this.pending_upload_requests = []; - this.transfer_counter = 1; - this.handle = client; - this.icons = new IconManager(this); - this.avatars = new AvatarManager(this); - this.connection.command_handler_boss().register_handler(this); - } - destroy() { - if (this.connection) { - const hboss = this.connection.command_handler_boss(); - if (hboss) - hboss.unregister_handler(this); - } - this.listRequests = undefined; - this.pending_download_requests = undefined; - this.pending_upload_requests = undefined; - this.icons && this.icons.destroy(); - this.icons = undefined; - this.avatars && this.avatars.destroy(); - this.avatars = undefined; - } - handle_command(command) { - switch (command.command) { - case "notifyfilelist": - this.notifyFileList(command.arguments); - return true; - case "notifyfilelistfinished": - this.notifyFileListFinished(command.arguments); - return true; - case "notifystartdownload": - this.notifyStartDownload(command.arguments); - return true; - case "notifystartupload": - this.notifyStartUpload(command.arguments); - return true; - } - return false; - } - /******************************** File list ********************************/ - //TODO multiple requests (same path) - requestFileList(path, channel, password) { - const _this = this; - return new Promise((accept, reject) => { - let req = new FileListRequest(); - req.path = path; - req.entries = []; - req.callback = accept; - _this.listRequests.push(req); - _this.handle.serverConnection.send_command("ftgetfilelist", { "path": path, "cid": (channel ? channel.channelId : "0"), "cpw": (password ? password : "") }).then(() => { }).catch(reason => { - _this.listRequests.remove(req); - if (reason instanceof CommandResult) { - if (reason.id == 0x0501) { - accept([]); //Empty result - return; - } - } - reject(reason); - }); - }); - } - notifyFileList(json) { - let entry = undefined; - for (let e of this.listRequests) { - if (e.path == json[0]["path"]) { - entry = e; - break; - } - } - if (!entry) { - log.error(LogCategory.CLIENT, _translations.MwbGPBq7 || (_translations.MwbGPBq7 = tr("Invalid file list entry. Path: %s")), json[0]["path"]); - return; - } - for (let e of json) { - e.datetime = parseInt(e.datetime + ""); - e.size = parseInt(e.size + ""); - e.type = parseInt(e.type + ""); - entry.entries.push(e); - } - } - notifyFileListFinished(json) { - let entry = undefined; - for (let e of this.listRequests) { - if (e.path == json[0]["path"]) { - entry = e; - this.listRequests.remove(e); - break; - } - } - if (!entry) { - log.error(LogCategory.CLIENT, _translations.nF1SZku6 || (_translations.nF1SZku6 = tr("Invalid file list entry finish. Path: ")), json[0]["path"]); - return; - } - entry.callback(entry.entries); - } - /******************************** File download/upload ********************************/ - download_file(path, file, channel, password) { - const transfer_data = { - file_name: file, - file_path: path, - client_transfer_id: this.transfer_counter++ - }; - this.pending_download_requests.push(transfer_data); - return new Promise((resolve, reject) => { - transfer_data["_callback"] = resolve; - this.handle.serverConnection.send_command("ftinitdownload", { - "path": path, - "name": file, - "cid": (channel ? channel.channelId : "0"), - "cpw": (password ? password : ""), - "clientftfid": transfer_data.client_transfer_id, - "seekpos": 0, - "proto": 1 - }, { process_result: false }).catch(reason => { - this.pending_download_requests.remove(transfer_data); - reject(reason); - }); - }); - } - upload_file(options) { - const transfer_data = { - file_path: options.path, - file_name: options.name, - client_transfer_id: this.transfer_counter++, - total_size: options.size - }; - this.pending_upload_requests.push(transfer_data); - return new Promise((resolve, reject) => { - transfer_data["_callback"] = resolve; - this.handle.serverConnection.send_command("ftinitupload", { - "path": options.path, - "name": options.name, - "cid": (options.channel ? options.channel.channelId : "0"), - "cpw": options.channel_password || "", - "clientftfid": transfer_data.client_transfer_id, - "size": options.size, - "overwrite": options.overwrite, - "resume": false, - "proto": 1 - }).catch(reason => { - this.pending_upload_requests.remove(transfer_data); - reject(reason); - }); - }); - } - notifyStartDownload(json) { - json = json[0]; - let clientftfid = parseInt(json["clientftfid"]); - let transfer; - for (let e of this.pending_download_requests) - if (e.client_transfer_id == clientftfid) { - transfer = e; - break; - } - transfer.server_transfer_id = parseInt(json["serverftfid"]); - transfer.key = json["ftkey"]; - transfer.total_size = json["size"]; - transfer.peer = { - hosts: (json["ip"] || "").split(","), - port: parseInt(json["port"]) - }; - if (transfer.peer.hosts.length == 0) - transfer.peer.hosts.push("0.0.0.0"); - if (transfer.peer.hosts[0].length == 0 || transfer.peer.hosts[0] == '0.0.0.0') - transfer.peer.hosts[0] = this.handle.serverConnection.remote_address().host; - transfer["_callback"](transfer); - this.pending_download_requests.remove(transfer); - } - notifyStartUpload(json) { - json = json[0]; - let transfer; - let clientftfid = parseInt(json["clientftfid"]); - for (let e of this.pending_upload_requests) - if (e.client_transfer_id == clientftfid) { - transfer = e; - break; - } - transfer.server_transfer_id = parseInt(json["serverftfid"]); - transfer.key = json["ftkey"]; - transfer.peer = { - hosts: (json["ip"] || "").split(","), - port: parseInt(json["port"]) - }; - if (transfer.peer.hosts.length == 0) - transfer.peer.hosts.push("0.0.0.0"); - if (transfer.peer.hosts[0].length == 0 || transfer.peer.hosts[0] == '0.0.0.0') - transfer.peer.hosts[0] = this.handle.serverConnection.remote_address().host; - transfer["_callback"](transfer); - this.pending_upload_requests.remove(transfer); - } - /** File management **/ - delete_file(props) { - return __awaiter(this, void 0, void 0, function* () { - if (!props.name) - throw "invalid name!"; - try { - yield this.handle.serverConnection.send_command("ftdeletefile", { - cid: props.cid || 0, - cpw: props.cpw, - path: props.path || "", - name: props.name - }); - } - catch (error) { - throw error; - } - }); - } -} -class Icon { -} -var ImageType; -(function (ImageType) { - ImageType[ImageType["UNKNOWN"] = 0] = "UNKNOWN"; - ImageType[ImageType["BITMAP"] = 1] = "BITMAP"; - ImageType[ImageType["PNG"] = 2] = "PNG"; - ImageType[ImageType["GIF"] = 3] = "GIF"; - ImageType[ImageType["SVG"] = 4] = "SVG"; - ImageType[ImageType["JPEG"] = 5] = "JPEG"; -})(ImageType || (ImageType = {})); -function media_image_type(type, file) { - switch (type) { - case ImageType.BITMAP: - return "bmp"; - case ImageType.GIF: - return "gif"; - case ImageType.SVG: - return file ? "svg" : "svg+xml"; - case ImageType.JPEG: - return "jpeg"; - case ImageType.UNKNOWN: - case ImageType.PNG: - default: - return "png"; - } -} -function image_type(encoded_data, base64_encoded) { - const ab2str10 = () => { - const buf = new Uint8Array(encoded_data); - if (buf.byteLength < 10) - return ""; - let result = ""; - for (let index = 0; index < 10; index++) - result += String.fromCharCode(buf[index]); - return result; - }; - const bin = typeof (encoded_data) === "string" ? ((typeof (base64_encoded) === "undefined" || base64_encoded) ? atob(encoded_data) : encoded_data) : ab2str10(); - if (bin.length < 10) - return ImageType.UNKNOWN; - if (bin[0] == String.fromCharCode(66) && bin[1] == String.fromCharCode(77)) { - return ImageType.BITMAP; - } - else if (bin.substr(0, 8) == "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a") { - return ImageType.PNG; - } - else if (bin.substr(0, 4) == "\x47\x49\x46\x38" && (bin[4] == '\x37' || bin[4] == '\x39') && bin[5] == '\x61') { - return ImageType.GIF; - } - else if (bin[0] == '\x3c') { - return ImageType.SVG; - } - else if (bin[0] == '\xFF' && bin[1] == '\xd8') { - return ImageType.JPEG; - } - return ImageType.UNKNOWN; -} -class CacheManager { - constructor(name) { - this.cache_name = name; - } - setupped() { return !!this._cache_category; } - reset() { - return __awaiter(this, void 0, void 0, function* () { - if (!window.caches) - return; - try { - yield caches.delete(this.cache_name); - } - catch (error) { - throw "Failed to delete cache: " + error; - } - try { - yield this.setup(); - } - catch (error) { - throw "Failed to reinitialize cache!"; - } - }); - } - setup() { - return __awaiter(this, void 0, void 0, function* () { - if (!window.caches) - throw "Missing caches!"; - this._cache_category = yield caches.open(this.cache_name); - }); - } - cleanup(max_age) { - return __awaiter(this, void 0, void 0, function* () { - /* FIXME: TODO */ - }); - } - resolve_cached(key, max_age) { - return __awaiter(this, void 0, void 0, function* () { - max_age = typeof (max_age) === "number" ? max_age : -1; - const cached_response = yield this._cache_category.match("https://_local_cache/cache_request_" + key); - if (!cached_response) - return undefined; - /* FIXME: Max age */ - return cached_response; - }); - } - put_cache(key, value, type, headers) { - return __awaiter(this, void 0, void 0, function* () { - const new_headers = new Headers(); - for (const key of value.headers.keys()) - new_headers.set(key, value.headers.get(key)); - if (type) - new_headers.set("Content-type", type); - for (const key of Object.keys(headers || {})) - new_headers.set(key, headers[key]); - yield this._cache_category.put("https://_local_cache/cache_request_" + key, new Response(value.body, { - headers: new_headers - })); - }); - } - delete(key) { - return __awaiter(this, void 0, void 0, function* () { - const flag = yield this._cache_category.delete("https://_local_cache/cache_request_" + key, { - ignoreVary: true, - ignoreMethod: true, - ignoreSearch: true - }); - if (!flag) { - console.warn(_translations.Ycyq5vFI || (_translations.Ycyq5vFI = tr("Failed to delete key %s from cache!")), flag); - } - }); - } -} -class IconManager { - constructor(handle) { - this._id_urls = {}; - this._loading_promises = {}; - this.handle = handle; - } - destroy() { - if (URL.revokeObjectURL) { - for (const id of Object.keys(this._id_urls)) - URL.revokeObjectURL(this._id_urls[id]); - } - this._id_urls = undefined; - this._loading_promises = undefined; - } - clear_cache() { - return __awaiter(this, void 0, void 0, function* () { - yield IconManager.cache.reset(); - if (URL.revokeObjectURL) { - for (const id of Object.keys(this._id_urls)) - URL.revokeObjectURL(this._id_urls[id]); - } - this._id_urls = {}; - this._loading_promises = {}; - }); - } - delete_icon(id) { - return __awaiter(this, void 0, void 0, function* () { - if (id <= 1000) - throw "invalid id!"; - yield this.handle.delete_file({ - name: '/icon_' + id - }); - }); - } - iconList() { - return this.handle.requestFileList("/icons"); - } - create_icon_download(id) { - return this.handle.download_file("", "/icon_" + id); - } - static _response_url(response) { - return __awaiter(this, void 0, void 0, function* () { - if (!response.headers.has('X-media-bytes')) - throw "missing media bytes"; - const type = image_type(response.headers.get('X-media-bytes')); - const media = media_image_type(type); - const blob = yield response.blob(); - if (blob.type !== "image/" + media) - return URL.createObjectURL(blob.slice(0, blob.size, "image/" + media)); - else - return URL.createObjectURL(blob); - }); - } - resolved_cached(id) { - return __awaiter(this, void 0, void 0, function* () { - if (this._id_urls[id]) - return { - id: id, - url: this._id_urls[id] - }; - if (!IconManager.cache.setupped()) - yield IconManager.cache.setup(); - const response = yield IconManager.cache.resolve_cached('icon_' + id); //TODO age! - if (response) { - const url = yield IconManager._response_url(response); - if (this._id_urls[id]) - URL.revokeObjectURL(this._id_urls[id]); - return { - id: id, - url: url - }; - } - return undefined; - }); - } - static load_cached_icon(id, ignore_age) { - if (this._static_id_url[id]) { - return { - id: id, - url: this._static_id_url[id] - }; - } - if (this._static_cached_promise[id]) - return this._static_cached_promise[id]; - return (this._static_cached_promise[id] = (() => __awaiter(this, void 0, void 0, function* () { - if (!this.cache.setupped()) - yield this.cache.setup(); - const response = yield this.cache.resolve_cached('icon_' + id); //TODO age! - if (response) { - const url = yield this._response_url(response); - if (this._static_id_url[id]) - URL.revokeObjectURL(this._static_id_url[id]); - this._static_id_url[id] = url; - return { - id: id, - url: url - }; - } - }))()); - } - _load_icon(id) { - return __awaiter(this, void 0, void 0, function* () { - try { - let download_key; - try { - download_key = yield this.create_icon_download(id); - } - catch (error) { - log.error(LogCategory.CLIENT, _translations.xjn9wuVk || (_translations.xjn9wuVk = tr("Could not request download for icon %d: %o")), id, error); - throw "Failed to request icon"; - } - const downloader = transfer.spawn_download_transfer(download_key); - let response; - try { - response = yield downloader.request_file(); - } - catch (error) { - log.error(LogCategory.CLIENT, _translations.Dqn_5EM4 || (_translations.Dqn_5EM4 = tr("Could not download icon %d: %o")), id, error); - throw "failed to download icon"; - } - const type = image_type(response.headers.get('X-media-bytes')); - const media = media_image_type(type); - yield IconManager.cache.put_cache('icon_' + id, response.clone(), "image/" + media); - const url = yield IconManager._response_url(response.clone()); - if (this._id_urls[id]) - URL.revokeObjectURL(this._id_urls[id]); - this._id_urls[id] = url; - this._loading_promises[id] = undefined; - return { - id: id, - url: url - }; - } - catch (error) { - setTimeout(() => { - this._loading_promises[id] = undefined; - }, 1000 * 60); /* try again in 60 seconds */ - throw error; - } - }); - } - download_icon(id) { - return this._loading_promises[id] || (this._loading_promises[id] = this._load_icon(id)); - } - resolve_icon(id) { - return __awaiter(this, void 0, void 0, function* () { - id = id >>> 0; - try { - const result = yield this.resolved_cached(id); - if (result) - return result; - throw ""; - } - catch (error) { } - try { - const result = yield this.download_icon(id); - if (result) - return result; - throw "load result is empty"; - } - catch (error) { - log.error(LogCategory.CLIENT, _translations.yJaaczeF || (_translations.yJaaczeF = tr("Icon download failed of icon %d: %o")), id, error); - } - throw "icon not found"; - }); - } - static generate_tag(icon, options) { - options = options || {}; - let icon_container = $.spawn("div").addClass("icon-container icon_empty"); - let icon_load_image = $.spawn("div").addClass("icon_loading"); - const icon_image = $.spawn("img").attr("width", 16).attr("height", 16).attr("alt", ""); - const _apply = (icon) => { - let id = icon ? (icon.id >>> 0) : 0; - if (!icon || id == 0) { - icon_load_image.remove(); - icon_load_image = undefined; - return; - } - else if (id < 1000) { - icon_load_image.remove(); - icon_load_image = undefined; - icon_container.removeClass("icon_empty").addClass("icon_em client-group_" + id); - return; - } - icon_image.attr("src", icon.url); - icon_container.append(icon_image).removeClass("icon_empty"); - if (typeof (options.animate) !== "boolean" || options.animate) { - icon_image.css("opacity", 0); - icon_load_image.animate({ opacity: 0 }, 50, function () { - icon_load_image.remove(); - icon_image.animate({ opacity: 1 }, 150); - }); - } - else { - icon_load_image.remove(); - icon_load_image = undefined; - } - }; - if (icon instanceof Promise) { - icon.then(_apply).catch(error => { - log.error(LogCategory.CLIENT, _translations.HC0JhWOd || (_translations.HC0JhWOd = tr("Could not load icon. Reason: %s")), error); - icon_load_image.removeClass("icon_loading").addClass("icon client-warning").attr("tag", "Could not load icon"); - }); - } - else { - _apply(icon); - } - if (icon_load_image) - icon_load_image.appendTo(icon_container); - return icon_container; - } - generateTag(id, options) { - options = options || {}; - id = id >>> 0; - if (id == 0 || !id) - return IconManager.generate_tag({ id: id, url: "" }, options); - else if (id < 1000) - return IconManager.generate_tag({ id: id, url: "" }, options); - if (this._id_urls[id]) { - return IconManager.generate_tag({ id: id, url: this._id_urls[id] }, options); - } - else { - return IconManager.generate_tag(this.resolve_icon(id), options); - } - } -} -IconManager.cache = new CacheManager("icons"); -IconManager._static_id_url = {}; -IconManager._static_cached_promise = {}; -class Avatar { -} -class AvatarManager { - constructor(handle) { - this._cached_avatars = {}; - this._loading_promises = {}; - this.handle = handle; - if (!AvatarManager.cache) - AvatarManager.cache = new CacheManager("avatars"); - } - destroy() { - this._cached_avatars = undefined; - this._loading_promises = undefined; - } - _response_url(response, type) { - return __awaiter(this, void 0, void 0, function* () { - if (!response.headers.has('X-media-bytes')) - throw "missing media bytes"; - const media = media_image_type(type); - const blob = yield response.blob(); - if (blob.type !== "image/" + media) - return URL.createObjectURL(blob.slice(0, blob.size, "image/" + media)); - else - return URL.createObjectURL(blob); - }); - } - resolved_cached(client_avatar_id, avatar_version) { - return __awaiter(this, void 0, void 0, function* () { - let avatar = this._cached_avatars[avatar_version]; - if (avatar) { - if (typeof (avatar_version) !== "string" || avatar.avatar_id == avatar_version) - return avatar; - avatar = undefined; - } - if (!AvatarManager.cache.setupped()) - yield AvatarManager.cache.setup(); - const response = yield AvatarManager.cache.resolve_cached('avatar_' + client_avatar_id); //TODO age! - if (!response) - return undefined; - let response_avatar_version = response.headers.has("X-avatar-version") ? response.headers.get("X-avatar-version") : undefined; - if (typeof (avatar_version) === "string" && response_avatar_version != avatar_version) - return undefined; - const type = image_type(response.headers.get('X-media-bytes')); - return this._cached_avatars[client_avatar_id] = { - client_avatar_id: client_avatar_id, - avatar_id: avatar_version || response_avatar_version, - url: yield this._response_url(response, type), - type: type - }; - }); - } - create_avatar_download(client_avatar_id) { - log.debug(LogCategory.GENERAL, "Requesting download for avatar %s", client_avatar_id); - return this.handle.download_file("", "/avatar_" + client_avatar_id); - } - _load_avatar(client_avatar_id, avatar_version) { - return __awaiter(this, void 0, void 0, function* () { - try { - let download_key; - try { - download_key = yield this.create_avatar_download(client_avatar_id); - } - catch (error) { - log.error(LogCategory.GENERAL, _translations.Zfxv8Gh8 || (_translations.Zfxv8Gh8 = tr("Could not request download for avatar %s: %o")), client_avatar_id, error); - throw "failed to request avatar download"; - } - const downloader = transfer.spawn_download_transfer(download_key); - let response; - try { - response = yield downloader.request_file(); - } - catch (error) { - log.error(LogCategory.GENERAL, _translations.RpfhT5G_ || (_translations.RpfhT5G_ = tr("Could not download avatar %s: %o")), client_avatar_id, error); - throw "failed to download avatar"; - } - const type = image_type(response.headers.get('X-media-bytes')); - const media = media_image_type(type); - yield AvatarManager.cache.put_cache('avatar_' + client_avatar_id, response.clone(), "image/" + media, { - "X-avatar-version": avatar_version - }); - const url = yield this._response_url(response.clone(), type); - return this._cached_avatars[client_avatar_id] = { - client_avatar_id: client_avatar_id, - avatar_id: avatar_version, - url: url, - type: type - }; - } - finally { - this._loading_promises[client_avatar_id] = undefined; - } - }); - } - /* loads an avatar by the avatar id and optional with the avatar version */ - load_avatar(client_avatar_id, avatar_version) { - return this._loading_promises[client_avatar_id] || (this._loading_promises[client_avatar_id] = this._load_avatar(client_avatar_id, avatar_version)); - } - generate_client_tag(client) { - return this.generate_tag(client.avatarId(), client.properties.client_flag_avatar); - } - update_cache(client_avatar_id, avatar_id) { - const _cached = this._cached_avatars[client_avatar_id]; - if (_cached) { - if (_cached.avatar_id === avatar_id) - return; /* cache is up2date */ - log.info(LogCategory.GENERAL, _translations.qcVDOT3t || (_translations.qcVDOT3t = tr("Deleting cached avatar for client %s. Cached version: %s; New version: %s")), client_avatar_id, _cached.avatar_id, avatar_id); - delete this._cached_avatars[client_avatar_id]; - AvatarManager.cache.delete("avatar_" + client_avatar_id).catch(error => { - log.error(LogCategory.GENERAL, _translations.KjfmxVkY || (_translations.KjfmxVkY = tr("Failed to delete cached avatar for client %o: %o")), client_avatar_id, error); - }); - } - else { - this.resolved_cached(client_avatar_id).then(avatar => { - if (avatar && avatar.avatar_id !== avatar_id) { - /* this time we ensured that its cached */ - this.update_cache(client_avatar_id, avatar_id); - } - }).catch(error => { - log.error(LogCategory.GENERAL, _translations.N9t94bx_ || (_translations.N9t94bx_ = tr("Failed to delete cached avatar for client %o (cache lookup failed): %o")), client_avatar_id, error); - }); - } - } - generate_tag(client_avatar_id, avatar_id, options) { - options = options || {}; - let avatar_container = $.spawn("div"); - let avatar_image = $.spawn("img").attr("alt", _translations.h_SQX0Ol || (_translations.h_SQX0Ol = tr("Client avatar"))); - let cached_avatar = this._cached_avatars[client_avatar_id]; - if (avatar_id === "") { - avatar_container.append(this.generate_default_image()); - } - else if (cached_avatar && cached_avatar.avatar_id == avatar_id) { - avatar_image.attr("src", cached_avatar.url); - avatar_container.append(avatar_image); - if (options.callback_image) - options.callback_image(avatar_image); - if (options.callback_avatar) - options.callback_avatar(cached_avatar); - } - else { - let loader_image = $.spawn("img"); - loader_image.attr("src", "img/loading_image.svg").css("width", "75%"); - avatar_container.append(loader_image); - (() => __awaiter(this, void 0, void 0, function* () { - let avatar; - try { - avatar = yield this.resolved_cached(client_avatar_id, avatar_id); - } - catch (error) { - log.error(LogCategory.CLIENT, error); - } - if (!avatar) - avatar = yield this.load_avatar(client_avatar_id, avatar_id); - if (!avatar) - throw "failed to load avatar"; - if (options.callback_avatar) - options.callback_avatar(avatar); - avatar_image.attr("src", avatar.url); - avatar_image.css("opacity", 0); - avatar_container.append(avatar_image); - loader_image.animate({ opacity: 0 }, 50, () => { - loader_image.remove(); - avatar_image.animate({ opacity: 1 }, 150, () => { - if (options.callback_image) - options.callback_image(avatar_image); - }); - }); - }))().catch(reason => { - log.error(LogCategory.CLIENT, _translations.W3cTHtbm || (_translations.W3cTHtbm = tr("Could not load avatar for id %s. Reason: %s")), client_avatar_id, reason); - //TODO Broken image - loader_image.addClass("icon client-warning").attr("tag", (_translations.n7xfvxab || (_translations.n7xfvxab = tr("Could not load avatar "))) + client_avatar_id); - }); - } - return avatar_container; - } - unique_id_2_avatar_id(unique_id) { - function str2ab(str) { - let buf = new ArrayBuffer(str.length); // 2 bytes for each char - let bufView = new Uint8Array(buf); - for (let i = 0, strLen = str.length; i < strLen; i++) { - bufView[i] = str.charCodeAt(i); - } - return buf; - } - try { - let raw = atob(unique_id); - let input = hex.encode(str2ab(raw)); - let result = ""; - for (let index = 0; index < input.length; index++) { - let c = input.charAt(index); - let offset = 0; - if (c >= '0' && c <= '9') - offset = c.charCodeAt(0) - '0'.charCodeAt(0); - else if (c >= 'A' && c <= 'F') - offset = c.charCodeAt(0) - 'A'.charCodeAt(0) + 0x0A; - else if (c >= 'a' && c <= 'f') - offset = c.charCodeAt(0) - 'a'.charCodeAt(0) + 0x0A; - result += String.fromCharCode('a'.charCodeAt(0) + offset); - } - return result; - } - catch (e) { //invalid base 64 (like music bot etc) - return undefined; - } - } - generate_default_image() { - return $.spawn("img").attr("src", "img/style/avatar.png").css({ width: '100%', height: '100%' }); - } - generate_chat_tag(client, client_unique_id, callback_loaded) { - let client_handle; - if (typeof (client.id) == "number") - client_handle = this.handle.handle.channelTree.findClient(client.id); - if (!client_handle && typeof (client.id) == "number") { - client_handle = this.handle.handle.channelTree.find_client_by_dbid(client.database_id); - } - if (client_handle && client_handle.clientUid() !== client_unique_id) - client_handle = undefined; - const container = $.spawn("div").addClass("avatar"); - if (client_handle && !client_handle.properties.client_flag_avatar) - return container.append(this.generate_default_image()); - const avatar_id = client_handle ? client_handle.avatarId() : this.unique_id_2_avatar_id(client_unique_id); - if (avatar_id) { - if (this._cached_avatars[avatar_id]) { /* Test if we're may able to load the client avatar sync without a loading screen */ - const cache = this._cached_avatars[avatar_id]; - log.debug(LogCategory.GENERAL, _translations.N5oq_P39 || (_translations.N5oq_P39 = tr("Using cached avatar. ID: %o | Version: %o (Cached: %o)")), avatar_id, client_handle ? client_handle.properties.client_flag_avatar : undefined, cache.avatar_id); - if (!client_handle || client_handle.properties.client_flag_avatar == cache.avatar_id) { - const image = $.spawn("img").attr("src", cache.url).css({ width: '100%', height: '100%' }); - return container.append(image); - } - } - const image_loading = $.spawn("img").attr("src", "img/loading_image.svg").css({ width: '100%', height: '100%' }); - /* lets actually load the avatar */ - (() => __awaiter(this, void 0, void 0, function* () { - let avatar; - let loaded_image = this.generate_default_image(); - log.debug(LogCategory.GENERAL, _translations.UUEkQF5a || (_translations.UUEkQF5a = tr("Resolving avatar. ID: %o | Version: %o")), avatar_id, client_handle ? client_handle.properties.client_flag_avatar : undefined); - try { - //TODO: Cache if avatar load failed and try again in some minutes/may just even consider using the default avatar 'till restart - try { - avatar = yield this.resolved_cached(avatar_id, client_handle ? client_handle.properties.client_flag_avatar : undefined); - } - catch (error) { - log.error(LogCategory.GENERAL, _translations.qeVWbl1T || (_translations.qeVWbl1T = tr("Failed to use cached avatar: %o")), error); - } - if (!avatar) - avatar = yield this.load_avatar(avatar_id, client_handle ? client_handle.properties.client_flag_avatar : undefined); - if (!avatar) - throw "no avatar present!"; - loaded_image = $.spawn("img").attr("src", avatar.url).css({ width: '100%', height: '100%' }); - } - catch (error) { - throw error; - } - finally { - container.children().remove(); - container.append(loaded_image); - } - }))().then(() => callback_loaded && callback_loaded(true)).catch(error => { - log.warn(LogCategory.CLIENT, _translations.yPO5jFrp || (_translations.yPO5jFrp = tr("Failed to load chat avatar for client %s. Error: %o")), client_unique_id, error); - callback_loaded && callback_loaded(false, error); - }); - image_loading.appendTo(container); - } - else { - this.generate_default_image().appendTo(container); - } - return container; - } -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["455475c2b4f1106cf44d1f419a1499fbd8c48c3600ecab7876758f075e94cc7e"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["455475c2b4f1106cf44d1f419a1499fbd8c48c3600ecab7876758f075e94cc7e"] = "455475c2b4f1106cf44d1f419a1499fbd8c48c3600ecab7876758f075e94cc7e"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "FouNbgIJ", path: "D:/TeaSpeak/web/shared/js/i18n/localize.ts (98,52)" }, { name: "SGTDpOXd", path: "D:/TeaSpeak/web/shared/js/i18n/localize.ts (99,32)" }, { name: "WVeMm7W3", path: "D:/TeaSpeak/web/shared/js/i18n/localize.ts (103,28)" }, { name: "rHWS7RQ3", path: "D:/TeaSpeak/web/shared/js/i18n/localize.ts (113,17)" }, { name: "KlKrGumy", path: "D:/TeaSpeak/web/shared/js/i18n/localize.ts (118,40)" }, { name: "dVNCwi_A", path: "D:/TeaSpeak/web/shared/js/i18n/localize.ts (121,40)" }, { name: "T5m8C2bd", path: "D:/TeaSpeak/web/shared/js/i18n/localize.ts (143,32)" }, { name: "A7HLafCo", path: "D:/TeaSpeak/web/shared/js/i18n/localize.ts (192,45)" }, { name: "SPhST49p", path: "D:/TeaSpeak/web/shared/js/i18n/localize.ts (201,48)" }, { name: "YDqxTCU7", path: "D:/TeaSpeak/web/shared/js/i18n/localize.ts (204,48)" }, { name: "JLZp_U_5", path: "D:/TeaSpeak/web/shared/js/i18n/localize.ts (226,45)" }, { name: "qarwc6lt", path: "D:/TeaSpeak/web/shared/js/i18n/localize.ts (300,31)" }, { name: "PagJWgYb", path: "D:/TeaSpeak/web/shared/js/i18n/localize.ts (302,38)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -function guid() { - function s4() { - return Math.floor((1 + Math.random()) * 0x10000) - .toString(16) - .substring(1); - } - return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); -} -var i18n; -(function (i18n) { - let translations = []; - let fast_translate = {}; - function tr(message, key) { - const sloppy = fast_translate[message]; - if (sloppy) - return sloppy; - log.info(LogCategory.I18N, "Translating \"%s\". Default: \"%s\"", key, message); - let translated = message; - for (const translation of translations) { - if (translation.key.message == message) { - translated = translation.translated; - break; - } - } - fast_translate[message] = translated; - return translated; - } - i18n.tr = tr; - function tra(message, ...args) { - message = tr(message); - return MessageHelper.formatMessage(message, ...args); - } - i18n.tra = tra; - function load_translation_file(url, path) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => { - $.ajax({ - url: url, - async: true, - success: result => { - try { - const file = (typeof (result) === "string" ? JSON.parse(result) : result); - if (!file) { - reject("Invalid json"); - return; - } - file.full_url = url; - file.path = path; - //TODO: Validate file - resolve(file); - } - catch (error) { - log.warn(LogCategory.I18N, _translations.FouNbgIJ || (_translations.FouNbgIJ = tr("Failed to load translation file %s. Failed to parse or process json: %o")), url, error); - reject(_translations.SGTDpOXd || (_translations.SGTDpOXd = tr("Failed to process or parse json!"))); - } - }, - error: (xhr, error) => { - reject((_translations.WVeMm7W3 || (_translations.WVeMm7W3 = tr("Failed to load file: "))) + error); - } - }); - }); - }); - } - function load_file(url, path) { - return load_translation_file(url, path).then((result) => __awaiter(this, void 0, void 0, function* () { - /* TODO: Improve this test?!*/ - try { - _translations.rHWS7RQ3 || (_translations.rHWS7RQ3 = tr("Dummy translation test")); - } - catch (error) { - throw "dummy test failed"; - } - log.info(LogCategory.I18N, _translations.KlKrGumy || (_translations.KlKrGumy = tr("Successfully initialized up translation file from %s")), url); - translations = result.translations; - })).catch(error => { - log.warn(LogCategory.I18N, _translations.dVNCwi_A || (_translations.dVNCwi_A = tr("Failed to load translation file from \"%s\". Error: %o")), url, error); - return Promise.reject(error); - }); - } - i18n.load_file = load_file; - function load_repository0(repo, reload) { - return __awaiter(this, void 0, void 0, function* () { - if (!repo.load_timestamp || repo.load_timestamp < 1000 || reload) { - const info_json = yield new Promise((resolve, reject) => { - $.ajax({ - url: repo.url + "/info.json", - async: true, - cache: !reload, - success: result => { - const file = (typeof (result) === "string" ? JSON.parse(result) : result); - if (!file) { - reject("Invalid json"); - return; - } - resolve(file); - }, - error: (xhr, error) => { - reject((_translations.T5m8C2bd || (_translations.T5m8C2bd = tr("Failed to load file: "))) + error); - } - }); - }); - Object.assign(repo, info_json); - } - if (!repo.unique_id) - repo.unique_id = guid(); - repo.translations = repo.translations || []; - repo.load_timestamp = Date.now(); - }); - } - function load_repository(url) { - return __awaiter(this, void 0, void 0, function* () { - const result = {}; - result.url = url; - yield load_repository0(result, false); - return result; - }); - } - i18n.load_repository = load_repository; - let config; - (function (config_1) { - const repository_config_key = "i18n.repository"; - let _cached_repository_config; - function repository_config() { - if (_cached_repository_config) - return _cached_repository_config; - const config_string = localStorage.getItem(repository_config_key); - let config; - try { - config = config_string ? JSON.parse(config_string) : {}; - } - catch (error) { - log.error(LogCategory.I18N, _translations.A7HLafCo || (_translations.A7HLafCo = tr("Failed to parse repository config: %o")), error); - } - config.repositories = config.repositories || []; - for (const repo of config.repositories) - (repo.repository || { load_timestamp: 0 }).load_timestamp = 0; - if (config.repositories.length == 0) { - //Add the default TeaSpeak repository - load_repository(StaticSettings.instance.static("i18n.default_repository", "https://web.teaspeak.de/i18n/")).then(repo => { - log.info(LogCategory.I18N, _translations.SPhST49p || (_translations.SPhST49p = tr("Successfully added default repository from \"%s\".")), repo.url); - register_repository(repo); - }).catch(error => { - log.warn(LogCategory.I18N, _translations.YDqxTCU7 || (_translations.YDqxTCU7 = tr("Failed to add default repository. Error: %o")), error); - }); - } - return _cached_repository_config = config; - } - config_1.repository_config = repository_config; - function save_repository_config() { - localStorage.setItem(repository_config_key, JSON.stringify(_cached_repository_config)); - } - config_1.save_repository_config = save_repository_config; - const translation_config_key = "i18n.translation"; - let _cached_translation_config; - function translation_config() { - if (_cached_translation_config) - return _cached_translation_config; - const config_string = localStorage.getItem(translation_config_key); - try { - _cached_translation_config = config_string ? JSON.parse(config_string) : {}; - } - catch (error) { - log.error(LogCategory.I18N, _translations.JLZp_U_5 || (_translations.JLZp_U_5 = tr("Failed to initialize translation config. Using default one. Error: %o")), error); - _cached_translation_config = {}; - } - return _cached_translation_config; - } - config_1.translation_config = translation_config; - function save_translation_config() { - localStorage.setItem(translation_config_key, JSON.stringify(_cached_translation_config)); - } - config_1.save_translation_config = save_translation_config; - })(config = i18n.config || (i18n.config = {})); - function register_repository(repository) { - if (!repository) - return; - for (const repo of config.repository_config().repositories) - if (repo.url == repository.url) - return; - config.repository_config().repositories.push(repository); - config.save_repository_config(); - } - i18n.register_repository = register_repository; - function registered_repositories() { - return config.repository_config().repositories.map(e => e.repository || { url: e.url, load_timestamp: 0 }); - } - i18n.registered_repositories = registered_repositories; - function delete_repository(repository) { - if (!repository) - return; - for (const repo of [...config.repository_config().repositories]) - if (repo.url == repository.url) { - config.repository_config().repositories.remove(repo); - } - config.save_repository_config(); - } - i18n.delete_repository = delete_repository; - function iterate_repositories(callback_entry) { - return __awaiter(this, void 0, void 0, function* () { - const promises = []; - for (const repository of registered_repositories()) { - promises.push(load_repository0(repository, false).then(() => callback_entry(repository)).catch(error => { - log.warn(LogCategory.I18N, "Failed to fetch repository %s. error: %o", repository.url, error); - })); - } - yield Promise.all(promises); - }); - } - i18n.iterate_repositories = iterate_repositories; - function select_translation(repository, entry) { - const cfg = config.translation_config(); - if (entry && repository) { - cfg.current_language = entry.name; - cfg.current_repository_url = repository.url; - cfg.current_translation_url = repository.url + entry.path; - cfg.current_translation_path = entry.path; - } - else { - cfg.current_language = undefined; - cfg.current_repository_url = undefined; - cfg.current_translation_url = undefined; - cfg.current_translation_path = undefined; - } - config.save_translation_config(); - } - i18n.select_translation = select_translation; - /* ATTENTION: This method is called before most other library inizialisations! */ - function initialize() { - return __awaiter(this, void 0, void 0, function* () { - const rcfg = config.repository_config(); /* initialize */ - const cfg = config.translation_config(); - if (cfg.current_translation_url) { - try { - yield load_file(cfg.current_translation_url, cfg.current_translation_path); - } - catch (error) { - console.error(_translations.qarwc6lt || (_translations.qarwc6lt = tr("Failed to initialize selected translation: %o")), error); - const show_error = () => { - createErrorModal(_translations.PagJWgYb || (_translations.PagJWgYb = tr("Translation System")), tra("Failed to load current selected translation file.{:br:}File: {0}{:br:}Error: {1}{:br:}{:br:}Using default fallback translations.", cfg.current_translation_url, error)).open(); - }; - if (loader.running()) - loader.register_task(loader.Stage.JAVASCRIPT_INITIALIZING, { - priority: 10, - function: () => __awaiter(this, void 0, void 0, function* () { return show_error(); }), - name: "I18N error display" - }); - else - show_error(); - } - } - // await load_file("http://localhost/home/TeaSpeak/TeaSpeak/Web-Client/web/environment/development/i18n/de_DE.translation"); - // await load_file("http://localhost/home/TeaSpeak/TeaSpeak/Web-Client/web/environment/development/i18n/test.json"); - }); - } - i18n.initialize = initialize; -})(i18n || (i18n = {})); -// @ts-ignore -const tr = i18n.tr; -const tra = i18n.tra; -window.tr = i18n.tr; -window.tra = i18n.tra; -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["63756334f56b822c20cbf8616d626c6c4d92049d142c2a8274090f6c288c800a"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["63756334f56b822c20cbf8616d626c6c4d92049d142c2a8274090f6c288c800a"] = "63756334f56b822c20cbf8616d626c6c4d92049d142c2a8274090f6c288c800a"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "n_KYAaMS", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (397,13)" }, { name: "XWPfjb2K", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (399,22)" }, { name: "le2qQrVZ", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (399,38)" }, { name: "_idwzRBJ", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (400,48)" }, { name: "tzCmjh5N", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (401,44)" }, { name: "HH613O5m", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (508,16)" }, { name: "mwOSnQ5t", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (509,20)" }, { name: "biW_sg0z", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (510,20)" }, { name: "XEpW1KUu", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (511,20)" }, { name: "xQjKeR1B", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (512,20)" }, { name: "Qaqyrcb5", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (513,16)" }, { name: "VPP72Y7O", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (514,20)" }, { name: "sRQvs1pe", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (515,20)" }, { name: "MKTJCaHB", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (516,20)" }, { name: "o_mBuxpj", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (517,16)" }, { name: "Ke3sTyPP", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (518,20)" }, { name: "w1vxsh9K", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (519,20)" }, { name: "tYJyWqOO", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (520,20)" }, { name: "WZsNfPyK", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (521,20)" }, { name: "WIiqWiL4", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (522,20)" }, { name: "TOhfWBxb", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (523,16)" }, { name: "_rPytECo", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (524,20)" }, { name: "CJT92u8o", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (525,20)" }, { name: "F7lDIM5W", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (526,20)" }, { name: "p978M8l6", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (527,20)" }, { name: "nj0btL0v", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (528,16)" }, { name: "yFgZNi8s", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (529,20)" }, { name: "SiWRTYIe", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (530,20)" }, { name: "UZZVYe0I", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (531,20)" }, { name: "t7dRXZeR", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (532,20)" }, { name: "bGpv2bKN", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (534,16)" }, { name: "mPnGQldc", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (550,51)" }, { name: "xNZTALgn", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (646,75)" }, { name: "DKPKNRNP", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (655,30)" }, { name: "xRgg5id2", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (683,43)" }, { name: "zjGxpKHl", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (692,47)" }, { name: "CTD6hjuf", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (701,75)" }, { name: "bczqMhnT", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (719,55)" }, { name: "JhTXHwBa", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (740,44)" }, { name: "G5Jy9mCS", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (917,100)" }, { name: "X_wUbyDP", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (1022,44)" }, { name: "va1TCPgM", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (1025,47)" }, { name: "dpJgGcEJ", path: "D:/TeaSpeak/web/shared/js/permission/PermissionManager.ts (1047,27)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var PermissionType; -(function (PermissionType) { - PermissionType["B_SERVERINSTANCE_HELP_VIEW"] = "b_serverinstance_help_view"; - PermissionType["B_SERVERINSTANCE_VERSION_VIEW"] = "b_serverinstance_version_view"; - PermissionType["B_SERVERINSTANCE_INFO_VIEW"] = "b_serverinstance_info_view"; - PermissionType["B_SERVERINSTANCE_VIRTUALSERVER_LIST"] = "b_serverinstance_virtualserver_list"; - PermissionType["B_SERVERINSTANCE_BINDING_LIST"] = "b_serverinstance_binding_list"; - PermissionType["B_SERVERINSTANCE_PERMISSION_LIST"] = "b_serverinstance_permission_list"; - PermissionType["B_SERVERINSTANCE_PERMISSION_FIND"] = "b_serverinstance_permission_find"; - PermissionType["B_VIRTUALSERVER_CREATE"] = "b_virtualserver_create"; - PermissionType["B_VIRTUALSERVER_DELETE"] = "b_virtualserver_delete"; - PermissionType["B_VIRTUALSERVER_START_ANY"] = "b_virtualserver_start_any"; - PermissionType["B_VIRTUALSERVER_STOP_ANY"] = "b_virtualserver_stop_any"; - PermissionType["B_VIRTUALSERVER_CHANGE_MACHINE_ID"] = "b_virtualserver_change_machine_id"; - PermissionType["B_VIRTUALSERVER_CHANGE_TEMPLATE"] = "b_virtualserver_change_template"; - PermissionType["B_SERVERQUERY_LOGIN"] = "b_serverquery_login"; - PermissionType["B_SERVERINSTANCE_TEXTMESSAGE_SEND"] = "b_serverinstance_textmessage_send"; - PermissionType["B_SERVERINSTANCE_LOG_VIEW"] = "b_serverinstance_log_view"; - PermissionType["B_SERVERINSTANCE_LOG_ADD"] = "b_serverinstance_log_add"; - PermissionType["B_SERVERINSTANCE_STOP"] = "b_serverinstance_stop"; - PermissionType["B_SERVERINSTANCE_MODIFY_SETTINGS"] = "b_serverinstance_modify_settings"; - PermissionType["B_SERVERINSTANCE_MODIFY_QUERYGROUP"] = "b_serverinstance_modify_querygroup"; - PermissionType["B_SERVERINSTANCE_MODIFY_TEMPLATES"] = "b_serverinstance_modify_templates"; - PermissionType["B_VIRTUALSERVER_SELECT"] = "b_virtualserver_select"; - PermissionType["B_VIRTUALSERVER_SELECT_GODMODE"] = "b_virtualserver_select_godmode"; - PermissionType["B_VIRTUALSERVER_INFO_VIEW"] = "b_virtualserver_info_view"; - PermissionType["B_VIRTUALSERVER_CONNECTIONINFO_VIEW"] = "b_virtualserver_connectioninfo_view"; - PermissionType["B_VIRTUALSERVER_CHANNEL_LIST"] = "b_virtualserver_channel_list"; - PermissionType["B_VIRTUALSERVER_CHANNEL_SEARCH"] = "b_virtualserver_channel_search"; - PermissionType["B_VIRTUALSERVER_CLIENT_LIST"] = "b_virtualserver_client_list"; - PermissionType["B_VIRTUALSERVER_CLIENT_SEARCH"] = "b_virtualserver_client_search"; - PermissionType["B_VIRTUALSERVER_CLIENT_DBLIST"] = "b_virtualserver_client_dblist"; - PermissionType["B_VIRTUALSERVER_CLIENT_DBSEARCH"] = "b_virtualserver_client_dbsearch"; - PermissionType["B_VIRTUALSERVER_CLIENT_DBINFO"] = "b_virtualserver_client_dbinfo"; - PermissionType["B_VIRTUALSERVER_PERMISSION_FIND"] = "b_virtualserver_permission_find"; - PermissionType["B_VIRTUALSERVER_CUSTOM_SEARCH"] = "b_virtualserver_custom_search"; - PermissionType["B_VIRTUALSERVER_START"] = "b_virtualserver_start"; - PermissionType["B_VIRTUALSERVER_STOP"] = "b_virtualserver_stop"; - PermissionType["B_VIRTUALSERVER_TOKEN_LIST"] = "b_virtualserver_token_list"; - PermissionType["B_VIRTUALSERVER_TOKEN_ADD"] = "b_virtualserver_token_add"; - PermissionType["B_VIRTUALSERVER_TOKEN_USE"] = "b_virtualserver_token_use"; - PermissionType["B_VIRTUALSERVER_TOKEN_DELETE"] = "b_virtualserver_token_delete"; - PermissionType["B_VIRTUALSERVER_LOG_VIEW"] = "b_virtualserver_log_view"; - PermissionType["B_VIRTUALSERVER_LOG_ADD"] = "b_virtualserver_log_add"; - PermissionType["B_VIRTUALSERVER_JOIN_IGNORE_PASSWORD"] = "b_virtualserver_join_ignore_password"; - PermissionType["B_VIRTUALSERVER_NOTIFY_REGISTER"] = "b_virtualserver_notify_register"; - PermissionType["B_VIRTUALSERVER_NOTIFY_UNREGISTER"] = "b_virtualserver_notify_unregister"; - PermissionType["B_VIRTUALSERVER_SNAPSHOT_CREATE"] = "b_virtualserver_snapshot_create"; - PermissionType["B_VIRTUALSERVER_SNAPSHOT_DEPLOY"] = "b_virtualserver_snapshot_deploy"; - PermissionType["B_VIRTUALSERVER_PERMISSION_RESET"] = "b_virtualserver_permission_reset"; - PermissionType["B_VIRTUALSERVER_MODIFY_NAME"] = "b_virtualserver_modify_name"; - PermissionType["B_VIRTUALSERVER_MODIFY_WELCOMEMESSAGE"] = "b_virtualserver_modify_welcomemessage"; - PermissionType["B_VIRTUALSERVER_MODIFY_MAXCLIENTS"] = "b_virtualserver_modify_maxclients"; - PermissionType["B_VIRTUALSERVER_MODIFY_RESERVED_SLOTS"] = "b_virtualserver_modify_reserved_slots"; - PermissionType["B_VIRTUALSERVER_MODIFY_PASSWORD"] = "b_virtualserver_modify_password"; - PermissionType["B_VIRTUALSERVER_MODIFY_DEFAULT_SERVERGROUP"] = "b_virtualserver_modify_default_servergroup"; - PermissionType["B_VIRTUALSERVER_MODIFY_DEFAULT_MUSICGROUP"] = "b_virtualserver_modify_default_musicgroup"; - PermissionType["B_VIRTUALSERVER_MODIFY_DEFAULT_CHANNELGROUP"] = "b_virtualserver_modify_default_channelgroup"; - PermissionType["B_VIRTUALSERVER_MODIFY_DEFAULT_CHANNELADMINGROUP"] = "b_virtualserver_modify_default_channeladmingroup"; - PermissionType["B_VIRTUALSERVER_MODIFY_CHANNEL_FORCED_SILENCE"] = "b_virtualserver_modify_channel_forced_silence"; - PermissionType["B_VIRTUALSERVER_MODIFY_COMPLAIN"] = "b_virtualserver_modify_complain"; - PermissionType["B_VIRTUALSERVER_MODIFY_ANTIFLOOD"] = "b_virtualserver_modify_antiflood"; - PermissionType["B_VIRTUALSERVER_MODIFY_FT_SETTINGS"] = "b_virtualserver_modify_ft_settings"; - PermissionType["B_VIRTUALSERVER_MODIFY_FT_QUOTAS"] = "b_virtualserver_modify_ft_quotas"; - PermissionType["B_VIRTUALSERVER_MODIFY_HOSTMESSAGE"] = "b_virtualserver_modify_hostmessage"; - PermissionType["B_VIRTUALSERVER_MODIFY_HOSTBANNER"] = "b_virtualserver_modify_hostbanner"; - PermissionType["B_VIRTUALSERVER_MODIFY_HOSTBUTTON"] = "b_virtualserver_modify_hostbutton"; - PermissionType["B_VIRTUALSERVER_MODIFY_PORT"] = "b_virtualserver_modify_port"; - PermissionType["B_VIRTUALSERVER_MODIFY_HOST"] = "b_virtualserver_modify_host"; - PermissionType["B_VIRTUALSERVER_MODIFY_DEFAULT_MESSAGES"] = "b_virtualserver_modify_default_messages"; - PermissionType["B_VIRTUALSERVER_MODIFY_AUTOSTART"] = "b_virtualserver_modify_autostart"; - PermissionType["B_VIRTUALSERVER_MODIFY_NEEDED_IDENTITY_SECURITY_LEVEL"] = "b_virtualserver_modify_needed_identity_security_level"; - PermissionType["B_VIRTUALSERVER_MODIFY_PRIORITY_SPEAKER_DIMM_MODIFICATOR"] = "b_virtualserver_modify_priority_speaker_dimm_modificator"; - PermissionType["B_VIRTUALSERVER_MODIFY_LOG_SETTINGS"] = "b_virtualserver_modify_log_settings"; - PermissionType["B_VIRTUALSERVER_MODIFY_MIN_CLIENT_VERSION"] = "b_virtualserver_modify_min_client_version"; - PermissionType["B_VIRTUALSERVER_MODIFY_ICON_ID"] = "b_virtualserver_modify_icon_id"; - PermissionType["B_VIRTUALSERVER_MODIFY_WEBLIST"] = "b_virtualserver_modify_weblist"; - PermissionType["B_VIRTUALSERVER_MODIFY_CODEC_ENCRYPTION_MODE"] = "b_virtualserver_modify_codec_encryption_mode"; - PermissionType["B_VIRTUALSERVER_MODIFY_TEMPORARY_PASSWORDS"] = "b_virtualserver_modify_temporary_passwords"; - PermissionType["B_VIRTUALSERVER_MODIFY_TEMPORARY_PASSWORDS_OWN"] = "b_virtualserver_modify_temporary_passwords_own"; - PermissionType["B_VIRTUALSERVER_MODIFY_CHANNEL_TEMP_DELETE_DELAY_DEFAULT"] = "b_virtualserver_modify_channel_temp_delete_delay_default"; - PermissionType["B_VIRTUALSERVER_MODIFY_MUSIC_BOT_LIMIT"] = "b_virtualserver_modify_music_bot_limit"; - PermissionType["B_VIRTUALSERVER_MODIFY_COUNTRY_CODE"] = "b_virtualserver_modify_country_code"; - PermissionType["I_CHANNEL_MIN_DEPTH"] = "i_channel_min_depth"; - PermissionType["I_CHANNEL_MAX_DEPTH"] = "i_channel_max_depth"; - PermissionType["B_CHANNEL_GROUP_INHERITANCE_END"] = "b_channel_group_inheritance_end"; - PermissionType["I_CHANNEL_PERMISSION_MODIFY_POWER"] = "i_channel_permission_modify_power"; - PermissionType["I_CHANNEL_NEEDED_PERMISSION_MODIFY_POWER"] = "i_channel_needed_permission_modify_power"; - PermissionType["B_CHANNEL_INFO_VIEW"] = "b_channel_info_view"; - PermissionType["B_CHANNEL_CREATE_CHILD"] = "b_channel_create_child"; - PermissionType["B_CHANNEL_CREATE_PERMANENT"] = "b_channel_create_permanent"; - PermissionType["B_CHANNEL_CREATE_SEMI_PERMANENT"] = "b_channel_create_semi_permanent"; - PermissionType["B_CHANNEL_CREATE_TEMPORARY"] = "b_channel_create_temporary"; - PermissionType["B_CHANNEL_CREATE_PRIVATE"] = "b_channel_create_private"; - PermissionType["B_CHANNEL_CREATE_WITH_TOPIC"] = "b_channel_create_with_topic"; - PermissionType["B_CHANNEL_CREATE_WITH_DESCRIPTION"] = "b_channel_create_with_description"; - PermissionType["B_CHANNEL_CREATE_WITH_PASSWORD"] = "b_channel_create_with_password"; - PermissionType["B_CHANNEL_CREATE_MODIFY_WITH_CODEC_SPEEX8"] = "b_channel_create_modify_with_codec_speex8"; - PermissionType["B_CHANNEL_CREATE_MODIFY_WITH_CODEC_SPEEX16"] = "b_channel_create_modify_with_codec_speex16"; - PermissionType["B_CHANNEL_CREATE_MODIFY_WITH_CODEC_SPEEX32"] = "b_channel_create_modify_with_codec_speex32"; - PermissionType["B_CHANNEL_CREATE_MODIFY_WITH_CODEC_CELTMONO48"] = "b_channel_create_modify_with_codec_celtmono48"; - PermissionType["B_CHANNEL_CREATE_MODIFY_WITH_CODEC_OPUSVOICE"] = "b_channel_create_modify_with_codec_opusvoice"; - PermissionType["B_CHANNEL_CREATE_MODIFY_WITH_CODEC_OPUSMUSIC"] = "b_channel_create_modify_with_codec_opusmusic"; - PermissionType["I_CHANNEL_CREATE_MODIFY_WITH_CODEC_MAXQUALITY"] = "i_channel_create_modify_with_codec_maxquality"; - PermissionType["I_CHANNEL_CREATE_MODIFY_WITH_CODEC_LATENCY_FACTOR_MIN"] = "i_channel_create_modify_with_codec_latency_factor_min"; - PermissionType["I_CHANNEL_CREATE_MODIFY_CONVERSATION_HISTORY_LENGTH"] = "i_channel_create_modify_conversation_history_length"; - PermissionType["B_CHANNEL_CREATE_MODIFY_CONVERSATION_HISTORY_UNLIMITED"] = "b_channel_create_modify_conversation_history_unlimited"; - PermissionType["B_CHANNEL_CREATE_MODIFY_CONVERSATION_PRIVATE"] = "b_channel_create_modify_conversation_private"; - PermissionType["B_CHANNEL_CREATE_WITH_MAXCLIENTS"] = "b_channel_create_with_maxclients"; - PermissionType["B_CHANNEL_CREATE_WITH_MAXFAMILYCLIENTS"] = "b_channel_create_with_maxfamilyclients"; - PermissionType["B_CHANNEL_CREATE_WITH_SORTORDER"] = "b_channel_create_with_sortorder"; - PermissionType["B_CHANNEL_CREATE_WITH_DEFAULT"] = "b_channel_create_with_default"; - PermissionType["B_CHANNEL_CREATE_WITH_NEEDED_TALK_POWER"] = "b_channel_create_with_needed_talk_power"; - PermissionType["B_CHANNEL_CREATE_MODIFY_WITH_FORCE_PASSWORD"] = "b_channel_create_modify_with_force_password"; - PermissionType["I_CHANNEL_CREATE_MODIFY_WITH_TEMP_DELETE_DELAY"] = "i_channel_create_modify_with_temp_delete_delay"; - PermissionType["B_CHANNEL_MODIFY_PARENT"] = "b_channel_modify_parent"; - PermissionType["B_CHANNEL_MODIFY_MAKE_DEFAULT"] = "b_channel_modify_make_default"; - PermissionType["B_CHANNEL_MODIFY_MAKE_PERMANENT"] = "b_channel_modify_make_permanent"; - PermissionType["B_CHANNEL_MODIFY_MAKE_SEMI_PERMANENT"] = "b_channel_modify_make_semi_permanent"; - PermissionType["B_CHANNEL_MODIFY_MAKE_TEMPORARY"] = "b_channel_modify_make_temporary"; - PermissionType["B_CHANNEL_MODIFY_NAME"] = "b_channel_modify_name"; - PermissionType["B_CHANNEL_MODIFY_TOPIC"] = "b_channel_modify_topic"; - PermissionType["B_CHANNEL_MODIFY_DESCRIPTION"] = "b_channel_modify_description"; - PermissionType["B_CHANNEL_MODIFY_PASSWORD"] = "b_channel_modify_password"; - PermissionType["B_CHANNEL_MODIFY_CODEC"] = "b_channel_modify_codec"; - PermissionType["B_CHANNEL_MODIFY_CODEC_QUALITY"] = "b_channel_modify_codec_quality"; - PermissionType["B_CHANNEL_MODIFY_CODEC_LATENCY_FACTOR"] = "b_channel_modify_codec_latency_factor"; - PermissionType["B_CHANNEL_MODIFY_MAXCLIENTS"] = "b_channel_modify_maxclients"; - PermissionType["B_CHANNEL_MODIFY_MAXFAMILYCLIENTS"] = "b_channel_modify_maxfamilyclients"; - PermissionType["B_CHANNEL_MODIFY_SORTORDER"] = "b_channel_modify_sortorder"; - PermissionType["B_CHANNEL_MODIFY_NEEDED_TALK_POWER"] = "b_channel_modify_needed_talk_power"; - PermissionType["I_CHANNEL_MODIFY_POWER"] = "i_channel_modify_power"; - PermissionType["I_CHANNEL_NEEDED_MODIFY_POWER"] = "i_channel_needed_modify_power"; - PermissionType["B_CHANNEL_MODIFY_MAKE_CODEC_ENCRYPTED"] = "b_channel_modify_make_codec_encrypted"; - PermissionType["B_CHANNEL_MODIFY_TEMP_DELETE_DELAY"] = "b_channel_modify_temp_delete_delay"; - PermissionType["B_CHANNEL_DELETE_PERMANENT"] = "b_channel_delete_permanent"; - PermissionType["B_CHANNEL_DELETE_SEMI_PERMANENT"] = "b_channel_delete_semi_permanent"; - PermissionType["B_CHANNEL_DELETE_TEMPORARY"] = "b_channel_delete_temporary"; - PermissionType["B_CHANNEL_DELETE_FLAG_FORCE"] = "b_channel_delete_flag_force"; - PermissionType["I_CHANNEL_DELETE_POWER"] = "i_channel_delete_power"; - PermissionType["B_CHANNEL_CONVERSATION_MESSAGE_DELETE"] = "b_channel_conversation_message_delete"; - PermissionType["I_CHANNEL_NEEDED_DELETE_POWER"] = "i_channel_needed_delete_power"; - PermissionType["B_CHANNEL_JOIN_PERMANENT"] = "b_channel_join_permanent"; - PermissionType["B_CHANNEL_JOIN_SEMI_PERMANENT"] = "b_channel_join_semi_permanent"; - PermissionType["B_CHANNEL_JOIN_TEMPORARY"] = "b_channel_join_temporary"; - PermissionType["B_CHANNEL_JOIN_IGNORE_PASSWORD"] = "b_channel_join_ignore_password"; - PermissionType["B_CHANNEL_JOIN_IGNORE_MAXCLIENTS"] = "b_channel_join_ignore_maxclients"; - PermissionType["B_CHANNEL_IGNORE_VIEW_POWER"] = "b_channel_ignore_view_power"; - PermissionType["I_CHANNEL_JOIN_POWER"] = "i_channel_join_power"; - PermissionType["I_CHANNEL_NEEDED_JOIN_POWER"] = "i_channel_needed_join_power"; - PermissionType["B_CHANNEL_IGNORE_JOIN_POWER"] = "b_channel_ignore_join_power"; - PermissionType["B_CHANNEL_IGNORE_DESCRIPTION_VIEW_POWER"] = "b_channel_ignore_description_view_power"; - PermissionType["I_CHANNEL_VIEW_POWER"] = "i_channel_view_power"; - PermissionType["I_CHANNEL_NEEDED_VIEW_POWER"] = "i_channel_needed_view_power"; - PermissionType["I_CHANNEL_SUBSCRIBE_POWER"] = "i_channel_subscribe_power"; - PermissionType["I_CHANNEL_NEEDED_SUBSCRIBE_POWER"] = "i_channel_needed_subscribe_power"; - PermissionType["I_CHANNEL_DESCRIPTION_VIEW_POWER"] = "i_channel_description_view_power"; - PermissionType["I_CHANNEL_NEEDED_DESCRIPTION_VIEW_POWER"] = "i_channel_needed_description_view_power"; - PermissionType["I_ICON_ID"] = "i_icon_id"; - PermissionType["I_MAX_ICON_FILESIZE"] = "i_max_icon_filesize"; - PermissionType["I_MAX_PLAYLIST_SIZE"] = "i_max_playlist_size"; - PermissionType["I_MAX_PLAYLISTS"] = "i_max_playlists"; - PermissionType["B_ICON_MANAGE"] = "b_icon_manage"; - PermissionType["B_GROUP_IS_PERMANENT"] = "b_group_is_permanent"; - PermissionType["I_GROUP_AUTO_UPDATE_TYPE"] = "i_group_auto_update_type"; - PermissionType["I_GROUP_AUTO_UPDATE_MAX_VALUE"] = "i_group_auto_update_max_value"; - PermissionType["I_GROUP_SORT_ID"] = "i_group_sort_id"; - PermissionType["I_GROUP_SHOW_NAME_IN_TREE"] = "i_group_show_name_in_tree"; - PermissionType["B_VIRTUALSERVER_SERVERGROUP_CREATE"] = "b_virtualserver_servergroup_create"; - PermissionType["B_VIRTUALSERVER_SERVERGROUP_LIST"] = "b_virtualserver_servergroup_list"; - PermissionType["B_VIRTUALSERVER_SERVERGROUP_PERMISSION_LIST"] = "b_virtualserver_servergroup_permission_list"; - PermissionType["B_VIRTUALSERVER_SERVERGROUP_CLIENT_LIST"] = "b_virtualserver_servergroup_client_list"; - PermissionType["B_VIRTUALSERVER_CHANNELGROUP_CREATE"] = "b_virtualserver_channelgroup_create"; - PermissionType["B_VIRTUALSERVER_CHANNELGROUP_LIST"] = "b_virtualserver_channelgroup_list"; - PermissionType["B_VIRTUALSERVER_CHANNELGROUP_PERMISSION_LIST"] = "b_virtualserver_channelgroup_permission_list"; - PermissionType["B_VIRTUALSERVER_CHANNELGROUP_CLIENT_LIST"] = "b_virtualserver_channelgroup_client_list"; - PermissionType["B_VIRTUALSERVER_CLIENT_PERMISSION_LIST"] = "b_virtualserver_client_permission_list"; - PermissionType["B_VIRTUALSERVER_CHANNEL_PERMISSION_LIST"] = "b_virtualserver_channel_permission_list"; - PermissionType["B_VIRTUALSERVER_CHANNELCLIENT_PERMISSION_LIST"] = "b_virtualserver_channelclient_permission_list"; - PermissionType["B_VIRTUALSERVER_PLAYLIST_PERMISSION_LIST"] = "b_virtualserver_playlist_permission_list"; - PermissionType["I_SERVER_GROUP_MODIFY_POWER"] = "i_server_group_modify_power"; - PermissionType["I_SERVER_GROUP_NEEDED_MODIFY_POWER"] = "i_server_group_needed_modify_power"; - PermissionType["I_SERVER_GROUP_MEMBER_ADD_POWER"] = "i_server_group_member_add_power"; - PermissionType["I_SERVER_GROUP_SELF_ADD_POWER"] = "i_server_group_self_add_power"; - PermissionType["I_SERVER_GROUP_NEEDED_MEMBER_ADD_POWER"] = "i_server_group_needed_member_add_power"; - PermissionType["I_SERVER_GROUP_MEMBER_REMOVE_POWER"] = "i_server_group_member_remove_power"; - PermissionType["I_SERVER_GROUP_SELF_REMOVE_POWER"] = "i_server_group_self_remove_power"; - PermissionType["I_SERVER_GROUP_NEEDED_MEMBER_REMOVE_POWER"] = "i_server_group_needed_member_remove_power"; - PermissionType["I_CHANNEL_GROUP_MODIFY_POWER"] = "i_channel_group_modify_power"; - PermissionType["I_CHANNEL_GROUP_NEEDED_MODIFY_POWER"] = "i_channel_group_needed_modify_power"; - PermissionType["I_CHANNEL_GROUP_MEMBER_ADD_POWER"] = "i_channel_group_member_add_power"; - PermissionType["I_CHANNEL_GROUP_SELF_ADD_POWER"] = "i_channel_group_self_add_power"; - PermissionType["I_CHANNEL_GROUP_NEEDED_MEMBER_ADD_POWER"] = "i_channel_group_needed_member_add_power"; - PermissionType["I_CHANNEL_GROUP_MEMBER_REMOVE_POWER"] = "i_channel_group_member_remove_power"; - PermissionType["I_CHANNEL_GROUP_SELF_REMOVE_POWER"] = "i_channel_group_self_remove_power"; - PermissionType["I_CHANNEL_GROUP_NEEDED_MEMBER_REMOVE_POWER"] = "i_channel_group_needed_member_remove_power"; - PermissionType["I_GROUP_MEMBER_ADD_POWER"] = "i_group_member_add_power"; - PermissionType["I_GROUP_NEEDED_MEMBER_ADD_POWER"] = "i_group_needed_member_add_power"; - PermissionType["I_GROUP_MEMBER_REMOVE_POWER"] = "i_group_member_remove_power"; - PermissionType["I_GROUP_NEEDED_MEMBER_REMOVE_POWER"] = "i_group_needed_member_remove_power"; - PermissionType["I_GROUP_MODIFY_POWER"] = "i_group_modify_power"; - PermissionType["I_GROUP_NEEDED_MODIFY_POWER"] = "i_group_needed_modify_power"; - PermissionType["I_PERMISSION_MODIFY_POWER"] = "i_permission_modify_power"; - PermissionType["B_PERMISSION_MODIFY_POWER_IGNORE"] = "b_permission_modify_power_ignore"; - PermissionType["B_VIRTUALSERVER_SERVERGROUP_DELETE"] = "b_virtualserver_servergroup_delete"; - PermissionType["B_VIRTUALSERVER_CHANNELGROUP_DELETE"] = "b_virtualserver_channelgroup_delete"; - PermissionType["I_CLIENT_PERMISSION_MODIFY_POWER"] = "i_client_permission_modify_power"; - PermissionType["I_CLIENT_NEEDED_PERMISSION_MODIFY_POWER"] = "i_client_needed_permission_modify_power"; - PermissionType["I_CLIENT_MAX_CLONES_UID"] = "i_client_max_clones_uid"; - PermissionType["I_CLIENT_MAX_CLONES_IP"] = "i_client_max_clones_ip"; - PermissionType["I_CLIENT_MAX_CLONES_HWID"] = "i_client_max_clones_hwid"; - PermissionType["I_CLIENT_MAX_IDLETIME"] = "i_client_max_idletime"; - PermissionType["I_CLIENT_MAX_AVATAR_FILESIZE"] = "i_client_max_avatar_filesize"; - PermissionType["I_CLIENT_MAX_CHANNEL_SUBSCRIPTIONS"] = "i_client_max_channel_subscriptions"; - PermissionType["I_CLIENT_MAX_CHANNELS"] = "i_client_max_channels"; - PermissionType["I_CLIENT_MAX_TEMPORARY_CHANNELS"] = "i_client_max_temporary_channels"; - PermissionType["I_CLIENT_MAX_SEMI_CHANNELS"] = "i_client_max_semi_channels"; - PermissionType["I_CLIENT_MAX_PERMANENT_CHANNELS"] = "i_client_max_permanent_channels"; - PermissionType["B_CLIENT_USE_PRIORITY_SPEAKER"] = "b_client_use_priority_speaker"; - PermissionType["B_CLIENT_SKIP_CHANNELGROUP_PERMISSIONS"] = "b_client_skip_channelgroup_permissions"; - PermissionType["B_CLIENT_FORCE_PUSH_TO_TALK"] = "b_client_force_push_to_talk"; - PermissionType["B_CLIENT_IGNORE_BANS"] = "b_client_ignore_bans"; - PermissionType["B_CLIENT_IGNORE_VPN"] = "b_client_ignore_vpn"; - PermissionType["B_CLIENT_IGNORE_ANTIFLOOD"] = "b_client_ignore_antiflood"; - PermissionType["B_CLIENT_ENFORCE_VALID_HWID"] = "b_client_enforce_valid_hwid"; - PermissionType["B_CLIENT_ALLOW_INVALID_PACKET"] = "b_client_allow_invalid_packet"; - PermissionType["B_CLIENT_ALLOW_INVALID_BADGES"] = "b_client_allow_invalid_badges"; - PermissionType["B_CLIENT_ISSUE_CLIENT_QUERY_COMMAND"] = "b_client_issue_client_query_command"; - PermissionType["B_CLIENT_USE_RESERVED_SLOT"] = "b_client_use_reserved_slot"; - PermissionType["B_CLIENT_USE_CHANNEL_COMMANDER"] = "b_client_use_channel_commander"; - PermissionType["B_CLIENT_REQUEST_TALKER"] = "b_client_request_talker"; - PermissionType["B_CLIENT_AVATAR_DELETE_OTHER"] = "b_client_avatar_delete_other"; - PermissionType["B_CLIENT_IS_STICKY"] = "b_client_is_sticky"; - PermissionType["B_CLIENT_IGNORE_STICKY"] = "b_client_ignore_sticky"; - PermissionType["B_CLIENT_MUSIC_CREATE_PERMANENT"] = "b_client_music_create_permanent"; - PermissionType["B_CLIENT_MUSIC_CREATE_SEMI_PERMANENT"] = "b_client_music_create_semi_permanent"; - PermissionType["B_CLIENT_MUSIC_CREATE_TEMPORARY"] = "b_client_music_create_temporary"; - PermissionType["B_CLIENT_MUSIC_MODIFY_PERMANENT"] = "b_client_music_modify_permanent"; - PermissionType["B_CLIENT_MUSIC_MODIFY_SEMI_PERMANENT"] = "b_client_music_modify_semi_permanent"; - PermissionType["B_CLIENT_MUSIC_MODIFY_TEMPORARY"] = "b_client_music_modify_temporary"; - PermissionType["I_CLIENT_MUSIC_CREATE_MODIFY_MAX_VOLUME"] = "i_client_music_create_modify_max_volume"; - PermissionType["I_CLIENT_MUSIC_LIMIT"] = "i_client_music_limit"; - PermissionType["I_CLIENT_MUSIC_NEEDED_DELETE_POWER"] = "i_client_music_needed_delete_power"; - PermissionType["I_CLIENT_MUSIC_DELETE_POWER"] = "i_client_music_delete_power"; - PermissionType["I_CLIENT_MUSIC_PLAY_POWER"] = "i_client_music_play_power"; - PermissionType["I_CLIENT_MUSIC_NEEDED_PLAY_POWER"] = "i_client_music_needed_play_power"; - PermissionType["I_CLIENT_MUSIC_MODIFY_POWER"] = "i_client_music_modify_power"; - PermissionType["I_CLIENT_MUSIC_NEEDED_MODIFY_POWER"] = "i_client_music_needed_modify_power"; - PermissionType["I_CLIENT_MUSIC_RENAME_POWER"] = "i_client_music_rename_power"; - PermissionType["I_CLIENT_MUSIC_NEEDED_RENAME_POWER"] = "i_client_music_needed_rename_power"; - PermissionType["B_PLAYLIST_CREATE"] = "b_playlist_create"; - PermissionType["I_PLAYLIST_VIEW_POWER"] = "i_playlist_view_power"; - PermissionType["I_PLAYLIST_NEEDED_VIEW_POWER"] = "i_playlist_needed_view_power"; - PermissionType["I_PLAYLIST_MODIFY_POWER"] = "i_playlist_modify_power"; - PermissionType["I_PLAYLIST_NEEDED_MODIFY_POWER"] = "i_playlist_needed_modify_power"; - PermissionType["I_PLAYLIST_PERMISSION_MODIFY_POWER"] = "i_playlist_permission_modify_power"; - PermissionType["I_PLAYLIST_NEEDED_PERMISSION_MODIFY_POWER"] = "i_playlist_needed_permission_modify_power"; - PermissionType["I_PLAYLIST_DELETE_POWER"] = "i_playlist_delete_power"; - PermissionType["I_PLAYLIST_NEEDED_DELETE_POWER"] = "i_playlist_needed_delete_power"; - PermissionType["I_PLAYLIST_SONG_ADD_POWER"] = "i_playlist_song_add_power"; - PermissionType["I_PLAYLIST_SONG_NEEDED_ADD_POWER"] = "i_playlist_song_needed_add_power"; - PermissionType["I_PLAYLIST_SONG_REMOVE_POWER"] = "i_playlist_song_remove_power"; - PermissionType["I_PLAYLIST_SONG_NEEDED_REMOVE_POWER"] = "i_playlist_song_needed_remove_power"; - PermissionType["B_CLIENT_INFO_VIEW"] = "b_client_info_view"; - PermissionType["B_CLIENT_PERMISSIONOVERVIEW_VIEW"] = "b_client_permissionoverview_view"; - PermissionType["B_CLIENT_PERMISSIONOVERVIEW_OWN"] = "b_client_permissionoverview_own"; - PermissionType["B_CLIENT_REMOTEADDRESS_VIEW"] = "b_client_remoteaddress_view"; - PermissionType["I_CLIENT_SERVERQUERY_VIEW_POWER"] = "i_client_serverquery_view_power"; - PermissionType["I_CLIENT_NEEDED_SERVERQUERY_VIEW_POWER"] = "i_client_needed_serverquery_view_power"; - PermissionType["B_CLIENT_CUSTOM_INFO_VIEW"] = "b_client_custom_info_view"; - PermissionType["B_CLIENT_MUSIC_CHANNEL_LIST"] = "b_client_music_channel_list"; - PermissionType["B_CLIENT_MUSIC_SERVER_LIST"] = "b_client_music_server_list"; - PermissionType["I_CLIENT_MUSIC_INFO"] = "i_client_music_info"; - PermissionType["I_CLIENT_MUSIC_NEEDED_INFO"] = "i_client_music_needed_info"; - PermissionType["I_CLIENT_KICK_FROM_SERVER_POWER"] = "i_client_kick_from_server_power"; - PermissionType["I_CLIENT_NEEDED_KICK_FROM_SERVER_POWER"] = "i_client_needed_kick_from_server_power"; - PermissionType["I_CLIENT_KICK_FROM_CHANNEL_POWER"] = "i_client_kick_from_channel_power"; - PermissionType["I_CLIENT_NEEDED_KICK_FROM_CHANNEL_POWER"] = "i_client_needed_kick_from_channel_power"; - PermissionType["I_CLIENT_BAN_POWER"] = "i_client_ban_power"; - PermissionType["I_CLIENT_NEEDED_BAN_POWER"] = "i_client_needed_ban_power"; - PermissionType["I_CLIENT_MOVE_POWER"] = "i_client_move_power"; - PermissionType["I_CLIENT_NEEDED_MOVE_POWER"] = "i_client_needed_move_power"; - PermissionType["I_CLIENT_COMPLAIN_POWER"] = "i_client_complain_power"; - PermissionType["I_CLIENT_NEEDED_COMPLAIN_POWER"] = "i_client_needed_complain_power"; - PermissionType["B_CLIENT_COMPLAIN_LIST"] = "b_client_complain_list"; - PermissionType["B_CLIENT_COMPLAIN_DELETE_OWN"] = "b_client_complain_delete_own"; - PermissionType["B_CLIENT_COMPLAIN_DELETE"] = "b_client_complain_delete"; - PermissionType["B_CLIENT_BAN_LIST"] = "b_client_ban_list"; - PermissionType["B_CLIENT_BAN_LIST_GLOBAL"] = "b_client_ban_list_global"; - PermissionType["B_CLIENT_BAN_TRIGGER_LIST"] = "b_client_ban_trigger_list"; - PermissionType["B_CLIENT_BAN_CREATE"] = "b_client_ban_create"; - PermissionType["B_CLIENT_BAN_CREATE_GLOBAL"] = "b_client_ban_create_global"; - PermissionType["B_CLIENT_BAN_NAME"] = "b_client_ban_name"; - PermissionType["B_CLIENT_BAN_IP"] = "b_client_ban_ip"; - PermissionType["B_CLIENT_BAN_HWID"] = "b_client_ban_hwid"; - PermissionType["B_CLIENT_BAN_EDIT"] = "b_client_ban_edit"; - PermissionType["B_CLIENT_BAN_EDIT_GLOBAL"] = "b_client_ban_edit_global"; - PermissionType["B_CLIENT_BAN_DELETE_OWN"] = "b_client_ban_delete_own"; - PermissionType["B_CLIENT_BAN_DELETE"] = "b_client_ban_delete"; - PermissionType["B_CLIENT_BAN_DELETE_OWN_GLOBAL"] = "b_client_ban_delete_own_global"; - PermissionType["B_CLIENT_BAN_DELETE_GLOBAL"] = "b_client_ban_delete_global"; - PermissionType["I_CLIENT_BAN_MAX_BANTIME"] = "i_client_ban_max_bantime"; - PermissionType["I_CLIENT_PRIVATE_TEXTMESSAGE_POWER"] = "i_client_private_textmessage_power"; - PermissionType["I_CLIENT_NEEDED_PRIVATE_TEXTMESSAGE_POWER"] = "i_client_needed_private_textmessage_power"; - PermissionType["B_CLIENT_EVEN_TEXTMESSAGE_SEND"] = "b_client_even_textmessage_send"; - PermissionType["B_CLIENT_SERVER_TEXTMESSAGE_SEND"] = "b_client_server_textmessage_send"; - PermissionType["B_CLIENT_CHANNEL_TEXTMESSAGE_SEND"] = "b_client_channel_textmessage_send"; - PermissionType["B_CLIENT_OFFLINE_TEXTMESSAGE_SEND"] = "b_client_offline_textmessage_send"; - PermissionType["I_CLIENT_TALK_POWER"] = "i_client_talk_power"; - PermissionType["I_CLIENT_NEEDED_TALK_POWER"] = "i_client_needed_talk_power"; - PermissionType["I_CLIENT_POKE_POWER"] = "i_client_poke_power"; - PermissionType["I_CLIENT_NEEDED_POKE_POWER"] = "i_client_needed_poke_power"; - PermissionType["B_CLIENT_SET_FLAG_TALKER"] = "b_client_set_flag_talker"; - PermissionType["I_CLIENT_WHISPER_POWER"] = "i_client_whisper_power"; - PermissionType["I_CLIENT_NEEDED_WHISPER_POWER"] = "i_client_needed_whisper_power"; - PermissionType["B_CLIENT_MODIFY_DESCRIPTION"] = "b_client_modify_description"; - PermissionType["B_CLIENT_MODIFY_OWN_DESCRIPTION"] = "b_client_modify_own_description"; - PermissionType["B_CLIENT_USE_BBCODE_ANY"] = "b_client_use_bbcode_any"; - PermissionType["B_CLIENT_USE_BBCODE_URL"] = "b_client_use_bbcode_url"; - PermissionType["B_CLIENT_USE_BBCODE_IMAGE"] = "b_client_use_bbcode_image"; - PermissionType["B_CLIENT_MODIFY_DBPROPERTIES"] = "b_client_modify_dbproperties"; - PermissionType["B_CLIENT_DELETE_DBPROPERTIES"] = "b_client_delete_dbproperties"; - PermissionType["B_CLIENT_CREATE_MODIFY_SERVERQUERY_LOGIN"] = "b_client_create_modify_serverquery_login"; - PermissionType["B_CLIENT_QUERY_CREATE"] = "b_client_query_create"; - PermissionType["B_CLIENT_QUERY_LIST"] = "b_client_query_list"; - PermissionType["B_CLIENT_QUERY_LIST_OWN"] = "b_client_query_list_own"; - PermissionType["B_CLIENT_QUERY_RENAME"] = "b_client_query_rename"; - PermissionType["B_CLIENT_QUERY_RENAME_OWN"] = "b_client_query_rename_own"; - PermissionType["B_CLIENT_QUERY_CHANGE_PASSWORD"] = "b_client_query_change_password"; - PermissionType["B_CLIENT_QUERY_CHANGE_OWN_PASSWORD"] = "b_client_query_change_own_password"; - PermissionType["B_CLIENT_QUERY_CHANGE_PASSWORD_GLOBAL"] = "b_client_query_change_password_global"; - PermissionType["B_CLIENT_QUERY_DELETE"] = "b_client_query_delete"; - PermissionType["B_CLIENT_QUERY_DELETE_OWN"] = "b_client_query_delete_own"; - PermissionType["B_FT_IGNORE_PASSWORD"] = "b_ft_ignore_password"; - PermissionType["B_FT_TRANSFER_LIST"] = "b_ft_transfer_list"; - PermissionType["I_FT_FILE_UPLOAD_POWER"] = "i_ft_file_upload_power"; - PermissionType["I_FT_NEEDED_FILE_UPLOAD_POWER"] = "i_ft_needed_file_upload_power"; - PermissionType["I_FT_FILE_DOWNLOAD_POWER"] = "i_ft_file_download_power"; - PermissionType["I_FT_NEEDED_FILE_DOWNLOAD_POWER"] = "i_ft_needed_file_download_power"; - PermissionType["I_FT_FILE_DELETE_POWER"] = "i_ft_file_delete_power"; - PermissionType["I_FT_NEEDED_FILE_DELETE_POWER"] = "i_ft_needed_file_delete_power"; - PermissionType["I_FT_FILE_RENAME_POWER"] = "i_ft_file_rename_power"; - PermissionType["I_FT_NEEDED_FILE_RENAME_POWER"] = "i_ft_needed_file_rename_power"; - PermissionType["I_FT_FILE_BROWSE_POWER"] = "i_ft_file_browse_power"; - PermissionType["I_FT_NEEDED_FILE_BROWSE_POWER"] = "i_ft_needed_file_browse_power"; - PermissionType["I_FT_DIRECTORY_CREATE_POWER"] = "i_ft_directory_create_power"; - PermissionType["I_FT_NEEDED_DIRECTORY_CREATE_POWER"] = "i_ft_needed_directory_create_power"; - PermissionType["I_FT_QUOTA_MB_DOWNLOAD_PER_CLIENT"] = "i_ft_quota_mb_download_per_client"; - PermissionType["I_FT_QUOTA_MB_UPLOAD_PER_CLIENT"] = "i_ft_quota_mb_upload_per_client"; -})(PermissionType || (PermissionType = {})); -class PermissionInfo { - is_boolean() { return this.name.startsWith("b_"); } - id_grant() { - return this.id | (1 << 15); - } -} -class PermissionGroup { -} -class GroupedPermissions { -} -class PermissionValue { - constructor(type, value) { - this.type = type; - this.value = value; - } - granted(requiredValue, required = true) { - let result; - result = this.value == -1 || this.value >= requiredValue || (this.value == -2 && requiredValue == -2 && !required); - log.trace(LogCategory.PERMISSIONS, _translations.n_KYAaMS || (_translations.n_KYAaMS = tr("Required permission test resulted for permission %s: %s. Required value: %s, Granted value: %s")), this.type ? this.type.name : "unknown", result ? _translations.XWPfjb2K || (_translations.XWPfjb2K = tr("granted")) : _translations.le2qQrVZ || (_translations.le2qQrVZ = tr("denied")), requiredValue + (required ? " (" + (_translations._idwzRBJ || (_translations._idwzRBJ = tr("required"))) + ")" : ""), this.hasValue() ? this.value : _translations.tzCmjh5N || (_translations.tzCmjh5N = tr("none"))); - return result; - } - hasValue() { - return typeof (this.value) !== "undefined" && this.value != -2; - } - hasGrant() { - return typeof (this.granted_value) !== "undefined" && this.granted_value != -2; - } -} -class NeededPermissionValue extends PermissionValue { - constructor(type, value) { - super(type, value); - } -} -class PermissionManager extends connection.AbstractCommandHandler { - constructor(client) { - super(client.serverConnection); - this.permissionList = []; - this.permissionGroups = []; - this.neededPermissions = []; - this.needed_permission_change_listener = {}; - this.requests_channel_permissions = []; - this.requests_client_permissions = []; - this.requests_client_channel_permissions = []; - this.requests_playlist_permissions = []; - this.requests_playlist_client_permissions = []; - this.requests_permfind = []; - this.initializedListener = []; - this.criteria_equal = (a, b) => { - for (const criteria of ["client_id", "channel_id", "playlist_id"]) { - if ((typeof a[criteria] === "undefined") !== (typeof b[criteria] === "undefined")) - return false; - if (a[criteria] != b[criteria]) - return false; - } - return true; - }; - //FIXME? Dont register the handler like this? - this.volatile_handler_boss = true; - client.serverConnection.command_handler_boss().register_handler(this); - this.handle = client; - } - static parse_permission_bulk(json, manager) { - let permissions = []; - for (let perm of json) { - if (perm["permid"] === undefined) - continue; - let perm_id = parseInt(perm["permid"]); - let perm_grant = (perm_id & (1 << 15)) > 0; - if (perm_grant) - perm_id &= ~(1 << 15); - let perm_info = manager.resolveInfo(perm_id); - if (!perm_info) { - log.warn(LogCategory.PERMISSIONS, _translations.mPnGQldc || (_translations.mPnGQldc = tr("Got unknown permission id (%o/%o (%o))!")), perm["permid"], perm_id, perm["permsid"]); - return; - } - let permission; - for (let ref_perm of permissions) { - if (ref_perm.type == perm_info) { - permission = ref_perm; - break; - } - } - if (!permission) { - permission = new PermissionValue(perm_info, 0); - permission.granted_value = undefined; - permission.value = undefined; - permissions.push(permission); - } - if (perm_grant) { - permission.granted_value = parseInt(perm["permvalue"]); - } - else { - permission.value = parseInt(perm["permvalue"]); - permission.flag_negate = perm["permnegated"] == "1"; - permission.flag_skip = perm["permskip"] == "1"; - } - } - return permissions; - } - destroy() { - this.handle.serverConnection && this.handle.serverConnection.command_handler_boss().unregister_handler(this); - this.needed_permission_change_listener = {}; - this.permissionList = undefined; - this.permissionGroups = undefined; - this.neededPermissions = undefined; - /* delete all requests */ - for (const key of Object.keys(this)) - if (key.startsWith("requests")) - delete this[key]; - this.initializedListener = undefined; - this._cacheNeededPermissions = undefined; - } - handle_command(command) { - switch (command.command) { - case "notifyclientneededpermissions": - this.onNeededPermissions(command.arguments); - return true; - case "notifypermissionlist": - this.onPermissionList(command.arguments); - return true; - case "notifychannelpermlist": - this.onChannelPermList(command.arguments); - return true; - case "notifyclientpermlist": - this.onClientPermList(command.arguments); - return true; - case "notifyclientchannelpermlist": - this.onChannelClientPermList(command.arguments); - return true; - case "notifyplaylistpermlist": - this.onPlaylistPermList(command.arguments); - return true; - case "notifyplaylistclientpermlist": - this.onPlaylistClientPermList(command.arguments); - return true; - } - return false; - } - initialized() { - return this.permissionList.length > 0; - } - requestPermissionList() { - this.handle.serverConnection.send_command("permissionlist"); - } - onPermissionList(json) { - this.permissionList = []; - this.permissionGroups = []; - this._group_mapping = PermissionManager.group_mapping.slice(); - let group = log.group(log.LogType.TRACE, LogCategory.PERMISSIONS, _translations.xNZTALgn || (_translations.xNZTALgn = tr("Permission mapping"))); - const table_entries = []; - let permission_id = 0; - for (let e of json) { - if (e["group_id_end"]) { - let group = new PermissionGroup(); - group.begin = this.permissionGroups.length ? this.permissionGroups.last().end : 0; - group.end = parseInt(e["group_id_end"]); - group.deep = 0; - group.name = (_translations.DKPKNRNP || (_translations.DKPKNRNP = tr("Group "))) + e["group_id_end"]; - let info = this._group_mapping.pop_front(); - if (info) { - group.name = info.name; - group.deep = info.deep; - } - this.permissionGroups.push(group); - continue; - } - let perm = new PermissionInfo(); - permission_id++; - perm.name = e["permname"]; - perm.id = parseInt(e["permid"]) || permission_id; /* using permission_id as fallback if we dont have permid */ - perm.description = e["permdesc"]; - this.permissionList.push(perm); - table_entries.push({ - "id": perm.id, - "name": perm.name, - "description": perm.description - }); - } - log.table(LogType.DEBUG, LogCategory.PERMISSIONS, "Permission list", table_entries); - group.end(); - log.info(LogCategory.PERMISSIONS, _translations.xRgg5id2 || (_translations.xRgg5id2 = tr("Got %i permissions")), this.permissionList.length); - if (this._cacheNeededPermissions) - this.onNeededPermissions(this._cacheNeededPermissions); - for (let listener of this.initializedListener) - listener(true); - } - onNeededPermissions(json) { - if (this.permissionList.length == 0) { - log.warn(LogCategory.PERMISSIONS, _translations.zjGxpKHl || (_translations.zjGxpKHl = tr("Got needed permissions but don't have a permission list!"))); - this._cacheNeededPermissions = json; - return; - } - this._cacheNeededPermissions = undefined; - let copy = this.neededPermissions.slice(); - let addcount = 0; - let group = log.group(log.LogType.TRACE, LogCategory.PERMISSIONS, _translations.CTD6hjuf || (_translations.CTD6hjuf = tr("Got %d needed permissions.")), json.length); - const table_entries = []; - for (let e of json) { - let entry = undefined; - for (let p of copy) { - if (p.type.id == e["permid"]) { - entry = p; - copy.remove(p); - break; - } - } - if (!entry) { - let info = this.resolveInfo(e["permid"]); - if (info) { - entry = new NeededPermissionValue(info, -2); - this.neededPermissions.push(entry); - } - else { - log.warn(LogCategory.PERMISSIONS, _translations.bczqMhnT || (_translations.bczqMhnT = tr("Could not resolve perm for id %s (%o|%o)")), e["permid"], e, info); - continue; - } - addcount++; - } - if (entry.value == parseInt(e["permvalue"])) - continue; - entry.value = parseInt(e["permvalue"]); - for (const listener of this.needed_permission_change_listener[entry.type.name] || []) - listener(); - table_entries.push({ - "permission": entry.type.name, - "value": entry.value - }); - } - log.table(LogType.DEBUG, LogCategory.PERMISSIONS, "Needed client permissions", table_entries); - group.end(); - log.debug(LogCategory.PERMISSIONS, _translations.JhTXHwBa || (_translations.JhTXHwBa = tr("Dropping %o needed permissions and added %o permissions.")), copy.length, addcount); - for (let e of copy) { - e.value = -2; - for (const listener of this.needed_permission_change_listener[e.type.name] || []) - listener(); - } - } - register_needed_permission(key, listener) { - const array = this.needed_permission_change_listener[key] || []; - array.push(listener); - this.needed_permission_change_listener[key] = array; - } - unregister_needed_permission(key, listener) { - const array = this.needed_permission_change_listener[key]; - if (!array) - return; - array.remove(listener); - this.needed_permission_change_listener[key] = array.length > 0 ? array : undefined; - } - resolveInfo(key) { - for (let perm of this.permissionList) - if (perm.id == key || perm.name == key) - return perm; - return undefined; - } - /* channel permission request */ - onChannelPermList(json) { - let channelId = parseInt(json[0]["cid"]); - this.fullfill_permission_request("requests_channel_permissions", { - channel_id: channelId - }, "success", PermissionManager.parse_permission_bulk(json, this.handle.permissions)); - } - execute_channel_permission_request(request) { - this.handle.serverConnection.send_command("channelpermlist", { "cid": request.channel_id }).catch(error => { - if (error instanceof CommandResult && error.id == ErrorID.EMPTY_RESULT) - this.fullfill_permission_request("requests_channel_permissions", request, "success", []); - else - this.fullfill_permission_request("requests_channel_permissions", request, "error", error); - }); - } - requestChannelPermissions(channelId) { - const keys = { - channel_id: channelId - }; - return this.execute_permission_request("requests_channel_permissions", keys, this.execute_channel_permission_request.bind(this)); - } - /* client permission request */ - onClientPermList(json) { - let client = parseInt(json[0]["cldbid"]); - this.fullfill_permission_request("requests_client_permissions", { - client_id: client - }, "success", PermissionManager.parse_permission_bulk(json, this.handle.permissions)); - } - execute_client_permission_request(request) { - this.handle.serverConnection.send_command("clientpermlist", { cldbid: request.client_id }).catch(error => { - if (error instanceof CommandResult && error.id == ErrorID.EMPTY_RESULT) - this.fullfill_permission_request("requests_client_permissions", request, "success", []); - else - this.fullfill_permission_request("requests_client_permissions", request, "error", error); - }); - } - requestClientPermissions(client_id) { - const keys = { - client_id: client_id - }; - return this.execute_permission_request("requests_client_permissions", keys, this.execute_client_permission_request.bind(this)); - } - /* client channel permission request */ - onChannelClientPermList(json) { - let client_id = parseInt(json[0]["cldbid"]); - let channel_id = parseInt(json[0]["cid"]); - this.fullfill_permission_request("requests_client_channel_permissions", { - client_id: client_id, - channel_id: channel_id - }, "success", PermissionManager.parse_permission_bulk(json, this.handle.permissions)); - } - execute_client_channel_permission_request(request) { - this.handle.serverConnection.send_command("channelclientpermlist", { cldbid: request.client_id, cid: request.channel_id }) - .catch(error => { - if (error instanceof CommandResult && error.id == ErrorID.EMPTY_RESULT) - this.fullfill_permission_request("requests_client_channel_permissions", request, "success", []); - else - this.fullfill_permission_request("requests_client_channel_permissions", request, "error", error); - }); - } - requestClientChannelPermissions(client_id, channel_id) { - const keys = { - client_id: client_id - }; - return this.execute_permission_request("requests_client_channel_permissions", keys, this.execute_client_channel_permission_request.bind(this)); - } - /* playlist permissions */ - onPlaylistPermList(json) { - let playlist_id = parseInt(json[0]["playlist_id"]); - this.fullfill_permission_request("requests_playlist_permissions", { - playlist_id: playlist_id - }, "success", PermissionManager.parse_permission_bulk(json, this.handle.permissions)); - } - execute_playlist_permission_request(request) { - this.handle.serverConnection.send_command("playlistpermlist", { playlist_id: request.playlist_id }) - .catch(error => { - if (error instanceof CommandResult && error.id == ErrorID.EMPTY_RESULT) - this.fullfill_permission_request("requests_playlist_permissions", request, "success", []); - else - this.fullfill_permission_request("requests_playlist_permissions", request, "error", error); - }); - } - requestPlaylistPermissions(playlist_id) { - const keys = { - playlist_id: playlist_id - }; - return this.execute_permission_request("requests_playlist_permissions", keys, this.execute_playlist_permission_request.bind(this)); - } - /* playlist client permissions */ - onPlaylistClientPermList(json) { - let playlist_id = parseInt(json[0]["playlist_id"]); - let client_id = parseInt(json[0]["cldbid"]); - this.fullfill_permission_request("requests_playlist_client_permissions", { - playlist_id: playlist_id, - client_id: client_id - }, "success", PermissionManager.parse_permission_bulk(json, this.handle.permissions)); - } - execute_playlist_client_permission_request(request) { - this.handle.serverConnection.send_command("playlistclientpermlist", { playlist_id: request.playlist_id, cldbid: request.client_id }) - .catch(error => { - if (error instanceof CommandResult && error.id == ErrorID.EMPTY_RESULT) - this.fullfill_permission_request("requests_playlist_client_permissions", request, "success", []); - else - this.fullfill_permission_request("requests_playlist_client_permissions", request, "error", error); - }); - } - requestPlaylistClientPermissions(playlist_id, client_database_id) { - const keys = { - playlist_id: playlist_id, - client_id: client_database_id - }; - return this.execute_permission_request("requests_playlist_client_permissions", keys, this.execute_playlist_client_permission_request.bind(this)); - } - execute_permission_request(list, criteria, execute) { - for (const request of this[list]) - if (this.criteria_equal(request, criteria) && request.promise.time() + 1000 < Date.now()) - return request.promise; - const result = Object.assign({ - timeout_id: setTimeout(() => this.fullfill_permission_request(list, criteria, "error", _translations.G5Jy9mCS || (_translations.G5Jy9mCS = tr("timeout"))), 5000), - promise: new LaterPromise() - }, criteria); - this[list].push(result); - execute(criteria); - return result.promise; - } - ; - fullfill_permission_request(list, criteria, status, result) { - for (const request of this[list]) { - if (this.criteria_equal(request, criteria)) { - this[list].remove(request); - clearTimeout(request.timeout_id); - status === "error" ? request.promise.rejected(result) : request.promise.resolved(result); - } - } - } - find_permission(...permissions) { - const permission_ids = []; - for (const permission of permissions) { - const info = this.resolveInfo(permission); - if (!info) - continue; - permission_ids.push(info.id); - } - if (!permission_ids.length) - return Promise.resolve([]); - return new Promise((resolve, reject) => { - const single_handler = { - command: "notifypermfind", - function: command => { - const result = []; - for (const entry of command.arguments) { - const perm_id = parseInt(entry["p"]); - if (permission_ids.indexOf(perm_id) === -1) - return; /* not our permfind result */ - const value = parseInt(entry["v"]); - const type = parseInt(entry["t"]); - let data; - switch (type) { - case 0: - data = { - type: "server_group", - group_id: parseInt(entry["id1"]), - }; - break; - case 1: - data = { - type: "client", - client_id: parseInt(entry["id2"]), - }; - break; - case 2: - data = { - type: "channel", - channel_id: parseInt(entry["id2"]), - }; - break; - case 3: - data = { - type: "channel_group", - group_id: parseInt(entry["id1"]), - }; - break; - case 4: - data = { - type: "client_channel", - client_id: parseInt(entry["id1"]), - channel_id: parseInt(entry["id1"]), - }; - break; - default: - continue; - } - data.id = perm_id; - data.value = value; - result.push(data); - } - resolve(result); - return true; - } - }; - this.handler_boss.register_single_handler(single_handler); - this.connection.send_command("permfind", permission_ids.map(e => { return { permid: e }; })).catch(error => { - this.handler_boss.remove_single_handler(single_handler); - if (error instanceof CommandResult && error.id == ErrorID.EMPTY_RESULT) { - resolve([]); - return; - } - reject(error); - }); - }); - } - neededPermission(key) { - for (let perm of this.neededPermissions) - if (perm.type.id == key || perm.type.name == key || perm.type == key) - return perm; - log.debug(LogCategory.PERMISSIONS, _translations.X_wUbyDP || (_translations.X_wUbyDP = tr("Could not resolve grant permission %o. Creating a new one.")), key); - let info = key instanceof PermissionInfo ? key : this.resolveInfo(key); - if (!info) { - log.warn(LogCategory.PERMISSIONS, _translations.va1TCPgM || (_translations.va1TCPgM = tr("Requested needed permission with invalid key! (%o)")), key); - return new NeededPermissionValue(undefined, -2); - } - let result = new NeededPermissionValue(info, -2); - this.neededPermissions.push(result); - return result; - } - groupedPermissions() { - let result = []; - let current; - for (let group of this.permissionGroups) { - if (group.deep == 0) { - current = new GroupedPermissions(); - current.group = group; - current.parent = undefined; - current.children = []; - current.permissions = []; - result.push(current); - } - else { - if (!current) { - throw _translations.dpJgGcEJ || (_translations.dpJgGcEJ = tr("invalid order!")); - } - else { - while (group.deep <= current.group.deep) - current = current.parent; - let parent = current; - current = new GroupedPermissions(); - current.group = group; - current.parent = parent; - current.children = []; - current.permissions = []; - parent.children.push(current); - } - } - for (let permission of this.permissionList) - if (permission.id > current.group.begin && permission.id <= current.group.end) - current.permissions.push(permission); - } - return result; - } - /** - * Generates an enum with all know permission types, used for the enum above - */ - export_permission_types() { - let result = ""; - result = result + "enum PermissionType {\n"; - for (const permission of this.permissionList) { - if (!permission.name) - continue; - result = result + "\t" + permission.name.toUpperCase() + " = \"" + permission.name.toLowerCase() + "\", /* Permission ID: " + permission.id + " */\n"; - } - result = result + "}"; - return result; - } -} -/* Static info mapping until TeaSpeak implements a detailed info */ -PermissionManager.group_mapping = [ - { name: _translations.HH613O5m || (_translations.HH613O5m = tr("Global")), deep: 0 }, - { name: _translations.mwOSnQ5t || (_translations.mwOSnQ5t = tr("Information")), deep: 1 }, - { name: _translations.biW_sg0z || (_translations.biW_sg0z = tr("Virtual server management")), deep: 1 }, - { name: _translations.XEpW1KUu || (_translations.XEpW1KUu = tr("Administration")), deep: 1 }, - { name: _translations.xQjKeR1B || (_translations.xQjKeR1B = tr("Settings")), deep: 1 }, - { name: _translations.Qaqyrcb5 || (_translations.Qaqyrcb5 = tr("Virtual Server")), deep: 0 }, - { name: _translations.VPP72Y7O || (_translations.VPP72Y7O = tr("Information")), deep: 1 }, - { name: _translations.sRQvs1pe || (_translations.sRQvs1pe = tr("Administration")), deep: 1 }, - { name: _translations.MKTJCaHB || (_translations.MKTJCaHB = tr("Settings")), deep: 1 }, - { name: _translations.o_mBuxpj || (_translations.o_mBuxpj = tr("Channel")), deep: 0 }, - { name: _translations.Ke3sTyPP || (_translations.Ke3sTyPP = tr("Information")), deep: 1 }, - { name: _translations.w1vxsh9K || (_translations.w1vxsh9K = tr("Create")), deep: 1 }, - { name: _translations.tYJyWqOO || (_translations.tYJyWqOO = tr("Modify")), deep: 1 }, - { name: _translations.WZsNfPyK || (_translations.WZsNfPyK = tr("Delete")), deep: 1 }, - { name: _translations.WIiqWiL4 || (_translations.WIiqWiL4 = tr("Access")), deep: 1 }, - { name: _translations.TOhfWBxb || (_translations.TOhfWBxb = tr("Group")), deep: 0 }, - { name: _translations._rPytECo || (_translations._rPytECo = tr("Information")), deep: 1 }, - { name: _translations.CJT92u8o || (_translations.CJT92u8o = tr("Create")), deep: 1 }, - { name: _translations.F7lDIM5W || (_translations.F7lDIM5W = tr("Modify")), deep: 1 }, - { name: _translations.p978M8l6 || (_translations.p978M8l6 = tr("Delete")), deep: 1 }, - { name: _translations.nj0btL0v || (_translations.nj0btL0v = tr("Client")), deep: 0 }, - { name: _translations.yFgZNi8s || (_translations.yFgZNi8s = tr("Information")), deep: 1 }, - { name: _translations.SiWRTYIe || (_translations.SiWRTYIe = tr("Admin")), deep: 1 }, - { name: _translations.UZZVYe0I || (_translations.UZZVYe0I = tr("Basics")), deep: 1 }, - { name: _translations.t7dRXZeR || (_translations.t7dRXZeR = tr("Modify")), deep: 1 }, - //TODO Music bot - { name: _translations.bGpv2bKN || (_translations.bGpv2bKN = tr("File Transfer")), deep: 0 }, -]; -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["b0ea492a6dc1c0dcbed405d36aac400c0dbb882c0f941543ac830e0a838c53e1"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["b0ea492a6dc1c0dcbed405d36aac400c0dbb882c0f941543ac830e0a838c53e1"] = "b0ea492a6dc1c0dcbed405d36aac400c0dbb882c0f941543ac830e0a838c53e1"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "m_Pwx8sY", path: "D:/TeaSpeak/web/shared/js/permission/GroupManager.ts (142,43)" }, { name: "HQc_WylI", path: "D:/TeaSpeak/web/shared/js/permission/GroupManager.ts (158,51)" }, { name: "ry6JbE1j", path: "D:/TeaSpeak/web/shared/js/permission/GroupManager.ts (207,42)" }, { name: "lM4enCzV", path: "D:/TeaSpeak/web/shared/js/permission/GroupManager.ts (216,48)" }, { name: "OlcOY9Oi", path: "D:/TeaSpeak/web/shared/js/permission/GroupManager.ts (225,47)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -var GroupType; -(function (GroupType) { - GroupType[GroupType["QUERY"] = 0] = "QUERY"; - GroupType[GroupType["TEMPLATE"] = 1] = "TEMPLATE"; - GroupType[GroupType["NORMAL"] = 2] = "NORMAL"; -})(GroupType || (GroupType = {})); -var GroupTarget; -(function (GroupTarget) { - GroupTarget[GroupTarget["SERVER"] = 0] = "SERVER"; - GroupTarget[GroupTarget["CHANNEL"] = 1] = "CHANNEL"; -})(GroupTarget || (GroupTarget = {})); -class GroupProperties { - constructor() { - this.iconid = 0; - this.sortid = 0; - this.savedb = false; - this.namemode = 0; - } -} -class GroupPermissionRequest { -} -class Group { - constructor(handle, id, target, type, name) { - this.properties = new GroupProperties(); - this.requiredModifyPower = 0; - this.requiredMemberAddPower = 0; - this.requiredMemberRemovePower = 0; - this.handle = handle; - this.id = id; - this.target = target; - this.type = type; - this.name = name; - } - updateProperty(key, value) { - if (!JSON.map_field_to(this.properties, value, key)) - return; /* no updates */ - if (key == "iconid") { - this.properties.iconid = (new Uint32Array([this.properties.iconid]))[0]; - this.handle.handle.channelTree.clientsByGroup(this).forEach(client => { - client.updateGroupIcon(this); - }); - } - else if (key == "sortid") - this.handle.handle.channelTree.clientsByGroup(this).forEach(client => { - client.update_group_icon_order(); - }); - } -} -class GroupManager extends connection.AbstractCommandHandler { - constructor(client) { - super(client.serverConnection); - this.serverGroups = []; - this.channelGroups = []; - this.requests_group_permissions = []; - client.serverConnection.command_handler_boss().register_handler(this); - this.handle = client; - } - destroy() { - this.handle.serverConnection && this.handle.serverConnection.command_handler_boss().unregister_handler(this); - this.serverGroups = undefined; - this.channelGroups = undefined; - } - handle_command(command) { - switch (command.command) { - case "notifyservergrouplist": - case "notifychannelgrouplist": - this.handle_grouplist(command.arguments); - return true; - case "notifyservergrouppermlist": - case "notifychannelgrouppermlist": - this.handle_group_permission_list(command.arguments); - return true; - } - return false; - } - requestGroups() { - this.handle.serverConnection.send_command("servergrouplist"); - this.handle.serverConnection.send_command("channelgrouplist"); - } - static sorter() { - return (a, b) => { - if (!a) - return b ? 1 : 0; - if (!b) - return a ? -1 : 0; - if (a.properties.sortid > b.properties.sortid) - return 1; - if (a.properties.sortid < b.properties.sortid) - return -1; - if (a.id < b.id) - return -1; - if (a.id > b.id) - return 1; - return 0; - }; - } - serverGroup(id) { - for (let group of this.serverGroups) - if (group.id == id) - return group; - return undefined; - } - channelGroup(id) { - for (let group of this.channelGroups) - if (group.id == id) - return group; - return undefined; - } - handle_grouplist(json) { - let target; - if (json[0]["sgid"]) - target = GroupTarget.SERVER; - else if (json[0]["cgid"]) - target = GroupTarget.CHANNEL; - else { - log.error(LogCategory.CLIENT, _translations.m_Pwx8sY || (_translations.m_Pwx8sY = tr("Could not resolve group target! => %o")), json[0]); - return; - } - if (target == GroupTarget.SERVER) - this.serverGroups = []; - else - this.channelGroups = []; - for (let groupData of json) { - let type; - switch (Number.parseInt(groupData["type"])) { - case 0: - type = GroupType.TEMPLATE; - break; - case 1: - type = GroupType.NORMAL; - break; - case 2: - type = GroupType.QUERY; - break; - default: - log.error(LogCategory.CLIENT, _translations.HQc_WylI || (_translations.HQc_WylI = tr("Invalid group type: %o for group %s")), groupData["type"], groupData["name"]); - continue; - } - let group = new Group(this, parseInt(target == GroupTarget.SERVER ? groupData["sgid"] : groupData["cgid"]), target, type, groupData["name"]); - for (let key in groupData) { - if (key == "sgid") - continue; - if (key == "cgid") - continue; - if (key == "type") - continue; - if (key == "name") - continue; - group.updateProperty(key, groupData[key]); - } - group.requiredMemberRemovePower = parseInt(groupData["n_member_removep"]); - group.requiredMemberAddPower = parseInt(groupData["n_member_addp"]); - group.requiredModifyPower = parseInt(groupData["n_modifyp"]); - if (target == GroupTarget.SERVER) - this.serverGroups.push(group); - else - this.channelGroups.push(group); - } - for (const client of this.handle.channelTree.clients) - client.update_displayed_client_groups(); - } - request_permissions(group) { - for (let request of this.requests_group_permissions) - if (request.group_id == group.id && request.promise.time() + 1000 > Date.now()) - return request.promise; - let req = new GroupPermissionRequest(); - req.group_id = group.id; - req.promise = new LaterPromise(); - this.requests_group_permissions.push(req); - this.handle.serverConnection.send_command(group.target == GroupTarget.SERVER ? "servergrouppermlist" : "channelgrouppermlist", { - cgid: group.id, - sgid: group.id - }).catch(error => { - if (error instanceof CommandResult && error.id == 0x0501) - req.promise.resolved([]); - else - req.promise.rejected(error); - }).then(() => { - //No notify handler - setTimeout(() => { - if (this.requests_group_permissions.remove(req)) - req.promise.rejected(_translations.ry6JbE1j || (_translations.ry6JbE1j = tr("no response"))); - }, 1000); - }); - return req.promise; - } - handle_group_permission_list(json) { - let group = json[0]["sgid"] ? this.serverGroup(parseInt(json[0]["sgid"])) : this.channelGroup(parseInt(json[0]["cgid"])); - if (!group) { - log.error(LogCategory.PERMISSIONS, _translations.lM4enCzV || (_translations.lM4enCzV = tr("Got group permissions for group %o/%o, but its not a registered group!")), json[0]["sgid"], json[0]["cgid"]); - return; - } - let requests = []; - for (let req of this.requests_group_permissions) - if (req.group_id == group.id) - requests.push(req); - if (requests.length == 0) { - log.warn(LogCategory.PERMISSIONS, _translations.OlcOY9Oi || (_translations.OlcOY9Oi = tr("Got group permissions for group %o/%o, but it was never requested!")), json[0]["sgid"], json[0]["cgid"]); - return; - } - let permissions = PermissionManager.parse_permission_bulk(json, this.handle.permissions); - for (let req of requests) { - this.requests_group_permissions.remove(req); - req.promise.resolved(permissions); - } - } -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["46781534c5b8744342d5e1cb470f54295d8e0415c5ff17abae7eb6ef80ec64fa"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["46781534c5b8744342d5e1cb470f54295d8e0415c5ff17abae7eb6ef80ec64fa"] = "46781534c5b8744342d5e1cb470f54295d8e0415c5ff17abae7eb6ef80ec64fa"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "DCMrKjN6", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (5,21)" }, { name: "x4QFY8cw", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (107,25)" }, { name: "dFGvDzKl", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (125,35)" }, { name: "hmRPaeUZ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (136,25)" }, { name: "PNcccgLx", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (158,35)" }, { name: "R6SjfIQ9", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (170,44)" }, { name: "COCcPP1_", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (184,125)" }, { name: "t1qSGjoo", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (185,84)" }, { name: "PerphGL8", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (227,47)" }, { name: "Udn4hTMY", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (227,68)" }, { name: "L2ki1Skp", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (276,34)" }, { name: "_RrVUjgX", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (276,62)" }, { name: "sl496iCK", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (292,71)" }, { name: "XC0NChHc", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (302,34)" }, { name: "wz0RQ6W1", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (302,57)" }, { name: "ySq4xxUe", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (460,43)" }, { name: "U5kKlwd8", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (465,43)" }, { name: "i6XwJzrt", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (466,46)" }, { name: "pwBc9du5", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (466,106)" }, { name: "tYO7MhPX", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (481,33)" }, { name: "TPswmcMR", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (482,42)" }, { name: "P9SCZZQG", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (493,35)" }, { name: "O6ifCkPV", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (603,33)" }, { name: "ijGZQoJy", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (659,50)" }, { name: "oPL5wq0y", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (660,75)" }, { name: "UBrvt3sv", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (699,50)" }, { name: "phHj2aiZ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (700,74)" }, { name: "XUo6cT78", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (710,50)" }, { name: "dCwo9upm", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (711,80)" }, { name: "AlGUCXNW", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (722,50)" }, { name: "o2FZws2H", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (723,77)" }, { name: "urEnnhUv", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (735,50)" }, { name: "RbO_12FB", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (736,77)" }, { name: "He1Lhlei", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (748,50)" }, { name: "BsQvH7KD", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (749,83)" }, { name: "dryBR96k", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (765,50)" }, { name: "NmI6OOx2", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (766,83)" }, { name: "ISCwnQTE", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (776,50)" }, { name: "gT4hzBi0", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (777,85)" }, { name: "DaKCu_FT", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (783,138)" }, { name: "D8X_oTbc", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (790,85)" }, { name: "uLiVzH1c", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (797,50)" }, { name: "Zw07OLxG", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (808,50)" }, { name: "NtGL5zmt", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (809,88)" }, { name: "r6jWa2i3", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (825,39)" }, { name: "sH3hrr8x", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (826,92)" }, { name: "gtbrQF6_", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (829,35)" }, { name: "DW7n4WE_", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (830,88)" }, { name: "u_dYuuQh", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (837,50)" }, { name: "C8qosC5x", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (846,39)" }, { name: "hGsVw3C1", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (861,50)" }, { name: "jvF1L94q", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (874,55)" }, { name: "ePInsAEF", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (882,50)" }, { name: "QE8mYeI3", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (900,38)" }, { name: "c93vvmwR", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (900,71)" }, { name: "W6aQuY5Q", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (920,104)" }, { name: "_aqNX0xB", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (921,91)" }, { name: "e3VI8KGN", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (924,90)" }, { name: "vjY9fepV", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (951,81)" }, { name: "jedfrTq7", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (985,70)" }, { name: "dJqFoWNu", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1001,94)" }, { name: "QMbj98Jl", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1010,83)" }, { name: "oXE3AOOj", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1010,108)" }, { name: "u3YjNURr", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1010,150)" }, { name: "bdvaz2Fu", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1024,54)" }, { name: "yZrWIhG1", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1058,42)" }, { name: "OergtM4i", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1058,79)" }, { name: "AcQQmDNG", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1058,157)" }, { name: "BIHNDdrV", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1058,197)" }, { name: "LpQGcaVD", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1071,36)" }, { name: "Odgcch92", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1071,57)" }, { name: "PKQe99Hv", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1080,42)" }, { name: "uZOymAv8", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1080,74)" }, { name: "iRIw6oQA", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1080,147)" }, { name: "uskvfZ0w", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1080,187)" }, { name: "w92k7IcM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1094,42)" }, { name: "aeeSZ1W6", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1094,69)" }, { name: "x64gbqPE", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1108,42)" }, { name: "f7eMoiYk", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1108,74)" }, { name: "KRG7a6pk", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1108,151)" }, { name: "WnIitvJ5", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1108,191)" }, { name: "cgIp7Mq0", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1117,74)" }, { name: "vmnyPmOT", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1117,114)" }, { name: "il2IXXi7", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1128,74)" }, { name: "eLGB6hfn", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1139,39)" }, { name: "rQQstdmx", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1156,39)" }, { name: "JsYl7deR", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1161,50)" }, { name: "V2dCo75J", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1161,87)" }, { name: "M_33FHbX", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1188,115)" }, { name: "K95eJH8w", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1199,88)" }, { name: "uUD_P0G8", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1227,39)" }, { name: "B2niZHis", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1232,50)" }, { name: "lglQPHRb", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1232,83)" }, { name: "gjr1Hjwb", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1267,82)" }, { name: "TQnO8NzW", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1322,71)" }, { name: "UOYpbAz7", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1323,75)" }, { name: "j_B1XMlg", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1388,44)" }, { name: "LhMjT0D6", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1388,64)" }, { name: "QXs1fW_l", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1400,50)" }, { name: "LvN8hZ1p", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1400,91)" }, { name: "mfkiBtNv", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1405,45)" }, { name: "TgHz611r", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1405,71)" }, { name: "e35FyXnh", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1413,44)" }, { name: "w9qoM29d", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1413,64)" }, { name: "hZrU5_SP", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1431,45)" }, { name: "K5k4dA5r", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1431,70)" }, { name: "pi0qV71w", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1438,46)" }, { name: "f_7UqLhu", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1438,63)" }, { name: "vlf6z52a", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1488,46)" }, { name: "LbOr04qi", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1501,35)" }, { name: "NFAJFMiD", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1517,35)" }, { name: "TjAtodXU", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1522,46)" }, { name: "hLnfEYZl", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1522,75)" }, { name: "lghaKO0H", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1692,57)" }, { name: "JjcOzbzw", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1723,53)" }, { name: "z4UK75Eu", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1739,98)" }, { name: "am_OVcEM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1744,39)" }, { name: "pj9HuZR1", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1747,53)" }, { name: "YwWBf7Xh", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1776,103)" }, { name: "rqWJD5R2", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1796,107)" }, { name: "w8SWxS4C", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1818,103)" }, { name: "S9WvyD7Z", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1889,46)" }, { name: "hceWH1fk", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1889,109)" }, { name: "pqrGxJyU", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1889,210)" }, { name: "cin0D3wS", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1889,241)" }, { name: "ii2WV_Om", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1910,78)" }, { name: "zUPIX6BD", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (1910,123)" }, { name: "cIzsOEm1", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2022,46)" }, { name: "CPz2Dcn4", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2022,106)" }, { name: "TqXWWyKK", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2022,176)" }, { name: "IAvTTiJt", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2022,207)" }, { name: "NZPKedF2", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2124,109)" }, { name: "Fj0SrrS2", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2139,45)" }, { name: "eE42rV0W", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2149,54)" }, { name: "Y9zzAYFy", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2149,114)" }, { name: "EdjnX01y", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2149,184)" }, { name: "LJiFWJSt", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2149,215)" }, { name: "jwSWNYxO", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2209,58)" }, { name: "UOWQDD_7", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2209,126)" }, { name: "izNO4C23", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2209,204)" }, { name: "oRJMsyYz", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2209,235)" }, { name: "FkXnr4XQ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2267,58)" }, { name: "G2MNfANr", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2267,120)" }, { name: "LUwfp1q6", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2267,192)" }, { name: "Eckk8zqH", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2267,223)" }, { name: "Sz0yBwv1", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2356,83)" }, { name: "nM_Detuu", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2356,95)" }, { name: "tbSVCOB3", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2393,35)" }, { name: "qJrtnF6R", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2409,69)" }, { name: "fMFyBIJx", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2413,37)" }, { name: "m7tGEkDd", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2416,43)" }, { name: "HRWXI7ss", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2421,43)" }, { name: "_DgU0HsU", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2428,69)" }, { name: "r6v8MZ09", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2431,35)" }, { name: "JslYmH78", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2432,38)" }, { name: "l0U3SilI", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2432,65)" }, { name: "SCagvySD", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2446,35)" }, { name: "N4jqwUqM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2447,38)" }, { name: "jeMb4g5m", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalSettings.ts (2447,93)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var Modals; -(function (Modals) { - function spawnSettingsModal(default_page) { - let modal; - modal = createModal({ - header: _translations.DCMrKjN6 || (_translations.DCMrKjN6 = tr("Settings")), - body: () => { - const tag = $("#tmpl_settings").renderTag().dividerfy(); - /* general "tab" mechanic */ - const left = tag.find("> .left"); - const right = tag.find("> .right"); - { - left.find(".entry:not(.group)").on('click', event => { - const entry = $(event.target); - right.find("> .container").addClass("hidden"); - left.find(".selected").removeClass("selected"); - const target = entry.attr("container"); - if (!target) - return; - right.find("> .container." + target).removeClass("hidden"); - entry.addClass("selected"); - }); - } - /* initialize all tabs */ - /* enable one tab */ - { - left.find(".entry[container" + (default_page ? ("='" + default_page + "'") : "") + "]").first().trigger('click'); - } - return tag; - }, - footer: null - }); - modal.htmlTag.find(".modal-body").addClass("modal-settings"); - settings_general_application(modal.htmlTag.find(".right .container.general-application"), modal); - settings_general_language(modal.htmlTag.find(".right .container.general-language"), modal); - settings_general_chat(modal.htmlTag.find(".right .container.general-chat"), modal); - settings_audio_microphone(modal.htmlTag.find(".right .container.audio-microphone"), modal); - settings_audio_speaker(modal.htmlTag.find(".right .container.audio-speaker"), modal); - settings_audio_sounds(modal.htmlTag.find(".right .container.audio-sounds"), modal); - const update_profiles = settings_identity_profiles(modal.htmlTag.find(".right .container.identity-profiles"), modal); - settings_identity_forum(modal.htmlTag.find(".right .container.identity-forum"), modal, update_profiles); - modal.close_listener.push(() => { - if (profiles.requires_save()) - profiles.save(); - }); - modal.open(); - return modal; - } - Modals.spawnSettingsModal = spawnSettingsModal; - function settings_general_application(container, modal) { - /* hostbanner */ - { - const option = container.find(".option-hostbanner-background"); - option.on('change', event => { - settings.changeGlobal(Settings.KEY_HOSTBANNER_BACKGROUND, option[0].checked); - for (const sc of server_connections.server_connection_handlers()) - sc.hostbanner.update(); - }).prop("checked", settings.static_global(Settings.KEY_HOSTBANNER_BACKGROUND)); - } - /* font size */ - { - const current_size = parseInt(getComputedStyle(document.body).fontSize); //settings.static_global(Settings.KEY_FONT_SIZE, 12); - const select = container.find(".option-font-size"); - if (select.find("option[value='" + current_size + "']").length) - select.find("option[value='" + current_size + "']").prop("selected", true); - else - select.find("option[value='-1']").prop("selected", true); - select.on('change', event => { - const value = parseInt(select.val()); - settings.changeGlobal(Settings.KEY_FONT_SIZE, value); - console.log("Changed font size to %dpx", value); - $(document.body).css("font-size", value + "px"); - }); - } - /* all permissions */ - { - const option = container.find(".option-all-permissions"); - option.on('change', event => { - settings.changeGlobal(Settings.KEY_HOSTBANNER_BACKGROUND, option[0].checked); - }).prop("checked", settings.global(Settings.KEY_PERMISSIONS_SHOW_ALL)); - } - } - function settings_general_language(container, modal) { - const container_entries = container.find(".container-list .entries"); - const tag_loading = container.find(".cover-loading"); - const template = $("#settings-translations-list-entry"); - const restart_hint = container.find(".restart-note").hide(); - const display_repository_info = (repository) => { - const info_modal = createModal({ - header: _translations.x4QFY8cw || (_translations.x4QFY8cw = tr("Repository info")), - body: () => { - return $("#settings-translations-list-entry-info").renderTag({ - type: "repository", - name: repository.name, - url: repository.url, - contact: repository.contact, - translations: repository.translations || [] - }); - }, - footer: () => { - let footer = $.spawn("div"); - footer.addClass("modal-button-group"); - footer.css("margin-top", "5px"); - footer.css("margin-bottom", "5px"); - footer.css("text-align", "right"); - let buttonOk = $.spawn("button"); - buttonOk.text(_translations.dFGvDzKl || (_translations.dFGvDzKl = tr("Close"))); - buttonOk.click(() => info_modal.close()); - footer.append(buttonOk); - return footer; - } - }); - info_modal.open(); - }; - const display_translation_info = (translation, repository) => { - const info_modal = createModal({ - header: _translations.hmRPaeUZ || (_translations.hmRPaeUZ = tr("Translation info")), - body: () => { - const tag = $("#settings-translations-list-entry-info").renderTag({ - type: "translation", - name: translation.name, - url: translation.path, - repository_name: repository.name, - contributors: translation.contributors || [] - }); - tag.find(".button-info").on('click', () => display_repository_info(repository)); - return tag; - }, - footer: () => { - let footer = $.spawn("div"); - footer.addClass("modal-button-group"); - footer.css("margin-top", "5px"); - footer.css("margin-bottom", "5px"); - footer.css("text-align", "right"); - let buttonOk = $.spawn("button"); - buttonOk.text(_translations.PNcccgLx || (_translations.PNcccgLx = tr("Close"))); - buttonOk.click(() => info_modal.close()); - footer.append(buttonOk); - return footer; - } - }); - info_modal.open(); - }; - const update_current_selected = () => { - const container_current = container.find(".selected-language6"); - container_current.empty().text(_translations.R6SjfIQ9 || (_translations.R6SjfIQ9 = tr("Loading"))); - let current_translation; - i18n.iterate_repositories(repository => { - if (current_translation) - return; - for (const entry of repository.translations) - if (i18n.config.translation_config().current_translation_path == entry.path) { - current_translation = entry; - return; - } - }).then(() => { - container_current.empty(); - const language = current_translation ? current_translation.country_code : "gb"; - $.spawn("div").addClass("country flag-" + language.toLowerCase()).attr('title', i18n.country_name(language, _translations.COCcPP1_ || (_translations.COCcPP1_ = tr("Unknown language")))).appendTo(container_current); - $.spawn("a").text(current_translation ? current_translation.name : _translations.t1qSGjoo || (_translations.t1qSGjoo = tr("English (Default)"))).appendTo(container_current); - }).catch(error => { - /* This shall never happen */ - }); - }; - const initially_selected = i18n.config.translation_config().current_translation_url; - const update_list = () => { - container_entries.empty(); - const currently_selected = i18n.config.translation_config().current_translation_url; - //Default translation - { - const tag = template.renderTag({ - type: "default", - selected: !currently_selected || currently_selected == "default" - }); - tag.on('click', () => { - i18n.select_translation(undefined, undefined); - container_entries.find(".selected").removeClass("selected"); - tag.addClass("selected"); - update_current_selected(); - restart_hint.toggle(initially_selected !== i18n.config.translation_config().current_translation_url); - }); - tag.appendTo(container_entries); - } - { - tag_loading.show(); - i18n.iterate_repositories(repo => { - let repo_tag = container_entries.find("[repository=\"" + repo.unique_id + "\"]"); - if (repo_tag.length == 0) { - repo_tag = template.renderTag({ - type: "repository", - name: repo.name || repo.url, - id: repo.unique_id - }); - repo_tag.find(".button-delete").on('click', e => { - e.preventDefault(); - Modals.spawnYesNo(_translations.PerphGL8 || (_translations.PerphGL8 = tr("Are you sure?")), _translations.Udn4hTMY || (_translations.Udn4hTMY = tr("Do you really want to delete this repository?")), answer => { - if (answer) { - i18n.delete_repository(repo); - update_list(); - } - }); - }); - repo_tag.find(".button-info").on('click', e => { - e.preventDefault(); - display_repository_info(repo); - }); - container_entries.append(repo_tag); - } - for (const translation of repo.translations) { - const tag = template.renderTag({ - type: "translation", - name: translation.name || translation.path, - id: repo.unique_id, - country_code: translation.country_code, - selected: i18n.config.translation_config().current_translation_path == translation.path - }); - tag.find(".button-info").on('click', e => { - e.preventDefault(); - display_translation_info(translation, repo); - }); - tag.on('click', e => { - if (e.isDefaultPrevented()) - return; - i18n.select_translation(repo, translation); - container_entries.find(".selected").removeClass("selected"); - tag.addClass("selected"); - update_current_selected(); - restart_hint.toggle(initially_selected !== i18n.config.translation_config().current_translation_url); - }); - tag.insertAfter(repo_tag); - } - }).then(() => tag_loading.hide()).catch(error => { - console.error(error); - /* this should NEVER happen */ - }); - } - }; - /* button add repository */ - { - container.find(".button-add-repository").on('click', () => { - createInputModal(_translations.L2ki1Skp || (_translations.L2ki1Skp = tr("Enter repository URL")), _translations._RrVUjgX || (_translations._RrVUjgX = tr("Enter repository URL:")), text => { - try { - new URL(text); - return true; - } - catch (error) { - return false; - } - }, url => { - if (!url) - return; - tag_loading.show(); - i18n.load_repository(url).then(repository => { - i18n.register_repository(repository); - update_list(); - }).catch(error => { - tag_loading.hide(); - createErrorModal("Failed to load repository", (_translations.sl496iCK || (_translations.sl496iCK = tr("Failed to query repository.
Ensure that this repository is valid and reachable.
Error: "))) + error).open(); - }); - }).open(); - }); - } - container.find(".button-restart").on('click', () => { - if (app.is_web()) { - location.reload(); - } - else { - createErrorModal(_translations.XC0NChHc || (_translations.XC0NChHc = tr("Not implemented")), _translations.wz0RQ6W1 || (_translations.wz0RQ6W1 = tr("Client restart isn't implemented.
Please do it manually!"))).open(); - } - }); - update_list(); - update_current_selected(); - } - function settings_general_chat(container, modal) { - /* timestamp format */ - { - const option_fixed = container.find(".option-fixed-timestamps"); - const option_colloquial = container.find(".option-colloquial-timestamps"); - option_colloquial.on('change', event => { - settings.changeGlobal(Settings.KEY_CHAT_COLLOQUIAL_TIMESTAMPS, option_colloquial[0].checked); - }); - option_fixed.on('change', event => { - settings.changeGlobal(Settings.KEY_CHAT_FIXED_TIMESTAMPS, option_fixed[0].checked); - option_colloquial - .prop("disabled", option_fixed[0].checked) - .parents("label").toggleClass("disabled", option_fixed[0].checked); - if (option_fixed[0].checked) { - option_colloquial.prop("checked", false); - } - else { - option_colloquial.prop("checked", settings.static_global(Settings.KEY_CHAT_COLLOQUIAL_TIMESTAMPS)); - } - }).prop("checked", settings.static_global(Settings.KEY_CHAT_FIXED_TIMESTAMPS)).trigger('change'); - } - { - const option = container.find(".option-instant-channel-switch"); - option.on('change', event => { - settings.changeGlobal(Settings.KEY_SWITCH_INSTANT_CHAT, option[0].checked); - }).prop("checked", settings.static_global(Settings.KEY_SWITCH_INSTANT_CHAT)); - } - { - const option = container.find(".option-instant-client-switch"); - option.on('change', event => { - settings.changeGlobal(Settings.KEY_SWITCH_INSTANT_CLIENT, option[0].checked); - }).prop("checked", settings.static_global(Settings.KEY_SWITCH_INSTANT_CLIENT)); - } - { - const option = container.find(".option-colored-emojies"); - option.on('change', event => { - settings.changeGlobal(Settings.KEY_CHAT_COLORED_EMOJIES, option[0].checked); - }).prop("checked", settings.static_global(Settings.KEY_CHAT_COLORED_EMOJIES)); - } - const update_format_helper = () => server_connections.server_connection_handlers().map(e => e.side_bar).forEach(e => { - e.private_conversations().update_input_format_helper(); - e.channel_conversations().update_input_format_helper(); - }); - { - const option = container.find(".option-support-markdown"); - option.on('change', event => { - settings.changeGlobal(Settings.KEY_CHAT_ENABLE_MARKDOWN, option[0].checked); - update_format_helper(); - }).prop("checked", settings.static_global(Settings.KEY_CHAT_ENABLE_MARKDOWN)); - } - { - const option = container.find(".option-support-bbcode"); - option.on('change', event => { - settings.changeGlobal(Settings.KEY_CHAT_ENABLE_BBCODE, option[0].checked); - update_format_helper(); - }).prop("checked", settings.static_global(Settings.KEY_CHAT_ENABLE_BBCODE)); - } - { - const option = container.find(".option-url-tagging"); - option.on('change', event => { - settings.changeGlobal(Settings.KEY_CHAT_TAG_URLS, option[0].checked); - }).prop("checked", settings.static_global(Settings.KEY_CHAT_TAG_URLS)); - } - /* Icon size */ - { - const container_slider = container.find(".container-icon-size .container-slider"); - const container_value = container.find(".container-icon-size .value"); - sliderfy(container_slider, { - unit: '%', - min_value: 25, - max_value: 300, - step: 5, - initial_value: settings.static_global(Settings.KEY_ICON_SIZE), - value_field: container_value - }); - container_slider.on('change', event => { - const value = parseInt(container_slider.attr("value")); - settings.changeGlobal(Settings.KEY_ICON_SIZE, value); - console.log("Changed icon size to %sem", (value / 100).toFixed(2)); - MessageHelper.set_icon_size((value / 100).toFixed(2) + "em"); - }); - } - } - function settings_audio_microphone(container, modal) { - const registry = new events.Registry(); - registry.enable_debug("settings-microphone"); - modal_settings.initialize_audio_microphone_controller(registry); - modal_settings.initialize_audio_microphone_view(container, registry); - modal.close_listener.push(() => registry.fire_async("deinitialize")); - return; - } - function settings_identity_profiles(container, modal) { - const registry = new events.Registry(); - //registry.enable_debug("settings-identity"); - modal_settings.initialize_identity_profiles_controller(registry); - modal_settings.initialize_identity_profiles_view(container, registry, { - forum_setuppable: true - }); - registry.on("setup-forum-connection", event => { - modal.htmlTag.find('.entry[container="identity-forum"]').trigger('click'); - }); - return () => registry.fire("reload-profile"); - } - function settings_audio_speaker(container, modal) { - /* devices */ - { - const container_devices = container.find(".left .container-devices"); - const contianer_error = container.find(".left .container-error"); - const update_devices = () => { - container_devices.children().remove(); - const current_selected = audio.player.current_device(); - const generate_device = (device) => { - const selected = device === current_selected || (typeof (current_selected) !== "undefined" && typeof (device) !== "undefined" && current_selected.device_id == device.device_id); - const tag = $.spawn("div").addClass("device").toggleClass("selected", selected).append($.spawn("div").addClass("container-selected").append($.spawn("div").addClass("icon_em client-apply")), $.spawn("div").addClass("container-name").append($.spawn("div").addClass("device-driver").text(device ? (device.driver || "Unknown driver") : "No device"), $.spawn("div").addClass("device-name").text(device ? (device.name || "Unknown name") : "No device"))); - tag.on('click', event => { - if (tag.hasClass("selected")) - return; - const _old = container_devices.find(".selected"); - _old.removeClass("selected"); - tag.addClass("selected"); - audio.player.set_device(device ? device.device_id : null).then(() => { - console.debug(_translations.ySq4xxUe || (_translations.ySq4xxUe = tr("Changed default speaker device"))); - }).catch((error) => { - _old.addClass("selected"); - tag.removeClass("selected"); - console.error(_translations.U5kKlwd8 || (_translations.U5kKlwd8 = tr("Failed to change speaker to device %o: %o")), device, error); - createErrorModal(_translations.i6XwJzrt || (_translations.i6XwJzrt = tr("Failed to change speaker")), MessageHelper.formatMessage(_translations.pwBc9du5 || (_translations.pwBc9du5 = tr("Failed to change the speaker device to the target speaker{:br:}{}")), error)).open(); - }); - }); - return tag; - }; - generate_device(undefined).appendTo(container_devices); - audio.player.available_devices().then(result => { - contianer_error.text("").hide(); - result.forEach(e => generate_device(e).appendTo(container_devices)); - }).catch(error => { - if (typeof (error) === "string") - contianer_error.text(error).show(); - console.log(_translations.tYO7MhPX || (_translations.tYO7MhPX = tr("Failed to query available speaker devices: %o")), error); - contianer_error.text(_translations.TPswmcMR || (_translations.TPswmcMR = tr("Errors occurred (View console)"))).show(); - }); - }; - update_devices(); - const button_update = container.find(".button-update"); - button_update.on('click', (event) => __awaiter(this, void 0, void 0, function* () { - button_update.prop("disabled", true); - try { - update_devices(); - } - catch (error) { - console.error(_translations.P9SCZZQG || (_translations.P9SCZZQG = tr("Failed to build new speaker device list: %o")), error); - } - button_update.prop("disabled", false); - })); - } - /* slider */ - { - { - const container_master = container.find(".container-volume-master"); - const slider = container_master.find(".container-slider"); - sliderfy(slider, { - min_value: 0, - max_value: 100, - step: 1, - initial_value: settings.static_global(Settings.KEY_SOUND_MASTER, 100), - value_field: [container_master.find(".container-value")] - }); - slider.on('change', event => { - const volume = parseInt(slider.attr('value')); - if (audio.player.set_master_volume) - audio.player.set_master_volume(volume / 100); - settings.changeGlobal(Settings.KEY_SOUND_MASTER, volume); - }); - } - { - const container_soundpack = container.find(".container-volume-soundpack"); - const slider = container_soundpack.find(".container-slider"); - sliderfy(slider, { - min_value: 0, - max_value: 100, - step: 1, - initial_value: settings.static_global(Settings.KEY_SOUND_MASTER_SOUNDS, 100), - value_field: [container_soundpack.find(".container-value")] - }); - slider.on('change', event => { - const volume = parseInt(slider.attr('value')); - sound.set_master_volume(volume / 100); - settings.changeGlobal(Settings.KEY_SOUND_MASTER_SOUNDS, volume); - }); - } - } - /* button test sound */ - { - container.find(".button-test-sound").on('click', event => { - sound.manager.play(Sound.SOUND_TEST, { - default_volume: 1, - ignore_muted: true, - ignore_overlap: true - }); - }); - } - } - function settings_audio_sounds(contianer, modal) { - /* initialize sound list */ - { - const container_sounds = contianer.find(".container-sounds"); - const generate_sound = (_sound) => { - let tag_play_pause, tag_play, tag_pause, tag_input_muted; - let tag = $.spawn("div").addClass("sound").append(tag_play_pause = $.spawn("div").addClass("container-button-play_pause").append(tag_play = $.spawn("img").attr("src", "img/icon_sound_play.svg"), tag_pause = $.spawn("img").attr("src", "img/icon_sound_pause.svg")), $.spawn("div").addClass("container-name").text(_sound), $.spawn("label").addClass("container-button-toggle").append($.spawn("div").addClass("switch").append(tag_input_muted = $.spawn("input").attr("type", "checkbox"), $.spawn("span").addClass("slider").append($.spawn("div").addClass("dot"))))); - tag_play_pause.on('click', event => { - if (tag_pause.is(":visible")) - return; - tag_play.hide(); - tag_pause.show(); - const _done = flag => { - tag_pause.hide(); - tag_play.show(); - }; - const _timeout = setTimeout(() => _done(false), 10 * 1000); /* the sounds are not longer than 10 seconds */ - sound.manager.play(_sound, { - ignore_overlap: true, - ignore_muted: true, - default_volume: 1, - callback: flag => { - clearTimeout(_timeout); - _done(flag); - } - }); - }); - tag_pause.hide(); - tag_input_muted.prop("checked", sound.get_sound_volume(_sound, 1) > 0); - tag_input_muted.on('change', event => { - const volume = tag_input_muted.prop("checked") ? 1 : 0; - sound.set_sound_volume(_sound, volume); - console.log(_translations.O6ifCkPV || (_translations.O6ifCkPV = tr("Changed sound volume to %o for sound %o")), volume, _sound); - }); - return tag; - }; - //container-sounds - for (const sound_key in Sound) - generate_sound(Sound[sound_key]).appendTo(container_sounds); - /* the filter */ - const input_filter = contianer.find(".input-sounds-filter"); - input_filter.on('change keyup', event => { - const filter = input_filter.val(); - container_sounds.find(".sound").each((_, _element) => { - const element = $(_element); - element.toggle(filter.length == 0 || element.text().toLowerCase().indexOf(filter) !== -1); - }); - }); - } - const overlap_tag = contianer.find(".option-overlap-same"); - overlap_tag.on('change', event => { - const activated = event.target.checked; - sound.set_overlap_activated(activated); - }).prop("checked", sound.overlap_activated()); - const mute_tag = contianer.find(".option-mute-output"); - mute_tag.on('change', event => { - const activated = event.target.checked; - sound.set_ignore_output_muted(!activated); - }).prop("checked", !sound.ignore_output_muted()); - modal.close_listener.push(sound.save); - } - let modal_settings; - (function (modal_settings) { - function initialize_identity_profiles_controller(event_registry) { - const send_error = (event, profile, text) => event_registry.fire_async(event, { status: "error", profile_id: profile, error: text }); - event_registry.on("create-profile", event => { - const profile = profiles.create_new_profile(event.name); - profiles.mark_need_save(); - event_registry.fire_async("create-profile-result", { - status: "success", - name: event.name, - profile_id: profile.id - }); - }); - event_registry.on("delete-profile", event => { - const profile = profiles.find_profile(event.profile_id); - if (!profile) { - log.warn(LogCategory.CLIENT, _translations.ijGZQoJy || (_translations.ijGZQoJy = tr("Received profile event with unknown profile id (event: %s, id: %s)")), event.type, event.profile_id); - send_error("delete-profile-result", event.profile_id, _translations.oPL5wq0y || (_translations.oPL5wq0y = tr("Unknown profile"))); - return; - } - profiles.delete_profile(profile); - event_registry.fire_async("delete-profile-result", { status: "success", profile_id: event.profile_id }); - }); - const build_profile_info = (profile) => { - const forum_data = profile.selected_identity(profiles.identities.IdentitifyType.TEAFORO); - const teamspeak_data = profile.selected_identity(profiles.identities.IdentitifyType.TEAMSPEAK); - const nickname_data = profile.selected_identity(profiles.identities.IdentitifyType.NICKNAME); - return { - id: profile.id, - name: profile.profile_name, - nickname: profile.default_username, - identity_type: profile.selected_identity_type, - identity_forum: !forum_data ? undefined : { - valid: forum_data.valid(), - fallback_name: forum_data.fallback_name() - }, - identity_nickname: !nickname_data ? undefined : { - name: nickname_data.name(), - fallback_name: nickname_data.fallback_name() - }, - identity_teamspeak: !teamspeak_data ? undefined : { - unique_id: teamspeak_data.uid(), - fallback_name: teamspeak_data.fallback_name() - } - }; - }; - event_registry.on("query-profile-list", event => { - event_registry.fire_async("query-profile-list-result", { status: "success", profiles: profiles.profiles().map(e => build_profile_info(e)) }); - }); - event_registry.on("query-profile", event => { - const profile = profiles.find_profile(event.profile_id); - if (!profile) { - log.warn(LogCategory.CLIENT, _translations.UBrvt3sv || (_translations.UBrvt3sv = tr("Received profile event with unknown profile id (event: %s, id: %s)")), event.type, event.profile_id); - send_error("query-profile-result", event.profile_id, _translations.phHj2aiZ || (_translations.phHj2aiZ = tr("Unknown profile"))); - return; - } - event_registry.fire_async("query-profile-result", { status: "success", profile_id: event.profile_id, info: build_profile_info(profile) }); - }); - event_registry.on("set-default-profile", event => { - const profile = profiles.find_profile(event.profile_id); - if (!profile) { - log.warn(LogCategory.CLIENT, _translations.XUo6cT78 || (_translations.XUo6cT78 = tr("Received profile event with unknown profile id (event: %s, id: %s)")), event.type, event.profile_id); - send_error("set-default-profile-result", event.profile_id, _translations.dCwo9upm || (_translations.dCwo9upm = tr("Unknown profile"))); - return; - } - const old = profiles.set_default_profile(profile); - event_registry.fire_async("set-default-profile-result", { status: "success", old_profile_id: event.profile_id, new_profile_id: old.id }); - }); - event_registry.on("set-profile-name", event => { - const profile = profiles.find_profile(event.profile_id); - if (!profile) { - log.warn(LogCategory.CLIENT, _translations.AlGUCXNW || (_translations.AlGUCXNW = tr("Received profile event with unknown profile id (event: %s, id: %s)")), event.type, event.profile_id); - send_error("set-profile-name-result", event.profile_id, _translations.o2FZws2H || (_translations.o2FZws2H = tr("Unknown profile"))); - return; - } - profile.profile_name = event.name; - profiles.mark_need_save(); - event_registry.fire_async("set-profile-name-result", { name: event.name, profile_id: event.profile_id, status: "success" }); - }); - event_registry.on("set-default-name", event => { - const profile = profiles.find_profile(event.profile_id); - if (!profile) { - log.warn(LogCategory.CLIENT, _translations.urEnnhUv || (_translations.urEnnhUv = tr("Received profile event with unknown profile id (event: %s, id: %s)")), event.type, event.profile_id); - send_error("set-default-name-result", event.profile_id, _translations.RbO_12FB || (_translations.RbO_12FB = tr("Unknown profile"))); - return; - } - profile.default_username = event.name; - profiles.mark_need_save(); - event_registry.fire_async("set-default-name-result", { name: event.name, profile_id: event.profile_id, status: "success" }); - }); - event_registry.on("set-identity-name-name", event => { - const profile = profiles.find_profile(event.profile_id); - if (!profile) { - log.warn(LogCategory.CLIENT, _translations.He1Lhlei || (_translations.He1Lhlei = tr("Received profile event with unknown profile id (event: %s, id: %s)")), event.type, event.profile_id); - send_error("set-identity-name-name-result", event.profile_id, _translations.BsQvH7KD || (_translations.BsQvH7KD = tr("Unknown profile"))); - return; - } - let identity = profile.selected_identity(profiles.identities.IdentitifyType.NICKNAME); - if (!identity) - profile.set_identity(profiles.identities.IdentitifyType.NICKNAME, identity = new profiles.identities.NameIdentity()); - identity.set_name(event.name); - profiles.mark_need_save(); - event_registry.fire_async("set-identity-name-name-result", { name: event.name, profile_id: event.profile_id, status: "success" }); - }); - event_registry.on("query-profile-validity", event => { - const profile = profiles.find_profile(event.profile_id); - if (!profile) { - log.warn(LogCategory.CLIENT, _translations.dryBR96k || (_translations.dryBR96k = tr("Received profile event with unknown profile id (event: %s, id: %s)")), event.type, event.profile_id); - send_error("query-profile-validity-result", event.profile_id, _translations.NmI6OOx2 || (_translations.NmI6OOx2 = tr("Unknown profile"))); - return; - } - event_registry.fire_async("query-profile-validity-result", { status: "success", profile_id: event.profile_id, valid: profile.valid() }); - }); - event_registry.on("query-identity-teamspeak", event => { - const profile = profiles.find_profile(event.profile_id); - if (!profile) { - log.warn(LogCategory.CLIENT, _translations.ISCwnQTE || (_translations.ISCwnQTE = tr("Received profile event with unknown profile id (event: %s, id: %s)")), event.type, event.profile_id); - send_error("query-identity-teamspeak-result", event.profile_id, _translations.gT4hzBi0 || (_translations.gT4hzBi0 = tr("Unknown profile"))); - return; - } - const ts = profile.selected_identity(profiles.identities.IdentitifyType.TEAMSPEAK); - if (!ts) { - event_registry.fire_async("query-identity-teamspeak-result", { status: "error", profile_id: event.profile_id, error: _translations.DaKCu_FT || (_translations.DaKCu_FT = tr("Missing identity")) }); - return; - } - ts.level().then(level => { - event_registry.fire_async("query-identity-teamspeak-result", { status: "success", level: level, profile_id: event.profile_id }); - }).catch(error => { - send_error("query-identity-teamspeak-result", event.profile_id, _translations.D8X_oTbc || (_translations.D8X_oTbc = tr("failed to calculate level"))); - }); - }); - event_registry.on("select-identity-type", event => { - const profile = profiles.find_profile(event.profile_id); - if (!profile) { - log.warn(LogCategory.CLIENT, _translations.uLiVzH1c || (_translations.uLiVzH1c = tr("Received profile event with unknown profile id (event: %s, id: %s)")), event.type, event.profile_id); - return; - } - profile.selected_identity_type = event.identity_type; - profiles.mark_need_save(); - }); - event_registry.on("generate-identity-teamspeak", event => { - const profile = profiles.find_profile(event.profile_id); - if (!profile) { - log.warn(LogCategory.CLIENT, _translations.Zw07OLxG || (_translations.Zw07OLxG = tr("Received profile event with unknown profile id (event: %s, id: %s)")), event.type, event.profile_id); - send_error("generate-identity-teamspeak-result", event.profile_id, _translations.NtGL5zmt || (_translations.NtGL5zmt = tr("Unknown profile"))); - return; - } - profiles.identities.TeaSpeakIdentity.generate_new().then(identity => { - profile.set_identity(profiles.identities.IdentitifyType.TEAMSPEAK, identity); - profiles.mark_need_save(); - identity.level().then(level => { - event_registry.fire_async("generate-identity-teamspeak-result", { - status: "success", - profile_id: event.profile_id, - unique_id: identity.uid(), - level: level - }); - }).catch(error => { - console.error(_translations.r6jWa2i3 || (_translations.r6jWa2i3 = tr("Failed to calculate level for a new identity. Error object: %o")), error); - send_error("generate-identity-teamspeak-result", event.profile_id, (_translations.sH3hrr8x || (_translations.sH3hrr8x = tr("failed to calculate level: "))) + error); - }); - }).catch(error => { - console.error(_translations.gtbrQF6_ || (_translations.gtbrQF6_ = tr("Failed to generate a new identity. Error object: %o")), error); - send_error("generate-identity-teamspeak-result", event.profile_id, (_translations.DW7n4WE_ || (_translations.DW7n4WE_ = tr("failed to generate identity: "))) + error); - }); - }); - event_registry.on("import-identity-teamspeak", event => { - const profile = profiles.find_profile(event.profile_id); - if (!profile) { - log.warn(LogCategory.CLIENT, _translations.u_dYuuQh || (_translations.u_dYuuQh = tr("Received profile event with unknown profile id (event: %s, id: %s)")), event.type, event.profile_id); - return; - } - Modals.spawnTeamSpeakIdentityImport(identity => { - profile.set_identity(profiles.identities.IdentitifyType.TEAMSPEAK, identity); - profiles.mark_need_save(); - identity.level().catch(error => { - console.error(_translations.C8qosC5x || (_translations.C8qosC5x = tr("Failed to calculate level for a new imported identity. Error object: %o")), error); - return Promise.resolve(undefined); - }).then(level => { - event_registry.fire_async("import-identity-teamspeak-result", { - profile_id: event.profile_id, - unique_id: identity.uid(), - level: level - }); - }); - }); - }); - event_registry.on("improve-identity-teamspeak-level", event => { - const profile = profiles.find_profile(event.profile_id); - if (!profile) { - log.warn(LogCategory.CLIENT, _translations.hGsVw3C1 || (_translations.hGsVw3C1 = tr("Received profile event with unknown profile id (event: %s, id: %s)")), event.type, event.profile_id); - return; - } - const identity = profile.selected_identity(profiles.identities.IdentitifyType.TEAMSPEAK); - if (!identity) - return; - Modals.spawnTeamSpeakIdentityImprove(identity, profile.profile_name).close_listener.push(() => { - profiles.mark_need_save(); - identity.level().then(level => { - event_registry.fire_async("improve-identity-teamspeak-level-update", { profile_id: event.profile_id, new_level: level }); - }).catch(error => { - log.error(LogCategory.CLIENT, _translations.jvF1L94q || (_translations.jvF1L94q = tr("Failed to calculate identity level after improvement (%o)")), error); - }); - }); - }); - event_registry.on("export-identity-teamspeak", event => { - const profile = profiles.find_profile(event.profile_id); - if (!profile) { - log.warn(LogCategory.CLIENT, _translations.ePInsAEF || (_translations.ePInsAEF = tr("Received profile event with unknown profile id (event: %s, id: %s)")), event.type, event.profile_id); - return; - } - const identity = profile.selected_identity(profiles.identities.IdentitifyType.TEAMSPEAK); - if (!identity) - return; - identity.export_ts(true).then(data => { - const element = $.spawn("a") - .text("donwload") - .attr("href", "data:test/plain;charset=utf-8," + encodeURIComponent(data)) - .attr("download", name + ".ini") - .css("display", "none") - .appendTo($("body")); - element[0].click(); - element.remove(); - }).catch(error => { - console.error(error); - createErrorModal(_translations.QE8mYeI3 || (_translations.QE8mYeI3 = tr("Failed to export identity")), (_translations.c93vvmwR || (_translations.c93vvmwR = tr("Failed to export and save identity.
Error: "))) + error).open(); - }); - }); - } - modal_settings.initialize_identity_profiles_controller = initialize_identity_profiles_controller; - function initialize_identity_profiles_view(container, event_registry, settings) { - /* profile list */ - { - const container_profiles = container.find(".container-profiles"); - let selected_profile; - const overlay_error = container_profiles.find(".overlay-error"); - const overlay_timeout = container_profiles.find(".overlay-timeout"); - const overlay_empty = container_profiles.find(".overlay-empty"); - const build_profile = (profile, selected) => { - let tag_avatar, tag_default; - let tag = $.spawn("div").addClass("profile").attr("profile-id", profile.id).append(tag_avatar = $.spawn("div").addClass("container-avatar"), $.spawn("div").addClass("container-info").append($.spawn("div").addClass("container-type").append($.spawn("div").addClass("identity-type").text(profile.identity_type || (_translations.W6aQuY5Q || (_translations.W6aQuY5Q = tr("Type unset")))), tag_default = $.spawn("div").addClass("tag-default").text(_translations._aqNX0xB || (_translations._aqNX0xB = tr("(Default)"))), $.spawn("div").addClass("icon_em icon-status").hide()), $.spawn("div").addClass("profile-name").text(profile.name || (_translations.e3VI8KGN || (_translations.e3VI8KGN = tr("Unnamed")))))); - tag_avatar.hide(); /* no avatars yet */ - tag.on('click', event => event_registry.fire("select-profile", { profile_id: profile.id })); - tag.toggleClass("selected", selected); - tag_default.toggle(profile.id === "default"); - event_registry.fire("query-profile-validity", { profile_id: profile.id }); - return tag; - }; - event_registry.on("select-profile", event => { - container_profiles.find(".profile").removeClass("selected"); - container_profiles.find(".profile[profile-id='" + event.profile_id + "']").addClass("selected"); - selected_profile = event.profile_id; - }); - event_registry.on("query-profile-list", event => { - container_profiles.find(".profile").remove(); - }); - event_registry.on("query-profile-list-result", event => { - container_profiles.find(".overlay").hide(); - if (event.status === "error") { - overlay_error.show().find(".error").text(event.error || (_translations.vjY9fepV || (_translations.vjY9fepV = tr("unknown error")))); - return; - } - else if (event.status === "timeout") { - overlay_timeout.show(); - return; - } - if (!event.profiles.length) { - overlay_empty.show(); - return; - } - container_profiles.find(".overlay").hide(); - container_profiles.find(".profile").remove(); - event.profiles.forEach(e => build_profile(e, e.id == selected_profile).appendTo(container_profiles)); - }); - event_registry.on("delete-profile-result", event => { - if (event.status !== "success") - return; - //TODO: Animate removal? - container_profiles.find(".profile[profile-id='" + event.profile_id + "']").remove(); - }); - event_registry.on('create-profile-result', event => { - if (event.status !== "success") - return; - event_registry.fire("query-profile-list"); - event_registry.one("query-profile-list-result", e => event_registry.fire("select-profile", { profile_id: event.profile_id })); - }); - event_registry.on("set-profile-name-result", event => { - if (event.status !== "success") - return; - const profile = container_profiles.find(".profile[profile-id='" + event.profile_id + "']"); - profile.find(".profile-name").text(event.name || (_translations.jedfrTq7 || (_translations.jedfrTq7 = tr("Unnamed")))); - }); - event_registry.on("set-default-profile-result", event => { - if (event.status !== "success") - return; - const old_profile = container_profiles.find(".profile[profile-id='default']"); - const new_profile = container_profiles.find(".profile[profile-id='" + event.old_profile_id + "']"); - old_profile.attr("profile-id", event.new_profile_id).find(".tag-default").hide(); - new_profile.attr("profile-id", "default").find(".tag-default").show(); - }); - event_registry.on("select-identity-type", event => { - if (!event.identity_type) - return; - const profile = container_profiles.find(".profile[profile-id='" + event.profile_id + "']"); - profile.find(".identity-type").text(event.identity_type.toUpperCase() || (_translations.dJqFoWNu || (_translations.dJqFoWNu = tr("Type unset")))); - }); - event_registry.on("query-profile-validity-result", event => { - const profile = container_profiles.find(".profile[profile-id='" + event.profile_id + "']"); - profile.find(".icon-status") - .show() - .toggleClass("client-apply", event.status === "success" && event.valid) - .toggleClass("client-delete", event.status !== "success" || !event.valid) - .attr("title", event.status === "success" ? event.valid ? _translations.QMbj98Jl || (_translations.QMbj98Jl = tr("Profile is valid")) : _translations.oXE3AOOj || (_translations.oXE3AOOj = tr("Provile is invalid")) : event.error || (_translations.u3YjNURr || (_translations.u3YjNURr = tr("failed to query status")))); - }); - /* status indicator updaters */ - event_registry.on("select-identity-type", event => { - if (!event.profile_id) - return; - /* we need a short delay so everything could apply*/ - setTimeout(() => { - event_registry.fire("query-profile-validity", { profile_id: event.profile_id }); - }, 100); - }); - event_registry.on(["set-default-name-result", "set-profile-name-result", "set-identity-name-name-result", "generate-identity-teamspeak-result"], event => { - if (!('status' in event) || !('profile_id' in event)) { - log.warn(LogCategory.CLIENT, _translations.bdvaz2Fu || (_translations.bdvaz2Fu = tr("Profile status watcher encountered an unuseal event!"))); - return; - } - if (event.status !== "success") - return; - event_registry.fire("query-profile-validity", { profile_id: event.profile_id }); - }); - } - /* list buttons */ - { - /* reload */ - { - const button = container.find(".button-reload-list"); - button.on('click', event => event_registry.fire("query-profile-list")); - event_registry.on("query-profile-list", event => button.prop("disabled", true)); - event_registry.on("query-profile-list-result", event => button.prop("disabled", false)); - } - /* set default */ - { - const button = container.find(".button-set-default"); - let current_profile; - button.on('click', event => event_registry.fire("set-default-profile", { profile_id: current_profile })); - event_registry.on("select-profile", event => { - current_profile = event.profile_id; - button.prop("disabled", !event.profile_id || event.profile_id === "default"); - }); - event_registry.on("set-default-profile-result", event => { - if (event.status === "success") - return; - createErrorModal(_translations.yZrWIhG1 || (_translations.yZrWIhG1 = tr("Failed to set default profile")), (_translations.OergtM4i || (_translations.OergtM4i = tr("Failed to set default profile:"))) + "
" + (event.status === "timeout" ? _translations.AcQQmDNG || (_translations.AcQQmDNG = tr("request timeout")) : (event.error || (_translations.BIHNDdrV || (_translations.BIHNDdrV = tr("unknown error")))))).open(); - }); - button.prop("disabled", true); - } - /* delete button */ - { - const button = container.find(".button-delete"); - let current_profile; - button.on('click', event => { - if (!current_profile || current_profile === "default") - return; - Modals.spawnYesNo(_translations.LpQGcaVD || (_translations.LpQGcaVD = tr("Are you sure?")), _translations.Odgcch92 || (_translations.Odgcch92 = tr("Do you really want to delete this profile?")), result => { - if (result) - event_registry.fire("delete-profile", { profile_id: current_profile }); - }); - }); - event_registry.on("delete-profile-result", event => { - if (event.status === "success") - return; - createErrorModal(_translations.PKQe99Hv || (_translations.PKQe99Hv = tr("Failed to delete profile")), (_translations.uZOymAv8 || (_translations.uZOymAv8 = tr("Failed to delete profile:"))) + "
" + (event.status === "timeout" ? _translations.iRIw6oQA || (_translations.iRIw6oQA = tr("request timeout")) : (event.error || (_translations.uskvfZ0w || (_translations.uskvfZ0w = tr("unknown error")))))).open(); - }); - event_registry.on("select-profile", event => { - current_profile = event.profile_id; - button.prop("disabled", !event.profile_id || event.profile_id === "default"); - }); - } - /* create button */ - { - const button = container.find(".button-create"); - button.on('click', event => { - createInputModal(_translations.w92k7IcM || (_translations.w92k7IcM = tr("Please enter a name")), _translations.aeeSZ1W6 || (_translations.aeeSZ1W6 = tr("Please enter a name for the new profile:")), text => text.length >= 3 && !profiles.find_profile_by_name(text), value => { - if (value) - event_registry.fire("create-profile", { name: value }); - }).open(); - }); - event_registry.on('create-profile', event => button.prop("disabled", true)); - event_registry.on("create-profile-result", event => { - button.prop("disabled", false); - if (event.status === "success") { - event_registry.fire("select-profile", { profile_id: event.profile_id }); - return; - } - createErrorModal(_translations.x64gbqPE || (_translations.x64gbqPE = tr("Failed to create profile")), (_translations.f7eMoiYk || (_translations.f7eMoiYk = tr("Failed to create new profile:"))) + "
" + (event.status === "timeout" ? _translations.KRG7a6pk || (_translations.KRG7a6pk = tr("request timeout")) : (event.error || (_translations.WnIitvJ5 || (_translations.WnIitvJ5 = tr("unknown error")))))).open(); - }); - } - } - /* profile info */ - { - let current_profile; - const error_text = event => event.status === "timeout" ? _translations.cgIp7Mq0 || (_translations.cgIp7Mq0 = tr("request timeout")) : (event.error || (_translations.vmnyPmOT || (_translations.vmnyPmOT = tr("unknown error")))); - /* general info */ - { - /* profile name */ - { - const input = container.find(".profile-name"); - let last_name; - const update_name = () => input.prop("disabled", false) - .val(last_name) - .attr("placeholder", _translations.il2IXXi7 || (_translations.il2IXXi7 = tr("Profile name"))) - .parent().removeClass("is-invalid"); - const info_name = text => input.prop("disabled", true) - .val(null) - .attr("placeholder", text) - .parent().removeClass("is-invalid"); - event_registry.on("query-profile", event => { - if (event.profile_id !== current_profile) - return; - info_name(_translations.eLGB6hfn || (_translations.eLGB6hfn = tr("loading"))); - }); - event_registry.on("query-profile-result", event => { - if (event.profile_id !== current_profile) - return; - if (event.status === "success") { - last_name = event.info.name; - update_name(); - } - else { - info_name(error_text(event)); - } - }); - event_registry.on("set-profile-name", event => { - if (event.profile_id !== current_profile) - return; - info_name(_translations.rQQstdmx || (_translations.rQQstdmx = tr("saving"))); - }); - event_registry.on("set-profile-name-result", event => { - if (event.status !== "success") { - createErrorModal(_translations.JsYl7deR || (_translations.JsYl7deR = tr("Failed to change profile name")), (_translations.V2dCo75J || (_translations.V2dCo75J = tr("Failed to create apply new name:"))) + "
" + error_text(event)).open(); - } - else { - last_name = event.name; - } - update_name(); - }); - input.on('keyup', event => { - const text = input.val(); - const profile = profiles.find_profile_by_name(text); - input.parent().toggleClass("is-invalid", text.length < 3 || (profile && profile.id != current_profile)); - }).on('change', event => { - const text = input.val(); - const profile = profiles.find_profile_by_name(text); - if (text.length < 3 || (profile && profile.id != current_profile)) - return; - event_registry.fire("set-profile-name", { profile_id: current_profile, name: text }); - }); - } - /* nickname name */ - { - const input = container.find(".profile-default-name"); - let last_name = null, fallback_names = {}, current_identity_type = ""; - const update_name = () => input.prop("disabled", false) - .val(last_name) - .attr("placeholder", fallback_names[current_identity_type] || (_translations.M_33FHbX || (_translations.M_33FHbX = tr("Another TeaSpeak user")))) - .parent().removeClass("is-invalid"); - const info_name = text => input.prop("disabled", true) - .val(null) - .attr("placeholder", text) - .parent().removeClass("is-invalid"); - event_registry.on("query-profile", event => { - if (event.profile_id !== current_profile) - return; - input.prop("disabled", true).val(null).attr("placeholder", _translations.K95eJH8w || (_translations.K95eJH8w = tr("loading"))); - }); - event_registry.on("query-profile-result", event => { - if (event.profile_id !== current_profile) - return; - if (event.status === "success") { - current_identity_type = event.info.identity_type; - fallback_names["nickname"] = event.info.identity_nickname ? event.info.identity_nickname.fallback_name : undefined; - fallback_names["teaforo"] = event.info.identity_forum ? event.info.identity_forum.fallback_name : undefined; - fallback_names["teamspeak"] = event.info.identity_teamspeak ? event.info.identity_teamspeak.fallback_name : undefined; - last_name = event.info.nickname; - update_name(); - } - else { - info_name(error_text(event)); - } - }); - event_registry.on("select-identity-type", event => { - if (current_identity_type === event.identity_type) - return; - current_identity_type = event.identity_type; - update_name(); - }); - event_registry.on("set-default-name", event => { - if (event.profile_id !== current_profile) - return; - info_name(_translations.uUD_P0G8 || (_translations.uUD_P0G8 = tr("saving"))); - }); - event_registry.on("set-default-name-result", event => { - if (event.status !== "success") { - createErrorModal(_translations.B2niZHis || (_translations.B2niZHis = tr("Failed to change nickname")), (_translations.lglQPHRb || (_translations.lglQPHRb = tr("Failed to create apply new nickname:"))) + "
" + error_text(event)).open(); - } - else { - last_name = event.name; - } - update_name(); - }); - input.on('keyup', event => { - const text = input.val(); - input.parent().toggleClass("is-invalid", text.length != 0 && text.length < 3); - }).on('change', event => { - const text = input.val(); - if (text.length != 0 && text.length < 3) - return; - event_registry.fire("set-default-name", { profile_id: current_profile, name: text }); - }); - } - /* identity type */ - { - const select_identity_type = container.find(".profile-identity-type"); - const show_message = (text, is_invalid) => select_identity_type - .toggleClass("is-invalid", is_invalid) - .prop("disabled", true) - .find("option[value=error]") - .text(text) - .prop("selected", true); - const set_type = type => select_identity_type - .toggleClass("is-invalid", type === "unset") - .prop("disabled", false) - .find("option[value=" + type + "]") - .prop("selected", true); - event_registry.on("query-profile", event => show_message(_translations.gjr1Hjwb || (_translations.gjr1Hjwb = tr("loading")), false)); - event_registry.on("select-identity-type", event => { - if (event.profile_id !== current_profile) - return; - set_type(event.identity_type || "unset"); - }); - event_registry.on("query-profile-result", event => { - if (event.profile_id !== current_profile) - return; - if (event.status === "success") - event_registry.fire("select-identity-type", { profile_id: event.profile_id, identity_type: event.info.identity_type }); - else - show_message(error_text(event), false); - }); - select_identity_type.on('change', event => { - const type = select_identity_type.val().toLowerCase(); - if (type === "error" || type == "unset") - return; - event_registry.fire("select-identity-type", { profile_id: current_profile, identity_type: type }); - }); - } - /* avatar */ - { - container.find(".button-change-avatar").hide(); - } - } - /* special info TeamSpeak */ - { - const container_settings = container.find(".container-teamspeak"); - const container_valid = container_settings.find(".container-valid"); - const container_invalid = container_settings.find(".container-invalid"); - const input_current_level = container_settings.find(".current-level"); - const input_unique_id = container_settings.find(".unique-id"); - const button_new = container_settings.find(".button-new"); - const button_improve = container_settings.find(".button-improve"); - const button_import = container_settings.find(".button-import"); - const button_export = container_settings.find(".button-export"); - let is_profile_generated = false; - event_registry.on("select-identity-type", event => { - if (event.profile_id !== current_profile) - return; - container_settings.toggle(event.identity_type === "teamspeak"); - }); - event_registry.on("query-profile", event => { - input_unique_id.val(null).attr("placeholder", _translations.TQnO8NzW || (_translations.TQnO8NzW = tr("loading"))); - input_current_level.val(null).attr("placeholder", _translations.UOYpbAz7 || (_translations.UOYpbAz7 = tr("loading"))); - button_new.prop("disabled", true); - button_improve.prop("disabled", true); - button_import.prop("disabled", true); - button_export.prop("disabled", true); - }); - const update_identity = (state, unique_id, level) => { - if (state === "not-created") { - container_invalid.show(); - container_valid.hide(); - button_improve.prop("disabled", true); - button_export.prop("disabled", true); - } - else { - container_invalid.hide(); - container_valid.show(); - input_unique_id.val(unique_id).attr("placeholder", null); - if (typeof level !== "number") - event_registry.fire("query-identity-teamspeak", { profile_id: current_profile }); - else - input_current_level.val(level).attr("placeholder", null); - button_improve.prop("disabled", false); - button_export.prop("disabled", false); - } - is_profile_generated = state === "created"; - button_new.toggleClass("btn-blue", !is_profile_generated).toggleClass("btn-red", is_profile_generated); - button_import.toggleClass("btn-blue", !is_profile_generated).toggleClass("btn-red", is_profile_generated); - button_new.prop("disabled", false); - button_import.prop("disabled", false); - }; - event_registry.on("query-profile-result", event => { - if (event.profile_id !== current_profile) - return; - if (event.status !== "success") { - input_unique_id.val(null).attr("placeholder", error_text(event)); - return; - } - if (!event.info.identity_teamspeak) - update_identity("not-created"); - else - update_identity("created", event.info.identity_teamspeak.unique_id); - }); - event_registry.on("query-identity-teamspeak-result", event => { - if (event.profile_id !== current_profile) - return; - if (event.status === "success") { - input_current_level.val(event.level).attr("placeholder", null); - } - else { - input_current_level.val(null).attr("placeholder", error_text(event)); - } - }); - /* the new button */ - { - button_new.on('click', event => { - if (is_profile_generated) { - Modals.spawnYesNo(_translations.j_B1XMlg || (_translations.j_B1XMlg = tr("Are you sure")), _translations.LhMjT0D6 || (_translations.LhMjT0D6 = tr("Do you really want to generate a new identity and override the old identity?")), result => { - if (result) - event_registry.fire("generate-identity-teamspeak", { profile_id: current_profile }); - }); - } - else { - event_registry.fire("generate-identity-teamspeak", { profile_id: current_profile }); - } - }); - event_registry.on("generate-identity-teamspeak-result", event => { - if (event.profile_id !== current_profile) - return; - if (event.status !== "success") { - createErrorModal(_translations.QXs1fW_l || (_translations.QXs1fW_l = tr("Failed to generate a new identity")), (_translations.LvN8hZ1p || (_translations.LvN8hZ1p = tr("Failed to create a new identity:"))) + "
" + error_text(event)).open(); - return; - } - update_identity("created", event.unique_id, event.level); - createInfoModal(_translations.mfkiBtNv || (_translations.mfkiBtNv = tr("Identity generated")), _translations.TgHz611r || (_translations.TgHz611r = tr("A new identity had been successfully generated"))).open(); - }); - } - /* the import identity */ - { - button_import.on('click', event => { - if (is_profile_generated) { - Modals.spawnYesNo(_translations.e35FyXnh || (_translations.e35FyXnh = tr("Are you sure")), _translations.w9qoM29d || (_translations.w9qoM29d = tr("Do you really want to import a new identity and override the old identity?")), result => { - if (result) - event_registry.fire("import-identity-teamspeak", { profile_id: current_profile }); - }); - } - else { - event_registry.fire("import-identity-teamspeak", { profile_id: current_profile }); - } - }); - event_registry.on("improve-identity-teamspeak-level-update", event => { - if (event.profile_id !== current_profile) - return; - input_current_level.val(event.new_level).attr("placeholder", null); - }); - event_registry.on("import-identity-teamspeak-result", event => { - if (event.profile_id !== current_profile) - return; - event_registry.fire_async("query-profile", { profile_id: event.profile_id }); /* we do it like this so the default nickname changes as well */ - createInfoModal(_translations.hZrU5_SP || (_translations.hZrU5_SP = tr("Identity imported")), _translations.K5k4dA5r || (_translations.K5k4dA5r = tr("Your identity had been successfully imported generated"))).open(); - }); - } - /* identity export */ - { - button_export.on('click', event => { - createInputModal(_translations.pi0qV71w || (_translations.pi0qV71w = tr("File name")), _translations.f_7UqLhu || (_translations.f_7UqLhu = tr("Please enter the file name")), text => !!text, name => { - if (name) - event_registry.fire("export-identity-teamspeak", { profile_id: current_profile, filename: name }); - }).open(); - }); - } - /* the improve button */ - button_improve.on('click', event => event_registry.fire("improve-identity-teamspeak-level", { profile_id: current_profile })); - } - /* special info TeaSpeak - Forum */ - { - const container_settings = container.find(".container-teaforo"); - const container_valid = container_settings.find(".container-valid"); - const container_invalid = container_settings.find(".container-invalid"); - const button_setup = container_settings.find(".button-setup"); - event_registry.on("select-identity-type", event => { - if (event.profile_id !== current_profile) - return; - container_settings.toggle(event.identity_type === "teaforo"); - }); - event_registry.on("query-profile", event => { - container_valid.toggle(false); - container_invalid.toggle(false); - }); - event_registry.on("query-profile-result", event => { - if (event.profile_id !== current_profile) - return; - const valid = event.status === "success" && event.info.identity_forum && event.info.identity_forum.valid; - container_valid.toggle(!!valid); - container_invalid.toggle(!valid); - }); - button_setup.on('click', event => event_registry.fire_async("setup-forum-connection")); - button_setup.toggle(settings.forum_setuppable); - } - /* special info nickname */ - { - const container_settings = container.find(".container-nickname"); - const input_nickname = container_settings.find(".nickname"); - let last_name; - const update_name = () => input_nickname.prop("disabled", false) - .val(last_name) - .attr("placeholder", _translations.vlf6z52a || (_translations.vlf6z52a = tr("Identity base name"))) - .parent().removeClass("is-invalid"); - const show_info = text => input_nickname.prop("disabled", true) - .val(null) - .attr("placeholder", text) - .parent().removeClass("is-invalid"); - event_registry.on("select-identity-type", event => event.profile_id === current_profile && container_settings.toggle(event.identity_type === "nickname")); - event_registry.on("query-profile", event => { - if (event.profile_id !== current_profile) - return; - show_info(_translations.LbOr04qi || (_translations.LbOr04qi = tr("loading"))); - }); - event_registry.on("query-profile-result", event => { - if (event.profile_id !== current_profile) - return; - if (event.status === "success") { - last_name = event.info.identity_nickname ? event.info.identity_nickname.name : null; - update_name(); - } - else { - show_info(error_text(event)); - } - }); - event_registry.on("set-identity-name-name", event => { - if (event.profile_id !== current_profile) - return; - show_info(_translations.NFAJFMiD || (_translations.NFAJFMiD = tr("saving"))); - }); - event_registry.on("set-identity-name-name-result", event => { - if (event.status !== "success") { - createErrorModal(_translations.TjAtodXU || (_translations.TjAtodXU = tr("Failed to change name")), (_translations.hLnfEYZl || (_translations.hLnfEYZl = tr("Failed to create new name:"))) + "
" + error_text(event)).open(); - } - else { - last_name = event.name; - } - update_name(); - }); - input_nickname.on('keyup', event => { - const text = input_nickname.val(); - const profile = profiles.find_profile_by_name(text); - input_nickname.parent().toggleClass("is-invalid", text.length < 3 || (profile && profile.id != current_profile)); - }).on('change', event => { - const text = input_nickname.val(); - const profile = profiles.find_profile_by_name(text); - if (text.length < 3 || (profile && profile.id != current_profile)) - return; - event_registry.fire("set-identity-name-name", { profile_id: current_profile, name: text }); - }); - } - event_registry.on("select-profile", e => current_profile = e.profile_id); - } - /* timeouts */ - { - /* profile list */ - { - let timeout; - event_registry.on("query-profile-list", event => timeout = setTimeout(() => event_registry.fire("query-profile-list-result", { status: "timeout" }), 5000)); - event_registry.on("query-profile-list-result", event => { - clearTimeout(timeout); - timeout = undefined; - }); - } - /* profile create */ - { - const timeouts = {}; - event_registry.on("create-profile", event => { - clearTimeout(timeouts[event.name]); - timeouts[event.name] = setTimeout(() => { - event_registry.fire("create-profile-result", { name: event.name, status: "timeout" }); - }, 5000); - }); - event_registry.on("create-profile-result", event => { - clearTimeout(timeouts[event.name]); - delete timeouts[event.name]; - }); - } - /* profile set default create */ - { - const timeouts = {}; - event_registry.on("set-default-profile", event => { - clearTimeout(timeouts[event.profile_id]); - timeouts[event.profile_id] = setTimeout(() => { - event_registry.fire("set-default-profile-result", { old_profile_id: event.profile_id, status: "timeout" }); - }, 5000); - }); - event_registry.on("set-default-profile-result", event => { - clearTimeout(timeouts[event.old_profile_id]); - delete timeouts[event.old_profile_id]; - }); - } - const create_standard_timeout = (event, response_event, key) => { - const timeouts = {}; - event_registry.on(event, event => { - clearTimeout(timeouts[event[key]]); - timeouts[event[key]] = setTimeout(() => { - const timeout_event = { status: "timeout" }; - timeout_event[key] = event[key]; - event_registry.fire(response_event, timeout_event); - }, 5000); - }); - event_registry.on(response_event, event => { - clearTimeout(timeouts[event[key]]); - delete timeouts[event[key]]; - }); - }; - create_standard_timeout("query-profile", "query-profile-result", "profile_id"); - create_standard_timeout("query-identity-teamspeak", "query-identity-teamspeak-result", "profile_id"); - create_standard_timeout("delete-profile", "delete-profile-result", "profile_id"); - create_standard_timeout("set-profile-name", "set-profile-name-result", "profile_id"); - create_standard_timeout("set-default-name", "set-default-name-result", "profile_id"); - create_standard_timeout("query-profile-validity", "query-profile-validity-result", "profile_id"); - create_standard_timeout("set-identity-name-name", "set-identity-name-name-result", "profile_id"); - create_standard_timeout("generate-identity-teamspeak", "generate-identity-teamspeak-result", "profile_id"); - } - /* some view semantics */ - { - let selected_profile; - event_registry.on("delete-profile-result", event => { - if (event.status !== "success") - return; - if (event.profile_id !== selected_profile) - return; - /* the selected profile has been deleted, so we need to select another one */ - event_registry.fire("select-profile", { profile_id: "default" }); - }); - /* reselect the default profile or the new default profile */ - event_registry.on("set-default-profile-result", event => { - if (event.status !== "success") - return; - if (selected_profile === "default") - event_registry.fire("select-profile", { profile_id: event.new_profile_id }); - else if (selected_profile === event.old_profile_id) - event_registry.fire("select-profile", { profile_id: "default" }); - }); - event_registry.on("select-profile", event => { - selected_profile = event.profile_id; - event_registry.fire("query-profile", { profile_id: event.profile_id }); - }); - event_registry.on("reload-profile", event => { - event_registry.fire("query-profile-list"); - event_registry.fire("select-profile", event.profile_id || selected_profile); - }); - } - event_registry.fire("query-profile-list"); - event_registry.fire("select-profile", { profile_id: "default" }); - event_registry.fire("select-identity-type", { profile_id: "default", identity_type: undefined }); - } - modal_settings.initialize_identity_profiles_view = initialize_identity_profiles_view; - function initialize_audio_microphone_controller(event_registry) { - /* level meters */ - { - const level_meters = {}; - const level_info = {}; - let level_update_task; - const destroy_meters = () => { - Object.keys(level_meters).forEach(e => { - const meter = level_meters[e]; - delete level_meters[e]; - meter.then(e => e.destory()); - }); - Object.keys(level_info).forEach(e => delete level_info[e]); - }; - const update_level_meter = () => { - destroy_meters(); - for (const device of audio.recorder.devices()) { - let promise = audio.recorder.create_levelmeter(device).then(meter => { - meter.set_observer(level => { - if (level_meters[device.unique_id] !== promise) - return; /* old level meter */ - level_info[device.unique_id] = { - device_id: device.unique_id, - status: "success", - level: level - }; - }); - return Promise.resolve(meter); - }).catch(error => { - if (level_meters[device.unique_id] !== promise) - return; /* old level meter */ - level_info[device.unique_id] = { - device_id: device.unique_id, - status: "error", - error: error - }; - log.warn(LogCategory.AUDIO, _translations.lghaKO0H || (_translations.lghaKO0H = tr("Failed to initialize a level meter for device %s (%s): %o")), device.unique_id, device.driver + ":" + device.name, error); - return Promise.reject(error); - }); - level_meters[device.unique_id] = promise; - } - }; - level_update_task = setInterval(() => { - event_registry.fire("update-device-level", { - devices: Object.keys(level_info).map(e => level_info[e]) - }); - }, 50); - event_registry.on("query-device-result", event => { - if (event.status !== "success") - return; - update_level_meter(); - }); - event_registry.on("deinitialize", event => { - destroy_meters(); - clearInterval(level_update_task); - }); - } - /* device list */ - { - event_registry.on("query-devices", event => { - Promise.resolve().then(() => { - return audio.recorder.device_refresh_available() && event.refresh_list ? audio.recorder.refresh_devices() : Promise.resolve(); - }).catch(error => { - log.warn(LogCategory.AUDIO, _translations.JjcOzbzw || (_translations.JjcOzbzw = tr("Failed to refresh device list: %o")), error); - return Promise.resolve(); - }).then(() => { - const devices = audio.recorder.devices(); - event_registry.fire_async("query-device-result", { - status: "success", - active_device: default_recorder.current_device() ? default_recorder.current_device().unique_id : "none", - devices: devices.map(e => { return { id: e.unique_id, name: e.name, driver: e.driver }; }) - }); - }); - }); - event_registry.on("set-device", event => { - const device = audio.recorder.devices().find(e => e.unique_id === event.device_id); - if (!device && event.device_id !== "none") { - event_registry.fire_async("set-device-result", { status: "error", error: _translations.z4UK75Eu || (_translations.z4UK75Eu = tr("Invalid device id")), device_id: event.device_id }); - return; - } - default_recorder.set_device(device).then(() => { - console.debug(_translations.am_OVcEM || (_translations.am_OVcEM = tr("Changed default microphone device"))); - event_registry.fire_async("set-device-result", { status: "success", device_id: event.device_id }); - }).catch((error) => { - log.warn(LogCategory.AUDIO, _translations.pj9HuZR1 || (_translations.pj9HuZR1 = tr("Failed to change microphone to device %s: %o")), device ? device.unique_id : "none", error); - event_registry.fire_async("set-device-result", { status: "success", device_id: event.device_id }); - }); - }); - } - /* settings */ - { - event_registry.on("query-settings", event => { - event_registry.fire_async("query-settings-result", { - status: "success", - info: { - volume: default_recorder.get_volume(), - vad_type: default_recorder.get_vad_type(), - vad_ppt: { - key: default_recorder.get_vad_ppt_key(), - release_delay: Math.abs(default_recorder.get_vad_ppt_delay()), - release_delay_active: default_recorder.get_vad_ppt_delay() >= 0 - }, - vad_threshold: { - threshold: default_recorder.get_vad_threshold() - } - } - }); - }); - event_registry.on("set-setting", event => { - const ensure_type = (type) => { - if (typeof event.value !== type) { - event_registry.fire_async("set-setting-result", { status: "error", error: (_translations.YwWBf7Xh || (_translations.YwWBf7Xh = tr("Invalid value type for key"))) + " (expected: " + type + ", received: " + typeof event.value + ")", setting: event.setting }); - return false; - } - return true; - }; - switch (event.setting) { - case "volume": - if (!ensure_type("number")) - return; - default_recorder.set_volume(event.value); - break; - case "threshold-threshold": - if (!ensure_type("number")) - return; - default_recorder.set_vad_threshold(event.value); - break; - case "vad-type": - if (!ensure_type("string")) - return; - if (!default_recorder.set_vad_type(event.value)) { - event_registry.fire_async("set-setting-result", { status: "error", error: _translations.rqWJD5R2 || (_translations.rqWJD5R2 = tr("Unknown VAD type")), setting: event.setting }); - return; - } - break; - case "ppt-key": - if (!ensure_type("object")) - return; - default_recorder.set_vad_ppt_key(event.value); - break; - case "ppt-release-delay": - if (!ensure_type("number")) - return; - const sign = default_recorder.get_vad_ppt_delay() >= 0 ? 1 : -1; - default_recorder.set_vad_ppt_delay(sign * event.value); - break; - case "ppt-release-delay-active": - if (!ensure_type("boolean")) - return; - default_recorder.set_vad_ppt_delay(Math.abs(default_recorder.get_vad_ppt_delay()) * (event.value ? 1 : -1)); - break; - default: - event_registry.fire_async("set-setting-result", { status: "error", error: _translations.w8SWxS4C || (_translations.w8SWxS4C = tr("Invalid setting key")), setting: event.setting }); - return; - } - event_registry.fire_async("set-setting-result", { status: "success", setting: event.setting, value: event.value }); - }); - } - audio.player.on_ready(() => event_registry.fire_async("audio-initialized", {})); - } - modal_settings.initialize_audio_microphone_controller = initialize_audio_microphone_controller; - function initialize_audio_microphone_view(container, event_registry) { - /* device list */ - { - /* actual list */ - { - const container_devices = container.find(".container-devices"); - const volume_bar_tags = {}; - let pending_changes = 0; - let default_device_id; - const build_device = (device, selected) => { - let tag_volume, tag_volume_error; - const tag = $.spawn("div").attr("device-id", device ? device.id : "none").addClass("device").toggleClass("selected", selected).append($.spawn("div").addClass("container-selected").append($.spawn("div").addClass("icon_em client-apply"), $.spawn("div").addClass("icon-loading").append($.spawn("img").attr("src", "img/icon_settings_loading.svg"))), $.spawn("div").addClass("container-name").append($.spawn("div").addClass("device-driver").text(device ? (device.driver || "Unknown driver") : "No device"), $.spawn("div").addClass("device-name").text(device ? (device.name || "Unknown name") : "No device")), $.spawn("div").addClass("container-activity").append($.spawn("div").addClass("container-activity-bar").append(tag_volume = $.spawn("div").addClass("bar-hider"), tag_volume_error = $.spawn("div").addClass("bar-error")))); - tag_volume.css('width', '100%'); /* initially hide the bar */ - if (device) - volume_bar_tags[device.id] = { volume: tag_volume, error: tag_volume_error }; - tag.on('click', event => { - if (tag.hasClass("selected") || pending_changes > 0) - return; - event_registry.fire("set-device", { device_id: device ? device.id : "none" }); - }); - return tag; - }; - event_registry.on("set-device", event => { - pending_changes++; - const default_device = container_devices.find(".selected"); - default_device_id = default_device.attr("device-id"); - default_device.removeClass("selected"); - const new_device = container_devices.find(".device[device-id='" + event.device_id + "']"); - new_device.addClass("loading"); - }); - event_registry.on("set-device-result", event => { - pending_changes--; - container_devices.find(".loading").removeClass("loading"); - if (event.status !== "success") { - createErrorModal(_translations.S9WvyD7Z || (_translations.S9WvyD7Z = tr("Failed to change microphone")), MessageHelper.formatMessage(_translations.hceWH1fk || (_translations.hceWH1fk = tr("Failed to change the microphone to the target microphone{:br:}{}")), event.status === "timeout" ? _translations.pqrGxJyU || (_translations.pqrGxJyU = tr("Timeout")) : event.error || (_translations.cin0D3wS || (_translations.cin0D3wS = tr("Unknown error"))))).open(); - } - else { - default_device_id = event.device_id; - } - container_devices.find(".device[device-id='" + default_device_id + "']").addClass("selected"); - }); - event_registry.on('query-devices', event => { - Object.keys(volume_bar_tags).forEach(e => delete volume_bar_tags[e]); - container_devices.find(".device").remove(); - container_devices.find(".overlay").hide(); - container_devices.find(".overlay.overlay-loading").show(); - }); - event_registry.on("query-device-result", event => { - container_devices.find(".device").remove(); - container_devices.find(".overlay").hide(); - if (event.status !== "success") { - const container_text = container_devices.find(".overlay.overlay-error").show().find(".error-text"); - container_text.text(event.status === "timeout" ? _translations.ii2WV_Om || (_translations.ii2WV_Om = tr("Timeout while loading")) : event.error || (_translations.zUPIX6BD || (_translations.zUPIX6BD = tr("An unknown error happened")))); - return; - } - build_device(undefined, event.active_device === "none").appendTo(container_devices); - for (const device of event.devices) - build_device(device, event.active_device === device.id).appendTo(container_devices); - }); - event_registry.on("update-device-level", event => { - for (const device of event.devices) { - const tags = volume_bar_tags[device.device_id]; - if (!tags) - continue; - let level = typeof device.level === "number" ? device.level : 100; - if (level > 100) - level = 100; - else if (level < 0) - level = 0; - tags.error.attr('title', device.error || null).text(device.error || null); - tags.volume.css('width', (100 - level) + '%'); - } - }); - } - /* device list update button */ - { - const button_update = container.find(".button-update"); - event_registry.on(["query-devices", "set-device"], event => button_update.prop("disabled", true)); - event_registry.on(["query-device-result", "set-device-result"], event => button_update.prop("disabled", false)); - button_update.on("click", event => event_registry.fire("query-devices", { refresh_list: true })); - } - } - /* settings */ - { - /* TODO: Query settings error handling */ - /* volume */ - { - const container_volume = container.find(".container-volume"); - const slider_tag = container_volume.find(".container-slider"); - let triggered_events = 0; - let last_value = -1; - const slider = sliderfy(slider_tag, { - min_value: 0, - max_value: 100, - step: 1, - initial_value: 0 - }); - slider_tag.on('change', event => { - const value = parseInt(slider_tag.attr("value")); - if (last_value === value) - return; - triggered_events++; - event_registry.fire("set-setting", { setting: "volume", value: value }); - }); - event_registry.on("query-settings-result", event => { - if (event.status !== "success") - return; - last_value = event.info.volume; - slider.value(event.info.volume); - }); - event_registry.on("set-setting-result", event => { - if (event.setting !== "volume") - return; - if (triggered_events > 0) { - triggered_events--; - return; - } - if (event.status !== "success") - return; - last_value = event.value; - slider.value(event.value); - }); - } - /* vad type */ - { - const container_select = container.find(".container-select-vad"); - let last_value; - container_select.find("input").on('change', event => { - if (!event.target.checked) - return; - const mode = event.target.value; - if (mode === last_value) - return; - event_registry.fire("set-setting", { setting: "vad-type", value: mode }); - }); - const select_vad_type = type => { - let elements = container_select.find('input[value="' + type + '"]'); - if (elements.length < 1) - elements = container_select.find('input[value]'); - elements.first().trigger('click'); - }; - event_registry.on("query-settings-result", event => { - if (event.status !== "success") - return; - last_value = event.info.vad_type; - select_vad_type(event.info.vad_type); - }); - event_registry.on("set-setting-result", event => { - if (event.setting !== "vad-type") - return; - if (event.status !== "success") { - createErrorModal(_translations.cIzsOEm1 || (_translations.cIzsOEm1 = tr("Failed to change setting")), MessageHelper.formatMessage(_translations.CPz2Dcn4 || (_translations.CPz2Dcn4 = tr("Failed to change vad type{:br:}{}")), event.status === "timeout" ? _translations.TqXWWyKK || (_translations.TqXWWyKK = tr("Timeout")) : event.error || (_translations.IAvTTiJt || (_translations.IAvTTiJt = tr("Unknown error"))))).open(); - } - else { - last_value = event.value; - } - select_vad_type(last_value); - }); - } - /* Sensitivity */ - { - const container_sensitivity = container.find(".container-sensitivity"); - const container_bar = container_sensitivity.find(".container-activity-bar"); - const bar_hider = container_bar.find(".bar-hider"); - let last_value; - let triggered_events = 0; - let enabled; - const slider = sliderfy(container_bar, { - min_value: 0, - max_value: 100, - step: 1, - initial_value: 0 - }); - const set_enabled = value => { - if (enabled === value) - return; - enabled = value; - container_sensitivity.toggleClass("disabled", !value); - }; - container_bar.on('change', event => { - const value = parseInt(container_bar.attr("value")); - if (last_value === value) - return; - triggered_events++; - event_registry.fire("set-setting", { setting: "threshold-threshold", value: value }); - }); - event_registry.on("query-settings", event => set_enabled(false)); - event_registry.on("query-settings-result", event => { - if (event.status !== "success") - return; - last_value = event.info.vad_threshold.threshold; - slider.value(event.info.vad_threshold.threshold); - set_enabled(event.info.vad_type === "threshold"); - }); - event_registry.on("set-setting-result", event => { - if (event.setting === "threshold-threshold") { - if (event.status !== "success") - return; - if (triggered_events > 0) { - triggered_events--; - return; - } - last_value = event.value; - slider.value(event.value); - } - else if (event.setting === "vad-type") { - if (event.status !== "success") - return; - set_enabled(event.value === "threshold"); - } - }); - let selected_device; - event_registry.on("query-device-result", event => { - if (event.status !== "success") - return; - selected_device = event.active_device; - }); - event_registry.on("set-device-result", event => { - if (event.status !== "success") - return; - selected_device = event.device_id; - }); - bar_hider.css("width", "100%"); - event_registry.on("update-device-level", event => { - if (!enabled) - return; - const data = event.devices.find(e => e.device_id === selected_device); - let level = data && typeof data.level === "number" ? data.level : 0; - if (level > 100) - level = 100; - else if (level < 0) - level = 0; - bar_hider.css("width", (100 - level) + "%"); - }); - set_enabled(false); - } - /* ppt settings */ - { - /* PPT Key */ - { - const button_key = container.find(".container-ppt button"); - event_registry.on("query-settings", event => button_key.prop("disabled", true).text(_translations.NZPKedF2 || (_translations.NZPKedF2 = tr("loading")))); - let last_value; - event_registry.on("query-settings-result", event => { - if (event.status !== "success") - return; - button_key.prop('disabled', event.info.vad_type !== "push_to_talk"); - button_key.text(last_value = ppt.key_description(event.info.vad_ppt.key)); - }); - event_registry.on("set-setting", event => { - if (event.setting !== "ppt-key") - return; - button_key.prop("enabled", false); - button_key.text(_translations.Fj0SrrS2 || (_translations.Fj0SrrS2 = tr("applying"))); - }); - event_registry.on("set-setting-result", event => { - if (event.setting === "vad-type") { - if (event.status !== "success") - return; - button_key.prop('disabled', event.value !== "push_to_talk"); - } - else if (event.setting === "ppt-key") { - if (event.status !== "success") { - createErrorModal(_translations.eE42rV0W || (_translations.eE42rV0W = tr("Failed to change PPT key")), MessageHelper.formatMessage(_translations.Y9zzAYFy || (_translations.Y9zzAYFy = tr("Failed to change PPT key:{:br:}{}")), event.status === "timeout" ? _translations.EdjnX01y || (_translations.EdjnX01y = tr("Timeout")) : event.error || (_translations.LJiFWJSt || (_translations.LJiFWJSt = tr("Unknown error"))))).open(); - } - else { - last_value = ppt.key_description(event.value); - } - button_key.text(last_value); - } - }); - button_key.on('click', event => { - Modals.spawnKeySelect(key => { - if (!key) - return; - event_registry.fire("set-setting", { setting: "ppt-key", value: key }); - }); - }); - } - /* delay */ - { - const container_delay = container.find(".container-ppt-delay"); - /* toggle button */ - { - const input_enabled = container_delay.find("input.delay-enabled"); - const update_enabled_state = () => { - const value = !loading && !applying && ppt_selected; - input_enabled.prop("disabled", !value).parent().toggleClass("disabled", !value); - }; - let last_state; - let loading = true, applying = false, ppt_selected = false; - event_registry.on("query-settings", event => { loading = true; update_enabled_state(); }); - event_registry.on("query-settings-result", event => { - if (event.status !== "success") - return; - loading = false; - ppt_selected = event.info.vad_type === "push_to_talk"; - update_enabled_state(); - input_enabled.prop("checked", last_state = event.info.vad_ppt.release_delay_active); - }); - event_registry.on("set-setting", event => { - if (event.setting !== "ppt-release-delay-active") - return; - applying = true; - update_enabled_state(); - }); - event_registry.on("set-setting-result", event => { - if (event.setting === "vad-type") { - if (event.status !== "success") - return; - ppt_selected = event.value === "push_to_talk"; - update_enabled_state(); - } - else if (event.setting === "ppt-release-delay-active") { - applying = false; - update_enabled_state(); - if (event.status !== "success") { - createErrorModal(_translations.jwSWNYxO || (_translations.jwSWNYxO = tr("Failed to change PPT delay state")), MessageHelper.formatMessage(_translations.UOWQDD_7 || (_translations.UOWQDD_7 = tr("Failed to change PPT delay state:{:br:}{}")), event.status === "timeout" ? _translations.izNO4C23 || (_translations.izNO4C23 = tr("Timeout")) : event.error || (_translations.oRJMsyYz || (_translations.oRJMsyYz = tr("Unknown error"))))).open(); - } - else { - last_state = event.value; - } - input_enabled.prop("checked", last_state); - } - }); - input_enabled.on('change', event => { - event_registry.fire("set-setting", { setting: "ppt-release-delay-active", value: input_enabled.prop("checked") }); - }); - } - /* delay input */ - { - const input_time = container_delay.find("input.delay-time"); - const update_enabled_state = () => { - const value = !loading && !applying && ppt_selected && delay_active; - input_time.prop("disabled", !value).parent().toggleClass("disabled", !value); - }; - let last_state; - let loading = true, applying = false, ppt_selected = false, delay_active = false; - event_registry.on("query-settings", event => { loading = true; update_enabled_state(); }); - event_registry.on("query-settings-result", event => { - if (event.status !== "success") - return; - loading = false; - ppt_selected = event.info.vad_type === "push_to_talk"; - delay_active = event.info.vad_ppt.release_delay_active; - update_enabled_state(); - input_time.val(last_state = event.info.vad_ppt.release_delay); - }); - event_registry.on("set-setting", event => { - if (event.setting !== "ppt-release-delay") - return; - applying = true; - update_enabled_state(); - }); - event_registry.on("set-setting-result", event => { - if (event.setting === "vad-type") { - if (event.status !== "success") - return; - ppt_selected = event.value === "push_to_talk"; - update_enabled_state(); - } - else if (event.setting === "ppt-release-delay-active") { - if (event.status !== "success") - return; - delay_active = event.value; - update_enabled_state(); - } - else if (event.setting === "ppt-release-delay") { - applying = false; - update_enabled_state(); - if (event.status !== "success") { - createErrorModal(_translations.FkXnr4XQ || (_translations.FkXnr4XQ = tr("Failed to change PPT delay")), MessageHelper.formatMessage(_translations.G2MNfANr || (_translations.G2MNfANr = tr("Failed to change PPT delay:{:br:}{}")), event.status === "timeout" ? _translations.LUwfp1q6 || (_translations.LUwfp1q6 = tr("Timeout")) : event.error || (_translations.Eckk8zqH || (_translations.Eckk8zqH = tr("Unknown error"))))).open(); - } - else { - last_state = event.value; - } - input_time.val(last_state); - } - }); - input_time.on('change', event => { - event_registry.fire("set-setting", { setting: "ppt-release-delay", value: parseInt(input_time.val()) }); - }); - } - } - } - } - /* timeouts */ - { - /* device query */ - { - let timeout; - event_registry.on('query-devices', event => { - clearTimeout(timeout); - timeout = setTimeout(() => { - event_registry.fire("query-device-result", { status: "timeout" }); - }, 5000); - }); - event_registry.on("query-device-result", event => clearTimeout(timeout)); - } - /* device set */ - { - let timeouts = {}; - event_registry.on('set-device', event => { - clearTimeout(timeouts[event.device_id]); - timeouts[event.device_id] = setTimeout(() => { - event_registry.fire("set-device-result", { status: "timeout", device_id: event.device_id }); - }, 5000); - }); - event_registry.on("set-device-result", event => clearTimeout(timeouts[event.device_id])); - } - /* settings query */ - { - let timeout; - event_registry.on('query-settings', event => { - clearTimeout(timeout); - timeout = setTimeout(() => { - event_registry.fire("query-settings-result", { status: "timeout" }); - }, 5000); - }); - event_registry.on("query-settings-result", event => clearTimeout(timeout)); - } - /* settings change */ - { - let timeouts = {}; - event_registry.on('set-setting', event => { - clearTimeout(timeouts[event.setting]); - timeouts[event.setting] = setTimeout(() => { - event_registry.fire("set-setting-result", { status: "timeout", setting: event.setting }); - }, 5000); - }); - event_registry.on("set-setting-result", event => clearTimeout(timeouts[event.setting])); - } - } - event_registry.on("audio-initialized", () => { - event_registry.fire("query-settings"); - event_registry.fire("query-devices", { refresh_list: false }); - }); - } - modal_settings.initialize_audio_microphone_view = initialize_audio_microphone_view; - })(modal_settings = Modals.modal_settings || (Modals.modal_settings = {})); - function settings_identity_forum(container, modal, update_profiles) { - const containers_connected = container.find(".show-connected"); - const containers_disconnected = container.find(".show-disconnected"); - const update_state = () => { - const logged_in = forum.logged_in(); - containers_connected.toggle(logged_in); - containers_disconnected.toggle(!logged_in); - if (logged_in) { - container.find(".forum-username").text(forum.data().name()); - container.find(".forum-premium").text(forum.data().is_premium() ? _translations.Sz0yBwv1 || (_translations.Sz0yBwv1 = tr("Yes")) : _translations.nM_Detuu || (_translations.nM_Detuu = tr("No"))); - } - }; - /* login */ - { - const button_login = container.find(".button-login"); - const input_username = container.find(".input-username"); - const input_password = container.find(".input-password"); - const container_error = container.find(".container-login .container-error"); - const container_captcha_g = container.find(".g-recaptcha"); - let captcha = false; - const update_button_state = () => { - let enabled = true; - enabled = enabled && !!input_password.val(); - enabled = enabled && !!input_username.val(); - enabled = enabled && (typeof (captcha) === "boolean" ? !captcha : !!captcha); - button_login.prop("disabled", !enabled); - }; - /* username */ - input_username.on('change keyup', update_button_state); - /* password */ - input_password.on('change keyup', update_button_state); - button_login.on('click', event => { - input_username.prop("disabled", true); - input_password.prop("disabled", true); - button_login.prop("disabled", true); - container_error.removeClass("shown"); - forum.login(input_username.val(), input_password.val(), typeof (captcha) === "string" ? captcha : undefined).then(state => { - captcha = false; - console.debug(_translations.tbSVCOB3 || (_translations.tbSVCOB3 = tr("Forum login result: %o")), state); - if (state.status === "success") { - update_state(); - update_profiles(); - return; - } - setTimeout(() => { - if (!!state.error_message) /* clear password if we have an error */ - input_password.val(""); - input_password.focus(); - update_button_state(); - }, 0); - if (state.status === "captcha") { - //TODO Works currently only with localhost! - button_login.hide(); - container_error.text(state.error_message || (_translations.qJrtnF6R || (_translations.qJrtnF6R = tr("Captcha required")))).addClass("shown"); - captcha = ""; - console.log(_translations.fMFyBIJx || (_translations.fMFyBIJx = tr("Showing captcha for site-key: %o")), state.captcha.data); - forum.gcaptcha.spawn(container_captcha_g, state.captcha.data, token => { - captcha = token; - console.debug(_translations.m7tGEkDd || (_translations.m7tGEkDd = tr("Got captcha token: %o")), token); - container_captcha_g.hide(); - button_login.show(); - update_button_state(); - }).catch(error => { - console.error(_translations.HRWXI7ss || (_translations.HRWXI7ss = tr("Failed to initialize forum captcha: %o")), error); - container_error.text("Failed to initialize GReCaptcha! No authentication possible.").addClass("shown"); - container_captcha_g.hide(); - button_login.hide(); - }); - container_captcha_g.show(); - } - else { - container_error.text(state.error_message || (_translations._DgU0HsU || (_translations._DgU0HsU = tr("Unknown error")))).addClass("shown"); - } - }).catch(error => { - console.error(_translations.r6v8MZ09 || (_translations.r6v8MZ09 = tr("Failed to login within the forum. Error: %o")), error); - createErrorModal(_translations.JslYmH78 || (_translations.JslYmH78 = tr("Forum login failed.")), _translations.l0U3SilI || (_translations.l0U3SilI = tr("Forum login failed. Lookup the console for more information"))).open(); - }).then(() => { - input_username.prop("disabled", false); - input_password.prop("disabled", false); - update_button_state(); - }); - }); - update_button_state(); - } - /* logout */ - { - container.find(".button-logout").on('click', event => { - forum.logout().catch(error => { - console.error(_translations.SCagvySD || (_translations.SCagvySD = tr("Failed to logout from forum: %o")), error); - createErrorModal(_translations.N4jqwUqM || (_translations.N4jqwUqM = tr("Forum logout failed")), MessageHelper.formatMessage(_translations.jeMb4g5m || (_translations.jeMb4g5m = tr("Failed to logout from forum account.{:br:}Error: {}")), error)).open(); - }).then(() => { - if (modal.shown) - update_state(); - update_profiles(); - }); - }); - } - update_state(); - } -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["92ac35d52ad1f42fa5193ac1e4f38303a97206528f82d8c2341c7735d2f8759b"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["92ac35d52ad1f42fa5193ac1e4f38303a97206528f82d8c2341c7735d2f8759b"] = "92ac35d52ad1f42fa5193ac1e4f38303a97206528f82d8c2341c7735d2f8759b"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "jClfZ0h9", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (174,21)" }, { name: "dKMx7HBk", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (243,21)" }, { name: "TaMwKYk3", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (244,23)" }, { name: "jj794ggs", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (249,21)" }, { name: "PCTwVWW5", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (250,23)" }, { name: "cJf25JfU", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (255,21)" }, { name: "aVE1R8Ij", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (256,23)" }, { name: "FtxS8aPv", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (261,21)" }, { name: "_iRssxDc", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (262,23)" }, { name: "fZs9KsQ7", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (306,43)" }, { name: "K_txnzdc", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (316,43)" }, { name: "cqChs9Oa", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (333,76)" }, { name: "CsmcENyr", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (349,76)" }, { name: "LfL6QN9W", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (364,156)" }, { name: "_9iGfBfM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (392,51)" }, { name: "uxwU2nG6", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (395,38)" }, { name: "lpipbMzX", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (395,94)" }, { name: "Ma1zisV8", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (437,63)" }, { name: "sDgA4pks", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (445,64)" }, { name: "TA3MTtDq", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (449,46)" }, { name: "McoQVATK", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (451,69)" }, { name: "sRJ6ujQf", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (452,67)" }, { name: "cuxjhYl0", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (478,61)" }, { name: "lMroAnEz", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (479,59)" }, { name: "TEivpBwN", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (480,55)" }, { name: "CfdgV9De", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (481,57)" }, { name: "OZoex2JI", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (511,67)" }, { name: "jwxGIkmy", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (522,68)" }, { name: "jFQD0Gmp", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (527,46)" }, { name: "ozlD0jd5", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (529,69)" }, { name: "vm8uLmSc", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (530,71)" }, { name: "hlQqRdbg", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (637,55)" }, { name: "l6HhHM6Z", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (639,55)" }, { name: "fjEVRGtV", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (643,66)" }, { name: "QdbjApBs", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (644,51)" }, { name: "TFLC6YL4", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (724,109)" }, { name: "mHWmn0e_", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (726,56)" }, { name: "_P5v1n6D", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (727,66)" }, { name: "E92mYEjR", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (781,37)" }, { name: "EEwz6h5e", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (781,68)" }, { name: "LQLYXfno", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (783,51)" }, { name: "bOiC47ix", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (786,38)" }, { name: "EcDuYmlv", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (786,94)" }, { name: "u2qYFkJb", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (849,37)" }, { name: "aab8fpL2", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (849,67)" }, { name: "VRhtN9SF", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (851,51)" }, { name: "zu2R85Jy", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (854,38)" }, { name: "iG8KyFbG", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (854,91)" }, { name: "mM6I4PAT", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (878,75)" }, { name: "KT1iYZJ7", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanList.ts (900,79)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -/// -var Modals; -(function (Modals) { - function openBanList(client) { - let modal; - let _callback_bans; - let _callback_triggers; - const single_ban_handler = { - command: "notifybanlist", - function: command => { - const json = command.arguments; - let bans = []; - for (const entry of json) { - bans.push({ - server_id: parseInt(entry["sid"]), - banid: parseInt(entry["banid"]), - ip: entry["ip"], - name: entry["name"], - unique_id: entry["uid"], - hardware_id: entry["hwid"], - timestamp_created: (parseInt(entry["created"]) * 1000), - timestamp_expire: (parseInt(entry["duration"]) > 0 ? parseInt(entry["created"]) * 1000 + parseInt(entry["duration"]) * 1000 : 0), - invoker_name: entry["invokername"], - invoker_database_id: parseInt(entry["invokercldbid"]), - invoker_unique_id: entry["invokeruid"], - reason: entry["reason"], - enforcements: parseInt(entry["enforcements"]), - flag_own: entry["invokeruid"] == client.getClient().properties.client_unique_identifier - }); - } - _callback_bans(bans); - return false; /* do not remove me */ - } - }; - const single_trigger_handler = { - command: "notifybantriggerlist", - function: command => { - //TODO: Test the server id in the response? - const json = command.arguments; - let triggers = []; - for (const entry of json) { - triggers.push({ - unique_id: entry["client_unique_identifier"], - client_nickname: entry["client_nickname"], - hardware_id: entry["client_hardware_identifier"], - connection_ip: entry["connection_client_ip"], - timestamp: parseInt(entry["timestamp"]) - }); - } - _callback_triggers(triggers); - return false; /* do not remove me */ - } - }; - const controller = { - request_list(_callback) { - _callback_bans = _callback; - return new Promise((resolve, reject) => { - const timeout = setTimeout(() => { - cleanup(); - reject("timeout"); - }, 2500); - const cleanup = () => { - clearTimeout(timeout); - _callback_bans = undefined; - }; - Promise.all([ - client.serverConnection.send_command("banlist", { sid: 0 }, { process_result: false }).catch(error => { - //TODO: May lookup for permissions - }), - client.serverConnection.send_command("banlist").catch((error) => __awaiter(this, void 0, void 0, function* () { - if (error instanceof CommandResult) - if (error.id === ErrorID.EMPTY_RESULT) - return; - throw error; - })) - ]).then(() => { - if (_callback_bans) - resolve(); - cleanup(); - }).catch(error => { - if (_callback_bans) - reject(error); - cleanup(); - }); - }); - }, - request_trigger_list(ban, _callback) { - _callback_triggers = _callback; - return new Promise((resolve, reject) => { - const timeout = setTimeout(() => { - cleanup(); - reject("timeout"); - }, 2500); - const cleanup = () => { - clearTimeout(timeout); - _callback_triggers = undefined; - }; - const data = { banid: ban.ban_id }; - if (typeof ban.server_id !== "undefined") - data["sid"] = ban.server_id; - client.serverConnection.send_command("bantriggerlist", data).catch((error) => __awaiter(this, void 0, void 0, function* () { - if (error instanceof CommandResult) - if (error.id === ErrorID.EMPTY_RESULT) - return; - throw error; - })).then(() => { - if (_callback_triggers) - resolve(); - cleanup(); - }).catch(error => { - if (_callback_triggers) - reject(error); - cleanup(); - }); - }); - }, - max_bantime() { - return __awaiter(this, void 0, void 0, function* () { - const value = client.permissions.neededPermission(PermissionType.I_CLIENT_BAN_MAX_BANTIME).value || 0; - return value == -2 ? 0 : value; - }); - }, - permission_add() { - return __awaiter(this, void 0, void 0, function* () { - return [ - client.permissions.neededPermission(PermissionType.B_CLIENT_BAN_CREATE).granted(1), - client.permissions.neededPermission(PermissionType.B_CLIENT_BAN_CREATE_GLOBAL).granted(1) - ]; - }); - }, - permission_edit() { - return __awaiter(this, void 0, void 0, function* () { - return [ - client.permissions.neededPermission(PermissionType.B_CLIENT_BAN_EDIT).granted(1), - client.permissions.neededPermission(PermissionType.B_CLIENT_BAN_EDIT_GLOBAL).granted(1) && false - ]; - }); - }, - add_ban(entry) { - const data = {}; - if (entry.ip) - data["ip"] = entry.ip; - if (entry.name) - data["name"] = entry.name; - if (entry.unique_id) - data["uid"] = entry.unique_id; - if (entry.hardware_id) - data["hwid"] = entry.hardware_id; - if (entry.reason) - data["banreason"] = entry.reason; - if (entry.timestamp_expire) - data["time"] = Math.floor((entry.timestamp_expire - entry.timestamp_created) / 1000); - if (typeof (entry.server_id) === "number") - data["sid"] = entry.server_id; - return client.serverConnection.send_command("banadd", data).then(e => { - if (!e.success) - throw e; - }); - }, - edit_ban(data) { - return client.serverConnection.send_command("banedit", data).then(e => { - if (!e.success) - throw e; - }); - }, - delete_ban(entry_id, server_id) { - const data = { - banid: entry_id - }; - if (typeof (server_id) === "number") - data["sid"] = server_id; - return client.serverConnection.send_command("bandel", data).then(e => { - if (!e.success) - throw e; - }); - } - }; - modal = createModal({ - header: _translations.jClfZ0h9 || (_translations.jClfZ0h9 = tr("Server Banlist")), - body: () => generate_dom(controller), - footer: null, - width: '60em' - }); - client.serverConnection.command_handler_boss().register_single_handler(single_ban_handler); - client.serverConnection.command_handler_boss().register_single_handler(single_trigger_handler); - modal.close_listener.push(() => { - client.serverConnection.command_handler_boss().remove_single_handler(single_ban_handler); - client.serverConnection.command_handler_boss().remove_single_handler(single_trigger_handler); - }); - //TODO: Test without dividerfy! - modal.htmlTag.dividerfy(); - modal.htmlTag.find(".modal-body").addClass("modal-ban-list"); - modal.open(); - } - Modals.openBanList = openBanList; - //Note: This object must be sorted (from shortest to longest)! - Modals.duration_data = { - "sec": { - "text": _translations.dKMx7HBk || (_translations.dKMx7HBk = tr("Seconds")), - "1-text": _translations.TaMwKYk3 || (_translations.TaMwKYk3 = tr("Second")), - scale: 1 - }, - "min": { - "text": _translations.jj794ggs || (_translations.jj794ggs = tr("Minutes")), - "1-text": _translations.PCTwVWW5 || (_translations.PCTwVWW5 = tr("Minute")), - scale: 60 - }, - "hours": { - "text": _translations.cJf25JfU || (_translations.cJf25JfU = tr("Hours")), - "1-text": _translations.aVE1R8Ij || (_translations.aVE1R8Ij = tr("Hour")), - scale: 3600 - }, - "days": { - "text": _translations.FtxS8aPv || (_translations.FtxS8aPv = tr("Days")), - "1-text": _translations._iRssxDc || (_translations._iRssxDc = tr("Day")), - scale: 86400 - }, - }; - function generate_dom(controller) { - const template = $("#tmpl_ban_list").renderTag(); - let callback_ban_filter = []; - let callback_trigger_filter = []; - let selected_ban; - let update_edit_window; - let update_ban_filter; - let update_trigger_filter; - const container_ban = template.find(".container-banlist"); - const container_ban_entries = container_ban.find(".container-list .body"); - const container_ban_entries_empty = container_ban.find(".container-list .container-empty"); - const container_ban_entries_error = container_ban.find(".container-list .container-error"); - const container_trigger = template.find(".container-triggerlist").hide(); - const container_trigger_entries = container_trigger.find(".container-list .body"); - const container_trigger_entries_empty = container_trigger.find(".container-list .container-empty"); - const container_trigger_entries_error = container_trigger.find(".container-list .container-error"); - const button_apply = template.find(".button-apply"); - let button_apply_state = [false, false]; /* first index is add; second index is edit */ - let update_category_inputs = [undefined, undefined]; - let button_apply_state_index = 1; - const category_add = template.find(".left .head .category-add"); - const category_edit = template.find(".left .head .category-edit"); - const container_add = template.find(".left .container-add"); - const container_add_no_permissions = template.find(".left .container-add .container-no-permissions"); - const container_edit = template.find(".left .container-edit"); - const seperator_top = template.find(".container-seperator .top"); - /* [local; global] */ - let permission_edit = [false, false], permission_add = [false, false]; - container_add_no_permissions.hide(); - controller.permission_add().then(result => permission_add = result).catch(error => { - log.error(LogCategory.CLIENT, _translations.fZs9KsQ7 || (_translations.fZs9KsQ7 = tr("Failed to query ban add permissions: %o")), error); - }).then(() => { - if (permission_add[0] !== permission_add[1]) { - const input_global = container_add.find(".group-global input"); - input_global.prop("checked", permission_add[1]).prop("disabled", true).firstParent(".checkbox").addClass("disabled"); - } - else if (!permission_add[0]) - container_add_no_permissions.show(); - }); - controller.permission_edit().then(result => permission_edit = result).catch(error => { - log.error(LogCategory.CLIENT, _translations.K_txnzdc || (_translations.K_txnzdc = tr("Failed to query ban edit permissions: %o")), error); - }).then(() => { - if (selected_ban) - update_edit_window(false); - }); - /* category switch */ - { - category_add.on('click', event => { - container_add.removeClass("hidden"); - category_add.addClass("selected"); - container_edit.addClass("hidden"); - category_edit.removeClass("selected"); - seperator_top.css({ opacity: 1 }); - button_apply_state_index = 0; - button_apply.prop("disabled", !button_apply_state[0]).text(_translations.cqChs9Oa || (_translations.cqChs9Oa = tr("Add ban"))); - update_category_inputs[button_apply_state_index](); - }); - category_edit.on('click', event => { - if (!selected_ban) - return; - container_add.addClass("hidden"); - category_add.removeClass("selected"); - container_edit.removeClass("hidden"); - category_edit.addClass("selected"); - seperator_top.css({ opacity: 0 }); - button_apply_state_index = 1; - button_apply.prop("disabled", !button_apply_state[1]).text(_translations.CsmcENyr || (_translations.CsmcENyr = tr("Save ban"))); - update_category_inputs[button_apply_state_index](); - }); - } - const build_ban_entry = (entry, selected) => { - let button_delete; - const tag = $.spawn("div").addClass("entry" + (entry.server_id > 0 ? "" : " global") + (selected ? " selected" : "")).append($.spawn("div").addClass("column column-key").append(entry.name ? $.spawn("div").append(entry.name) : undefined, entry.ip ? $.spawn("div").append(entry.ip) : undefined, entry.unique_id ? $.spawn("div").append(entry.unique_id) : undefined, entry.hardware_id ? $.spawn("div").append(entry.hardware_id) : undefined), $.spawn("div").addClass("column column-reason").text(entry.reason), $.spawn("div").addClass("column column-expires").text(entry.timestamp_expire ? moment(entry.timestamp_expire).format('DD.MM.YYYY hh:mm') : _translations.LfL6QN9W || (_translations.LfL6QN9W = tr("Never"))), $.spawn("div").addClass("column column-delete").append(button_delete = $.spawn("div").addClass("button-delete").append($.spawn("div").addClass("icon_em client-delete")))); - tag.on('click', event => { - if (selected_ban === entry || event.isDefaultPrevented()) - return; - selected_ban = entry; - container_ban_entries.find(".entry.selected").removeClass("selected"); - tag.addClass("selected"); - update_edit_window(true); - }); - button_delete.on('click', event => { - event.preventDefault(); - controller.delete_ban(entry.banid, entry.server_id).then(() => { - tag.css({ opacity: 1 }).animate({ opacity: 0 }, 250, () => tag.animate({ "max-height": 0 }, 250, () => tag.remove())); - if (entry === selected_ban) { - selected_ban = undefined; - update_edit_window(false); - } - }).catch(error => { - log.error(LogCategory.CLIENT, _translations._9iGfBfM || (_translations._9iGfBfM = tr("Failed to delete ban: %o")), error); - if (error instanceof CommandResult) - error = error.id === ErrorID.PERMISSION_ERROR ? "no permissions" : error.extra_message || error.message; - createErrorModal(_translations.uxwU2nG6 || (_translations.uxwU2nG6 = tr("Failed to delete ban")), MessageHelper.formatMessage(_translations.lpipbMzX || (_translations.lpipbMzX = tr("Failed to delete ban. {:br:}Error: {}")), error)).open(); - }); - }); - if (selected) { - selected_ban = entry; - update_edit_window(false); - } - const lower_mesh = (entry.reason || "").toLowerCase() + " " + - (entry.unique_id || "").toLowerCase() + " " + - (entry.name || "").toLowerCase() + " " + - (entry.ip || "").toLowerCase() + " " + - (entry.hardware_id || "").toLowerCase(); - callback_ban_filter.push((text, flag_own, highlight_own) => { - if (text && lower_mesh.indexOf(text) == -1) { - tag.hide(); - return false; - } - if (flag_own && !entry.flag_own) { - tag.hide(); - return false; - } - tag.show().toggleClass("highlight", highlight_own && - entry.flag_own); - return true; - }); - return tag; - }; - const update_banlist = (selected_ban) => { - callback_ban_filter = []; - container_ban_entries.find(".entry").remove(); - container_ban_entries_error.hide(); - container_ban_entries_empty.show().find("a").text(_translations.Ma1zisV8 || (_translations.Ma1zisV8 = tr("Loading..."))); - let bans = []; - controller.request_list(_bans => bans.push(..._bans)).then(() => { - if (bans.length) { - container_ban_entries.append(...bans.map(e => build_ban_entry(e, e.banid === selected_ban))); - container_ban_entries_empty.hide(); - } - else { - container_ban_entries_empty.find("a").text(_translations.sDgA4pks || (_translations.sDgA4pks = tr("No bans registered"))); - } - update_ban_filter(); - }).catch(error => { - log.info(LogCategory.CLIENT, _translations.TA3MTtDq || (_translations.TA3MTtDq = tr("Failed to update ban list: %o")), error); - if (error instanceof CommandResult) - error = error.id === ErrorID.PERMISSION_ERROR ? _translations.McoQVATK || (_translations.McoQVATK = tr("no permissions")) : error.extra_message || error.message; - container_ban_entries_error.show().find("a").text((_translations.sRJ6ujQf || (_translations.sRJ6ujQf = tr("Failed to receive banlist: "))) + error); - container_ban_entries_empty.hide(); - }); - }; - const build_trigger_entry = (entry) => { - const spawn_key_value = (key, value, reason) => { - return $.spawn("div").addClass("property").toggleClass("highlighted", reason).append($.spawn("div").addClass("key").text(key + ": "), $.spawn("div").addClass("value").text(value)); - }; - let cause_name = !!selected_ban.name && !!entry.client_nickname.match(selected_ban.name); - let cause_uid = !cause_name && !!selected_ban.unique_id && selected_ban.unique_id.toLowerCase() === (entry.unique_id || "").toLowerCase(); - let cause_ip = !cause_uid && !!selected_ban.ip && selected_ban.ip.toLowerCase() === (entry.connection_ip || "").toLowerCase(); - let cause_hwid = !cause_ip && !!selected_ban.hardware_id && selected_ban.hardware_id.toLowerCase() === (entry.hardware_id || "").toLowerCase(); - /* we guess that IP is the cause because we dont see the IP and there is no other reason */ - if (!cause_name && !cause_uid && !cause_ip && !cause_hwid && entry.connection_ip === "hidden") - cause_ip = true; - const time_str = moment(entry.timestamp).format('DD.MM.YYYY hh:mm'); - const tag = $.spawn("div").addClass("entry").append($.spawn("div").addClass("column column-properties").append(entry.client_nickname ? spawn_key_value(_translations.cuxjhYl0 || (_translations.cuxjhYl0 = tr("Nickname")), entry.client_nickname, cause_name) : undefined, entry.connection_ip ? spawn_key_value(_translations.lMroAnEz || (_translations.lMroAnEz = tr("IP")), entry.connection_ip, cause_ip) : undefined, entry.unique_id ? spawn_key_value(_translations.TEivpBwN || (_translations.TEivpBwN = tr("Unique ID")), entry.unique_id, cause_uid) : undefined, entry.hardware_id ? spawn_key_value(_translations.CfdgV9De || (_translations.CfdgV9De = tr("Hardware ID")), entry.hardware_id, cause_hwid) : undefined), $.spawn("div").addClass("column column-timestamp").text(time_str)); - const lower_mesh = (entry.unique_id || "").toLowerCase() + " " + - (entry.client_nickname || "").toLowerCase() + " " + - (entry.connection_ip || "").toLowerCase() + " " + - (entry.hardware_id || "").toLowerCase() + " " + - time_str + " " + - entry.timestamp; - callback_trigger_filter.push(text => { - if (text && lower_mesh.indexOf(text) == -1) { - tag.hide(); - return false; - } - tag.show(); - return true; - }); - return tag; - }; - const update_triggerlist = () => { - callback_trigger_filter = []; - container_trigger_entries.find(".entry").remove(); - container_trigger_entries_error.hide(); - container_trigger_entries_empty.show().find("a").text(_translations.OZoex2JI || (_translations.OZoex2JI = tr("Loading..."))); - let triggers = []; - controller.request_trigger_list({ - ban_id: selected_ban.banid, - server_id: selected_ban.server_id - }, _triggers => triggers.push(..._triggers)).then(() => { - if (triggers.length) { - container_trigger_entries.append(...triggers.sort((a, b) => b.timestamp - a.timestamp).map(e => build_trigger_entry(e))); - container_trigger_entries_empty.hide(); - } - else { - container_trigger_entries_empty.find("a").text(_translations.jwxGIkmy || (_translations.jwxGIkmy = tr("No triggers logged"))); - } - update_trigger_filter(); - }).catch(error => { - log.info(LogCategory.CLIENT, _translations.jFQD0Gmp || (_translations.jFQD0Gmp = tr("Failed to update trigger list: %o")), error); - if (error instanceof CommandResult) - error = error.id === ErrorID.PERMISSION_ERROR ? _translations.ozlD0jd5 || (_translations.ozlD0jd5 = tr("no permissions")) : error.extra_message || error.message; - container_trigger_entries_error.show().find("a").text((_translations.vm8uLmSc || (_translations.vm8uLmSc = tr("Failed to receive trigger list: "))) + error); - container_trigger_entries_empty.hide(); - }); - }; - const show_triggerlist = () => { - container_trigger.show(); - }; - /* general input field rules */ - const initialize_fields = (tag, index) => { - const input_name = tag.find(".group-name input").on('change keyup', () => update_category_inputs[index]()); - const input_ip = tag.find(".group-ip input").on('change keyup', () => update_category_inputs[index]()); - const input_uid = tag.find(".group-unique-id input").on('change keyup', () => update_category_inputs[index]()); - const input_hwid = tag.find(".group-hwid input").on('change keyup', () => update_category_inputs[index]()); - const input_reason = tag.find(".group-reason textarea").on('change keyup', () => update_category_inputs[index]()); - //const input_global = tag.find(".group-global input"); - const input_duration_value = tag.find(".group-duration input").on('change keyup', () => update_category_inputs[index]()); - const input_duration_type = tag.find(".group-duration select").on('change keyup', () => update_category_inputs[index]()); - const tooltip_duration_max = tag.find(".tooltip-max-time a.max"); - update_category_inputs[index] = () => { - let _criteria_set = false; - let _input_invalid = false; - { - //TODO: Check if in regex mode or not - const value = input_name.val() || ""; - if (value.length > 255) { - _input_invalid = true; - input_name.firstParent(".input-boxed").addClass("is-invalid"); - } - else { - _criteria_set = _criteria_set || !!value; - input_name.firstParent(".input-boxed").removeClass("is-invalid"); - } - } - { - //TODO: Check if in regex mode or not - const value = input_ip.val() || ""; - if (value.length > 255) { - _input_invalid = true; - input_ip.firstParent(".input-boxed").addClass("is-invalid"); - } - else { - _criteria_set = _criteria_set || !!value; - input_ip.firstParent(".input-boxed").removeClass("is-invalid"); - } - } - { - const value = input_uid.val() || ""; - try { - if (value && atob(value).length != 20) - throw ""; - _criteria_set = _criteria_set || !!value; - input_uid.firstParent(".input-boxed").removeClass("is-invalid"); - } - catch (e) { - _input_invalid = true; - input_uid.firstParent(".input-boxed").addClass("is-invalid"); - } - } - { - const value = input_hwid.val() || ""; - if (value.length > 255) { - _input_invalid = true; - input_hwid.firstParent(".input-boxed").addClass("is-invalid"); - } - else { - _criteria_set = _criteria_set || !!value; - input_hwid.firstParent(".input-boxed").removeClass("is-invalid"); - } - } - { - const value = input_reason.val() || ""; - if (value.length > 512) { - _input_invalid = true; - input_reason.firstParent(".input-boxed").addClass("is-invalid"); - } - else { - input_reason.firstParent(".input-boxed").removeClass("is-invalid"); - } - } - { - const type = input_duration_type.val(); - const value = parseInt(input_duration_value.val()); - const disabled = input_duration_type.prop("disabled"); - input_duration_value.prop("disabled", type === "perm" || disabled).firstParent(".input-boxed").toggleClass("disabled", type === "perm" || disabled); - if (type !== "perm") { - if (input_duration_value.attr("x-saved-value")) { - input_duration_value.val(parseInt(input_duration_value.attr("x-saved-value"))); - input_duration_value.attr("x-saved-value", null); - } - const selected_option = input_duration_type.find("option[value='" + type + "']"); - const max = parseInt(selected_option.attr("duration-max")); - input_duration_value.attr("max", max); - if ((value > max && max != -1) || value < 1) { - _input_invalid = true; - input_duration_value.firstParent(".input-boxed").addClass("is-invalid"); - } - else { - input_duration_value.firstParent(".input-boxed").removeClass("is-invalid"); - } - if (max != -1) - tooltip_duration_max.html((_translations.hlQqRdbg || (_translations.hlQqRdbg = tr("You're allowed to ban a maximum of "))) + "" + max + " " + Modals.duration_data[type][max == 1 ? "1-text" : "text"] + ""); - else - tooltip_duration_max.html(_translations.l6HhHM6Z || (_translations.l6HhHM6Z = tr("You're allowed to ban permanent."))); - } - else { - if (value && !Number.isNaN(value)) - input_duration_value.attr("x-saved-value", value); - input_duration_value.attr("placeholder", _translations.fjEVRGtV || (_translations.fjEVRGtV = tr("for ever"))).val(null); - tooltip_duration_max.html(_translations.QdbjApBs || (_translations.QdbjApBs = tr("You're allowed to ban permanent."))); - } - } - button_apply.prop("disabled", !(button_apply_state[button_apply_state_index] = _criteria_set && !_input_invalid)); - }; - /* initialize ban time */ - controller.max_bantime().catch(error => { /* TODO: Error handling? */ return 0; }).then(max_time => { - let unlimited = max_time == 0 || max_time == -1; - if (unlimited) - max_time = 0; - for (const value of Object.keys(Modals.duration_data)) { - input_duration_type.find("option[value='" + value + "']") - .prop("disabled", !unlimited && max_time >= Modals.duration_data[value].scale) - .attr("duration-scale", Modals.duration_data[value].scale) - .attr("duration-max", unlimited ? -1 : Math.floor(max_time / Modals.duration_data[value].scale)); - } - input_duration_type.find("option[value='perm']") - .prop("disabled", !unlimited) - .attr("duration-scale", 0) - .attr("duration-max", -1); - }); - }; - initialize_fields(container_add, 0); - initialize_fields(container_edit, 1); - /* the edit "handler" */ - { - const tag = container_edit; - const input_name = tag.find(".group-name input"); - const input_ip = tag.find(".group-ip input"); - const input_interpret = tag.find(".group-interpret select"); - const input_uid = tag.find(".group-unique-id input"); - const input_hwid = tag.find(".group-hwid input"); - const input_reason = tag.find(".group-reason textarea"); - const input_global = tag.find(".group-global input"); - const input_duration_value = tag.find(".group-duration input"); - const input_duration_type = tag.find(".group-duration select"); - const tooltip_duration_detailed = tag.find(".tooltip-max-time a.detailed"); - const label_enforcement_count = tag.find(".group-enforcements .value a"); - const button_enforcement_list = tag.find(".button-enforcement-list"); - const container_creator = tag.find(".group-creator .value"); - update_edit_window = (switch_to) => { - category_edit.toggleClass("disabled", !selected_ban); - const editable = selected_ban && selected_ban.server_id === 0 ? permission_edit[1] : permission_edit[0]; - input_name.val(selected_ban ? selected_ban.name : null).prop("disabled", !editable).firstParent(".input-boxed").toggleClass("disabled", !editable); - input_ip.val(selected_ban ? selected_ban.ip : null).prop("disabled", !editable).firstParent(".input-boxed").toggleClass("disabled", !editable); - input_uid.val(selected_ban ? selected_ban.unique_id : null).prop("disabled", !editable).firstParent(".input-boxed").toggleClass("disabled", !editable); - input_hwid.val(selected_ban ? selected_ban.hardware_id : null).prop("disabled", !editable).firstParent(".input-boxed").toggleClass("disabled", !editable); - input_reason.val(selected_ban ? selected_ban.reason : null).prop("disabled", !editable).firstParent(".input-boxed").toggleClass("disabled", !editable); - input_interpret.find("option").eq(selected_ban && typeof (selected_ban.name_type) === "number" ? selected_ban.name_type : 2).prop("selected", true).prop("disabled", !editable).firstParent(".input-boxed").toggleClass("disabled", !editable); - label_enforcement_count.text((selected_ban ? selected_ban.enforcements : 0) || 0); - button_enforcement_list.prop("disabled", !selected_ban || selected_ban.enforcements == 0); - input_global.prop("checked", selected_ban && selected_ban.server_id == 0); - input_duration_type.prop("disabled", !editable).firstParent(".input-boxed").toggleClass("disabled", !editable); - input_duration_value.prop("disabled", !editable).firstParent(".input-boxed").toggleClass("disabled", !editable); - if (selected_ban) { - if (selected_ban.timestamp_expire > selected_ban.timestamp_created) { - const duration = Math.ceil((selected_ban.timestamp_expire - selected_ban.timestamp_created) / 1000); - const periods = Object.keys(Modals.duration_data); - let index; - for (index = 0; index < periods.length; index++) { - if (Modals.duration_data[periods[index]].scale > duration + 1 || ((duration + 1) % Modals.duration_data[periods[index]].scale) > 1.9) - break; - } - if (index > 0) - index--; - input_duration_type.find("option[value='" + periods[index] + "']").prop("selected", true); - input_duration_value.val(Math.ceil(duration / Modals.duration_data[periods[index]].scale)); - tooltip_duration_detailed.text($.spawn("div").append(...MessageHelper.formatMessage(_translations.TFLC6YL4 || (_translations.TFLC6YL4 = tr("The ban lasts for exact {}.")), MessageHelper.format_time(duration * 1000, "never"))).text()); - } - else { - tooltip_duration_detailed.text(_translations.mHWmn0e_ || (_translations.mHWmn0e_ = tr("The ban is forever."))); - input_duration_value.attr("placeholder", _translations._P5v1n6D || (_translations._P5v1n6D = tr("for ever"))).val(null).prop('disabled', true); - input_duration_type.find("option[value='perm']").prop("selected", true); - } - } - container_creator.empty(); - if (selected_ban) { - container_creator.append(htmltags.generate_client_object({ - client_id: 0, - client_unique_id: selected_ban.invoker_unique_id, - client_name: selected_ban.invoker_name, - add_braces: false - })); - } - if (switch_to) - category_edit.trigger('click'); - }; - button_apply.on('click', event => { - if (!button_apply_state[1] || button_apply_state_index != 1) - return; - const data = { banid: selected_ban.banid }; - if (input_ip.val() != selected_ban.ip) - data["ip"] = input_ip.val(); - if (input_name.val() != selected_ban.name) - data["name"] = input_name.val(); - if (input_uid.val() != selected_ban.unique_id) - data["uid"] = input_uid.val(); - if (input_hwid.val() != selected_ban.hardware_id) - data["hwid"] = input_hwid.val(); - if (input_reason.val() != selected_ban.reason) - data["banreason"] = input_reason.val(); - if (input_reason.val() != selected_ban.reason) - data["reason"] = input_reason.val(); - const duration = input_duration_type.val() === "perm" ? 0 : (1000 * parseInt(input_duration_type.find("option[value='" + input_duration_type.val() + "']").attr("duration-scale")) * parseInt(input_duration_value.val())); - if (selected_ban.timestamp_expire > 0 ? (selected_ban.timestamp_expire - selected_ban.timestamp_created != duration) : duration != 0) - data["time"] = Math.floor(duration / 1000); - controller.edit_ban(data).then(() => { - update_banlist(selected_ban ? selected_ban.banid : undefined); - selected_ban = undefined; - update_edit_window(false); - createInfoModal(_translations.E92mYEjR || (_translations.E92mYEjR = tr("Ban successfully edited")), _translations.EEwz6h5e || (_translations.EEwz6h5e = tr("Your ban has been successfully edited."))).open(); - }).catch(error => { - log.error(LogCategory.CLIENT, _translations.LQLYXfno || (_translations.LQLYXfno = tr("Failed to edited ban: %o")), error); - if (error instanceof CommandResult) - error = error.id === ErrorID.PERMISSION_ERROR ? "no permissions" : error.extra_message || error.message; - createErrorModal(_translations.bOiC47ix || (_translations.bOiC47ix = tr("Failed to edited ban")), MessageHelper.formatMessage(_translations.EcDuYmlv || (_translations.EcDuYmlv = tr("Failed to edited ban. {:br:}Error: {}")), error)).open(); - }); - }); - button_enforcement_list.on('click', () => { - update_triggerlist(); - show_triggerlist(); - }); - } - /* the create "handler" */ - { - const tag = container_add; - const input_name = tag.find(".group-name input"); - const input_ip = tag.find(".group-ip input"); - const input_interpret = tag.find(".group-interpret select"); - const input_uid = tag.find(".group-unique-id input"); - const input_hwid = tag.find(".group-hwid input"); - const input_reason = tag.find(".group-reason textarea"); - const input_global = tag.find(".group-global input"); - const input_duration_value = tag.find(".group-duration input"); - const input_duration_type = tag.find(".group-duration select"); - button_apply.on('click', event => { - if (!button_apply_state[0] || button_apply_state_index != 0) - return; - const data = { - banid: 0, - enforcements: 0, - }; - if (input_global.prop('checked')) - data.server_id = 0; - if (input_ip.val()) - data.ip = input_ip.val(); - if (input_name.val()) - data.name = input_name.val(); - if (input_uid.val()) - data.unique_id = input_uid.val(); - if (input_hwid.val()) - data.hardware_id = input_hwid.val(); - if (input_reason.val()) - data.reason = input_reason.val(); - data.timestamp_created = Date.now(); - data.timestamp_expire = input_duration_type.val() === "perm" ? 0 : (data.timestamp_created + 1000 * parseInt(input_duration_type.find("option[value='" + input_duration_type.val() + "']").attr("duration-scale")) * parseInt(input_duration_value.val())); - //TODO: input_interpret (Currently not supported by TeaSpeak) - controller.add_ban(data).then(() => { - input_name.val(null); - input_ip.val(null); - input_uid.val(null); - input_hwid.val(null); - input_reason.val(null); - input_duration_value.val(1); - update_banlist(); - createInfoModal(_translations.u2qYFkJb || (_translations.u2qYFkJb = tr("Ban successfully added")), _translations.aab8fpL2 || (_translations.aab8fpL2 = tr("Your ban has been successfully added."))).open(); - }).catch(error => { - log.error(LogCategory.CLIENT, _translations.VRhtN9SF || (_translations.VRhtN9SF = tr("Failed to add ban: %o")), error); - if (error instanceof CommandResult) - error = error.id === ErrorID.PERMISSION_ERROR ? "no permissions" : error.extra_message || error.message; - createErrorModal(_translations.zu2R85Jy || (_translations.zu2R85Jy = tr("Failed to add ban")), MessageHelper.formatMessage(_translations.iG8KyFbG || (_translations.iG8KyFbG = tr("Failed to add ban. {:br:}Error: {}")), error)).open(); - }); - }); - } - /* the banlist filter */ - { - const input_filter = container_ban.find(".container-filter input").on('change keyup', () => update_ban_filter()); - const option_show_own = container_ban.find(".option-show-own").on('change keyup', () => update_ban_filter()); - const option_hightlight_own = container_ban.find(".option-highlight-own").on('change keyup', () => update_ban_filter()); - update_ban_filter = () => { - const text = (input_filter.val() || "").toLowerCase(); - const flag_show_own = option_show_own.prop('checked'); - const flag_hightlight_own = option_hightlight_own.prop('checked'); - let count = 0; - for (const entry of callback_ban_filter) - if (entry(text, flag_show_own, flag_hightlight_own)) - count++; - if (callback_ban_filter.length != 0) { - if (count > 0) - container_ban_entries_empty.hide(); - else - container_ban_entries_empty.show().find("a").text(_translations.mM6I4PAT || (_translations.mM6I4PAT = tr("No bans found"))); - } - }; - } - /* the trigger list filter */ - { - const input_filter = container_trigger.find(".container-filter input").on('change keyup', () => update_trigger_filter()); - const option_hightlight_cause = container_trigger.find(".option-highlight-cause").on('change keyup', () => update_trigger_filter()); - const button_close = container_trigger.find(".container-close"); - update_trigger_filter = () => { - const text = (input_filter.val() || "").toLowerCase(); - let count = 0; - for (const entry of callback_trigger_filter) - if (entry(text)) - count++; - if (callback_trigger_filter.length != 0) { - if (count > 0) - container_trigger_entries_empty.hide(); - else - container_trigger_entries_empty.show().find("a").text(_translations.KT1iYZJ7 || (_translations.KT1iYZJ7 = tr("No trigger events found"))); - } - container_trigger.find(".container-list").toggleClass('highlight', option_hightlight_cause.prop('checked')); - }; - button_close.on('click', () => container_trigger.hide()); - } - template.find(".button-refresh-banlist").on('click', event => update_banlist(selected_ban ? selected_ban.banid : undefined)); - template.find(".button-refresh-triggerlist").on('click', event => update_triggerlist()); - /* initialize */ - category_add.trigger('click'); - update_edit_window(false); - update_banlist(); - tooltip(template); - return template.children(); - } -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["a425129a15439d8284d4458d8207b7cfbe3454239f761f5a81b6d3cfdae013e2"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["a425129a15439d8284d4458d8207b7cfbe3454239f761f5a81b6d3cfdae013e2"] = "a425129a15439d8284d4458d8207b7cfbe3454239f761f5a81b6d3cfdae013e2"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "Zs_7r6YN", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (250,36)" }, { name: "nAZZvi4s", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (252,36)" }, { name: "XGdxflOT", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (254,36)" }, { name: "OLN_TF22", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (276,36)" }, { name: "WZoW8if5", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (278,36)" }, { name: "pvBk1ajE", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (302,45)" }, { name: "Y2HsuYX1", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (304,45)" }, { name: "n34NFanP", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (330,26)" }, { name: "dbxgzCQU", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (330,50)" }, { name: "Ur57HLbf", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (352,26)" }, { name: "f_X73CLe", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (352,57)" }, { name: "kgkM1V3H", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (477,26)" }, { name: "fwl0c4IH", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (477,43)" }, { name: "gTbMD5iW", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (483,37)" }, { name: "VeWm3kcQ", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (483,54)" }, { name: "K906LIA6", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (486,38)" }, { name: "vh_OTXUb", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (486,83)" }, { name: "cowCUjHx", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (492,26)" }, { name: "OJx9INaZ", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (492,49)" }, { name: "AF4Y3IBj", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (502,34)" }, { name: "vPX9C6Hk", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (502,66)" }, { name: "HHWNZCf4", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (513,30)" }, { name: "c6ki08OD", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (513,66)" }, { name: "UFVzWw9i", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (564,47)" }, { name: "FtoXJtTk", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (569,47)" }, { name: "Sqmplp9n", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (626,30)" }, { name: "e3uQNqK1", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (626,66)" }, { name: "uubmt2N7", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (635,30)" }, { name: "cHeIpZbR", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (635,62)" }, { name: "CunPp0Zv", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (643,30)" }, { name: "vHCggytV", path: "D:/TeaSpeak/web/shared/js/ui/frames/ControlBar.ts (643,62)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -/* - client_output_hardware Value: '1' - client_output_muted Value: '0' - client_outputonly_muted Value: '0' - - client_input_hardware Value: '1' - client_input_muted Value: '0' - - client_away Value: '0' - client_away_message Value: '' - */ -let control_bar; /* global variable to access the control bar */ -class ControlBar { - constructor(htmlTag) { - this.htmlTag = htmlTag; - } - initialize_connection_handler_state(handler) { - /* setup the state like the last displayed one */ - handler.client_status.output_muted = this._button_speakers === "muted"; - handler.client_status.input_muted = this._button_microphone === "muted"; - handler.client_status.channel_subscribe_all = this._button_subscribe_all; - handler.client_status.queries_visible = this._button_query_visible; - } - set_connection_handler(handler) { - if (this.connection_handler == handler) - return; - this.connection_handler = handler; - this.apply_server_state(); - this.update_connection_state(); - } - apply_server_state() { - if (!this.connection_handler) - return; - const flag_away = typeof (this.connection_handler.client_status.away) === "string" || this.connection_handler.client_status.away; - if (!flag_away) - this.button_away_active = "online"; - else if (flag_away && this._button_away_active === "online") - this.button_away_active = "away"; - this.button_query_visible = this.connection_handler.client_status.queries_visible; - this.button_subscribe_all = this.connection_handler.client_status.channel_subscribe_all; - this.apply_server_hostbutton(); - this.apply_server_voice_state(); - } - apply_server_hostbutton() { - const server = this.connection_handler.channelTree.server; - if (server && server.properties.virtualserver_hostbutton_gfx_url) { - this._button_hostbanner - .attr("title", server.properties.virtualserver_hostbutton_tooltip || server.properties.virtualserver_hostbutton_gfx_url) - .attr("href", server.properties.virtualserver_hostbutton_url); - this._button_hostbanner.find("img").attr("src", server.properties.virtualserver_hostbutton_gfx_url); - this._button_hostbanner.each((_, e) => { e.style.display = null; }); - } - else { - this._button_hostbanner.each((_, e) => { e.style.display = "none"; }); - } - } - apply_server_voice_state() { - if (!this.connection_handler) - return; - this.button_microphone = !this.connection_handler.client_status.input_hardware ? "disabled" : this.connection_handler.client_status.input_muted ? "muted" : "enabled"; - this.button_speaker = this.connection_handler.client_status.output_muted ? "muted" : "enabled"; - top_menu.update_state(); //TODO: Only run "small" update? - } - current_connection_handler() { - return this.connection_handler; - } - initialise() { - let dropdownify = (tag) => { - tag.find(".dropdown-arrow").on('click', () => { - tag.addClass("displayed"); - }).hover(() => { - tag.addClass("displayed"); - }, () => { - if (tag.find(".dropdown:hover").length > 0) - return; - tag.removeClass("displayed"); - }); - tag.on('mouseleave', () => { - tag.removeClass("displayed"); - }); - }; - this.htmlTag.find(".btn_connect").on('click', this.on_open_connect.bind(this)); - this.htmlTag.find(".btn_connect_new_tab").on('click', this.on_open_connect_new_tab.bind(this)); - this.htmlTag.find(".btn_disconnect").on('click', this.on_execute_disconnect.bind(this)); - this.htmlTag.find(".btn_mute_input").on('click', this.on_toggle_microphone.bind(this)); - this.htmlTag.find(".btn_mute_output").on('click', this.on_toggle_sound.bind(this)); - this.htmlTag.find(".button-subscribe-mode").on('click', this.on_toggle_channel_subscribe.bind(this)); - this.htmlTag.find(".btn_query_toggle").on('click', this.on_toggle_query_view.bind(this)); - this.htmlTag.find(".btn_open_settings").on('click', this.on_open_settings.bind(this)); - this.htmlTag.find(".btn_permissions").on('click', this.on_open_permissions.bind(this)); - this.htmlTag.find(".btn_banlist").on('click', this.on_open_banslist.bind(this)); - this.htmlTag.find(".button-playlist-manage").on('click', this.on_open_playlist_manage.bind(this)); - this.htmlTag.find(".btn_token_use").on('click', this.on_token_use.bind(this)); - this.htmlTag.find(".btn_token_list").on('click', this.on_token_list.bind(this)); - (this._button_hostbanner = this.htmlTag.find(".button-hostbutton")).hide().on('click', () => { - if (!this.connection_handler) - return; - const server = this.connection_handler.channelTree.server; - if (!server || !server.properties.virtualserver_hostbutton_url) - return; - window.open(server.properties.virtualserver_hostbutton_url, '_blank'); - }); - { - this.htmlTag.find(".btn_away_disable").on('click', this.on_away_disable.bind(this)); - this.htmlTag.find(".btn_away_disable_global").on('click', this.on_away_disable_global.bind(this)); - this.htmlTag.find(".btn_away_enable").on('click', this.on_away_enable.bind(this)); - this.htmlTag.find(".btn_away_enable_global").on('click', this.on_away_enable_global.bind(this)); - this.htmlTag.find(".btn_away_message").on('click', this.on_away_set_message.bind(this)); - this.htmlTag.find(".btn_away_message_global").on('click', this.on_away_set_message_global.bind(this)); - this.htmlTag.find(".btn_away_toggle").on('click', this.on_away_toggle.bind(this)); - } - dropdownify(this.htmlTag.find(".container-connect")); - dropdownify(this.htmlTag.find(".container-disconnect")); - dropdownify(this.htmlTag.find(".btn_token")); - dropdownify(this.htmlTag.find(".btn_away")); - dropdownify(this.htmlTag.find(".btn_bookmark")); - dropdownify(this.htmlTag.find(".btn_query")); - dropdownify(this.htmlTag.find(".dropdown-audio")); - dropdownify(this.htmlTag.find(".dropdown-servertools")); - { - } - { - this.htmlTag.find(".btn_bookmark_list").on('click', this.on_bookmark_manage.bind(this)); - this.htmlTag.find(".btn_bookmark_add").on('click', this.on_bookmark_server_add.bind(this)); - } - { - /* search for query buttons not only on the large device button */ - this.htmlTag.find(".btn_query_create").on('click', this.on_open_query_create.bind(this)); - this.htmlTag.find(".btn_query_manage").on('click', this.on_open_query_manage.bind(this)); - } - this.update_bookmarks(); - this.update_bookmark_status(); - //Need an initialise - this.button_speaker = settings.static_global(Settings.KEY_CONTROL_MUTE_OUTPUT, false) ? "muted" : "enabled"; - this.button_microphone = settings.static_global(Settings.KEY_CONTROL_MUTE_INPUT, false) ? "muted" : "enabled"; - this.button_subscribe_all = true; - this.button_query_visible = false; - } - /* Update the UI */ - set button_away_active(flag) { - if (this._button_away_active === flag) - return; - this._button_away_active = flag; - this.update_button_away(); - } - update_button_away() { - const button_away_enable = this.htmlTag.find(".btn_away_enable"); - const button_away_disable = this.htmlTag.find(".btn_away_disable"); - const button_away_toggle = this.htmlTag.find(".btn_away_toggle"); - const button_away_disable_global = this.htmlTag.find(".btn_away_disable_global"); - const button_away_enable_global = this.htmlTag.find(".btn_away_enable_global"); - const button_away_message_global = this.htmlTag.find(".btn_away_message_global"); - button_away_toggle.toggleClass("activated", this._button_away_active !== "online"); - button_away_enable.toggle(this._button_away_active === "online"); - button_away_disable.toggle(this._button_away_active !== "online"); - const connections = server_connections.server_connection_handlers(); - if (connections.length <= 1) { - button_away_disable_global.hide(); - button_away_enable_global.hide(); - button_away_message_global.hide(); - } - else { - button_away_message_global.show(); - button_away_enable_global.toggle(server_connections.server_connection_handlers().filter(e => !e.client_status.away).length > 0); - button_away_disable_global.toggle(this._button_away_active === "away-global" || - server_connections.server_connection_handlers().filter(e => typeof (e.client_status.away) === "string" || e.client_status.away).length > 0); - } - } - set button_microphone(state) { - if (this._button_microphone === state) - return; - this._button_microphone = state; - let tag = this.htmlTag.find(".btn_mute_input"); - const tag_icon = tag.find(".icon_em, .icon"); - tag.toggleClass('activated', state === "muted"); - /* - tag_icon - .toggleClass('client-input_muted', state === "muted") - .toggleClass('client-capture', state === "enabled") - .toggleClass('client-activate_microphone', state === "disabled"); - */ - tag_icon - .toggleClass('client-input_muted', state !== "disabled") - .toggleClass('client-capture', false) - .toggleClass('client-activate_microphone', state === "disabled"); - if (state === "disabled") - tag_icon.attr('title', _translations.Zs_7r6YN || (_translations.Zs_7r6YN = tr("Enable your microphone on this server"))); - else if (state === "enabled") - tag_icon.attr('title', _translations.nAZZvi4s || (_translations.nAZZvi4s = tr("Mute microphone"))); - else - tag_icon.attr('title', _translations.XGdxflOT || (_translations.XGdxflOT = tr("Unmute microphone"))); - } - set button_speaker(state) { - if (this._button_speakers === state) - return; - this._button_speakers = state; - let tag = this.htmlTag.find(".btn_mute_output"); - const tag_icon = tag.find(".icon_em, .icon"); - tag.toggleClass('activated', state === "muted"); - /* - tag_icon - .toggleClass('client-output_muted', state !== "enabled") - .toggleClass('client-volume', state === "enabled"); - */ - tag_icon - .toggleClass('client-output_muted', true) - .toggleClass('client-volume', false); - if (state === "enabled") - tag_icon.attr('title', _translations.OLN_TF22 || (_translations.OLN_TF22 = tr("Mute sound"))); - else - tag_icon.attr('title', _translations.WZoW8if5 || (_translations.WZoW8if5 = tr("Unmute sound"))); - } - set button_subscribe_all(state) { - if (this._button_subscribe_all === state) - return; - this._button_subscribe_all = state; - this.htmlTag - .find(".button-subscribe-mode") - .toggleClass('activated', this._button_subscribe_all) - .find('.icon_em') - .toggleClass('client-unsubscribe_from_all_channels', !this._button_subscribe_all) - .toggleClass('client-subscribe_to_all_channels', this._button_subscribe_all); - } - set button_query_visible(state) { - if (this._button_query_visible === state) - return; - this._button_query_visible = state; - const button = this.htmlTag.find(".btn_query_toggle"); - button.toggleClass('activated', this._button_query_visible); - if (this._button_query_visible) - button.find(".query-text").text(_translations.pvBk1ajE || (_translations.pvBk1ajE = tr("Hide server queries"))); - else - button.find(".query-text").text(_translations.Y2HsuYX1 || (_translations.Y2HsuYX1 = tr("Show server queries"))); - } - /* UI listener */ - on_away_toggle() { - if (this._button_away_active === "away" || this._button_away_active === "away-global") - this.button_away_active = "online"; - else - this.button_away_active = "away"; - if (this.connection_handler) - this.connection_handler.set_away_status(this._button_away_active !== "online"); - } - on_away_enable() { - this.button_away_active = "away"; - if (this.connection_handler) - this.connection_handler.set_away_status(true); - } - on_away_disable() { - this.button_away_active = "online"; - if (this.connection_handler) - this.connection_handler.set_away_status(false); - } - on_away_set_message() { - createInputModal(_translations.n34NFanP || (_translations.n34NFanP = tr("Set away message")), _translations.dbxgzCQU || (_translations.dbxgzCQU = tr("Please enter your away message")), message => true, message => { - if (typeof (message) === "string") { - this.button_away_active = "away"; - if (this.connection_handler) - this.connection_handler.set_away_status(message); - } - }).open(); - } - on_away_enable_global() { - this.button_away_active = "away-global"; - for (const connection of server_connections.server_connection_handlers()) - connection.set_away_status(true); - } - on_away_disable_global() { - this.button_away_active = "online"; - for (const connection of server_connections.server_connection_handlers()) - connection.set_away_status(false); - } - on_away_set_message_global() { - createInputModal(_translations.Ur57HLbf || (_translations.Ur57HLbf = tr("Set global away message")), _translations.f_X73CLe || (_translations.f_X73CLe = tr("Please enter your global away message")), message => true, message => { - if (typeof (message) === "string") { - this.button_away_active = "away"; - for (const connection of server_connections.server_connection_handlers()) - connection.set_away_status(message); - } - }).open(); - } - on_toggle_microphone() { - if (this._button_microphone === "disabled" || this._button_microphone === "muted") { - this.button_microphone = "enabled"; - sound.manager.play(Sound.MICROPHONE_ACTIVATED); - } - else { - this.button_microphone = "muted"; - sound.manager.play(Sound.MICROPHONE_MUTED); - } - if (this.connection_handler) { - this.connection_handler.client_status.input_muted = this._button_microphone !== "enabled"; - if (!this.connection_handler.client_status.input_hardware) - this.connection_handler.acquire_recorder(default_recorder, true); /* acquire_recorder already updates the voice status */ - else - this.connection_handler.update_voice_status(undefined); - /* just update the last changed value */ - settings.changeGlobal(Settings.KEY_CONTROL_MUTE_INPUT, this.connection_handler.client_status.input_muted); - } - } - on_toggle_sound() { - if (this._button_speakers === "muted") { - this.button_speaker = "enabled"; - sound.manager.play(Sound.SOUND_ACTIVATED); - } - else { - this.button_speaker = "muted"; - sound.manager.play(Sound.SOUND_MUTED); - } - if (this.connection_handler) { - this.connection_handler.client_status.output_muted = this._button_speakers !== "enabled"; - this.connection_handler.update_voice_status(undefined); - /* just update the last changed value */ - settings.changeGlobal(Settings.KEY_CONTROL_MUTE_OUTPUT, this.connection_handler.client_status.output_muted); - } - } - on_toggle_channel_subscribe() { - this.button_subscribe_all = !this._button_subscribe_all; - if (this.connection_handler) { - this.connection_handler.client_status.channel_subscribe_all = this._button_subscribe_all; - if (this._button_subscribe_all) - this.connection_handler.channelTree.subscribe_all_channels(); - else - this.connection_handler.channelTree.unsubscribe_all_channels(true); - this.connection_handler.settings.changeServer(Settings.KEY_CONTROL_CHANNEL_SUBSCRIBE_ALL, this._button_subscribe_all); - } - } - on_toggle_query_view() { - this.button_query_visible = !this._button_query_visible; - if (this.connection_handler) { - this.connection_handler.client_status.queries_visible = this._button_query_visible; - this.connection_handler.channelTree.toggle_server_queries(this._button_query_visible); - this.connection_handler.settings.changeServer(Settings.KEY_CONTROL_SHOW_QUERIES, this._button_subscribe_all); - } - } - on_open_settings() { - Modals.spawnSettingsModal(); - } - on_open_connect() { - if (this.connection_handler) - this.connection_handler.cancel_reconnect(true); - Modals.spawnConnectModal({}, { - url: "ts.TeaSpeak.de", - enforce: false - }); - } - on_open_connect_new_tab() { - Modals.spawnConnectModal({ - default_connect_new_tab: true - }, { - url: "ts.TeaSpeak.de", - enforce: false - }); - } - update_connection_state() { - if (this.connection_handler.serverConnection && this.connection_handler.serverConnection.connected()) { - this.htmlTag.find(".container-disconnect").show(); - this.htmlTag.find(".container-connect").hide(); - } - else { - this.htmlTag.find(".container-disconnect").hide(); - this.htmlTag.find(".container-connect").show(); - } - /* - switch (this.connection_handler.serverConnection ? this.connection_handler.serverConnection.connected() : ConnectionState.UNCONNECTED) { - case ConnectionState.CONNECTED: - case ConnectionState.CONNECTING: - case ConnectionState.INITIALISING: - this.htmlTag.find(".container-disconnect").show(); - this.htmlTag.find(".container-connect").hide(); - break; - default: - this.htmlTag.find(".container-disconnect").hide(); - this.htmlTag.find(".container-connect").show(); - } - */ - } - on_execute_disconnect() { - this.connection_handler.cancel_reconnect(true); - this.connection_handler.handleDisconnect(DisconnectReason.REQUESTED); //TODO message? - this.update_connection_state(); - this.connection_handler.sound.play(Sound.CONNECTION_DISCONNECTED); - this.connection_handler.log.log(log.server.Type.DISCONNECTED, {}); - } - on_token_use() { - createInputModal(_translations.kgkM1V3H || (_translations.kgkM1V3H = tr("Use token")), _translations.fwl0c4IH || (_translations.fwl0c4IH = tr("Please enter your token/privilege key")), message => message.length > 0, result => { - if (!result) - return; - if (this.connection_handler.serverConnection.connected) - this.connection_handler.serverConnection.send_command("tokenuse", { - token: result - }).then(() => { - createInfoModal(_translations.gTbMD5iW || (_translations.gTbMD5iW = tr("Use token")), _translations.VeWm3kcQ || (_translations.VeWm3kcQ = tr("Toke successfully used!"))).open(); - }).catch(error => { - //TODO tr - createErrorModal(_translations.K906LIA6 || (_translations.K906LIA6 = tr("Use token")), MessageHelper.formatMessage(_translations.vh_OTXUb || (_translations.vh_OTXUb = tr("Failed to use token: {}")), error instanceof CommandResult ? error.message : error)).open(); - }); - }).open(); - } - on_token_list() { - createErrorModal(_translations.cowCUjHx || (_translations.cowCUjHx = tr("Not implemented")), _translations.OJx9INaZ || (_translations.OJx9INaZ = tr("Token list is not implemented yet!"))).open(); - } - on_open_permissions() { - let button = this.htmlTag.find(".btn_permissions"); - button.addClass("activated"); - setTimeout(() => { - if (this.connection_handler) - Modals.spawnPermissionEdit(this.connection_handler).open(); - else - createErrorModal(_translations.AF4Y3IBj || (_translations.AF4Y3IBj = tr("You have to be connected")), _translations.vPX9C6Hk || (_translations.vPX9C6Hk = tr("You have to be connected!"))).open(); - button.removeClass("activated"); - }, 0); - } - on_open_banslist() { - if (!this.connection_handler.serverConnection) - return; - if (this.connection_handler.permissions.neededPermission(PermissionType.B_CLIENT_BAN_LIST).granted(1)) { - Modals.openBanList(this.connection_handler); - } - else { - createErrorModal(_translations.HHWNZCf4 || (_translations.HHWNZCf4 = tr("You dont have the permission")), _translations.c6ki08OD || (_translations.c6ki08OD = tr("You dont have the permission to view the ban list"))).open(); - this.connection_handler.sound.play(Sound.ERROR_INSUFFICIENT_PERMISSIONS); - } - } - on_bookmark_server_add() { - bookmarks.add_current_server(); - } - update_bookmark_status() { - this.htmlTag.find(".btn_bookmark_add").removeClass("hidden").addClass("disabled"); - this.htmlTag.find(".btn_bookmark_remove").addClass("hidden"); - } - update_bookmarks() { - // - let tag_bookmark = this.htmlTag.find(".btn_bookmark > .dropdown"); - tag_bookmark.find(".bookmark, .directory").remove(); - const build_entry = (bookmark) => { - if (bookmark.type == bookmarks.BookmarkType.ENTRY) { - const mark = bookmark; - const bookmark_connect = (new_tab) => { - this.htmlTag.find(".btn_bookmark").find(".dropdown").removeClass("displayed"); //FIXME Not working - bookmarks.boorkmak_connect(mark, new_tab); - }; - return $.spawn("div") - .addClass("bookmark") - .append( - //$.spawn("div").addClass("icon client-server") - IconManager.generate_tag(IconManager.load_cached_icon(mark.last_icon_id || 0), { animate: false }) /* must be false */) - .append($.spawn("div") - .addClass("name") - .text(bookmark.display_name) - .on('click', event => { - if (event.isDefaultPrevented()) - return; - bookmark_connect(false); - }) - .on('contextmenu', event => { - if (event.isDefaultPrevented()) - return; - event.preventDefault(); - contextmenu.spawn_context_menu(event.pageX, event.pageY, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.UFVzWw9i || (_translations.UFVzWw9i = tr("Connect")), - icon_class: 'client-connect', - callback: () => bookmark_connect(false) - }, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.FtoXJtTk || (_translations.FtoXJtTk = tr("Connect in a new tab")), - icon_class: 'client-connect', - callback: () => bookmark_connect(true), - visible: !settings.static_global(Settings.KEY_DISABLE_MULTI_SESSION) - }, contextmenu.Entry.CLOSE(() => { - setTimeout(() => { - this.htmlTag.find(".btn_bookmark.dropdown-arrow").removeClass("force-show"); - }, 250); - })); - this.htmlTag.find(".btn_bookmark.dropdown-arrow").addClass("force-show"); - })); - } - else { - const mark = bookmark; - const container = $.spawn("div").addClass("sub-menu dropdown"); - const result = $.spawn("div") - .addClass("directory") - .append($.spawn("div").addClass("icon client-folder")) - .append($.spawn("div") - .addClass("name") - .text(bookmark.display_name)) - .append($.spawn("div").addClass("arrow right")) - .append($.spawn("div").addClass("sub-container") - .append(container)); - /* we've to keep it this order because we're then keeping the reference of the loading icons... */ - for (const member of mark.content) - container.append(build_entry(member)); - return result; - } - }; - for (const bookmark of bookmarks.bookmarks().content) { - const entry = build_entry(bookmark); - tag_bookmark.append(entry); - } - } - on_bookmark_manage() { - Modals.spawnBookmarkModal(); - } - on_open_query_create() { - if (this.connection_handler.permissions.neededPermission(PermissionType.B_CLIENT_CREATE_MODIFY_SERVERQUERY_LOGIN).granted(1)) { - Modals.spawnQueryCreate(this.connection_handler); - } - else { - createErrorModal(_translations.Sqmplp9n || (_translations.Sqmplp9n = tr("You dont have the permission")), _translations.e3uQNqK1 || (_translations.e3uQNqK1 = tr("You dont have the permission to create a server query login"))).open(); - this.connection_handler.sound.play(Sound.ERROR_INSUFFICIENT_PERMISSIONS); - } - } - on_open_query_manage() { - if (this.connection_handler && this.connection_handler.connected) { - Modals.spawnQueryManage(this.connection_handler); - } - else { - createErrorModal(_translations.uubmt2N7 || (_translations.uubmt2N7 = tr("You have to be connected")), _translations.cHeIpZbR || (_translations.cHeIpZbR = tr("You have to be connected!"))).open(); - } - } - on_open_playlist_manage() { - if (this.connection_handler && this.connection_handler.connected) { - Modals.spawnPlaylistManage(this.connection_handler); - } - else { - createErrorModal(_translations.CunPp0Zv || (_translations.CunPp0Zv = tr("You have to be connected")), _translations.vHCggytV || (_translations.vHCggytV = tr("You have to be connected to use this function!"))).open(); - } - } -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["197b7bafaa38d18270b5766fa93a5f6ad2093450fd9dc6608670cc211a33712d"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["197b7bafaa38d18270b5766fa93a5f6ad2093450fd9dc6608670cc211a33712d"] = "197b7bafaa38d18270b5766fa93a5f6ad2093450fd9dc6608670cc211a33712d"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "ZUXymrm7", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (161,31)" }, { name: "T1UFxXzN", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (173,27)" }, { name: "HS4rmli5", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (194,38)" }, { name: "kOLFxw_8", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (212,47)" }, { name: "zi0vuWHk", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (213,34)" }, { name: "slvMdYzx", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (213,70)" }, { name: "n8ME6kUb", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (280,38)" }, { name: "YBuSiAT5", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (354,39)" }, { name: "MQsgbKfE", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (377,51)" }, { name: "hTv3H6ip", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (394,51)" }, { name: "Wcp4Jl2M", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (412,27)" }, { name: "RjYBRqhz", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (425,47)" }, { name: "TTZmhO6X", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (438,51)" }, { name: "UvN4ZYoz", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (440,51)" }, { name: "yKOp1KDQ", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (444,25)" }, { name: "BAtStX1r", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (445,25)" }, { name: "EaTMLkfC", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (454,25)" }, { name: "YWdTGt0C", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (464,47)" }, { name: "os_PbxTh", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (466,21)" }, { name: "mWEfrIGh", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (467,21)" }, { name: "sKz9M0J1", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (472,21)" }, { name: "QmW2FhnQ", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (473,49)" }, { name: "c82V0qqg", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (480,21)" }, { name: "vIrDdie6", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (481,49)" }, { name: "DPauFd4a", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (488,47)" }, { name: "tPvfpJri", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (491,25)" }, { name: "yAUGk0u6", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (492,25)" }, { name: "XM3HFZtb", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (500,47)" }, { name: "SPp3hxky", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (503,21)" }, { name: "Ez6pR12l", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (504,21)" }, { name: "oeX7ep3Y", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (512,21)" }, { name: "qlxKgog8", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (523,34)" }, { name: "QTjxbWyV", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (523,57)" }, { name: "GL3SU8Zv", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (542,21)" }, { name: "L6t34lZs", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (544,40)" }, { name: "zo49e7He", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (544,100)" }, { name: "eTgdGWXl", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (575,47)" }, { name: "m_2kmrli", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (576,47)" }, { name: "gthobtoh", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (592,50)" }, { name: "OfYIEKF3", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (597,46)" }, { name: "mgD_hUkm", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (604,50)" }, { name: "E6Pxj7O_", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (667,51)" }, { name: "myFdKome", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (668,74)" }, { name: "yhxSmGy4", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (690,31)" }, { name: "FhG1RYUu", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (692,31)" }, { name: "tl9gg03_", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (694,31)" }, { name: "H8fSS_0Z", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (696,38)" }, { name: "IU0hK4NF", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (716,57)" }, { name: "Ak0MoTq5", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (719,50)" }, { name: "CdNixUn2", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (719,111)" }, { name: "ifNLFsmx", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (743,47)" }, { name: "ZAcARduu", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (744,70)" }, { name: "j356bpkL", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (763,43)" }, { name: "Hquv820o", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (764,66)" }, { name: "Nhi8Zrg7", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (778,41)" }, { name: "kwfqGPH6", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (805,46)" }, { name: "N3fwN_XS", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (811,37)" }, { name: "dWko40aF", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (811,59)" }, { name: "_o7eTDux", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (813,52)" }, { name: "q6MV9BJ6", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (817,63)" }, { name: "l2z4u5iq", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (819,63)" }, { name: "SERPbLsV", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (820,38)" }, { name: "Uwwz13se", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (824,46)" }, { name: "p6ktJjDH", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (837,56)" }, { name: "DpzOU8kx", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (843,71)" }, { name: "GSHnaSaC", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (845,71)" }, { name: "HuAordM2", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (849,67)" }, { name: "SqHGgSbh", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (850,42)" }, { name: "cCwgYPgQ", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (857,56)" }, { name: "Jkzl_W58", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (861,67)" }, { name: "HfLNjuHd", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (864,67)" }, { name: "b_WF3dmV", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (865,42)" }, { name: "PkrE3ZLe", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (873,56)" }, { name: "Yw4Xjm9C", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (877,67)" }, { name: "ZNppOyOZ", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (879,67)" }, { name: "n1Io657i", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (880,42)" }, { name: "dVyA2a02", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (884,37)" }, { name: "Wrvy2Obl", path: "D:/TeaSpeak/web/shared/js/ConnectionHandler.ts (884,73)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -/// -/// -/// -/// -/// -/// -var DisconnectReason; -(function (DisconnectReason) { - DisconnectReason[DisconnectReason["HANDLER_DESTROYED"] = 0] = "HANDLER_DESTROYED"; - DisconnectReason[DisconnectReason["REQUESTED"] = 1] = "REQUESTED"; - DisconnectReason[DisconnectReason["DNS_FAILED"] = 2] = "DNS_FAILED"; - DisconnectReason[DisconnectReason["CONNECT_FAILURE"] = 3] = "CONNECT_FAILURE"; - DisconnectReason[DisconnectReason["CONNECTION_CLOSED"] = 4] = "CONNECTION_CLOSED"; - DisconnectReason[DisconnectReason["CONNECTION_FATAL_ERROR"] = 5] = "CONNECTION_FATAL_ERROR"; - DisconnectReason[DisconnectReason["CONNECTION_PING_TIMEOUT"] = 6] = "CONNECTION_PING_TIMEOUT"; - DisconnectReason[DisconnectReason["CLIENT_KICKED"] = 7] = "CLIENT_KICKED"; - DisconnectReason[DisconnectReason["CLIENT_BANNED"] = 8] = "CLIENT_BANNED"; - DisconnectReason[DisconnectReason["HANDSHAKE_FAILED"] = 9] = "HANDSHAKE_FAILED"; - DisconnectReason[DisconnectReason["HANDSHAKE_TEAMSPEAK_REQUIRED"] = 10] = "HANDSHAKE_TEAMSPEAK_REQUIRED"; - DisconnectReason[DisconnectReason["HANDSHAKE_BANNED"] = 11] = "HANDSHAKE_BANNED"; - DisconnectReason[DisconnectReason["SERVER_CLOSED"] = 12] = "SERVER_CLOSED"; - DisconnectReason[DisconnectReason["SERVER_REQUIRES_PASSWORD"] = 13] = "SERVER_REQUIRES_PASSWORD"; - DisconnectReason[DisconnectReason["SERVER_HOSTMESSAGE"] = 14] = "SERVER_HOSTMESSAGE"; - DisconnectReason[DisconnectReason["IDENTITY_TOO_LOW"] = 15] = "IDENTITY_TOO_LOW"; - DisconnectReason[DisconnectReason["UNKNOWN"] = 16] = "UNKNOWN"; -})(DisconnectReason || (DisconnectReason = {})); -var ConnectionState; -(function (ConnectionState) { - ConnectionState[ConnectionState["UNCONNECTED"] = 0] = "UNCONNECTED"; - ConnectionState[ConnectionState["CONNECTING"] = 1] = "CONNECTING"; - ConnectionState[ConnectionState["INITIALISING"] = 2] = "INITIALISING"; - ConnectionState[ConnectionState["CONNECTED"] = 3] = "CONNECTED"; - ConnectionState[ConnectionState["DISCONNECTING"] = 4] = "DISCONNECTING"; -})(ConnectionState || (ConnectionState = {})); -var ViewReasonId; -(function (ViewReasonId) { - ViewReasonId[ViewReasonId["VREASON_USER_ACTION"] = 0] = "VREASON_USER_ACTION"; - ViewReasonId[ViewReasonId["VREASON_MOVED"] = 1] = "VREASON_MOVED"; - ViewReasonId[ViewReasonId["VREASON_SYSTEM"] = 2] = "VREASON_SYSTEM"; - ViewReasonId[ViewReasonId["VREASON_TIMEOUT"] = 3] = "VREASON_TIMEOUT"; - ViewReasonId[ViewReasonId["VREASON_CHANNEL_KICK"] = 4] = "VREASON_CHANNEL_KICK"; - ViewReasonId[ViewReasonId["VREASON_SERVER_KICK"] = 5] = "VREASON_SERVER_KICK"; - ViewReasonId[ViewReasonId["VREASON_BAN"] = 6] = "VREASON_BAN"; - ViewReasonId[ViewReasonId["VREASON_SERVER_STOPPED"] = 7] = "VREASON_SERVER_STOPPED"; - ViewReasonId[ViewReasonId["VREASON_SERVER_LEFT"] = 8] = "VREASON_SERVER_LEFT"; - ViewReasonId[ViewReasonId["VREASON_CHANNEL_UPDATED"] = 9] = "VREASON_CHANNEL_UPDATED"; - ViewReasonId[ViewReasonId["VREASON_EDITED"] = 10] = "VREASON_EDITED"; - ViewReasonId[ViewReasonId["VREASON_SERVER_SHUTDOWN"] = 11] = "VREASON_SERVER_SHUTDOWN"; -})(ViewReasonId || (ViewReasonId = {})); -class ConnectionHandler { - constructor() { - this._clientId = 0; - this._reconnect_attempt = false; - this._connect_initialize_id = 1; - this.client_status = { - input_hardware: false, - input_muted: false, - output_muted: false, - away: false, - channel_subscribe_all: true, - queries_visible: false, - sound_playback_supported: undefined, - sound_record_supported: undefined, - channel_codec_encoding_supported: undefined, - channel_codec_decoding_supported: undefined - }; - this.invoke_resized_on_activate = false; - this.settings = new ServerSettings(); - this.log = new log.ServerLog(this); - this.channelTree = new ChannelTree(this); - this.side_bar = new chat.Frame(this); - this.sound = new sound.SoundManager(this); - this.hostbanner = new Hostbanner(this); - this.serverConnection = connection.spawn_server_connection(this); - this.serverConnection.onconnectionstatechanged = this.on_connection_state_changed.bind(this); - this.fileManager = new FileManager(this); - this.permissions = new PermissionManager(this); - this.side_bar.channel_conversations().initialize_needed_listener(); - this.groups = new GroupManager(this); - this._local_client = new LocalClientEntry(this); - /* initialize connection handler tab entry */ - { - this.tag_connection_handler = $.spawn("div").addClass("connection-container"); - $.spawn("div").addClass("server-icon icon client-server_green").appendTo(this.tag_connection_handler); - $.spawn("div").addClass("server-name").appendTo(this.tag_connection_handler); - $.spawn("div").addClass("button-close icon client-tab_close_button").appendTo(this.tag_connection_handler); - this.tag_connection_handler.on('click', event => { - if (event.isDefaultPrevented()) - return; - server_connections.set_active_connection_handler(this); - }); - this.tag_connection_handler.find(".button-close").on('click', event => { - server_connections.destroy_server_connection_handler(this); - event.preventDefault(); - }); - this.tab_set_name(_translations.ZUXymrm7 || (_translations.ZUXymrm7 = tr("Not connected"))); - } - } - tab_set_name(name) { - this.tag_connection_handler.toggleClass('cutoff-name', name.length > 30); - this.tag_connection_handler.find(".server-name").text(name); - } - setup() { } - startConnection(addr, profile, user_action, parameters) { - return __awaiter(this, void 0, void 0, function* () { - this.tab_set_name(_translations.T1UFxXzN || (_translations.T1UFxXzN = tr("Connecting"))); - this.cancel_reconnect(false); - this._reconnect_attempt = parameters.auto_reconnect_attempt || false; - if (this.serverConnection) - this.handleDisconnect(DisconnectReason.REQUESTED); - let server_address = { - host: "", - port: -1 - }; - { - let _v6_end = addr.indexOf(']'); - let idx = addr.lastIndexOf(':'); - if (idx != -1 && idx > _v6_end) { - server_address.port = parseInt(addr.substr(idx + 1)); - server_address.host = addr.substr(0, idx); - } - else { - server_address.host = addr; - server_address.port = 9987; - } - } - log.info(LogCategory.CLIENT, _translations.HS4rmli5 || (_translations.HS4rmli5 = tr("Start connection to %s:%d")), server_address.host, server_address.port); - this.log.log(log.server.Type.CONNECTION_BEGIN, { - address: { - server_hostname: server_address.host, - server_port: server_address.port - }, - client_nickname: parameters.nickname - }); - this.channelTree.initialiseHead(addr, server_address); - if (parameters.password && !parameters.password.hashed) { - try { - const password = yield helpers.hashPassword(parameters.password.password); - parameters.password = { - hashed: true, - password: password - }; - } - catch (error) { - log.error(LogCategory.CLIENT, _translations.kOLFxw_8 || (_translations.kOLFxw_8 = tr("Failed to hash connect password: %o")), error); - createErrorModal(_translations.zi0vuWHk || (_translations.zi0vuWHk = tr("Error while hashing password")), (_translations.slvMdYzx || (_translations.slvMdYzx = tr("Failed to hash server password!
"))) + error).open(); - } - } - if (parameters.password) { - connection_log.update_address_password({ - hostname: server_address.host, - port: server_address.port - }, parameters.password.password); - } - const original_address = { host: server_address.host, port: server_address.port }; - if (dns.supported() && !server_address.host.match(Modals.Regex.IP_V4) && !server_address.host.match(Modals.Regex.IP_V6)) { - const id = ++this._connect_initialize_id; - this.log.log(log.server.Type.CONNECTION_HOSTNAME_RESOLVE, {}); - try { - const resolved = (yield dns.resolve_address(server_address, { timeout: 5000 })) || {}; - if (id != this._connect_initialize_id) - return; /* we're old */ - server_address.host = typeof (resolved.target_ip) === "string" ? resolved.target_ip : server_address.host; - server_address.port = typeof (resolved.target_port) === "number" ? resolved.target_port : server_address.port; - this.log.log(log.server.Type.CONNECTION_HOSTNAME_RESOLVED, { - address: { - server_port: server_address.port, - server_hostname: server_address.host - } - }); - } - catch (error) { - if (id != this._connect_initialize_id) - return; /* we're old */ - this.handleDisconnect(DisconnectReason.DNS_FAILED, error); - } - } - yield this.serverConnection.connect(server_address, new connection.HandshakeHandler(profile, parameters)); - setTimeout(() => { - const connected = this.serverConnection.connected(); - if (user_action && connected) { - connection_log.log_connect({ - hostname: original_address.host, - port: original_address.port - }); - } - }, 50); - }); - } - getClient() { return this._local_client; } - getClientId() { return this._clientId; } - set clientId(id) { - this._clientId = id; - this._local_client["_clientId"] = id; - } - get clientId() { - return this._clientId; - } - getServerConnection() { return this.serverConnection; } - /** - * LISTENER - */ - onConnected() { - log.info(LogCategory.CLIENT, _translations.n8ME6kUb || (_translations.n8ME6kUb = tr("Client connected"))); - this.permissions.requestPermissionList(); - if (this.groups.serverGroups.length == 0) - this.groups.requestGroups(); - this.initialize_server_settings(); - /* apply the server settings */ - if (this.client_status.channel_subscribe_all) - this.channelTree.subscribe_all_channels(); - else - this.channelTree.unsubscribe_all_channels(); - this.channelTree.toggle_server_queries(this.client_status.queries_visible); - this.sync_status_with_server(); - this.channelTree.server.updateProperties(); - /* - No need to update the voice stuff because as soon we see ourself we're doing it - this.update_voice_status(); - if(control_bar.current_connection_handler() === this) - control_bar.apply_server_voice_state(); - */ - } - initialize_server_settings() { - let update_control = false; - this.settings.setServer(this.channelTree.server.properties.virtualserver_unique_identifier); - { - const flag_subscribe = this.settings.server(Settings.KEY_CONTROL_CHANNEL_SUBSCRIBE_ALL, true); - if (this.client_status.channel_subscribe_all != flag_subscribe) { - this.client_status.channel_subscribe_all = flag_subscribe; - update_control = true; - } - } - { - const flag_query = this.settings.server(Settings.KEY_CONTROL_SHOW_QUERIES, false); - if (this.client_status.queries_visible != flag_query) { - this.client_status.queries_visible = flag_query; - update_control = true; - } - } - if (update_control && server_connections.active_connection_handler() === this) { - control_bar.apply_server_state(); - } - } - get connected() { - return this.serverConnection && this.serverConnection.connected(); - } - generate_ssl_certificate_accept() { - const properties = { - connect_default: true, - connect_profile: this.serverConnection.handshake_handler().profile.id, - connect_address: this.serverConnection.remote_address().host + (this.serverConnection.remote_address().port !== 9987 ? ":" + this.serverConnection.remote_address().port : "") - }; - const build_url = (base, search, props) => { - const parameters = []; - for (const key of Object.keys(props)) - parameters.push(key + "=" + encodeURIComponent(props[key])); - let callback = base + search; /* don't use document.URL because it may contains a #! */ - if (!search) - callback += "?" + parameters.join("&"); - else - callback += "&" + parameters.join("&"); - return "https://" + this.serverConnection.remote_address().host + ":" + this.serverConnection.remote_address().port + "/?forward_url=" + encodeURIComponent(callback); - }; - /* generate the tag */ - const tag = $.spawn("a").text(_translations.YBuSiAT5 || (_translations.YBuSiAT5 = tr("here"))); - let pathname = document.location.pathname; - if (pathname.endsWith(".php")) - pathname = pathname.substring(0, pathname.lastIndexOf("/")); - if (bipc.supported()) { - tag.attr('href', "#"); - let popup; - tag.on('click', event => { - const features = { - status: "no", - location: "no", - toolbar: "no", - menubar: "no", - width: 600, - height: 400 - }; - if (popup) - popup.close(); - properties["certificate_callback"] = bipc.get_handler().register_certificate_accept_callback(() => { - log.info(LogCategory.GENERAL, _translations.MQsgbKfE || (_translations.MQsgbKfE = tr("Received notification that the certificate has been accepted! Attempting reconnect!"))); - if (this._certificate_modal) - this._certificate_modal.close(); - popup.close(); /* no need, but nicer */ - const profile = profiles.find_profile(properties.connect_profile) || profiles.default_profile(); - const cprops = this.reconnect_properties(profile); - this.startConnection(properties.connect_address, profile, true, cprops); - }); - const url = build_url(document.location.origin + pathname + "/popup/certaccept/", "", properties); - const features_string = [...Object.keys(features)].map(e => e + "=" + features[e]).reduce((a, b) => a + "," + b); - popup = window.open(url, "TeaWeb certificate accept", features_string); - try { - popup.focus(); - } - catch (e) { - log.warn(LogCategory.GENERAL, _translations.hTv3H6ip || (_translations.hTv3H6ip = tr("Certificate accept popup has been blocked. Trying a blank page and replacing href"))); - window.open(url, "TeaWeb certificate accept"); /* trying without features */ - tag.attr("target", "_blank"); - tag.attr("href", url); - tag.unbind('click'); - } - }); - } - else { - tag.attr('href', build_url(document.location.origin + pathname, document.location.search, properties)); - } - return tag; - } - handleDisconnect(type, data = {}) { - this._connect_initialize_id++; - this.tab_set_name(_translations.Wcp4Jl2M || (_translations.Wcp4Jl2M = tr("Not connected"))); - let auto_reconnect = false; - switch (type) { - case DisconnectReason.REQUESTED: - case DisconnectReason.SERVER_HOSTMESSAGE: /* already handled */ - break; - case DisconnectReason.HANDLER_DESTROYED: - if (data) { - this.sound.play(Sound.CONNECTION_DISCONNECTED); - this.log.log(log.server.Type.DISCONNECTED, {}); - } - break; - case DisconnectReason.DNS_FAILED: - log.error(LogCategory.CLIENT, _translations.RjYBRqhz || (_translations.RjYBRqhz = tr("Failed to resolve hostname: %o")), data); - this.log.log(log.server.Type.CONNECTION_HOSTNAME_RESOLVE_ERROR, { - message: data - }); - this.sound.play(Sound.CONNECTION_REFUSED); - break; - case DisconnectReason.CONNECT_FAILURE: - if (this._reconnect_attempt) { - auto_reconnect = true; - this.log.log(log.server.Type.CONNECTION_FAILED, {}); - break; - } - if (data) - log.error(LogCategory.CLIENT, _translations.TTZmhO6X || (_translations.TTZmhO6X = tr("Could not connect to remote host! Extra data: %o")), data); - else - log.error(LogCategory.CLIENT, _translations.UvN4ZYoz || (_translations.UvN4ZYoz = tr("Could not connect to remote host!")), data); - if (native_client) { - createErrorModal(_translations.yKOp1KDQ || (_translations.yKOp1KDQ = tr("Could not connect")), _translations.BAtStX1r || (_translations.BAtStX1r = tr("Could not connect to remote host (Connection refused)"))).open(); - } - else { - const error_message_format = "Could not connect to remote host (Connection refused)\n" + - "If you're sure that the remote host is up, than you may not allow unsigned certificates.\n" + - "Click {0} to accept the remote certificate"; - this._certificate_modal = createErrorModal(_translations.EaTMLkfC || (_translations.EaTMLkfC = tr("Could not connect")), MessageHelper.formatMessage(tr(error_message_format), this.generate_ssl_certificate_accept())); - this._certificate_modal.close_listener.push(() => this._certificate_modal = undefined); - this._certificate_modal.open(); - } - this.sound.play(Sound.CONNECTION_REFUSED); - break; - case DisconnectReason.HANDSHAKE_FAILED: - //TODO sound - log.error(LogCategory.CLIENT, _translations.YWdTGt0C || (_translations.YWdTGt0C = tr("Failed to process handshake: %o")), data); - createErrorModal(_translations.os_PbxTh || (_translations.os_PbxTh = tr("Could not connect")), (_translations.mWEfrIGh || (_translations.mWEfrIGh = tr("Failed to process handshake: "))) + data).open(); - break; - case DisconnectReason.HANDSHAKE_TEAMSPEAK_REQUIRED: - createErrorModal(_translations.sKz9M0J1 || (_translations.sKz9M0J1 = tr("Target server is a TeamSpeak server")), MessageHelper.formatMessage(_translations.QmW2FhnQ || (_translations.QmW2FhnQ = tr("The target server is a TeamSpeak 3 server!{:br:}Only TeamSpeak 3 based identities are able to connect.{:br:}Please select another profile or change the identify type.")))).open(); - this.sound.play(Sound.CONNECTION_DISCONNECTED); - auto_reconnect = false; - break; - case DisconnectReason.IDENTITY_TOO_LOW: - createErrorModal(_translations.c82V0qqg || (_translations.c82V0qqg = tr("Identity level is too low")), MessageHelper.formatMessage(_translations.vIrDdie6 || (_translations.vIrDdie6 = tr("You've been disconnected, because your Identity level is too low.{:br:}You need at least a level of {0}")), data["extra_message"])).open(); - this.sound.play(Sound.CONNECTION_DISCONNECTED); - auto_reconnect = false; - break; - case DisconnectReason.CONNECTION_CLOSED: - log.error(LogCategory.CLIENT, _translations.DPauFd4a || (_translations.DPauFd4a = tr("Lost connection to remote server!"))); - if (!this._reconnect_attempt) { - createErrorModal(_translations.tPvfpJri || (_translations.tPvfpJri = tr("Connection closed")), _translations.yAUGk0u6 || (_translations.yAUGk0u6 = tr("The connection was closed by remote host"))).open(); - } - this.sound.play(Sound.CONNECTION_DISCONNECTED); - auto_reconnect = true; - break; - case DisconnectReason.CONNECTION_PING_TIMEOUT: - log.error(LogCategory.CLIENT, _translations.XM3HFZtb || (_translations.XM3HFZtb = tr("Connection ping timeout"))); - this.sound.play(Sound.CONNECTION_DISCONNECTED_TIMEOUT); - createErrorModal(_translations.SPp3hxky || (_translations.SPp3hxky = tr("Connection lost")), _translations.Ez6pR12l || (_translations.Ez6pR12l = tr("Lost connection to remote host (Ping timeout)
Even possible?"))).open(); - break; - case DisconnectReason.SERVER_CLOSED: - this.log.log(log.server.Type.SERVER_CLOSED, { message: data.reasonmsg }); - createErrorModal(_translations.oeX7ep3Y || (_translations.oeX7ep3Y = tr("Server closed")), "The server is closed.
" + //TODO tr - "Reason: " + data.reasonmsg).open(); - this.sound.play(Sound.CONNECTION_DISCONNECTED); - auto_reconnect = true; - break; - case DisconnectReason.SERVER_REQUIRES_PASSWORD: - this.log.log(log.server.Type.SERVER_REQUIRES_PASSWORD, {}); - createInputModal(_translations.qlxKgog8 || (_translations.qlxKgog8 = tr("Server password")), _translations.QTjxbWyV || (_translations.QTjxbWyV = tr("Enter server password:")), password => password.length != 0, password => { - if (!(typeof password === "string")) - return; - const profile = this.serverConnection.handshake_handler().profile; - const cprops = this.reconnect_properties(profile); - cprops.password = { password: password, hashed: false }; - connection_log.update_address_info({ - port: this.channelTree.server.remote_address.port, - hostname: this.channelTree.server.remote_address.host - }, { - flag_password: true - }); - this.startConnection(this.channelTree.server.remote_address.host + ":" + this.channelTree.server.remote_address.port, profile, false, cprops); - }).open(); - break; - case DisconnectReason.CLIENT_KICKED: - const have_invoker = typeof (data["invokerid"]) !== "undefined" && parseInt(data["invokerid"]) !== 0; - const modal = createErrorModal(_translations.GL3SU8Zv || (_translations.GL3SU8Zv = tr("You've been kicked")), MessageHelper.formatMessage(have_invoker ? _translations.L6t34lZs || (_translations.L6t34lZs = tr("You've been kicked from the server by {0}:{:br:}{1}")) : _translations.zo49e7He || (_translations.zo49e7He = tr("You've been kicked from the server:{:br:}{1}")), have_invoker ? - htmltags.generate_client_object({ client_id: parseInt(data["invokerid"]), client_unique_id: data["invokeruid"], client_name: data["invokername"] }) : - "", data["extra_message"] || data["reasonmsg"] || "")); - modal.htmlTag.find(".modal-body").addClass("modal-disconnect-kick"); - modal.open(); - this.sound.play(Sound.SERVER_KICKED); - auto_reconnect = false; - break; - case DisconnectReason.HANDSHAKE_BANNED: - //Reason message already printed because of the command error handling - this.sound.play(Sound.CONNECTION_BANNED); - break; - case DisconnectReason.CLIENT_BANNED: - this.log.log(log.server.Type.SERVER_BANNED, { - invoker: { - client_name: data["invokername"], - client_id: parseInt(data["invokerid"]), - client_unique_id: data["invokeruid"] - }, - message: data["reasonmsg"], - time: parseInt(data["time"]) - }); - this.sound.play(Sound.CONNECTION_BANNED); - break; - default: - log.error(LogCategory.CLIENT, _translations.eTgdGWXl || (_translations.eTgdGWXl = tr("Got uncaught disconnect!"))); - log.error(LogCategory.CLIENT, _translations.m_2kmrli || (_translations.m_2kmrli = tr("Type: %o Data: %o")), type, data); - break; - } - this.channelTree.unregisterClient(this._local_client); /* if we dont unregister our client here the client will be destroyed */ - this.channelTree.reset(); - if (this.serverConnection) - this.serverConnection.disconnect(); - if (control_bar.current_connection_handler() == this) - control_bar.update_connection_state(); - this.side_bar.private_conversations().clear_client_ids(); - this.hostbanner.update(); - if (auto_reconnect) { - if (!this.serverConnection) { - log.info(LogCategory.NETWORKING, _translations.gthobtoh || (_translations.gthobtoh = tr("Allowed to auto reconnect but cant reconnect because we dont have any information left..."))); - return; - } - this.log.log(log.server.Type.RECONNECT_SCHEDULED, { timeout: 5000 }); - log.info(LogCategory.NETWORKING, _translations.OfYIEKF3 || (_translations.OfYIEKF3 = tr("Allowed to auto reconnect. Reconnecting in 5000ms"))); - const server_address = this.serverConnection.remote_address(); - const profile = this.serverConnection.handshake_handler().profile; - this._reconnect_timer = setTimeout(() => { - this._reconnect_timer = undefined; - this.log.log(log.server.Type.RECONNECT_EXECUTE, {}); - log.info(LogCategory.NETWORKING, _translations.mgD_hUkm || (_translations.mgD_hUkm = tr("Reconnecting..."))); - this.startConnection(server_address.host + ":" + server_address.port, profile, false, Object.assign(this.reconnect_properties(profile), { auto_reconnect_attempt: true })); - }, 5000); - } - } - cancel_reconnect(log_event) { - if (this._reconnect_timer) { - if (log_event) - this.log.log(log.server.Type.RECONNECT_CANCELED, {}); - clearTimeout(this._reconnect_timer); - this._reconnect_timer = undefined; - } - } - on_connection_state_changed() { - if (control_bar.current_connection_handler() == this) - control_bar.update_connection_state(); - } - update_voice_status(targetChannel) { - if (!this._local_client) - return; /* we've been destroyed */ - targetChannel = targetChannel || this.getClient().currentChannel(); - const vconnection = this.serverConnection.voice_connection(); - const basic_voice_support = this.serverConnection.support_voice() && vconnection.connected() && targetChannel; - const support_record = basic_voice_support && (!targetChannel || vconnection.encoding_supported(targetChannel.properties.channel_codec)); - const support_playback = basic_voice_support && (!targetChannel || vconnection.decoding_supported(targetChannel.properties.channel_codec)); - const property_update = { - client_input_muted: this.client_status.input_muted, - client_output_muted: this.client_status.output_muted - }; - if (support_record && basic_voice_support) - vconnection.set_encoder_codec(targetChannel.properties.channel_codec); - if (!this.serverConnection.support_voice() || !this.serverConnection.connected() || !vconnection.connected()) { - property_update["client_input_hardware"] = false; - property_update["client_output_hardware"] = false; - this.client_status.input_hardware = true; /* IDK if we have input hardware or not, but it dosn't matter at all so */ - /* no icons are shown so no update at all */ - } - else { - const audio_source = vconnection.voice_recorder(); - const recording_supported = typeof (audio_source) !== "undefined" && audio_source.record_supported && (!targetChannel || vconnection.encoding_supported(targetChannel.properties.channel_codec)); - const playback_supported = !targetChannel || vconnection.decoding_supported(targetChannel.properties.channel_codec); - property_update["client_input_hardware"] = recording_supported; - property_update["client_output_hardware"] = playback_supported; - this.client_status.input_hardware = recording_supported; - /* update icons */ - const client_properties = this.getClient().properties; - for (const key of Object.keys(property_update)) { - if (client_properties[key] === property_update[key]) - delete property_update[key]; - } - if (Object.keys(property_update).length > 0) { - this.serverConnection.send_command("clientupdate", property_update).catch(error => { - log.warn(LogCategory.GENERAL, _translations.E6Pxj7O_ || (_translations.E6Pxj7O_ = tr("Failed to update client audio hardware properties. Error: %o")), error); - this.log.log(log.server.Type.ERROR_CUSTOM, { message: _translations.myFdKome || (_translations.myFdKome = tr("Failed to update audio hardware properties.")) }); - /* Update these properties anyways (for case the server fails to handle the command) */ - const updates = []; - for (const key of Object.keys(property_update)) - updates.push({ key: key, value: (property_update[key]) + "" }); - this.getClient().updateVariables(...updates); - }); - } - } - if (targetChannel && basic_voice_support) { - const encoding_supported = vconnection && vconnection.encoding_supported(targetChannel.properties.channel_codec); - const decoding_supported = vconnection && vconnection.decoding_supported(targetChannel.properties.channel_codec); - if (this.client_status.channel_codec_decoding_supported !== decoding_supported || this.client_status.channel_codec_encoding_supported !== encoding_supported) { - this.client_status.channel_codec_decoding_supported = decoding_supported; - this.client_status.channel_codec_encoding_supported = encoding_supported; - let message; - if (!encoding_supported && !decoding_supported) - message = _translations.yhxSmGy4 || (_translations.yhxSmGy4 = tr("This channel has an unsupported codec.
You cant speak or listen to anybody within this channel!")); - else if (!encoding_supported) - message = _translations.FhG1RYUu || (_translations.FhG1RYUu = tr("This channel has an unsupported codec.
You cant speak within this channel!")); - else if (!decoding_supported) - message = _translations.tl9gg03_ || (_translations.tl9gg03_ = tr("This channel has an unsupported codec.
You listen to anybody within this channel!")); /* implies speaking does not work as well */ - if (message) - createErrorModal(_translations.H8fSS_0Z || (_translations.H8fSS_0Z = tr("Channel codec unsupported")), message).open(); - } - } - this.client_status = this.client_status || {}; - this.client_status.sound_record_supported = support_record; - this.client_status.sound_playback_supported = support_playback; - if (vconnection && vconnection.voice_recorder() && vconnection.voice_recorder().record_supported) { - const active = !this.client_status.input_muted && !this.client_status.output_muted; - /* No need to start the microphone when we're not even connected */ - const input = vconnection.voice_recorder().input; - if (input) { - if (active && this.serverConnection.connected()) { - if (input.current_state() === audio.recorder.InputState.PAUSED) { - input.start().then(result => { - if (result != audio.recorder.InputStartResult.EOK) - throw result; - }).catch(error => { - log.warn(LogCategory.VOICE, _translations.IU0hK4NF || (_translations.IU0hK4NF = tr("Failed to start microphone input (%s).")), error); - if (Date.now() - (this._last_record_error_popup || 0) > 10 * 1000) { - this._last_record_error_popup = Date.now(); - createErrorModal(_translations.Ak0MoTq5 || (_translations.Ak0MoTq5 = tr("Failed to start recording")), MessageHelper.formatMessage(_translations.CdNixUn2 || (_translations.CdNixUn2 = tr("Microphone start failed.{:br:}Error: {}")), error)).open(); - } - }); - } - } - else { - input.stop(); - } - } - } - if (control_bar.current_connection_handler() === this) { - control_bar.apply_server_voice_state(); - top_menu.update_state(); //TODO: Only run "small" update? - } - } - sync_status_with_server() { - if (this.serverConnection.connected()) - this.serverConnection.send_command("clientupdate", { - client_input_muted: this.client_status.input_muted, - client_output_muted: this.client_status.output_muted, - client_away: typeof (this.client_status.away) === "string" || this.client_status.away, - client_away_message: typeof (this.client_status.away) === "string" ? this.client_status.away : "", - client_input_hardware: this.client_status.sound_record_supported && this.client_status.input_hardware, - client_output_hardware: this.client_status.sound_playback_supported - }).catch(error => { - log.warn(LogCategory.GENERAL, _translations.ifNLFsmx || (_translations.ifNLFsmx = tr("Failed to sync handler state with server. Error: %o")), error); - this.log.log(log.server.Type.ERROR_CUSTOM, { message: _translations.ZAcARduu || (_translations.ZAcARduu = tr("Failed to sync handler state with server.")) }); - }); - } - set_away_status(state) { - if (this.client_status.away === state) - return; - if (state) { - this.sound.play(Sound.AWAY_ACTIVATED); - } - else { - this.sound.play(Sound.AWAY_DEACTIVATED); - } - this.client_status.away = state; - this.serverConnection.send_command("clientupdate", { - client_away: typeof (this.client_status.away) === "string" || this.client_status.away, - client_away_message: typeof (this.client_status.away) === "string" ? this.client_status.away : "", - }).catch(error => { - log.warn(LogCategory.GENERAL, _translations.j356bpkL || (_translations.j356bpkL = tr("Failed to update away status. Error: %o")), error); - this.log.log(log.server.Type.ERROR_CUSTOM, { message: _translations.Hquv820o || (_translations.Hquv820o = tr("Failed to update away status.")) }); - }); - control_bar.update_button_away(); - } - resize_elements() { - this.channelTree.handle_resized(); - this.invoke_resized_on_activate = false; - } - acquire_recorder(voice_recoder, update_control_bar) { - const vconnection = this.serverConnection.voice_connection(); - (vconnection ? vconnection.acquire_voice_recorder(voice_recoder) : Promise.resolve()).catch(error => { - log.warn(LogCategory.VOICE, _translations.Nhi8Zrg7 || (_translations.Nhi8Zrg7 = tr("Failed to acquire recorder (%o)")), error); - }).then(() => { - this.update_voice_status(undefined); - }); - } - reconnect_properties(profile) { - const name = (this.getClient() ? this.getClient().clientNickName() : "") || - (this.serverConnection && this.serverConnection.handshake_handler() ? this.serverConnection.handshake_handler().parameters.nickname : "") || - settings.static_global(Settings.KEY_CONNECT_USERNAME, profile ? profile.default_username : undefined) || - "Another TeaSpeak user"; - const channel = (this.getClient() && this.getClient().currentChannel() ? this.getClient().currentChannel().channelId : 0) || - (this.serverConnection && this.serverConnection.handshake_handler() ? (this.serverConnection.handshake_handler().parameters.channel || {}).target : ""); - const channel_password = (this.getClient() && this.getClient().currentChannel() ? this.getClient().currentChannel().cached_password() : "") || - (this.serverConnection && this.serverConnection.handshake_handler() ? (this.serverConnection.handshake_handler().parameters.channel || {}).password : ""); - return { - channel: channel ? { target: "/" + channel, password: channel_password } : undefined, - nickname: name, - password: this.serverConnection && this.serverConnection.handshake_handler() ? this.serverConnection.handshake_handler().parameters.password : undefined - }; - } - update_avatar() { - Modals.spawnAvatarUpload(data => { - if (typeof (data) === "undefined") - return; - if (data === null) { - log.info(LogCategory.CLIENT, _translations.kwfqGPH6 || (_translations.kwfqGPH6 = tr("Deleting existing avatar"))); - this.serverConnection.send_command('ftdeletefile', { - name: "/avatar_", - path: "", - cid: 0 - }).then(() => { - createInfoModal(_translations.N3fwN_XS || (_translations.N3fwN_XS = tr("Avatar deleted")), _translations.dWko40aF || (_translations.dWko40aF = tr("Avatar successfully deleted"))).open(); - }).catch(error => { - log.error(LogCategory.GENERAL, _translations._o7eTDux || (_translations._o7eTDux = tr("Failed to reset avatar flag: %o")), error); - let message; - if (error instanceof CommandResult) - message = MessageHelper.formatMessage(_translations.q6MV9BJ6 || (_translations.q6MV9BJ6 = tr("Failed to delete avatar.{:br:}Error: {0}")), error.extra_message || error.message); - if (!message) - message = MessageHelper.formatMessage(_translations.l2z4u5iq || (_translations.l2z4u5iq = tr("Failed to delete avatar.{:br:}Lookup the console for more details"))); - createErrorModal(_translations.SERPbLsV || (_translations.SERPbLsV = tr("Failed to delete avatar")), message).open(); - return; - }); - } - else { - log.info(LogCategory.CLIENT, _translations.Uwwz13se || (_translations.Uwwz13se = tr("Uploading new avatar"))); - (() => __awaiter(this, void 0, void 0, function* () { - let key; - try { - key = yield this.fileManager.upload_file({ - size: data.byteLength, - path: '', - name: '/avatar', - overwrite: true, - channel: undefined, - channel_password: undefined - }); - } - catch (error) { - log.error(LogCategory.GENERAL, _translations.p6ktJjDH || (_translations.p6ktJjDH = tr("Failed to initialize avatar upload: %o")), error); - let message; - if (error instanceof CommandResult) { - //TODO: Resolve permission name - //i_client_max_avatar_filesize - if (error.id == ErrorID.PERMISSION_ERROR) { - message = MessageHelper.formatMessage(_translations.DpzOU8kx || (_translations.DpzOU8kx = tr("Failed to initialize avatar upload.{:br:}Missing permission {0}")), error["failed_permid"]); - } - else { - message = MessageHelper.formatMessage(_translations.GSHnaSaC || (_translations.GSHnaSaC = tr("Failed to initialize avatar upload.{:br:}Error: {0}")), error.extra_message || error.message); - } - } - if (!message) - message = MessageHelper.formatMessage(_translations.HuAordM2 || (_translations.HuAordM2 = tr("Failed to initialize avatar upload.{:br:}Lookup the console for more details"))); - createErrorModal(_translations.SqHGgSbh || (_translations.SqHGgSbh = tr("Failed to upload avatar")), message).open(); - return; - } - try { - yield transfer.spawn_upload_transfer(key).put_data(data); - } - catch (error) { - log.error(LogCategory.GENERAL, _translations.cCwgYPgQ || (_translations.cCwgYPgQ = tr("Failed to upload avatar: %o")), error); - let message; - if (typeof (error) === "string") - message = MessageHelper.formatMessage(_translations.Jkzl_W58 || (_translations.Jkzl_W58 = tr("Failed to upload avatar.{:br:}Error: {0}")), error); - if (!message) - message = MessageHelper.formatMessage(_translations.HfLNjuHd || (_translations.HfLNjuHd = tr("Failed to initialize avatar upload.{:br:}Lookup the console for more details"))); - createErrorModal(_translations.b_WF3dmV || (_translations.b_WF3dmV = tr("Failed to upload avatar")), message).open(); - return; - } - try { - yield this.serverConnection.send_command('clientupdate', { - client_flag_avatar: guid() - }); - } - catch (error) { - log.error(LogCategory.GENERAL, _translations.PkrE3ZLe || (_translations.PkrE3ZLe = tr("Failed to update avatar flag: %o")), error); - let message; - if (error instanceof CommandResult) - message = MessageHelper.formatMessage(_translations.Yw4Xjm9C || (_translations.Yw4Xjm9C = tr("Failed to update avatar flag.{:br:}Error: {0}")), error.extra_message || error.message); - if (!message) - message = MessageHelper.formatMessage(_translations.ZNppOyOZ || (_translations.ZNppOyOZ = tr("Failed to update avatar flag.{:br:}Lookup the console for more details"))); - createErrorModal(_translations.n1Io657i || (_translations.n1Io657i = tr("Failed to set avatar")), message).open(); - return; - } - createInfoModal(_translations.dVyA2a02 || (_translations.dVyA2a02 = tr("Avatar successfully uploaded")), _translations.Wrvy2Obl || (_translations.Wrvy2Obl = tr("Your avatar has been uploaded successfully!"))).open(); - }))(); - } - }); - } - destroy() { - this.cancel_reconnect(true); - this.tag_connection_handler && this.tag_connection_handler.remove(); - this.tag_connection_handler = undefined; - this.hostbanner && this.hostbanner.destroy(); - this.hostbanner = undefined; - this._local_client && this._local_client.destroy(); - this._local_client = undefined; - this.channelTree && this.channelTree.destroy(); - this.channelTree = undefined; - this.side_bar && this.side_bar.destroy(); - this.side_bar = undefined; - this.log && this.log.destroy(); - this.log = undefined; - this.permissions && this.permissions.destroy(); - this.permissions = undefined; - this.groups && this.groups.destroy(); - this.groups = undefined; - this.fileManager && this.fileManager.destroy(); - this.fileManager = undefined; - this.settings && this.settings.destroy(); - this.settings = undefined; - if (this.serverConnection) { - this.serverConnection.onconnectionstatechanged = undefined; - connection.destroy_server_connection(this.serverConnection); - } - this.serverConnection = undefined; - this.sound = undefined; - this._local_client = undefined; - } -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["5b0b0e729d8a6355fc16c9599bb8ac0e339c71eefff49f95cfba19ce44c9b4ae"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["5b0b0e729d8a6355fc16c9599bb8ac0e339c71eefff49f95cfba19ce44c9b4ae"] = "5b0b0e729d8a6355fc16c9599bb8ac0e339c71eefff49f95cfba19ce44c9b4ae"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "SlnUPyvk", path: "D:/TeaSpeak/web/shared/js/MessageFormatter.ts (112,31)" }, { name: "nQeTIPlF", path: "D:/TeaSpeak/web/shared/js/MessageFormatter.ts (119,31)" }, { name: "tOI3DTZ8", path: "D:/TeaSpeak/web/shared/js/MessageFormatter.ts (124,31)" }, { name: "H9Jdm9OF", path: "D:/TeaSpeak/web/shared/js/MessageFormatter.ts (148,27)" }, { name: "qq3oBpng", path: "D:/TeaSpeak/web/shared/js/MessageFormatter.ts (153,27)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var messages; -(function (messages) { - var formatter; - (function (formatter) { - let bbcode; - (function (bbcode) { - const sanitizer_escaped = (key) => "[-- sescaped: " + key + " --]"; - const sanitizer_escaped_regex = /\[-- sescaped: ([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}) --]/; - const sanitizer_escaped_map = {}; - const yt_url_regex = /^((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu.be))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?$/; - function format(message, fsettings) { - fsettings = fsettings || {}; - single_url_parse: if (fsettings.is_chat_message) { - /* try if its only one url */ - const raw_url = message.replace(/\[url(=\S+)?](\S+)\[\/url]/, "$2"); - let url; - try { - url = new URL(raw_url); - } - catch (error) { - break single_url_parse; - } - single_url_yt: { - const result = raw_url.match(yt_url_regex); - if (!result) - break single_url_yt; - return format("[yt]https://www.youtube.com/watch?v=" + result[5] + "[/yt]"); - } - single_url_image: { - const ext_index = url.pathname.lastIndexOf("."); - if (ext_index == -1) - break single_url_image; - const ext_name = url.pathname.substr(ext_index + 1).toLowerCase(); - if ([ - "jpeg", "jpg", - "png", "bmp", "gif", - "tiff", "pdf", "svg" - ].findIndex(e => e === ext_name) == -1) - break single_url_image; - return format("[img]" + message + "[/img]"); - } - } - const result = xbbcode.parse(message, { - tag_whitelist: [ - "b", "big", - "i", "italic", - "u", "underlined", - "s", "strikethrough", - "color", - "url", - "code", - "i-code", "icode", - "sub", "sup", - "size", - "hr", "br", - "ul", "ol", "list", - "li", - "table", - "tr", "td", "th", - "yt", "youtube", - "img" - ] - }); - let html = result.build_html(); - if (typeof (window.twemoji) !== "undefined" && settings.static_global(Settings.KEY_CHAT_COLORED_EMOJIES)) - html = twemoji.parse(html); - const container = $.spawn("div"); - let sanitized = DOMPurify.sanitize(html, { - ADD_ATTR: [ - "x-highlight-type", - "x-code-type", - "x-image-url" - ] - }); - sanitized = sanitized.replace(sanitizer_escaped_regex, data => { - const uid = data.match(sanitizer_escaped_regex)[1]; - const value = sanitizer_escaped_map[uid]; - if (!value) - return data; - delete sanitizer_escaped_map[uid]; - return value; - }); - container[0].innerHTML = sanitized; - container.find("a") - .attr('target', "_blank") - .on('contextmenu', event => { - if (event.isDefaultPrevented()) - return; - event.preventDefault(); - const url = $(event.target).attr("href"); - contextmenu.spawn_context_menu(event.pageX, event.pageY, { - callback: () => { - const win = window.open(url, '_blank'); - win.focus(); - }, - name: _translations.SlnUPyvk || (_translations.SlnUPyvk = tr("Open URL")), - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-browse-addon-online" - }, { - callback: () => { - //TODO - }, - name: _translations.nQeTIPlF || (_translations.nQeTIPlF = tr("Open URL in Browser")), - type: contextmenu.MenuEntryType.ENTRY, - visible: !app.is_web() && false // Currently not possible - }, contextmenu.Entry.HR(), { - callback: () => copy_to_clipboard(url), - name: _translations.tOI3DTZ8 || (_translations.tOI3DTZ8 = tr("Copy URL to clipboard")), - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-copy" - }); - }); - return [container.contents()]; - //return result.root_tag.content.map(e => e.build_html()).map((entry, idx, array) => $.spawn("a").css("display", (idx == 0 ? "inline" : "") + "block").html(entry == "" && idx != 0 ? " " : entry)); - } - bbcode.format = format; - function load_image(entry) { - const url = decodeURIComponent(entry.getAttribute("x-image-url") || ""); - const proxy_url = "https://images.weserv.nl/?url=" + encodeURIComponent(url); - entry.onload = undefined; - entry.src = proxy_url; - const parent = $(entry.parentElement); - parent.on('contextmenu', event => { - contextmenu.spawn_context_menu(event.pageX, event.pageY, { - callback: () => { - const win = window.open(url, '_blank'); - win.focus(); - }, - name: _translations.H9Jdm9OF || (_translations.H9Jdm9OF = tr("Open image in browser")), - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-browse-addon-online" - }, contextmenu.Entry.HR(), { - callback: () => copy_to_clipboard(url), - name: _translations.qq3oBpng || (_translations.qq3oBpng = tr("Copy image URL to clipboard")), - type: contextmenu.MenuEntryType.ENTRY, - icon_class: "client-copy" - }); - }); - parent.css("cursor", "pointer").on('click', event => image_preview.preview_image(proxy_url, url)); - } - bbcode.load_image = load_image; - loader.register_task(loader.Stage.JAVASCRIPT_INITIALIZING, { - name: "XBBCode code tag init", - function: () => __awaiter(this, void 0, void 0, function* () { - /* override default parser */ - xbbcode.register.register_parser({ - tag: ["code", "icode", "i-code"], - content_tags_whitelist: [], - build_html(layer) { - const klass = layer.tag_normalized != 'code' ? "tag-hljs-inline-code" : "tag-hljs-code"; - const language = (layer.options || "").replace("\"", "'").toLowerCase(); - /* remove heading empty lines */ - let text = layer.content.map(e => e.build_text()) - .reduce((a, b) => a.length == 0 && b.replace(/[ \n\r\t]+/g, "").length == 0 ? "" : a + b, "") - .replace(/^([ \n\r\t]*)(?=\n)+/g, ""); - if (text.startsWith("\r") || text.startsWith("\n")) - text = text.substr(1); - let result; - if (window.hljs.getLanguage(language)) - result = window.hljs.highlight(language, text, true); - else - result = window.hljs.highlightAuto(text); - let html = '
';
-                            html += '';
-                            html += result.value;
-                            return html + "
"; - } - }); - /* override the yt parser */ - const original_parser = xbbcode.register.find_parser("yt"); - if (original_parser) - xbbcode.register.register_parser({ - tag: ["yt", "youtube"], - build_html(layer) { - const result = original_parser.build_html(layer); - if (!result.startsWith(""; - return sanitizer_escaped(uid); - } - }); - /* the image parse & displayer */ - xbbcode.register.register_parser({ - tag: ["img", "image"], - build_html(layer) { - const uid = guid(); - const fallback_value = "[img]" + layer.build_text() + "[/img]"; - let target; - let content = layer.content.map(e => e.build_text()).join(""); - if (!layer.options) { - target = content; - } - else - target = layer.options; - let url; - try { - url = new URL(target); - if (!url.hostname) - throw ""; - } - catch (error) { - return fallback_value; - } - sanitizer_escaped_map[uid] = "
"; - return sanitizer_escaped(uid); - } - }); - }), - priority: 10 - }); - })(bbcode = formatter.bbcode || (formatter.bbcode = {})); - function sanitize_text(text) { - return $(DOMPurify.sanitize("" + text + "", { - ADD_ATTR: [ - "x-highlight-type", - "x-code-type", - "x-image-url" - ] - })).text(); - } - formatter.sanitize_text = sanitize_text; - })(formatter = messages.formatter || (messages.formatter = {})); -})(messages || (messages = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["29ef4d07eca5d64f42ebf5dc62f9f51bdf2f1fda69c0d90abc439a47f29609ac"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["29ef4d07eca5d64f42ebf5dc62f9f51bdf2f1fda69c0d90abc439a47f29609ac"] = "29ef4d07eca5d64f42ebf5dc62f9f51bdf2f1fda69c0d90abc439a47f29609ac"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var dns; -(function (dns) { - dns.default_options = { - timeout: 5000, - allow_cache: true, - max_depth: 5 - }; -})(dns || (dns = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["9dc0537f39bf16c58b80536db4cb74fe25af0f9cb2e1072557c5d1e08049a414"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["9dc0537f39bf16c58b80536db4cb74fe25af0f9cb2e1072557c5d1e08049a414"] = "9dc0537f39bf16c58b80536db4cb74fe25af0f9cb2e1072557c5d1e08049a414"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var events; -(function (events_1) { - class SingletonEvent { - constructor() { - this.type = "singletone-instance"; - } - } - SingletonEvent.instance = new SingletonEvent(); - events_1.SingletonEvent = SingletonEvent; - class Registry { - constructor() { - this.handler = {}; - this.connections = {}; - this.debug_prefix = undefined; - this.registry_uuid = "evreg_data_" + guid(); - } - enable_debug(prefix) { this.debug_prefix = prefix || "---"; } - disable_debug() { this.debug_prefix = undefined; } - on(events, handler) { - if (!Array.isArray(events)) - events = [events]; - handler[this.registry_uuid] = { - singleshot: false - }; - for (const event of events) { - const handlers = this.handler[event] || (this.handler[event] = []); - handlers.push(handler); - } - } - one(events, handler) { - if (!Array.isArray(events)) - events = [events]; - for (const event of events) { - const handlers = this.handler[event] || (this.handler[event] = []); - handler[this.registry_uuid] = { singleshot: true }; - handlers.push(handler); - } - } - off(handler_or_events, handler) { - if (typeof handler_or_events === "function") { - for (const key of Object.keys(this.handler)) - this.handler[key].remove(handler_or_events); - } - else { - if (!Array.isArray(handler_or_events)) - handler_or_events = [handler_or_events]; - for (const event of handler_or_events) { - const handlers = this.handler[event]; - if (handlers) - handlers.remove(handler); - } - } - } - connect(event, target) { - (this.connections[event] || (this.connections[event] = [])).push(target); - } - disconnect(event, target) { - (this.connections[event] || []).remove(target); - } - disconnect_all(target) { - for (const event of Object.keys(this.connections)) - this.connections[event].remove(target); - } - fire(event_type, data) { - if (this.debug_prefix) - console.log("[%s] Trigger event: %s", this.debug_prefix, event_type); - const event = Object.assign(typeof data === "undefined" ? SingletonEvent.instance : data, { - type: event_type, - as: function () { return this; } - }); - for (const handler of (this.handler[event_type] || [])) { - handler(event); - const reg_data = handler[this.registry_uuid]; - if (typeof reg_data === "object" && reg_data.singleshot) - this.handler[event_type].remove(handler); - } - for (const evhandler of (this.connections[event_type] || [])) - evhandler.fire(event_type, event); - } - fire_async(event_type, data) { - setTimeout(() => this.fire(event_type, data)); - } - destory() { - this.handler = {}; - } - } - events_1.Registry = Registry; -})(events || (events = {})); -const eclient = new events.Registry(); -const emusic = new events.Registry(); -eclient.connect("playlist_song_loaded", emusic); -eclient.connect("playlist_song_loaded", emusic); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["2d91d2e2b1835bcadc3f37922502a465b7f2d371df52f15a79138ae94be7235b"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["2d91d2e2b1835bcadc3f37922502a465b7f2d371df52f15a79138ae94be7235b"] = "2d91d2e2b1835bcadc3f37922502a465b7f2d371df52f15a79138ae94be7235b"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "MPJIRlqs", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat.ts (81,51)" }, { name: "NDTF2Yzi", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat.ts (199,58)" }, { name: "ZI_tZyBd", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat.ts (199,72)" }, { name: "t4VTrEXu", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat.ts (205,58)" }, { name: "ybJHagZN", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat.ts (205,71)" }, { name: "LDpkmc_N", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat.ts (211,58)" }, { name: "_LzkhuHI", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat.ts (211,72)" }, { name: "cute2byM", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat.ts (217,58)" }, { name: "Yse9w1Aj", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat.ts (217,74)" }, { name: "sjq8XWYY", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat.ts (223,58)" }, { name: "LFkoylsJ", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat.ts (223,74)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var ChatType; -(function (ChatType) { - ChatType[ChatType["GENERAL"] = 0] = "GENERAL"; - ChatType[ChatType["SERVER"] = 1] = "SERVER"; - ChatType[ChatType["CHANNEL"] = 2] = "CHANNEL"; - ChatType[ChatType["CLIENT"] = 3] = "CLIENT"; -})(ChatType || (ChatType = {})); -var MessageHelper; -(function (MessageHelper) { - function htmlEscape(message) { - const div = document.createElement('div'); - div.innerText = message; - message = div.innerHTML; - return message.replace(/ /g, ' ').split(/
/); - } - MessageHelper.htmlEscape = htmlEscape; - function formatElement(object, escape_html = true) { - if ($.isArray(object)) { - let result = []; - for (let element of object) - result.push(...formatElement(element, escape_html)); - return result; - } - else if (typeof (object) == "string") { - if (object.length == 0) - return []; - return escape_html ? - htmlEscape(object).map((entry, idx, array) => $.spawn("a").css("display", (idx == 0 || idx + 1 == array.length ? "inline" : "") + "block").html(entry == "" && idx != 0 ? " " : entry)) : - [$.spawn("div").css("display", "inline-block").html(object)]; - } - else if (typeof (object) === "object") { - if (object instanceof $) - return [object]; - return formatElement(""); - } - else if (typeof (object) === "function") - return formatElement(object(), escape_html); - else if (typeof (object) === "undefined") - return formatElement(""); - else if (typeof (object) === "number") - return [$.spawn("a").text(object)]; - return formatElement(""); - } - MessageHelper.formatElement = formatElement; - function formatMessage(pattern, ...objects) { - let begin = 0, found = 0; - let result = []; - do { - found = pattern.indexOf('{', found); - if (found == -1 || pattern.length <= found + 1) { - result.push(...formatElement(pattern.substr(begin))); - break; - } - if (found > 0 && pattern[found - 1] == '\\') { - //TODO remove the escape! - found++; - continue; - } - result.push(...formatElement(pattern.substr(begin, found - begin))); //Append the text - let offset = 0; - if (pattern[found + 1] == ':') { - offset++; /* the beginning : */ - while (pattern[found + 1 + offset] != ':' && found + 1 + offset < pattern.length) - offset++; - const tag = pattern.substr(found + 2, offset - 1); - offset++; /* the ending : */ - if (pattern[found + offset + 1] != '}' && found + 1 + offset < pattern.length) { - found++; - continue; - } - result.push($.spawn(tag)); - } - else { - let number; - while ("0123456789".includes(pattern[found + 1 + offset])) - offset++; - number = parseInt(offset > 0 ? pattern.substr(found + 1, offset) : "0"); - if (pattern[found + offset + 1] != '}') { - found++; - continue; - } - if (objects.length < number) - log.warn(LogCategory.GENERAL, _translations.MPJIRlqs || (_translations.MPJIRlqs = tr("Message to format contains invalid index (%o)")), number); - result.push(...formatElement(objects[number])); - } - found = found + 1 + offset; - begin = found + 1; - } while (found++); - return result; - } - MessageHelper.formatMessage = formatMessage; - //TODO: Remove this (only legacy) - function bbcode_chat(message) { - return messages.formatter.bbcode.format(message, { - is_chat_message: true - }); - } - MessageHelper.bbcode_chat = bbcode_chat; - let network; - (function (network) { - network.KB = 1024; - network.MB = 1024 * network.KB; - network.GB = 1024 * network.MB; - network.TB = 1024 * network.GB; - function format_bytes(value, options) { - options = options || {}; - if (typeof options.exact !== "boolean") - options.exact = true; - if (typeof options.unit !== "string") - options.unit = "Bytes"; - let points = value.toFixed(0).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,'); - let v, unit; - if (value > 2 * network.TB) { - unit = "TB"; - v = value / network.TB; - } - else if (value > network.GB) { - unit = "GB"; - v = value / network.GB; - } - else if (value > network.MB) { - unit = "MB"; - v = value / network.MB; - } - else if (value > network.KB) { - unit = "KB"; - v = value / network.KB; - } - else { - unit = ""; - v = value; - } - let result = ""; - if (options.exact || !unit) { - result += points; - if (options.unit) { - result += " " + options.unit; - if (options.time) - result += "/" + options.time; - } - } - if (unit) { - result += (result ? " / " : "") + v.toFixed(2) + " " + unit; - if (options.time) - result += "/" + options.time; - } - return result; - } - network.format_bytes = format_bytes; - })(network = MessageHelper.network || (MessageHelper.network = {})); - MessageHelper.K = 1000; - MessageHelper.M = 1000 * MessageHelper.K; - MessageHelper.G = 1000 * MessageHelper.M; - MessageHelper.T = 1000 * MessageHelper.G; - function format_number(value, options) { - options = Object.assign(options || {}, {}); - let points = value.toFixed(0).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,'); - let v, unit; - if (value > 2 * MessageHelper.T) { - unit = "T"; - v = value / MessageHelper.T; - } - else if (value > MessageHelper.G) { - unit = "G"; - v = value / MessageHelper.G; - } - else if (value > MessageHelper.M) { - unit = "M"; - v = value / MessageHelper.M; - } - else if (value > MessageHelper.K) { - unit = "K"; - v = value / MessageHelper.K; - } - else { - unit = ""; - v = value; - } - if (unit && options.time) - unit = unit + "/" + options.time; - return points + " " + (options.unit || "") + (unit ? (" / " + v.toFixed(2) + " " + unit) : ""); - } - MessageHelper.format_number = format_number; - MessageHelper.TIME_SECOND = 1000; - MessageHelper.TIME_MINUTE = 60 * MessageHelper.TIME_SECOND; - MessageHelper.TIME_HOUR = 60 * MessageHelper.TIME_MINUTE; - MessageHelper.TIME_DAY = 24 * MessageHelper.TIME_HOUR; - MessageHelper.TIME_WEEK = 7 * MessageHelper.TIME_DAY; - function format_time(time, default_value) { - let result = ""; - if (time > MessageHelper.TIME_WEEK) { - const amount = Math.floor(time / MessageHelper.TIME_WEEK); - result += " " + amount + " " + (amount > 1 ? _translations.NDTF2Yzi || (_translations.NDTF2Yzi = tr("Weeks")) : _translations.ZI_tZyBd || (_translations.ZI_tZyBd = tr("Week"))); - time -= amount * MessageHelper.TIME_WEEK; - } - if (time > MessageHelper.TIME_DAY) { - const amount = Math.floor(time / MessageHelper.TIME_DAY); - result += " " + amount + " " + (amount > 1 ? _translations.t4VTrEXu || (_translations.t4VTrEXu = tr("Days")) : _translations.ybJHagZN || (_translations.ybJHagZN = tr("Day"))); - time -= amount * MessageHelper.TIME_DAY; - } - if (time > MessageHelper.TIME_HOUR) { - const amount = Math.floor(time / MessageHelper.TIME_HOUR); - result += " " + amount + " " + (amount > 1 ? _translations.LDpkmc_N || (_translations.LDpkmc_N = tr("Hours")) : _translations._LzkhuHI || (_translations._LzkhuHI = tr("Hour"))); - time -= amount * MessageHelper.TIME_HOUR; - } - if (time > MessageHelper.TIME_MINUTE) { - const amount = Math.floor(time / MessageHelper.TIME_MINUTE); - result += " " + amount + " " + (amount > 1 ? _translations.cute2byM || (_translations.cute2byM = tr("Minutes")) : _translations.Yse9w1Aj || (_translations.Yse9w1Aj = tr("Minute"))); - time -= amount * MessageHelper.TIME_MINUTE; - } - if (time > MessageHelper.TIME_SECOND) { - const amount = Math.floor(time / MessageHelper.TIME_SECOND); - result += " " + amount + " " + (amount > 1 ? _translations.sjq8XWYY || (_translations.sjq8XWYY = tr("Seconds")) : _translations.LFkoylsJ || (_translations.LFkoylsJ = tr("Second"))); - time -= amount * MessageHelper.TIME_SECOND; - } - return result.length > 0 ? result.substring(1) : default_value; - } - MessageHelper.format_time = format_time; - let _icon_size_style; - function set_icon_size(size) { - if (!_icon_size_style) - _icon_size_style = $.spawn("style").appendTo($("#style")); - _icon_size_style.text("\n" + - ".message > .emoji {\n" + - " height: " + size + "!important;\n" + - " width: " + size + "!important;\n" + - "}\n"); - } - MessageHelper.set_icon_size = set_icon_size; - loader.register_task(loader.Stage.JAVASCRIPT_INITIALIZING, { - name: "icon size init", - function: () => __awaiter(this, void 0, void 0, function* () { - MessageHelper.set_icon_size((settings.static_global(Settings.KEY_ICON_SIZE) / 100).toFixed(2) + "em"); - }), - priority: 10 - }); -})(MessageHelper || (MessageHelper = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["94bd1d31ef570dd65f3469e82da58180cb66c5866ab7cf829a5362cb40cfd386"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["94bd1d31ef570dd65f3469e82da58180cb66c5866ab7cf829a5362cb40cfd386"] = "94bd1d31ef570dd65f3469e82da58180cb66c5866ab7cf829a5362cb40cfd386"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "IQMHO28d", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalConnect.ts (88,46)" }, { name: "kagWcYCB", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalConnect.ts (107,21)" }, { name: "JfPT4VD3", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalConnect.ts (288,95)" }, { name: "NJt4Js9d", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalConnect.ts (288,107)" }, { name: "iZ3MJUg4", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalConnect.ts (292,80)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -//FIXME: Move this shit out of this file! -var connection_log; -(function (connection_log) { - let _history = []; - function log_connect(address) { - let entry = _history.find(e => e.address.hostname.toLowerCase() == address.hostname.toLowerCase() && e.address.port == address.port); - if (!entry) { - _history.push(entry = { - last_timestamp: Date.now(), - first_timestamp: Date.now(), - address: address, - clients_online: 0, - clients_total: 0, - country: 'unknown', - name: 'Unknown', - icon_id: 0, - total_connection: 0, - flag_password: false, - password_hash: undefined - }); - } - entry.last_timestamp = Date.now(); - entry.total_connection++; - _save(); - } - connection_log.log_connect = log_connect; - function update_address_info(address, data) { - _history.filter(e => e.address.hostname.toLowerCase() == address.hostname.toLowerCase() && e.address.port == address.port).forEach(e => { - for (const key of Object.keys(data)) { - if (typeof (data[key]) !== "undefined") { - e[key] = data[key]; - } - } - }); - _save(); - } - connection_log.update_address_info = update_address_info; - function update_address_password(address, password_hash) { - _history.filter(e => e.address.hostname.toLowerCase() == address.hostname.toLowerCase() && e.address.port == address.port).forEach(e => { - e.password_hash = password_hash; - }); - _save(); - } - connection_log.update_address_password = update_address_password; - function _save() { - settings.changeGlobal(Settings.KEY_CONNECT_HISTORY, JSON.stringify(_history)); - } - function history() { - return _history.sort((a, b) => b.last_timestamp - a.last_timestamp); - } - connection_log.history = history; - function delete_entry(address) { - _history = _history.filter(e => !(e.address.hostname.toLowerCase() == address.hostname.toLowerCase() && e.address.port == address.port)); - _save(); - } - connection_log.delete_entry = delete_entry; - loader.register_task(loader.Stage.JAVASCRIPT_INITIALIZING, { - name: 'connection history load', - priority: 1, - function: () => __awaiter(this, void 0, void 0, function* () { - _history = []; - try { - _history = JSON.parse(settings.global(Settings.KEY_CONNECT_HISTORY, "[]")); - } - catch (error) { - log.warn(LogCategory.CLIENT, _translations.IQMHO28d || (_translations.IQMHO28d = tr("Failed to load connection history: {}")), error); - } - }) - }); -})(connection_log || (connection_log = {})); -var Modals; -(function (Modals) { - function spawnConnectModal(options, defaultHost = { url: "ts.TeaSpeak.de", enforce: false }, connect_profile) { - let selected_profile; - const random_id = (() => { - const array = new Uint32Array(10); - window.crypto.getRandomValues(array); - return array.join(""); - })(); - const modal = createModal({ - header: _translations.kagWcYCB || (_translations.kagWcYCB = tr("Connect to a server")), - body: $("#tmpl_connect").renderTag({ - client: native_client, - forum_path: settings.static("forum_path"), - password_id: random_id, - multi_tab: !settings.static_global(Settings.KEY_DISABLE_MULTI_SESSION), - default_connect_new_tab: typeof (options.default_connect_new_tab) === "boolean" && options.default_connect_new_tab - }), - footer: () => undefined, - min_width: "28em" - }); - modal.htmlTag.find(".modal-body").addClass("modal-connect"); - /* server list toggle */ - { - const container_last_servers = modal.htmlTag.find(".container-last-servers"); - const button = modal.htmlTag.find(".button-toggle-last-servers"); - const set_show = shown => { - container_last_servers.toggleClass('shown', shown); - button.find(".arrow").toggleClass('down', shown).toggleClass('up', !shown); - settings.changeGlobal("connect_show_last_servers", shown); - }; - button.on('click', event => { - set_show(!container_last_servers.hasClass("shown")); - }); - set_show(settings.static_global("connect_show_last_servers", false)); - } - const apply = (header, body, footer) => { - const container_last_server_body = modal.htmlTag.find(".container-last-servers .table .body"); - const container_empty = container_last_server_body.find(".body-empty"); - let current_connect_data; - const button_connect = footer.find(".button-connect"); - const button_connect_tab = footer.find(".button-connect-new-tab"); - const button_manage = body.find(".button-manage-profiles"); - const input_profile = body.find(".container-select-profile select"); - const input_address = body.find(".container-address input"); - const input_nickname = body.find(".container-nickname input"); - const input_password = body.find(".container-password input"); - let updateFields = (reset_current_data) => { - if (reset_current_data) { - current_connect_data = undefined; - container_last_server_body.find(".selected").removeClass("selected"); - } - let address = input_address.val().toString(); - settings.changeGlobal(Settings.KEY_CONNECT_ADDRESS, address); - let flag_address = !!address.match(Modals.Regex.IP_V4) || !!address.match(Modals.Regex.IP_V6) || !!address.match(Modals.Regex.DOMAIN); - let nickname = input_nickname.val().toString(); - if (nickname) - settings.changeGlobal(Settings.KEY_CONNECT_USERNAME, nickname); - else - nickname = input_nickname.attr("placeholder") || ""; - let flag_nickname = nickname.length >= 3 && nickname.length <= 32; - input_address.attr('pattern', flag_address ? null : '^[a]{1000}$').toggleClass('is-invalid', !flag_address); - input_nickname.attr('pattern', flag_nickname ? null : '^[a]{1000}$').toggleClass('is-invalid', !flag_nickname); - const flag_disabled = !flag_nickname || !flag_address || !selected_profile || !selected_profile.valid(); - button_connect.prop("disabled", flag_disabled); - button_connect_tab.prop("disabled", flag_disabled); - }; - input_address.val(defaultHost.enforce ? defaultHost.url : settings.static_global(Settings.KEY_CONNECT_ADDRESS, defaultHost.url)); - input_address - .on("keyup", () => updateFields(true)) - .on('keydown', event => { - if (event.keyCode == KeyCode.KEY_ENTER && !event.shiftKey) - button_connect.trigger('click'); - }); - button_manage.on('click', event => { - const modal = Modals.spawnSettingsModal("identity-profiles"); - modal.close_listener.push(() => { - input_profile.trigger('change'); - }); - return true; - }); - /* Connect Profiles */ - { - for (const profile of profiles.profiles()) { - input_profile.append($.spawn("option").text(profile.profile_name).val(profile.id)); - } - input_profile.on('change', event => { - selected_profile = profiles.find_profile(input_profile.val()) || profiles.default_profile(); - { - settings.changeGlobal(Settings.KEY_CONNECT_USERNAME, undefined); - input_nickname - .attr('placeholder', selected_profile.connect_username() || "Another TeaSpeak user") - .val(""); - } - settings.changeGlobal(Settings.KEY_CONNECT_PROFILE, selected_profile.id); - input_profile.toggleClass("is-invalid", !selected_profile || !selected_profile.valid()); - updateFields(true); - }); - input_profile.val(connect_profile && connect_profile.profile ? - connect_profile.profile.id : - settings.static_global(Settings.KEY_CONNECT_PROFILE, "default")).trigger('change'); - } - const last_nickname = settings.static_global(Settings.KEY_CONNECT_USERNAME, undefined); - if (last_nickname) /* restore */ - settings.changeGlobal(Settings.KEY_CONNECT_USERNAME, last_nickname); - input_nickname.val(last_nickname); - input_nickname.on("keyup", () => updateFields(true)); - setTimeout(() => updateFields(false), 100); - const server_address = () => { - let address = input_address.val().toString(); - if (address.match(Modals.Regex.IP_V6) && !address.startsWith("[")) - return "[" + address + "]"; - return address; - }; - button_connect.on('click', event => { - modal.close(); - const connection = server_connections.active_connection_handler(); - if (connection) { - connection.startConnection(current_connect_data ? current_connect_data.address.hostname + ":" + current_connect_data.address.port : server_address(), selected_profile, true, { - nickname: input_nickname.val().toString() || input_nickname.attr("placeholder"), - password: (current_connect_data && current_connect_data.password_hash) ? { password: current_connect_data.password_hash, hashed: true } : { password: input_password.val().toString(), hashed: false } - }); - } - else { - button_connect_tab.trigger('click'); - } - }); - button_connect_tab.on('click', event => { - modal.close(); - const connection = server_connections.spawn_server_connection_handler(); - server_connections.set_active_connection_handler(connection); - connection.startConnection(current_connect_data ? current_connect_data.address.hostname + ":" + current_connect_data.address.port : server_address(), selected_profile, true, { - nickname: input_nickname.val().toString() || input_nickname.attr("placeholder"), - password: (current_connect_data && current_connect_data.password_hash) ? { password: current_connect_data.password_hash, hashed: true } : { password: input_password.val().toString(), hashed: false } - }); - }); - /* connect history show */ - { - for (const entry of connection_log.history().slice(0, 10)) { - $.spawn("div").addClass("row").append($.spawn("div").addClass("column delete").append($.spawn("div").addClass("icon_em client-delete")).on('click', event => { - event.preventDefault(); - const row = $(event.target).parents('.row'); - row.hide(250, () => { - row.detach(); - }); - connection_log.delete_entry(entry.address); - container_empty.toggle(container_last_server_body.children().length > 1); - })).append($.spawn("div").addClass("column name").append([ - IconManager.generate_tag(IconManager.load_cached_icon(entry.icon_id)), - $.spawn("a").text(entry.name) - ])).append($.spawn("div").addClass("column address").text(entry.address.hostname + (entry.address.port != 9987 ? (":" + entry.address.port) : ""))).append($.spawn("div").addClass("column password").text(entry.flag_password ? _translations.JfPT4VD3 || (_translations.JfPT4VD3 = tr("Yes")) : _translations.NJt4Js9d || (_translations.NJt4Js9d = tr("No")))).append($.spawn("div").addClass("column country-name").append([ - $.spawn("div").addClass("country flag-" + entry.country.toLowerCase()), - $.spawn("a").text(i18n.country_name(entry.country, _translations.iZ3MJUg4 || (_translations.iZ3MJUg4 = tr("Global")))) - ])).append($.spawn("div").addClass("column clients").text(entry.clients_online + "/" + entry.clients_total)).append($.spawn("div").addClass("column connections").text(entry.total_connection + "")).on('click', event => { - if (event.isDefaultPrevented()) - return; - event.preventDefault(); - current_connect_data = entry; - container_last_server_body.find(".selected").removeClass("selected"); - $(event.target).parent('.row').addClass('selected'); - input_address.val(entry.address.hostname + (entry.address.port != 9987 ? (":" + entry.address.port) : "")); - input_password.val(entry.flag_password && entry.password_hash ? "WolverinDEV Yeahr!" : "").trigger('change'); - }).on('dblclick', event => { - current_connect_data = entry; - button_connect.trigger('click'); - }).appendTo(container_last_server_body); - container_empty.toggle(false); - } - } - }; - apply(modal.htmlTag, modal.htmlTag, modal.htmlTag); - modal.open(); - return; - } - Modals.spawnConnectModal = spawnConnectModal; - Modals.Regex = { - //DOMAIN<:port> - DOMAIN: /^(localhost|((([a-zA-Z0-9_-]{0,63}\.){0,253})?[a-zA-Z0-9_-]{0,63}\.[a-zA-Z]{2,64}))(|:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[0-5]?[0-9]{1,46}))$/, - //IP<:port> - IP_V4: /(^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(|:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[0-5]?[0-9]{1,4}))$/, - IP_V6: /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/, - IP: /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$|^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/, - }; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["49ae0724dd242660d7449bee6e4df1efdc7b9a7760c6c9229e4cf368f74fc565"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["49ae0724dd242660d7449bee6e4df1efdc7b9a7760c6c9229e4cf368f74fc565"] = "49ae0724dd242660d7449bee6e4df1efdc7b9a7760c6c9229e4cf368f74fc565"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "BL0CxyqI", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanClient.ts (24,46)" }, { name: "_34ju4T0", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanClient.ts (24,66)" }, { name: "eQQj5pTU", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanClient.ts (77,59)" }, { name: "bm2Swfik", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanClient.ts (79,59)" }, { name: "YUZTrce_", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanClient.ts (83,70)" }, { name: "FawXE9NI", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBanClient.ts (84,55)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - function spawnBanClient(client, entries, callback) { - const max_ban_time = client.permissions.neededPermission(PermissionType.I_CLIENT_BAN_MAX_BANTIME).value; - const permission_criteria_hwid = client.permissions.neededPermission(PermissionType.B_CLIENT_BAN_HWID).granted(1); - const permission_criteria_ip = client.permissions.neededPermission(PermissionType.B_CLIENT_BAN_IP).granted(1); - const permission_criteria_name = client.permissions.neededPermission(PermissionType.B_CLIENT_BAN_NAME).granted(1); - const modal = createModal({ - header: Array.isArray(entries) ? _translations.BL0CxyqI || (_translations.BL0CxyqI = tr("Ban clients")) : _translations._34ju4T0 || (_translations._34ju4T0 = tr("Ban client")), - body: function () { - let template = $("#tmpl_client_ban").renderTag({ entries: entries }); - let update_duration; - let update_button_ok; - const button_ok = template.find(".button-apply"); - const button_cancel = template.find(".button-cancel"); - const input_duration_value = template.find(".container-duration input").on('change keyup', () => update_duration()); - const input_duration_type = template.find(".container-duration select").on('change keyup', () => update_duration()); - const container_reason = template.find(".container-reason"); - const criteria_nickname = template.find(".criteria.nickname input") - .prop('checked', permission_criteria_name).prop("disabled", !permission_criteria_name) - .firstParent(".checkbox").toggleClass("disabled", !permission_criteria_name); - const criteria_ip_address = template.find(".criteria.ip-address input") - .prop('checked', permission_criteria_ip).prop("disabled", !permission_criteria_ip) - .firstParent(".checkbox").toggleClass("disabled", !permission_criteria_ip); - const criteria_hardware_id = template.find(".criteria.hardware-id input") - .prop('checked', permission_criteria_hwid).prop("disabled", !permission_criteria_hwid) - .firstParent(".checkbox").toggleClass("disabled", !permission_criteria_hwid); - /* duration input handler */ - { - const tooltip_duration_max = template.find(".tooltip-max-time a.max"); - update_duration = () => { - const type = input_duration_type.val(); - const value = parseInt(input_duration_value.val()); - const disabled = input_duration_type.prop("disabled"); - input_duration_value.prop("disabled", type === "perm" || disabled).firstParent(".input-boxed").toggleClass("disabled", type === "perm" || disabled); - if (type !== "perm") { - if (input_duration_value.attr("x-saved-value")) { - input_duration_value.val(parseInt(input_duration_value.attr("x-saved-value"))); - input_duration_value.attr("x-saved-value", null); - } - const selected_option = input_duration_type.find("option[value='" + type + "']"); - const max = parseInt(selected_option.attr("duration-max")); - input_duration_value.attr("max", max); - if ((value > max && max != -1) || value < 1) { - input_duration_value.firstParent(".input-boxed").addClass("is-invalid"); - } - else { - input_duration_value.firstParent(".input-boxed").removeClass("is-invalid"); - } - if (max != -1) - tooltip_duration_max.html((_translations.eQQj5pTU || (_translations.eQQj5pTU = tr("You're allowed to ban a maximum of "))) + "" + max + " " + Modals.duration_data[type][max == 1 ? "1-text" : "text"] + ""); - else - tooltip_duration_max.html(_translations.bm2Swfik || (_translations.bm2Swfik = tr("You're allowed to ban permanent."))); - } - else { - if (value && !Number.isNaN(value)) - input_duration_value.attr("x-saved-value", value); - input_duration_value.attr("placeholder", _translations.YUZTrce_ || (_translations.YUZTrce_ = tr("for ever"))).val(null); - tooltip_duration_max.html(_translations.FawXE9NI || (_translations.FawXE9NI = tr("You're allowed to ban permanent."))); - } - update_button_ok && update_button_ok(); - }; - /* initialize ban time */ - Promise.resolve(max_ban_time).catch(error => { /* TODO: Error handling? */ return 0; }).then(max_time => { - let unlimited = max_time == 0 || max_time == -1; - if (unlimited || typeof (max_time) === "undefined") - max_time = 0; - for (const value of Object.keys(Modals.duration_data)) { - input_duration_type.find("option[value='" + value + "']") - .prop("disabled", !unlimited && max_time >= Modals.duration_data[value].scale) - .attr("duration-scale", Modals.duration_data[value].scale) - .attr("duration-max", unlimited ? -1 : Math.floor(max_time / Modals.duration_data[value].scale)); - } - input_duration_type.find("option[value='perm']") - .prop("disabled", !unlimited) - .attr("duration-scale", 0) - .attr("duration-max", -1); - update_duration(); - }); - update_duration(); - } - /* ban reason */ - { - const input = container_reason.find("textarea"); - const insert_tag = (open, close) => { - if (input.prop("disabled")) - return; - const node = input[0]; - if (node.selectionStart || node.selectionStart == 0) { - const startPos = node.selectionStart; - const endPos = node.selectionEnd; - node.value = node.value.substring(0, startPos) + open + node.value.substring(startPos, endPos) + close + node.value.substring(endPos); - node.selectionEnd = endPos + open.length; - node.selectionStart = node.selectionEnd; - } - else { - node.value += open + close; - node.selectionEnd = node.value.length - close.length; - node.selectionStart = node.selectionEnd; - } - input.focus().trigger('change'); - }; - container_reason.find(".button-bold").on('click', () => insert_tag('[b]', '[/b]')); - container_reason.find(".button-italic").on('click', () => insert_tag('[i]', '[/i]')); - container_reason.find(".button-underline").on('click', () => insert_tag('[u]', '[/u]')); - container_reason.find(".button-color input").on('change', event => { - insert_tag('[color=' + event.target.value + ']', '[/color]'); - }); - } - /* buttons */ - { - button_cancel.on('click', event => modal.close()); - button_ok.on('click', event => { - const duration = input_duration_type.val() === "perm" ? 0 : (1000 * parseInt(input_duration_type.find("option[value='" + input_duration_type.val() + "']").attr("duration-scale")) * parseInt(input_duration_value.val())); - modal.close(); - callback({ - length: Math.floor(duration / 1000), - reason: container_reason.find("textarea").val(), - no_hwid: !criteria_hardware_id.find("input").prop("checked"), - no_ip: !criteria_ip_address.find("input").prop("checked"), - no_name: !criteria_nickname.find("input").prop("checked") - }); - }); - const inputs = template.find(".input-boxed"); - update_button_ok = () => { - const invalid = [...inputs].find(e => $(e).hasClass("is-invalid")); - button_ok.prop('disabled', !!invalid); - }; - update_button_ok(); - } - tooltip(template); - return template.children(); - }, - footer: null, - min_width: "10em", - width: "30em" - }); - modal.open(); - modal.htmlTag.find(".modal-body").addClass("modal-ban-client"); - } - Modals.spawnBanClient = spawnBanClient; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["3029b469e8bd7e1fb5c0bfcd428b9adc83c2b65e721d1f06c8aacae048f4d0ed"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["3029b469e8bd7e1fb5c0bfcd428b9adc83c2b65e721d1f06c8aacae048f4d0ed"] = "3029b469e8bd7e1fb5c0bfcd428b9adc83c2b65e721d1f06c8aacae048f4d0ed"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "Ag35JegW", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalYesNo.ts (14,69)" }, { name: "JkQ7VkSV", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalYesNo.ts (15,67)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -var Modals; -(function (Modals) { - function spawnYesNo(header, body, callback, properties) { - properties = properties || {}; - const props = ModalFunctions.warpProperties({}); - props.template_properties || (props.template_properties = {}); - props.template_properties.text_yes = properties.text_yes || (_translations.Ag35JegW || (_translations.Ag35JegW = tr("Yes"))); - props.template_properties.text_no = properties.text_no || (_translations.JkQ7VkSV || (_translations.JkQ7VkSV = tr("No"))); - props.template = "#tmpl_modal_yesno"; - props.header = header; - props.template_properties.question = ModalFunctions.jqueriefy(body); - props.closeable = typeof (properties.closeable) !== "boolean" || properties.closeable; - const modal = createModal(props); - let submited = false; - const button_yes = modal.htmlTag.find(".button-yes"); - const button_no = modal.htmlTag.find(".button-no"); - button_yes.on('click', event => { - if (!submited) { - submited = true; - callback(true); - } - modal.close(); - }); - button_no.on('click', event => { - if (!submited) { - submited = true; - callback(false); - } - modal.close(); - }); - modal.close_listener.push(() => button_no.trigger('click')); - modal.open(); - return modal; - } - Modals.spawnYesNo = spawnYesNo; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["7b2ae32fd19997df4d419a6d71100ae43c15bc27b3ea1a1523423a36e275ccd3"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["7b2ae32fd19997df4d419a6d71100ae43c15bc27b3ea1a1523423a36e275ccd3"] = "7b2ae32fd19997df4d419a6d71100ae43c15bc27b3ea1a1523423a36e275ccd3"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "IB5yR4Oy", path: "D:/TeaSpeak/web/shared/js/main.ts (46,66)" }, { name: "RDTk8by7", path: "D:/TeaSpeak/web/shared/js/main.ts (49,38)" }, { name: "m6cq39M5", path: "D:/TeaSpeak/web/shared/js/main.ts (111,44)" }, { name: "b5JhebTq", path: "D:/TeaSpeak/web/shared/js/main.ts (113,43)" }, { name: "q5H_DJQ9", path: "D:/TeaSpeak/web/shared/js/main.ts (124,23)" }, { name: "onq78WD6", path: "D:/TeaSpeak/web/shared/js/main.ts (142,31)" }, { name: "eIK8rj1V", path: "D:/TeaSpeak/web/shared/js/main.ts (149,22)" }, { name: "Eei5HLyp", path: "D:/TeaSpeak/web/shared/js/main.ts (155,43)" }, { name: "RvXdlEMk", path: "D:/TeaSpeak/web/shared/js/main.ts (162,38)" }, { name: "Lf15NSRg", path: "D:/TeaSpeak/web/shared/js/main.ts (166,37)" }, { name: "Dg9visVD", path: "D:/TeaSpeak/web/shared/js/main.ts (175,40)" }, { name: "dSUa5oYo", path: "D:/TeaSpeak/web/shared/js/main.ts (176,31)" }, { name: "QROnPXJ7", path: "D:/TeaSpeak/web/shared/js/main.ts (391,42)" }, { name: "gt6W14IK", path: "D:/TeaSpeak/web/shared/js/main.ts (496,45)" }, { name: "mihjffCP", path: "D:/TeaSpeak/web/shared/js/main.ts (498,35)" }, { name: "TFo_eVdJ", path: "D:/TeaSpeak/web/shared/js/main.ts (533,36)" }, { name: "M0D0FZJG", path: "D:/TeaSpeak/web/shared/js/main.ts (539,50)" }, { name: "wkNLjIGX", path: "D:/TeaSpeak/web/shared/js/main.ts (545,25)" }, { name: "JSLG1Ib8", path: "D:/TeaSpeak/web/shared/js/main.ts (554,50)" }, { name: "p16a70Ob", path: "D:/TeaSpeak/web/shared/js/main.ts (561,23)" }, { name: "JpTIODqT", path: "D:/TeaSpeak/web/shared/js/main.ts (585,39)" }, { name: "YhwU3o10", path: "D:/TeaSpeak/web/shared/js/main.ts (590,43)" }, { name: "HIJpRvc1", path: "D:/TeaSpeak/web/shared/js/main.ts (602,55)" }, { name: "IwzrZVZ4", path: "D:/TeaSpeak/web/shared/js/main.ts (612,21)" }, { name: "eW_bQNL1", path: "D:/TeaSpeak/web/shared/js/main.ts (621,43)" }, { name: "MWcN8CqM", path: "D:/TeaSpeak/web/shared/js/main.ts (624,39)" }, { name: "SbqJTJd5", path: "D:/TeaSpeak/web/shared/js/main.ts (639,35)" }, { name: "dWfMHleg", path: "D:/TeaSpeak/web/shared/js/main.ts (640,27)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -/// -/// -/// -/// -/// -/// -var spawnYesNo = Modals.spawnYesNo; -const js_render = window.jsrender || $; -const native_client = window.require !== undefined; -function getUserMediaFunctionPromise() { - if ('mediaDevices' in navigator && 'getUserMedia' in navigator.mediaDevices) - return constraints => navigator.mediaDevices.getUserMedia(constraints); - const _callbacked_function = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; - if (!_callbacked_function) - return undefined; - return constraints => new Promise((resolve, reject) => _callbacked_function(constraints, resolve, reject)); -} -function setup_close() { - window.onbeforeunload = event => { - if (profiles.requires_save()) - profiles.save(); - if (!settings.static(Settings.KEY_DISABLE_UNLOAD_DIALOG, false)) { - const active_connections = server_connections.server_connection_handlers().filter(e => e.connected); - if (active_connections.length == 0) - return; - if (!native_client) { - event.returnValue = "Are you really sure?
You're still connected!"; - } - else { - const do_exit = () => { - const dp = server_connections.server_connection_handlers().map(e => { - if (e.serverConnection.connected()) - return e.serverConnection.disconnect(_translations.IB5yR4Oy || (_translations.IB5yR4Oy = tr("client closed"))); - return Promise.resolve(); - }).map(e => e.catch(error => { - console.warn(_translations.RDTk8by7 || (_translations.RDTk8by7 = tr("Failed to disconnect from server on client close: %o")), e); - })); - const exit = () => { - const { remote } = require('electron'); - remote.getCurrentWindow().close(); - }; - Promise.all(dp).then(exit); - /* force exit after 2500ms */ - setTimeout(exit, 2500); - }; - if (window.open_connected_question) { - event.preventDefault(); - event.returnValue = "question"; - window.open_connected_question().then(result => { - if (result) { - /* prevent quitting because we try to disconnect */ - window.onbeforeunload = e => e.preventDefault(); - /* allow a force quit after 5 seconds */ - setTimeout(() => window.onbeforeunload, 5000); - do_exit(); - } - }); - } - else { - /* we're in debugging mode */ - do_exit(); - } - } - } - }; -} -function setup_jsrender() { - if (!js_render) { - loader.critical_error("Missing jsrender extension!"); - return false; - } - if (!js_render.views) { - loader.critical_error("Missing jsrender viewer extension!"); - return false; - } - js_render.views.settings.allowCode(true); - js_render.views.tags("rnd", (argument) => { - let min = parseInt(argument.substr(0, argument.indexOf('~'))); - let max = parseInt(argument.substr(argument.indexOf('~') + 1)); - return (Math.round(Math.random() * (min + max + 1) - min)).toString(); - }); - js_render.views.tags("fmt_date", (...args) => { - return moment(args[0]).format(args[1]); - }); - js_render.views.tags("tr", (...args) => { - return tr(args[0]); - }); - $(".jsrender-template").each((idx, _entry) => { - if (!js_render.templates(_entry.id, _entry.innerHTML)) { - log.error(LogCategory.GENERAL, _translations.m6cq39M5 || (_translations.m6cq39M5 = tr("Failed to setup cache for js renderer template %s!")), _entry.id); - } - else - log.info(LogCategory.GENERAL, _translations.b5JhebTq || (_translations.b5JhebTq = tr("Successfully loaded jsrender template %s")), _entry.id); - }); - return true; -} -function initialize() { - return __awaiter(this, void 0, void 0, function* () { - Settings.initialize(); - try { - yield i18n.initialize(); - } - catch (error) { - console.error(_translations.q5H_DJQ9 || (_translations.q5H_DJQ9 = tr("Failed to initialized the translation system!\nError: %o")), error); - loader.critical_error("Failed to setup the translation system"); - return; - } - bipc.setup(); - }); -} -function initialize_app() { - return __awaiter(this, void 0, void 0, function* () { - try { //Initialize main template - const main = $("#tmpl_main").renderTag({ - multi_session: !settings.static_global(Settings.KEY_DISABLE_MULTI_SESSION), - app_version: app.ui_version() - }).dividerfy(); - $("body").append(main); - } - catch (error) { - log.error(LogCategory.GENERAL, error); - loader.critical_error(_translations.onq78WD6 || (_translations.onq78WD6 = tr("Failed to setup main page!"))); - return; - } - control_bar = new ControlBar($("#control_bar")); /* setup the control bar */ - if (!audio.player.initialize()) - console.warn(_translations.eIK8rj1V || (_translations.eIK8rj1V = tr("Failed to initialize audio controller!"))); - audio.player.on_ready(() => { - if (audio.player.set_master_volume) - audio.player.on_ready(() => audio.player.set_master_volume(settings.global(Settings.KEY_SOUND_MASTER) / 100)); - else - log.warn(LogCategory.GENERAL, _translations.Eei5HLyp || (_translations.Eei5HLyp = tr("Client does not support audio.player.set_master_volume()... May client is too old?"))); - if (audio.recorder.device_refresh_available()) - audio.recorder.refresh_devices(); - }); - default_recorder = new RecorderProfile("default"); - default_recorder.initialize().catch(error => { - log.error(LogCategory.AUDIO, _translations.RvXdlEMk || (_translations.RvXdlEMk = tr("Failed to initialize default recorder: %o")), error); - }); - sound.initialize().then(() => { - log.info(LogCategory.AUDIO, _translations.Lf15NSRg || (_translations.Lf15NSRg = tr("Sounds initialized"))); - }); - sound.set_master_volume(settings.global(Settings.KEY_SOUND_MASTER_SOUNDS) / 100); - yield profiles.load(); - try { - yield ppt.initialize(); - } - catch (error) { - log.error(LogCategory.GENERAL, _translations.Dg9visVD || (_translations.Dg9visVD = tr("Failed to initialize ppt!\nError: %o")), error); - loader.critical_error(_translations.dSUa5oYo || (_translations.dSUa5oYo = tr("Failed to initialize ppt!"))); - return; - } - setup_close(); - }); -} -function str2ab8(str) { - const buf = new ArrayBuffer(str.length); - const bufView = new Uint8Array(buf); - for (let i = 0, strLen = str.length; i < strLen; i++) { - bufView[i] = str.charCodeAt(i); - } - return buf; -} -/* FIXME Dont use atob, because it sucks for non UTF-8 tings */ -function arrayBufferBase64(base64) { - base64 = atob(base64); - const buf = new ArrayBuffer(base64.length); - const bufView = new Uint8Array(buf); - for (let i = 0, strLen = base64.length; i < strLen; i++) { - bufView[i] = base64.charCodeAt(i); - } - return buf; -} -function base64_encode_ab(source) { - const encodings = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - let base64 = ""; - const bytes = new Uint8Array(source); - const byte_length = bytes.byteLength; - const byte_reminder = byte_length % 3; - const main_length = byte_length - byte_reminder; - let a, b, c, d; - let chunk; - // Main loop deals with bytes in chunks of 3 - for (let i = 0; i < main_length; i = i + 3) { - // Combine the three bytes into a single integer - chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; - // Use bitmasks to extract 6-bit segments from the triplet - a = (chunk & 16515072) >> 18; // 16515072 = (2^6 - 1) << 18 - b = (chunk & 258048) >> 12; // 258048 = (2^6 - 1) << 12 - c = (chunk & 4032) >> 6; // 4032 = (2^6 - 1) << 6 - d = (chunk & 63) >> 0; // 63 = (2^6 - 1) << 0 - // Convert the raw binary segments to the appropriate ASCII encoding - base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d]; - } - // Deal with the remaining bytes and padding - if (byte_reminder == 1) { - chunk = bytes[main_length]; - a = (chunk & 252) >> 2; // 252 = (2^6 - 1) << 2 - // Set the 4 least significant bits to zero - b = (chunk & 3) << 4; // 3 = 2^2 - 1 - base64 += encodings[a] + encodings[b] + '=='; - } - else if (byte_reminder == 2) { - chunk = (bytes[main_length] << 8) | bytes[main_length + 1]; - a = (chunk & 64512) >> 10; // 64512 = (2^6 - 1) << 10 - b = (chunk & 1008) >> 4; // 1008 = (2^6 - 1) << 4 - // Set the 2 least significant bits to zero - c = (chunk & 15) << 2; // 15 = 2^4 - 1 - base64 += encodings[a] + encodings[b] + encodings[c] + '='; - } - return base64; -} -/* -class TestProxy extends bipc.MethodProxy { - constructor(params: bipc.MethodProxyConnectParameters) { - super(bipc.get_handler(), params.channel_id && params.client_id ? params : undefined); - - if(!this.is_slave()) { - this.register_method(this.add_slave); - } - if(!this.is_master()) { - this.register_method(this.say_hello); - this.register_method(this.add_master); - } - } - - setup() { - super.setup(); - } - - protected on_connected() { - log.info(LogCategory.IPC, "Test proxy connected"); - } - - protected on_disconnected() { - log.info(LogCategory.IPC, "Test proxy disconnected"); - } - - private async say_hello() : Promise { - log.info(LogCategory.IPC, "Hello World"); - } - - private async add_slave(a: number, b: number) : Promise { - return a + b; - } - - private async add_master(a: number, b: number) : Promise { - return a * b; - } -} -interface Window { - proxy_instance: TestProxy & {url: () => string}; -} -*/ -function handle_connect_request(properties, connection) { - const profile_uuid = properties.profile || (profiles.default_profile() || { id: 'default' }).id; - const profile = profiles.find_profile(profile_uuid) || profiles.default_profile(); - const username = properties.username || profile.connect_username(); - const password = properties.password ? properties.password.value : ""; - const password_hashed = properties.password ? properties.password.hashed : false; - if (profile && profile.valid()) { - connection.startConnection(properties.address, profile, true, { - nickname: username, - password: password.length > 0 ? { - password: password, - hashed: password_hashed - } : undefined - }); - server_connections.set_active_connection_handler(connection); - } - else { - Modals.spawnConnectModal({}, { - url: properties.address, - enforce: true - }, { - profile: profile, - enforce: true - }); - } -} -function main() { - /* - window.proxy_instance = new TestProxy({ - client_id: settings.static_global("proxy_client_id", undefined), - channel_id: settings.static_global("proxy_channel_id", undefined) - }) as any; - if(window.proxy_instance.is_master()) { - window.proxy_instance.setup(); - window.proxy_instance.url = () => { - const data = window.proxy_instance.generate_connect_parameters(); - return "proxy_channel_id=" + data.channel_id + "&proxy_client_id=" + data.client_id; - }; - } - */ - //http://localhost:63343/Web-Client/index.php?_ijt=omcpmt8b9hnjlfguh8ajgrgolr&default_connect_url=true&default_connect_type=teamspeak&default_connect_url=localhost%3A9987&disableUnloadDialog=1&loader_ignore_age=1 - /* initialize font */ - { - const font = settings.static_global(Settings.KEY_FONT_SIZE, 14); //parseInt(getComputedStyle(document.body).fontSize) - $(document.body).css("font-size", font + "px"); - } - /* context menu prevent */ - $(document).on('contextmenu', event => { - if (event.isDefaultPrevented()) - return; - if (!settings.static_global(Settings.KEY_DISABLE_GLOBAL_CONTEXT_MENU)) - event.preventDefault(); - }); - top_menu.initialize(); - server_connections = new ServerConnectionManager($("#connection-handlers")); - control_bar.initialise(); /* before connection handler to allow property apply */ - const initial_handler = server_connections.spawn_server_connection_handler(); - initial_handler.acquire_recorder(default_recorder, false); - control_bar.set_connection_handler(initial_handler); - /** Setup the XF forum identity **/ - profiles.identities.update_forum(); - let _resize_timeout; - $(window).on('resize', event => { - if (event.target !== window) - return; - if (_resize_timeout) - clearTimeout(_resize_timeout); - _resize_timeout = setTimeout(() => { - for (const connection of server_connections.server_connection_handlers()) - connection.invoke_resized_on_activate = true; - const active_connection = server_connections.active_connection_handler(); - if (active_connection) - active_connection.resize_elements(); - $(".window-resize-listener").trigger('resize'); - }, 1000); - }); - stats.initialize({ - verbose: true, - anonymize_ip_addresses: true, - volatile_collection_only: false - }); - stats.register_user_count_listener(status => { - log.info(LogCategory.STATISTICS, _translations.QROnPXJ7 || (_translations.QROnPXJ7 = tr("Received user count update: %o")), status); - }); - server_connections.set_active_connection_handler(server_connections.server_connection_handlers()[0]); - window.test_upload = (message) => { - message = message || "Hello World"; - const connection = server_connections.active_connection_handler(); - connection.fileManager.upload_file({ - size: message.length, - overwrite: true, - channel: connection.getClient().currentChannel(), - name: '/HelloWorld.txt', - path: '' - }).then(key => { - const upload = new RequestFileUpload(key); - const buffer = new Uint8Array(message.length); - { - for (let index = 0; index < message.length; index++) - buffer[index] = message.charCodeAt(index); - } - upload.put_data(buffer).catch(error => { - console.error(error); - }); - }); - }; - /* schedule it a bit later then the main because the main function is still within the loader */ - setTimeout(() => { - const connection = server_connections.active_connection_handler(); - /* - Modals.createChannelModal(connection, undefined, undefined, connection.permissions, (cb, perms) => { - - }); - */ - // Modals.openServerInfo(connection.channelTree.server); - //Modals.createServerModal(connection.channelTree.server, properties => Promise.resolve()); - //Modals.openClientInfo(connection.getClient()); - //Modals.openServerInfoBandwidth(connection.channelTree.server); - //Modals.openBanList(connection); - /* - Modals.spawnBanClient(connection,[ - {name: "WolverinDEV", unique_id: "XXXX"}, - {name: "WolverinDEV", unique_id: "XXXX"}, - {name: "WolverinDEV", unique_id: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}, - {name: "WolverinDEV", unique_id: "YYY"} - ], () => {}); - */ - }, 4000); - //Modals.spawnSettingsModal("identity-profiles"); - //Modals.spawnKeySelect(console.log); - //Modals.spawnBookmarkModal(); - /* - { - const modal = createModal({ - header: tr("Test Net Graph"), - body: () => { - const canvas = $.spawn("canvas") - .css("position", "absolute") - .css({ - top: 0, - bottom: 0, - right: 0, - left: 0 - }); - - return $.spawn("div") - .css("height", "5em") - .css("width", "30em") - .css("position", "relative") - .append(canvas); - }, - footer: null - }); - - const graph = new net.graph.Graph(modal.htmlTag.find("canvas")[0] as any); - graph.initialize(); - - modal.close_listener.push(() => graph.terminate()); - modal.open(); - } - */ - /* for testing */ - if (settings.static_global(Settings.KEY_USER_IS_NEW)) { - const modal = Modals.openModalNewcomer(); - modal.close_listener.push(() => settings.changeGlobal(Settings.KEY_USER_IS_NEW, false)); - } -} -const task_teaweb_starter = { - name: "voice app starter", - function: () => __awaiter(this, void 0, void 0, function* () { - try { - yield initialize_app(); - main(); - if (!audio.player.initialized()) { - log.info(LogCategory.VOICE, _translations.gt6W14IK || (_translations.gt6W14IK = tr("Initialize audio controller later!"))); - if (!audio.player.initializeFromGesture) { - console.error(_translations.mihjffCP || (_translations.mihjffCP = tr("Missing audio.player.initializeFromGesture"))); - } - else - $(document).one('click', event => audio.player.initializeFromGesture()); - } - } - catch (ex) { - console.error(ex.stack); - if (ex instanceof ReferenceError || ex instanceof TypeError) - ex = ex.name + ": " + ex.message; - loader.critical_error("Failed to invoke main function:
" + ex); - } - }), - priority: 10 -}; -const task_connect_handler = { - name: "Connect handler", - function: () => __awaiter(this, void 0, void 0, function* () { - const address = settings.static(Settings.KEY_CONNECT_ADDRESS, ""); - const chandler = bipc.get_connect_handler(); - if (settings.static(Settings.KEY_FLAG_CONNECT_DEFAULT, false) && address) { - const connect_data = { - address: address, - profile: settings.static(Settings.KEY_CONNECT_PROFILE, ""), - username: settings.static(Settings.KEY_CONNECT_USERNAME, ""), - password: { - value: settings.static(Settings.KEY_CONNECT_PASSWORD, ""), - hashed: settings.static(Settings.KEY_FLAG_CONNECT_PASSWORD, false) - } - }; - if (chandler) { - try { - yield chandler.post_connect_request(connect_data, () => new Promise((resolve, reject) => { - spawnYesNo(_translations.TFo_eVdJ || (_translations.TFo_eVdJ = tr("Another TeaWeb instance is already running")), tra("Another TeaWeb instance is already running.{:br:}Would you like to connect there?"), response => { - resolve(response); - }, { - closeable: false - }).open(); - })); - log.info(LogCategory.CLIENT, _translations.M0D0FZJG || (_translations.M0D0FZJG = tr("Executed connect successfully in another browser window. Closing this window"))); - const message = "You're connecting to {0} within the other TeaWeb instance.{:br:}" + - "You could now close this page."; - createInfoModal(_translations.wkNLjIGX || (_translations.wkNLjIGX = tr("Connecting successfully within other instance")), MessageHelper.formatMessage(tr(message), connect_data.address), { - closeable: false, - footer: undefined - }).open(); - return; - } - catch (error) { - log.info(LogCategory.CLIENT, _translations.JSLG1Ib8 || (_translations.JSLG1Ib8 = tr("Failed to execute connect within other TeaWeb instance. Using this one. Error: %o")), error); - } - } - loader.register_task(loader.Stage.LOADED, { - priority: 0, - function: () => __awaiter(this, void 0, void 0, function* () { return handle_connect_request(connect_data, server_connections.active_connection_handler() || server_connections.spawn_server_connection_handler()); }), - name: _translations.p16a70Ob || (_translations.p16a70Ob = tr("default url connect")) - }); - } - if (chandler) { - /* no instance avail, so lets make us avail */ - chandler.callback_available = data => { - return !settings.static_global(Settings.KEY_DISABLE_MULTI_SESSION); - }; - chandler.callback_execute = data => { - handle_connect_request(data, server_connections.spawn_server_connection_handler()); - return true; - }; - } - loader.register_task(loader.Stage.LOADED, task_teaweb_starter); - }), - priority: 10 -}; -const task_certificate_callback = { - name: "certificate accept tester", - function: () => __awaiter(this, void 0, void 0, function* () { - const certificate_accept = settings.static_global(Settings.KEY_CERTIFICATE_CALLBACK, undefined); - if (certificate_accept) { - log.info(LogCategory.IPC, _translations.JpTIODqT || (_translations.JpTIODqT = tr("Using this instance as certificate callback. ID: %s")), certificate_accept); - try { - try { - yield bipc.get_handler().post_certificate_accpected(certificate_accept); - } - catch (e) { } //FIXME remove! - log.info(LogCategory.IPC, _translations.YhwU3o10 || (_translations.YhwU3o10 = tr("Other instance has acknowledged out work. Closing this window."))); - const seconds_tag = $.spawn("a"); - let seconds = 5; - let interval_id; - interval_id = setInterval(() => { - seconds--; - seconds_tag.text(seconds.toString()); - if (seconds <= 0) { - clearTimeout(interval_id); - log.info(LogCategory.GENERAL, _translations.HIJpRvc1 || (_translations.HIJpRvc1 = tr("Closing window"))); - window.close(); - return; - } - }, 1000); - const message = "You've successfully accepted the certificate.{:br:}" + - "This page will close in {0} seconds."; - createInfoModal(_translations.IwzrZVZ4 || (_translations.IwzrZVZ4 = tr("Certificate acccepted successfully")), MessageHelper.formatMessage(tr(message), seconds_tag), { - closeable: false, - footer: undefined - }).open(); - return; - } - catch (error) { - log.warn(LogCategory.IPC, _translations.eW_bQNL1 || (_translations.eW_bQNL1 = tr("Failed to successfully post certificate accept status: %o")), error); - } - } - else { - log.info(LogCategory.IPC, _translations.MWcN8CqM || (_translations.MWcN8CqM = tr("We're not used to accept certificated. Booting app."))); - } - loader.register_task(loader.Stage.LOADED, task_connect_handler); - }), - priority: 10 -}; -loader.register_task(loader.Stage.JAVASCRIPT_INITIALIZING, { - name: "jrendere initialize", - function: () => __awaiter(this, void 0, void 0, function* () { - try { - if (!setup_jsrender()) - throw "invalid load"; - } - catch (error) { - loader.critical_error(_translations.SbqJTJd5 || (_translations.SbqJTJd5 = tr("Failed to setup jsrender"))); - console.error(_translations.dWfMHleg || (_translations.dWfMHleg = tr("Failed to load jsrender! %o")), error); - return; - } - }), - priority: 100 -}); -loader.register_task(loader.Stage.JAVASCRIPT_INITIALIZING, { - name: "app starter", - function: () => __awaiter(this, void 0, void 0, function* () { - try { - yield initialize(); - if (app.is_web()) { - loader.register_task(loader.Stage.LOADED, task_certificate_callback); - } - else { - loader.register_task(loader.Stage.LOADED, task_teaweb_starter); - } - } - catch (ex) { - if (ex instanceof Error || typeof (ex.stack) !== "undefined") - console.error((tr || (msg => msg))("Critical error stack trace: %o"), ex.stack); - if (ex instanceof ReferenceError || ex instanceof TypeError) - ex = ex.name + ": " + ex.message; - loader.critical_error("Failed to boot app function:
" + ex); - } - }), - priority: 1000 -}); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["62df1507449bfd4cfeff0a258cbad9d01801f9ae54612fe2ef961ae958faf1c4"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["62df1507449bfd4cfeff0a258cbad9d01801f9ae54612fe2ef961ae958faf1c4"] = "62df1507449bfd4cfeff0a258cbad9d01801f9ae54612fe2ef961ae958faf1c4"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "aU106SIl", path: "D:/TeaSpeak/web/shared/js/stats.ts (76,46)" }, { name: "lDUhjdXK", path: "D:/TeaSpeak/web/shared/js/stats.ts (113,58)" }, { name: "VVoSHTqX", path: "D:/TeaSpeak/web/shared/js/stats.ts (123,58)" }, { name: "GfDLt7dd", path: "D:/TeaSpeak/web/shared/js/stats.ts (133,58)" }, { name: "xlw6v7TI", path: "D:/TeaSpeak/web/shared/js/stats.ts (144,62)" }, { name: "gFTimMhO", path: "D:/TeaSpeak/web/shared/js/stats.ts (173,50)" }, { name: "mHPFWzf_", path: "D:/TeaSpeak/web/shared/js/stats.ts (177,54)" }, { name: "ymcAaKXH", path: "D:/TeaSpeak/web/shared/js/stats.ts (215,55)" }, { name: "EIiJBDqh", path: "D:/TeaSpeak/web/shared/js/stats.ts (218,50)" }, { name: "NLURX_l7", path: "D:/TeaSpeak/web/shared/js/stats.ts (234,54)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var stats; -(function (stats) { - const LOG_PREFIX = "[Statistics] "; - let CloseCodes; - (function (CloseCodes) { - CloseCodes[CloseCodes["UNSET"] = 3000] = "UNSET"; - CloseCodes[CloseCodes["RECONNECT"] = 3001] = "RECONNECT"; - CloseCodes[CloseCodes["INTERNAL_ERROR"] = 3002] = "INTERNAL_ERROR"; - CloseCodes[CloseCodes["BANNED"] = 3100] = "BANNED"; - })(CloseCodes = stats.CloseCodes || (stats.CloseCodes = {})); - let ConnectionState; - (function (ConnectionState) { - ConnectionState[ConnectionState["CONNECTING"] = 0] = "CONNECTING"; - ConnectionState[ConnectionState["INITIALIZING"] = 1] = "INITIALIZING"; - ConnectionState[ConnectionState["CONNECTED"] = 2] = "CONNECTED"; - ConnectionState[ConnectionState["UNSET"] = 3] = "UNSET"; - })(ConnectionState || (ConnectionState = {})); - class SessionConfig { - } - stats.SessionConfig = SessionConfig; - class Config extends SessionConfig { - } - stats.Config = Config; - let reconnect_timer; - let current_config; - let last_user_count_update; - let user_count_listener = []; - const DEFAULT_CONFIG = { - verbose: true, - reconnect_interval: 5000, - anonymize_ip_addresses: true, - volatile_collection_only: false - }; - function initialize_config_object(target_object, source_object) { - for (const key of Object.keys(source_object)) { - if (typeof (source_object[key]) === 'object') - initialize_config_object(target_object[key] || (target_object[key] = {}), source_object[key]); - if (typeof (target_object[key]) !== 'undefined') - continue; - target_object[key] = source_object[key]; - } - return target_object; - } - function initialize(config) { - current_config = initialize_config_object(config || {}, DEFAULT_CONFIG); - if (current_config.verbose) - log.info(LogCategory.STATISTICS, _translations.aU106SIl || (_translations.aU106SIl = tr("Initializing statistics with this config: %o")), current_config); - connection.start_connection(); - } - stats.initialize = initialize; - function register_user_count_listener(listener) { - user_count_listener.push(listener); - } - stats.register_user_count_listener = register_user_count_listener; - function all_user_count_listener() { - return user_count_listener; - } - stats.all_user_count_listener = all_user_count_listener; - function deregister_user_count_listener(listener) { - user_count_listener.remove(listener); - } - stats.deregister_user_count_listener = deregister_user_count_listener; - let connection; - (function (connection_3) { - let connection; - connection_3.connection_state = ConnectionState.UNSET; - function start_connection() { - cancel_reconnect(); - close_connection(); - connection_3.connection_state = ConnectionState.CONNECTING; - connection = new WebSocket('wss://web-stats.teaspeak.de:27790'); - if (!connection) - connection = new WebSocket('wss://localhost:27788'); - { - const connection_copy = connection; - connection.onclose = (event) => { - if (connection_copy !== connection) - return; - if (current_config.verbose) - log.warn(LogCategory.STATISTICS, _translations.lDUhjdXK || (_translations.lDUhjdXK = tr("Lost connection to statistics server (Connection closed). Reason: %o. Event object: %o")), CloseCodes[event.code] || event.code, event); - if (event.code != CloseCodes.BANNED) - invoke_reconnect(); - }; - connection.onopen = () => { - if (connection_copy !== connection) - return; - if (current_config.verbose) - log.info(LogCategory.STATISTICS, _translations.VVoSHTqX || (_translations.VVoSHTqX = tr("Successfully connected to server. Initializing session."))); - connection_3.connection_state = ConnectionState.INITIALIZING; - initialize_session(); - }; - connection.onerror = (event) => { - if (connection_copy !== connection) - return; - if (current_config.verbose) - log.warn(LogCategory.STATISTICS, _translations.GfDLt7dd || (_translations.GfDLt7dd = tr("Received an error. Closing connection. Object: %o")), event); - connection.close(CloseCodes.INTERNAL_ERROR); - invoke_reconnect(); - }; - connection.onmessage = (event) => { - if (connection_copy !== connection) - return; - if (typeof (event.data) !== 'string') { - if (current_config.verbose) - log.info(LogCategory.STATISTICS, _translations.xlw6v7TI || (_translations.xlw6v7TI = tr("Received an message which isn't a string. Event object: %o")), event); - return; - } - handle_message(event.data); - }; - } - } - connection_3.start_connection = start_connection; - function close_connection() { - if (connection) { - const connection_copy = connection; - connection = undefined; - try { - connection_copy.close(3001); - } - catch (_) { } - } - } - connection_3.close_connection = close_connection; - function invoke_reconnect() { - close_connection(); - if (reconnect_timer) { - clearTimeout(reconnect_timer); - reconnect_timer = undefined; - } - if (current_config.verbose) - log.info(LogCategory.STATISTICS, _translations.gFTimMhO || (_translations.gFTimMhO = tr("Scheduled reconnect in %dms")), current_config.reconnect_interval); - reconnect_timer = setTimeout(() => { - if (current_config.verbose) - log.info(LogCategory.STATISTICS, _translations.mHPFWzf_ || (_translations.mHPFWzf_ = tr("Reconnecting"))); - start_connection(); - }, current_config.reconnect_interval); - } - function cancel_reconnect() { - if (reconnect_timer) { - clearTimeout(reconnect_timer); - reconnect_timer = undefined; - } - } - connection_3.cancel_reconnect = cancel_reconnect; - function send_message(type, data) { - connection.send(JSON.stringify({ - type: type, - data: data - })); - } - function initialize_session() { - const config_object = {}; - for (const key in SessionConfig) { - if (SessionConfig.hasOwnProperty(key)) - config_object[key] = current_config[key]; - } - send_message('initialize', { - config: config_object - }); - } - function handle_message(message) { - const data_object = JSON.parse(message); - const type = data_object.type; - const data = data_object.data; - if (typeof (handler[type]) === 'function') { - if (current_config.verbose) - log.debug(LogCategory.STATISTICS, _translations.ymcAaKXH || (_translations.ymcAaKXH = tr("Handling message of type %s")), type); - handler[type](data); - } - else if (current_config.verbose) { - log.warn(LogCategory.STATISTICS, _translations.EIiJBDqh || (_translations.EIiJBDqh = tr("Received message with an unknown type (%s). Dropping message. Full message: %o")), type, data_object); - } - } - let handler; - (function (handler) { - function handle_notify_user_count(data) { - last_user_count_update = Date.now(); - for (const listener of [...user_count_listener]) - listener(data); - } - function handle_notify_initialized(json) { - if (current_config.verbose) - log.info(LogCategory.STATISTICS, _translations.NLURX_l7 || (_translations.NLURX_l7 = tr("Session successfully initialized."))); - connection_3.connection_state = ConnectionState.CONNECTED; - } - handler["notifyinitialized"] = handle_notify_initialized; - handler["notifyusercount"] = handle_notify_user_count; - })(handler || (handler = {})); - })(connection || (connection = {})); -})(stats || (stats = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["7b858729af48df671cca14f199f2fa867310e13498573a5e8a3960b4e45e2c01"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["7b858729af48df671cca14f199f2fa867310e13498573a5e8a3960b4e45e2c01"] = "7b858729af48df671cca14f199f2fa867310e13498573a5e8a3960b4e45e2c01"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["3ece9db6d19ea2802862b96dde584af87cf367f473167d28b5019735dc5327af"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["3ece9db6d19ea2802862b96dde584af87cf367f473167d28b5019735dc5327af"] = "3ece9db6d19ea2802862b96dde584af87cf367f473167d28b5019735dc5327af"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "H2OOfK3a", path: "D:/TeaSpeak/web/shared/js/connection/CommandHelper.ts (227,67)" }, { name: "qklBLtvc", path: "D:/TeaSpeak/web/shared/js/connection/CommandHelper.ts (259,63)" }, { name: "YjALhbl6", path: "D:/TeaSpeak/web/shared/js/connection/CommandHelper.ts (278,67)" }, { name: "_LVElZ8N", path: "D:/TeaSpeak/web/shared/js/connection/CommandHelper.ts (309,63)" }, { name: "iPkDE0bO", path: "D:/TeaSpeak/web/shared/js/connection/CommandHelper.ts (343,63)" }, { name: "GIgB621U", path: "D:/TeaSpeak/web/shared/js/connection/CommandHelper.ts (357,63)" }, { name: "Afd7iFYb", path: "D:/TeaSpeak/web/shared/js/connection/CommandHelper.ts (380,63)" }, { name: "kF1u3PFy", path: "D:/TeaSpeak/web/shared/js/connection/CommandHelper.ts (403,63)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var connection; -(function (connection_4) { - class CommandHelper extends connection_4.AbstractCommandHandler { - constructor(connection) { - super(connection); - this._awaiters_unique_ids = {}; - this._awaiters_unique_dbid = {}; - this.volatile_handler_boss = false; - this.ignore_consumed = true; - } - initialize() { - this.connection.command_handler_boss().register_handler(this); - } - destroy() { - if (this.connection) { - const hboss = this.connection.command_handler_boss(); - hboss && hboss.unregister_handler(this); - } - this._awaiters_unique_ids = undefined; - } - handle_command(command) { - if (command.command == "notifyclientnamefromuid") - this.handle_notifyclientnamefromuid(command.arguments); - if (command.command == "notifyclientgetnamefromdbid") - this.handle_notifyclientgetnamefromdbid(command.arguments); - else - return false; - return true; - } - joinChannel(channel, password) { - return this.connection.send_command("clientmove", { - "clid": this.connection.client.getClientId(), - "cid": channel.getChannelId(), - "cpw": password || "" - }); - } - sendMessage(message, type, target) { - if (type == ChatType.SERVER) - return this.connection.send_command("sendtextmessage", { "targetmode": 3, "target": 0, "msg": message }); - else if (type == ChatType.CHANNEL) - return this.connection.send_command("sendtextmessage", { "targetmode": 2, "target": target.getChannelId(), "msg": message }); - else if (type == ChatType.CLIENT) - return this.connection.send_command("sendtextmessage", { "targetmode": 1, "target": target.clientId(), "msg": message }); - } - updateClient(key, value) { - let data = {}; - data[key] = value; - return this.connection.send_command("clientupdate", data); - } - info_from_uid(..._unique_ids) { - return __awaiter(this, void 0, void 0, function* () { - const response = []; - const request = []; - const unique_ids = new Set(_unique_ids); - if (!unique_ids.size) - return []; - const unique_id_resolvers = {}; - for (const unique_id of unique_ids) { - request.push({ 'cluid': unique_id }); - (this._awaiters_unique_ids[unique_id] || (this._awaiters_unique_ids[unique_id] = [])) - .push(unique_id_resolvers[unique_id] = info => response.push(info)); - } - try { - yield this.connection.send_command("clientgetnamefromuid", request); - } - catch (error) { - if (error instanceof CommandResult && error.id == ErrorID.EMPTY_RESULT) { - /* nothing */ - } - else { - throw error; - } - } - finally { - /* cleanup */ - for (const unique_id of Object.keys(unique_id_resolvers)) - (this._awaiters_unique_ids[unique_id] || []).remove(unique_id_resolvers[unique_id]); - } - return response; - }); - } - handle_notifyclientgetnamefromdbid(json) { - for (const entry of json) { - const info = { - client_unique_id: entry["cluid"], - client_nickname: entry["clname"], - client_database_id: parseInt(entry["cldbid"]) - }; - const functions = this._awaiters_unique_dbid[info.client_database_id] || []; - delete this._awaiters_unique_dbid[info.client_database_id]; - for (const fn of functions) - fn(info); - } - } - info_from_cldbid(..._cldbid) { - return __awaiter(this, void 0, void 0, function* () { - const response = []; - const request = []; - const unique_cldbid = new Set(_cldbid); - if (!unique_cldbid.size) - return []; - const unique_cldbid_resolvers = {}; - for (const cldbid of unique_cldbid) { - request.push({ 'cldbid': cldbid }); - (this._awaiters_unique_dbid[cldbid] || (this._awaiters_unique_dbid[cldbid] = [])) - .push(unique_cldbid_resolvers[cldbid] = info => response.push(info)); - } - try { - yield this.connection.send_command("clientgetnamefromdbid", request); - } - catch (error) { - if (error instanceof CommandResult && error.id == ErrorID.EMPTY_RESULT) { - /* nothing */ - } - else { - throw error; - } - } - finally { - /* cleanup */ - for (const cldbid of Object.keys(unique_cldbid_resolvers)) - (this._awaiters_unique_dbid[cldbid] || []).remove(unique_cldbid_resolvers[cldbid]); - } - return response; - }); - } - handle_notifyclientnamefromuid(json) { - for (const entry of json) { - const info = { - client_unique_id: entry["cluid"], - client_nickname: entry["clname"], - client_database_id: parseInt(entry["cldbid"]) - }; - const functions = this._awaiters_unique_ids[entry["cluid"]] || []; - delete this._awaiters_unique_ids[entry["cluid"]]; - for (const fn of functions) - fn(info); - } - } - request_query_list(server_id = undefined) { - return new Promise((resolve, reject) => { - const single_handler = { - command: "notifyquerylist", - function: command => { - const json = command.arguments; - const result = {}; - result.flag_all = json[0]["flag_all"]; - result.flag_own = json[0]["flag_own"]; - result.queries = []; - for (const entry of json) { - const rentry = {}; - rentry.bounded_server = parseInt(entry["client_bound_server"]); - rentry.username = entry["client_login_name"]; - rentry.unique_id = entry["client_unique_identifier"]; - result.queries.push(rentry); - } - resolve(result); - return true; - } - }; - this.handler_boss.register_single_handler(single_handler); - let data = {}; - if (server_id !== undefined) - data["server_id"] = server_id; - this.connection.send_command("querylist", data).catch(error => { - this.handler_boss.remove_single_handler(single_handler); - if (error instanceof CommandResult) { - if (error.id == ErrorID.EMPTY_RESULT) { - resolve(undefined); - return; - } - } - reject(error); - }); - }); - } - request_playlist_list() { - return new Promise((resolve, reject) => { - const single_handler = { - command: "notifyplaylistlist", - function: command => { - const json = command.arguments; - const result = []; - for (const entry of json) { - try { - result.push({ - playlist_id: parseInt(entry["playlist_id"]), - playlist_bot_id: parseInt(entry["playlist_bot_id"]), - playlist_title: entry["playlist_title"], - playlist_type: parseInt(entry["playlist_type"]), - playlist_owner_dbid: parseInt(entry["playlist_owner_dbid"]), - playlist_owner_name: entry["playlist_owner_name"], - needed_power_modify: parseInt(entry["needed_power_modify"]), - needed_power_permission_modify: parseInt(entry["needed_power_permission_modify"]), - needed_power_delete: parseInt(entry["needed_power_delete"]), - needed_power_song_add: parseInt(entry["needed_power_song_add"]), - needed_power_song_move: parseInt(entry["needed_power_song_move"]), - needed_power_song_remove: parseInt(entry["needed_power_song_remove"]) - }); - } - catch (error) { - log.error(LogCategory.NETWORKING, _translations.H2OOfK3a || (_translations.H2OOfK3a = tr("Failed to parse playlist entry: %o")), error); - } - } - resolve(result); - return true; - } - }; - this.handler_boss.register_single_handler(single_handler); - this.connection.send_command("playlistlist").catch(error => { - this.handler_boss.remove_single_handler(single_handler); - if (error instanceof CommandResult) { - if (error.id == ErrorID.EMPTY_RESULT) { - resolve([]); - return; - } - } - reject(error); - }); - }); - } - request_playlist_songs(playlist_id) { - return new Promise((resolve, reject) => { - const single_handler = { - command: "notifyplaylistsonglist", - function: command => { - const json = command.arguments; - if (json[0]["playlist_id"] != playlist_id) { - log.error(LogCategory.NETWORKING, _translations.qklBLtvc || (_translations.qklBLtvc = tr("Received invalid notification for playlist songs"))); - return false; - } - const result = []; - for (const entry of json) { - try { - result.push({ - song_id: parseInt(entry["song_id"]), - song_invoker: entry["song_invoker"], - song_previous_song_id: parseInt(entry["song_previous_song_id"]), - song_url: entry["song_url"], - song_url_loader: entry["song_url_loader"], - song_loaded: entry["song_loaded"] == true || entry["song_loaded"] == "1", - song_metadata: entry["song_metadata"] - }); - } - catch (error) { - log.error(LogCategory.NETWORKING, _translations.YjALhbl6 || (_translations.YjALhbl6 = tr("Failed to parse playlist song entry: %o")), error); - } - } - resolve(result); - return true; - } - }; - this.handler_boss.register_single_handler(single_handler); - this.connection.send_command("playlistsonglist", { playlist_id: playlist_id }).catch(error => { - this.handler_boss.remove_single_handler(single_handler); - if (error instanceof CommandResult) { - if (error.id == ErrorID.EMPTY_RESULT) { - resolve([]); - return; - } - } - reject(error); - }); - }); - } - request_playlist_client_list(playlist_id) { - return new Promise((resolve, reject) => { - const single_handler = { - command: "notifyplaylistclientlist", - function: command => { - const json = command.arguments; - if (json[0]["playlist_id"] != playlist_id) { - log.error(LogCategory.NETWORKING, _translations._LVElZ8N || (_translations._LVElZ8N = tr("Received invalid notification for playlist clients"))); - return false; - } - const result = []; - for (const entry of json) - result.push(parseInt(entry["cldbid"])); - resolve(result.filter(e => !isNaN(e))); - return true; - } - }; - this.handler_boss.register_single_handler(single_handler); - this.connection.send_command("playlistclientlist", { playlist_id: playlist_id }).catch(error => { - this.handler_boss.remove_single_handler(single_handler); - if (error instanceof CommandResult && error.id == ErrorID.EMPTY_RESULT) { - resolve([]); - return; - } - reject(error); - }); - }); - } - request_clients_by_server_group(group_id) { - return __awaiter(this, void 0, void 0, function* () { - //servergroupclientlist sgid=2 - //notifyservergroupclientlist sgid=6 cldbid=2 client_nickname=WolverinDEV client_unique_identifier=xxjnc14LmvTk+Lyrm8OOeo4tOqw= - return new Promise((resolve, reject) => { - const single_handler = { - command: "notifyservergroupclientlist", - function: command => { - if (command.arguments[0]["sgid"] != group_id) { - log.error(LogCategory.NETWORKING, _translations.iPkDE0bO || (_translations.iPkDE0bO = tr("Received invalid notification for server group client list"))); - return false; - } - try { - const result = []; - for (const entry of command.arguments) - result.push({ - client_database_id: parseInt(entry["cldbid"]), - client_nickname: entry["client_nickname"], - client_unique_identifier: entry["client_unique_identifier"] - }); - resolve(result); - } - catch (error) { - log.error(LogCategory.NETWORKING, _translations.GIgB621U || (_translations.GIgB621U = tr("Failed to parse server group client list: %o")), error); - reject("failed to parse info"); - } - return true; - } - }; - this.handler_boss.register_single_handler(single_handler); - this.connection.send_command("servergroupclientlist", { sgid: group_id }).catch(error => { - this.handler_boss.remove_single_handler(single_handler); - reject(error); - }); - }); - }); - } - request_playlist_info(playlist_id) { - return new Promise((resolve, reject) => { - const single_handler = { - command: "notifyplaylistinfo", - function: command => { - const json = command.arguments[0]; - if (json["playlist_id"] != playlist_id) { - log.error(LogCategory.NETWORKING, _translations.Afd7iFYb || (_translations.Afd7iFYb = tr("Received invalid notification for playlist info"))); - return; - } - try { - //resolve - resolve({ - playlist_id: parseInt(json["playlist_id"]), - playlist_title: json["playlist_title"], - playlist_description: json["playlist_description"], - playlist_type: parseInt(json["playlist_type"]), - playlist_owner_dbid: parseInt(json["playlist_owner_dbid"]), - playlist_owner_name: json["playlist_owner_name"], - playlist_flag_delete_played: json["playlist_flag_delete_played"] == true || json["playlist_flag_delete_played"] == "1", - playlist_flag_finished: json["playlist_flag_finished"] == true || json["playlist_flag_finished"] == "1", - playlist_replay_mode: parseInt(json["playlist_replay_mode"]), - playlist_current_song_id: parseInt(json["playlist_current_song_id"]), - playlist_max_songs: parseInt(json["playlist_max_songs"]) - }); - } - catch (error) { - log.error(LogCategory.NETWORKING, _translations.kF1u3PFy || (_translations.kF1u3PFy = tr("Failed to parse playlist info: %o")), error); - reject("failed to parse info"); - } - return true; - } - }; - this.handler_boss.register_single_handler(single_handler); - this.connection.send_command("playlistinfo", { playlist_id: playlist_id }).catch(error => { - this.handler_boss.remove_single_handler(single_handler); - reject(error); - }); - }); - } - /** - * @deprecated - * Its just a workaround for the query management. - * There is no garante that the whoami trick will work forever - */ - current_virtual_server_id() { - if (this._who_am_i) - return Promise.resolve(parseInt(this._who_am_i["virtualserver_id"])); - return new Promise((resolve, reject) => { - const single_handler = { - function: command => { - if (command.command != "" && command.command.indexOf("=") == -1) - return false; - this._who_am_i = command.arguments[0]; - resolve(parseInt(this._who_am_i["virtualserver_id"])); - return true; - } - }; - this.handler_boss.register_single_handler(single_handler); - this.connection.send_command("whoami").catch(error => { - this.handler_boss.remove_single_handler(single_handler); - reject(error); - }); - }); - } - } - connection_4.CommandHelper = CommandHelper; -})(connection || (connection = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["5231f662a327146d48f3085c7c57a8416d97bfc052e39b639f51171e8915807a"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["5231f662a327146d48f3085c7c57a8416d97bfc052e39b639f51171e8915807a"] = "5231f662a327146d48f3085c7c57a8416d97bfc052e39b639f51171e8915807a"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "dXuuqi93", path: "D:/TeaSpeak/web/shared/js/connection/HandshakeHandler.ts (75,39)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var connection; -(function (connection) { - class HandshakeHandler { - constructor(profile, parameters) { - this.failed = false; - this.profile = profile; - this.parameters = parameters; - } - setConnection(con) { - this.connection = con; - } - initialize() { - this.handshake_handler = this.profile.spawn_identity_handshake_handler(this.connection); - if (!this.handshake_handler) { - this.handshake_failed("failed to create identity handler"); - return; - } - this.handshake_handler.register_callback((flag, message) => { - if (flag) - this.handshake_finished(); - else - this.handshake_failed(message); - }); - } - get_identity_handler() { - return this.handshake_handler; - } - startHandshake() { - this.handshake_handler.start_handshake(); - } - on_teamspeak() { - const type = this.profile.selected_type(); - if (type == profiles.identities.IdentitifyType.TEAMSPEAK) - this.handshake_finished(); - else { - if (this.failed) - return; - this.failed = true; - this.connection.client.handleDisconnect(DisconnectReason.HANDSHAKE_TEAMSPEAK_REQUIRED); - } - } - handshake_failed(message) { - if (this.failed) - return; - this.failed = true; - this.connection.client.handleDisconnect(DisconnectReason.HANDSHAKE_FAILED, message); - } - handshake_finished(version) { - const _native = window["native"]; - if (native_client && _native && _native.client_version && !version) { - _native.client_version() - .then(this.handshake_finished.bind(this)) - .catch(error => { - console.error(_translations.dXuuqi93 || (_translations.dXuuqi93 = tr("Failed to get version:"))); - console.error(error); - this.handshake_finished("?.?.?"); - }); - return; - } - const git_version = settings.static_global("version", "unknown"); - const browser_name = (navigator.browserSpecs || {})["name"] || " "; - let data = { - client_nickname: this.parameters.nickname || "Another TeaSpeak user", - client_platform: (browser_name ? browser_name + " " : "") + navigator.platform, - client_version: "TeaWeb " + git_version + " (" + navigator.userAgent + ")", - client_version_sign: undefined, - client_default_channel: (this.parameters.channel || {}).target, - client_default_channel_password: (this.parameters.channel || {}).password, - client_default_token: this.parameters.token, - client_server_password: this.parameters.password ? this.parameters.password.password : undefined, - client_browser_engine: navigator.product, - client_input_hardware: this.connection.client.client_status.input_hardware, - client_output_hardware: false, - client_input_muted: this.connection.client.client_status.input_muted, - client_output_muted: this.connection.client.client_status.output_muted, - }; - //0.0.1 [Build: 1549713549] Linux 7XvKmrk7uid2ixHFeERGqcC8vupeQqDypLtw2lY9slDNPojEv//F47UaDLG+TmVk4r6S0TseIKefzBpiRtLDAQ== - if (version) { - data.client_version = "TeaClient "; - data.client_version += " " + version; - const os = require("os"); - const arch_mapping = { - "x32": "32bit", - "x64": "64bit" - }; - data.client_version += " " + (arch_mapping[os.arch()] || os.arch()); - const os_mapping = { - "win32": "Windows", - "linux": "Linux" - }; - data.client_platform = (os_mapping[os.platform()] || os.platform()); - } - /* required to keep compatibility */ - if (this.profile.selected_type() === profiles.identities.IdentitifyType.TEAMSPEAK) { - data["client_key_offset"] = this.profile.selected_identity().hash_number; - } - this.connection.send_command("clientinit", data).catch(error => { - if (error instanceof CommandResult) { - if (error.id == 1028) { - this.connection.client.handleDisconnect(DisconnectReason.SERVER_REQUIRES_PASSWORD); - } - else if (error.id == 783 || error.id == 519) { - error.extra_message = isNaN(parseInt(error.extra_message)) ? "8" : error.extra_message; - this.connection.client.handleDisconnect(DisconnectReason.IDENTITY_TOO_LOW, error); - } - else if (error.id == 3329) { - this.connection.client.handleDisconnect(DisconnectReason.HANDSHAKE_BANNED, error); - } - else { - this.connection.client.handleDisconnect(DisconnectReason.CLIENT_KICKED, error); - } - } - else - this.connection.disconnect(); - }); - } - } - connection.HandshakeHandler = HandshakeHandler; -})(connection || (connection = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["060051cbf8eeed8239b90b8a8a80d575412f10f065dbed5bd8be5dd5e4c9fd8b"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["060051cbf8eeed8239b90b8a8a80d575412f10f065dbed5bd8be5dd5e4c9fd8b"] = "060051cbf8eeed8239b90b8a8a80d575412f10f065dbed5bd8be5dd5e4c9fd8b"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var ErrorID; -(function (ErrorID) { - ErrorID[ErrorID["NOT_IMPLEMENTED"] = 2] = "NOT_IMPLEMENTED"; - ErrorID[ErrorID["COMMAND_NOT_FOUND"] = 256] = "COMMAND_NOT_FOUND"; - ErrorID[ErrorID["PERMISSION_ERROR"] = 2568] = "PERMISSION_ERROR"; - ErrorID[ErrorID["EMPTY_RESULT"] = 1281] = "EMPTY_RESULT"; - ErrorID[ErrorID["PLAYLIST_IS_IN_USE"] = 8451] = "PLAYLIST_IS_IN_USE"; - ErrorID[ErrorID["FILE_ALREADY_EXISTS"] = 2050] = "FILE_ALREADY_EXISTS"; - ErrorID[ErrorID["CLIENT_INVALID_ID"] = 512] = "CLIENT_INVALID_ID"; - ErrorID[ErrorID["CONVERSATION_INVALID_ID"] = 8704] = "CONVERSATION_INVALID_ID"; - ErrorID[ErrorID["CONVERSATION_MORE_DATA"] = 8705] = "CONVERSATION_MORE_DATA"; - ErrorID[ErrorID["CONVERSATION_IS_PRIVATE"] = 8706] = "CONVERSATION_IS_PRIVATE"; -})(ErrorID || (ErrorID = {})); -class CommandResult { - constructor(json) { - this.json = json; - this.id = parseInt(json["id"]); - this.message = json["msg"]; - this.extra_message = ""; - if (json["extra_msg"]) - this.extra_message = json["extra_msg"]; - this.success = this.id == 0; - } -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["44b39e0f81c423563b3da77145e11d4583bdaf437fa62b0b33c325db0e94385b"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["44b39e0f81c423563b3da77145e11d4583bdaf437fa62b0b33c325db0e94385b"] = "44b39e0f81c423563b3da77145e11d4583bdaf437fa62b0b33c325db0e94385b"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -// ASN.1 JavaScript decoder -// Copyright (c) 2008-2018 Lapo Luchini -// Copyright (c) 2019-2019 Markus Hadenfeldt -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -var asn1; -(function (asn1) { - const ellipsis = "\u2026"; - function string_cut(str, len) { - if (str.length > len) - str = str.substring(0, len) + ellipsis; - return str; - } - class Stream { - constructor(data, position) { - if (data instanceof Stream) - this.data = data.data; - else - this.data = data; - this.position = position; - } - length() { - if (this.data instanceof ArrayBuffer) - return this.data.byteLength; - return this.data.length; - } - get(position) { - if (position === undefined) - position = this.position++; - if (position >= this.length()) - throw 'Requesting byte offset ' + this.position + ' on a stream of length ' + this.length(); - return (typeof (this.data) === "string") ? this.data.charCodeAt(position) : this.data[position]; - } - hexByte(byte) { - return Stream.HEX_DIGITS.charAt((byte >> 4) & 0xF) + Stream.HEX_DIGITS.charAt(byte & 0xF); - } - parseStringISO(start, end) { - let s = ""; - for (let i = start; i < end; ++i) - s += String.fromCharCode(this.get(i)); - return s; - } - parseStringUTF(start, end) { - let s = ""; - for (let i = start; i < end;) { - let c = this.get(i++); - if (c < 128) - s += String.fromCharCode(c); - else if ((c > 191) && (c < 224)) - s += String.fromCharCode(((c & 0x1F) << 6) | (this.get(i++) & 0x3F)); - else - s += String.fromCharCode(((c & 0x0F) << 12) | ((this.get(i++) & 0x3F) << 6) | (this.get(i++) & 0x3F)); - } - return s; - } - parseStringBMP(start, end) { - let str = "", hi, lo; - for (let i = start; i < end;) { - hi = this.get(i++); - lo = this.get(i++); - str += String.fromCharCode((hi << 8) | lo); - } - return str; - } - parseTime(start, end, shortYear) { - let s = this.parseStringISO(start, end), m = (shortYear ? Stream.reTimeS : Stream.reTimeL).exec(s); - if (!m) - return "Unrecognized time: " + s; - if (shortYear) { - // to avoid querying the timer, use the fixed range [1970, 2069] - // it will conform with ITU X.400 [-10, +40] sliding window until 2030 - //m[1] = +m[1]; - //m[1] += (parseInt(m[1]) < 70) ? 2000 : 1900; - throw "fixme!"; - } - s = m[1] + "-" + m[2] + "-" + m[3] + " " + m[4]; - if (m[5]) { - s += ":" + m[5]; - if (m[6]) { - s += ":" + m[6]; - if (m[7]) - s += "." + m[7]; - } - } - if (m[8]) { - s += " UTC"; - if (m[8] != 'Z') { - s += m[8]; - if (m[9]) - s += ":" + m[9]; - } - } - return s; - } - ; - parseInteger(start, end) { - let current = this.get(start); - let negative = (current > 127); - let padding = negative ? 255 : 0; - let length; - let descriptor; - // skip unuseful bits (not allowed in DER) - while (current == padding && ++start < end) - current = this.get(start); - length = end - start; - if (length === 0) - return negative ? '-1' : '0'; - // show bit length of huge integers - if (length > 4) { - descriptor = current; - length <<= 3; /* calculate bit length */ - while (((descriptor ^ padding) & 0x80) == 0) { - descriptor <<= 1; - --length; - } - descriptor = "(" + length + " bit)\n"; - } - // decode the integer - if (negative) - current = current - 256; - let number = ""; - if (typeof (Int10) !== "undefined") { - let n = new Int10(current); - for (let i = start + 1; i < end; ++i) - n.mulAdd(256, this.get(i)); - number = n.toString(); - } - else { - let n = 0; - for (let i = start + 1; i < end; ++i) { - n <<= 8; - n += this.get(i); - } - number = n.toString(); - } - return descriptor + number; - } - ; - isASCII(start, end) { - for (let i = start; i < end; ++i) { - const c = this.get(i); - if (c < 32 || c > 176) - return false; - } - return true; - } - ; - parseBitString(start, end, maxLength) { - let unusedBit = this.get(start), lenBit = ((end - start - 1) << 3) - unusedBit, intro = "(" + lenBit + " bit)\n", s = ""; - for (let i = start + 1; i < end; ++i) { - let b = this.get(i), skip = (i == end - 1) ? unusedBit : 0; - for (let j = 7; j >= skip; --j) - s += (b >> j) & 1 ? "1" : "0"; - if (s.length > maxLength) - return intro + string_cut(s, maxLength); - } - return intro + s; - } - ; - parseOctetString(start, end, maxLength) { - if (this.isASCII(start, end)) - return string_cut(this.parseStringISO(start, end), maxLength); - let len = end - start, s = "(" + len + " byte)\n"; - maxLength /= 2; // we work in bytes - if (len > maxLength) - end = start + maxLength; - for (let i = start; i < end; ++i) - s += this.hexByte(this.get(i)); - if (len > maxLength) - s += ellipsis; - return s; - } - ; - parseOID(start, end, maxLength) { - let s = '', n = new Int10(), bits = 0; - for (let i = start; i < end; ++i) { - let v = this.get(i); - n.mulAdd(128, v & 0x7F); - bits += 7; - if (!(v & 0x80)) { // finished - if (s === '') { - n = n.simplify(); - if (n instanceof Int10) { - n.sub(80); - s = "2." + n.toString(); - } - else { - let m = n < 80 ? n < 40 ? 0 : 1 : 2; - s = m + "." + (n - m * 40); - } - } - else - s += "." + n.toString(); - if (s.length > maxLength) - return string_cut(s, maxLength); - n = new Int10(); - bits = 0; - } - } - if (bits > 0) - s += ".incomplete"; - /* FIXME - if (typeof oids === 'object') { - let oid = oids[s]; - if (oid) { - if (oid.d) s += "\n" + oid.d; - if (oid.c) s += "\n" + oid.c; - if (oid.w) s += "\n(warning!)"; - } - } - */ - return s; - } - ; - } - Stream.HEX_DIGITS = "0123456789ABCDEF"; - Stream.reTimeS = /^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/; - Stream.reTimeL = /^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/; - asn1.Stream = Stream; - let TagClass; - (function (TagClass) { - TagClass[TagClass["UNIVERSAL"] = 0] = "UNIVERSAL"; - TagClass[TagClass["APPLICATION"] = 1] = "APPLICATION"; - TagClass[TagClass["CONTEXT"] = 2] = "CONTEXT"; - TagClass[TagClass["PRIVATE"] = 3] = "PRIVATE"; - })(TagClass = asn1.TagClass || (asn1.TagClass = {})); - let TagType; - (function (TagType) { - TagType[TagType["EOC"] = 0] = "EOC"; - TagType[TagType["BOOLEAN"] = 1] = "BOOLEAN"; - TagType[TagType["INTEGER"] = 2] = "INTEGER"; - TagType[TagType["BIT_STRING"] = 3] = "BIT_STRING"; - TagType[TagType["OCTET_STRING"] = 4] = "OCTET_STRING"; - TagType[TagType["NULL"] = 5] = "NULL"; - TagType[TagType["OBJECT_IDENTIFIER"] = 6] = "OBJECT_IDENTIFIER"; - TagType[TagType["ObjectDescriptor"] = 7] = "ObjectDescriptor"; - TagType[TagType["EXTERNAL"] = 8] = "EXTERNAL"; - TagType[TagType["REAL"] = 9] = "REAL"; - TagType[TagType["ENUMERATED"] = 10] = "ENUMERATED"; - TagType[TagType["EMBEDDED_PDV"] = 11] = "EMBEDDED_PDV"; - TagType[TagType["UTF8String"] = 12] = "UTF8String"; - TagType[TagType["SEQUENCE"] = 16] = "SEQUENCE"; - TagType[TagType["SET"] = 17] = "SET"; - TagType[TagType["NumericString"] = 18] = "NumericString"; - TagType[TagType["PrintableString"] = 19] = "PrintableString"; - TagType[TagType["TeletextString"] = 20] = "TeletextString"; - TagType[TagType["VideotexString"] = 21] = "VideotexString"; - TagType[TagType["IA5String"] = 22] = "IA5String"; - TagType[TagType["UTCTime"] = 23] = "UTCTime"; - TagType[TagType["GeneralizedTime"] = 24] = "GeneralizedTime"; - TagType[TagType["GraphicString"] = 25] = "GraphicString"; - TagType[TagType["VisibleString"] = 26] = "VisibleString"; - TagType[TagType["GeneralString"] = 27] = "GeneralString"; - TagType[TagType["UniversalString"] = 28] = "UniversalString"; - TagType[TagType["BMPString"] = 30] = "BMPString"; - })(TagType = asn1.TagType || (asn1.TagType = {})); - class ASN1Tag { - constructor(stream) { - let buf = stream.get(); - this.tagClass = buf >> 6; - this.tagConstructed = ((buf & 0x20) !== 0); - this.tagNumber = buf & 0x1F; - if (this.tagNumber == 0x1F) { // long tag - let n = new Int10(); - do { - buf = stream.get(); - n.mulAdd(128, buf & 0x7F); - } while (buf & 0x80); - this.tagNumber = n.simplify(); - } - } - isUniversal() { - return this.tagClass === 0x00; - } - ; - isEOC() { - return this.tagClass === 0x00 && this.tagNumber === 0x00; - } - ; - } - class ASN1 { - constructor(stream, header, length, tag, children) { - this.stream = stream; - this.header = header; - this.length = length; - this.tag = tag; - this.children = children; - } - content(max_length, type) { - if (this.tag === undefined) - return null; - if (max_length === undefined) - max_length = Infinity; - let content = this.posContent(), len = Math.abs(this.length); - if (!this.tag.isUniversal()) { - if (this.children !== null) - return "(" + this.children.length + " elem)"; - return this.stream.parseOctetString(content, content + len, max_length); - } - switch (type || this.tag.tagNumber) { - case 0x01: // BOOLEAN - return (this.stream.get(content) === 0) ? "false" : "true"; - case 0x02: // INTEGER - return this.stream.parseInteger(content, content + len); - case 0x03: // BIT_STRING - return this.children ? "(" + this.children.length + " elem)" : - this.stream.parseBitString(content, content + len, max_length); - case 0x04: // OCTET_STRING - return this.children ? "(" + this.children.length + " elem)" : - this.stream.parseOctetString(content, content + len, max_length); - //case 0x05: // NULL - case 0x06: // OBJECT_IDENTIFIER - return this.stream.parseOID(content, content + len, max_length); - //case 0x07: // ObjectDescriptor - //case 0x08: // EXTERNAL - //case 0x09: // REAL - //case 0x0A: // ENUMERATED - //case 0x0B: // EMBEDDED_PDV - case 0x10: // SEQUENCE - case 0x11: // SET - if (this.children !== null) - return "(" + this.children.length + " elem)"; - else - return "(no elem)"; - case 0x0C: // UTF8String - return string_cut(this.stream.parseStringUTF(content, content + len), max_length); - case 0x12: // NumericString - case 0x13: // PrintableString - case 0x14: // TeletexString - case 0x15: // VideotexString - case 0x16: // IA5String - //case 0x19: // GraphicString - case 0x1A: // VisibleString - //case 0x1B: // GeneralString - //case 0x1C: // UniversalString - return string_cut(this.stream.parseStringISO(content, content + len), max_length); - case 0x1E: // BMPString - return string_cut(this.stream.parseStringBMP(content, content + len), max_length); - case 0x17: // UTCTime - case 0x18: // GeneralizedTime - return this.stream.parseTime(content, content + len, (this.tag.tagNumber == 0x17)); - } - return null; - } - ; - typeName() { - switch (this.tag.tagClass) { - case 0: // universal - return TagType[this.tag.tagNumber] || ("Universal_" + this.tag.tagNumber.toString()); - case 1: - return "Application_" + this.tag.tagNumber.toString(); - case 2: - return "[" + this.tag.tagNumber.toString() + "]"; // Context - case 3: - return "Private_" + this.tag.tagNumber.toString(); - } - } - ; - toString() { - return this.typeName() + "@" + this.stream.position + "[header:" + this.header + ",length:" + this.length + ",sub:" + ((this.children === null) ? 'null' : this.children.length) + "]"; - } - toPrettyString(indent) { - if (indent === undefined) - indent = ''; - let s = indent + this.typeName() + " @" + this.stream.position; - if (this.length >= 0) - s += "+"; - s += this.length; - if (this.tag.tagConstructed) - s += " (constructed)"; - else if ((this.tag.isUniversal() && ((this.tag.tagNumber == 0x03) || (this.tag.tagNumber == 0x04))) && (this.children !== null)) - s += " (encapsulates)"; - let content = this.content(); - if (content) - s += ": " + content.replace(/\n/g, '|'); - s += "\n"; - if (this.children !== null) { - indent += ' '; - for (let i = 0, max = this.children.length; i < max; ++i) - s += this.children[i].toPrettyString(indent); - } - return s; - } - ; - posStart() { - return this.stream.position; - } - ; - posContent() { - return this.stream.position + this.header; - } - ; - posEnd() { - return this.stream.position + this.header + Math.abs(this.length); - } - ; - static decodeLength(stream) { - let buf = stream.get(); - const len = buf & 0x7F; - if (len == buf) - return len; - if (len > 6) // no reason to use Int10, as it would be a huge buffer anyways - throw "Length over 48 bits not supported at position " + (stream.position - 1); - if (len === 0) - return null; // undefined - buf = 0; - for (let i = 0; i < len; ++i) - buf = (buf << 8) + stream.get(); - return buf; - } - ; - static encodeLength(buffer, offset, length) { - if (length < 0x7F) { - buffer[offset] = length; - } - else { - buffer[offset] = 0x80; - let index = 1; - while (length > 0) { - buffer[offset + index++] = length & 0xFF; - length >>= 8; - buffer[offset] += 1; - } - } - } - } - asn1.ASN1 = ASN1; - function decode0(stream) { - const streamStart = new Stream(stream, 0); /* copy */ - const tag = new ASN1Tag(stream); - let len = ASN1.decodeLength(stream); - const start = stream.position; - const length_header = start - streamStart.position; - let children = null; - const query_children = () => { - children = []; - if (len !== null) { - const end = start + len; - if (end > stream.length()) - throw 'Container at offset ' + start + ' has a length of ' + len + ', which is past the end of the stream'; - while (stream.position < end) - children[children.length] = decode0(stream); - if (stream.position != end) - throw 'Content size is not correct for container at offset ' + start; - } - else { - // undefined length - try { - while (true) { - const s = decode0(stream); - if (s.tag.isEOC()) - break; - children[children.length] = s; - } - len = start - stream.position; // undefined lengths are represented as negative values - } - catch (e) { - throw 'Exception while decoding undefined length content at offset ' + start + ': ' + e; - } - } - }; - if (tag.tagConstructed) { - // must have valid content - query_children(); - } - else if (tag.isUniversal() && ((tag.tagNumber == 0x03) || (tag.tagNumber == 0x04))) { - // sometimes BitString and OctetString are used to encapsulate ASN.1 - try { - if (tag.tagNumber == 0x03) - if (stream.get() != 0) - throw "BIT STRINGs with unused bits cannot encapsulate."; - query_children(); - for (let i = 0; i < children.length; ++i) - if (children[i].tag.isEOC()) - throw 'EOC is not supposed to be actual content.'; - } - catch (e) { - // but silently ignore when they don't - children = null; - //DEBUG console.log('Could not decode structure at ' + start + ':', e); - } - } - if (children === null) { - if (len === null) - throw "We can't skip over an invalid tag with undefined length at offset " + start; - stream.position = start + Math.abs(len); - } - return new ASN1(streamStart, length_header, len, tag, children); - } - function decode(stream) { - return decode0(new Stream(stream, 0)); - } - asn1.decode = decode; -})(asn1 || (asn1 = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["40e158fd8e3f636d8ce20ba2e787957a9f5aee6c7612e4e69590e058bdcabe54"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["40e158fd8e3f636d8ce20ba2e787957a9f5aee6c7612e4e69590e058bdcabe54"] = "40e158fd8e3f636d8ce20ba2e787957a9f5aee6c7612e4e69590e058bdcabe54"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -class Crc32 { - constructor() { - this.crc = -1 >>> 0; - } - update(data) { - const dataView = new Uint8Array(data, 0); - const len = dataView.length; - for (let i = 0; i < len; i++) { - this.crc = (this.crc >>> 8) ^ Crc32.lookup[(this.crc ^ dataView[i]) & 0xFF]; - } - } - ; - digest(radix) { - const buffer = new ArrayBuffer(4); - const dv = new DataView(buffer); - dv.setUint32(0, ~this.crc >>> 0, false); - return dv.getUint32(0).toString(radix || 16); - } - ; -} -Crc32.lookup = [ - 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, - 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, - 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, - 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, - 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, - 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, - 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, - 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, - 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, - 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, - 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, - 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, - 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, - 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, - 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, - 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, - 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, - 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, - 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, - 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, - 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, - 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, - 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, - 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, - 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, - 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, - 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, - 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, - 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, - 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, - 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, - 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, - 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, - 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, - 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, - 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, - 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, - 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, - 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, - 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, - 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, - 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, - 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, - 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, - 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, - 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, - 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, - 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, - 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, - 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, - 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, - 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, - 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, - 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, - 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, - 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, - 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, - 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, - 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, - 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, - 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, - 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, - 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, - 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D -]; -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["8ba95a24447d1d808ee3655ba65ce013c1e572413ea5c442d930a3012aa144f1"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["8ba95a24447d1d808ee3655ba65ce013c1e572413ea5c442d930a3012aa144f1"] = "8ba95a24447d1d808ee3655ba65ce013c1e572413ea5c442d930a3012aa144f1"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var hex; -(function (hex) { - function encode(buffer) { - let hexCodes = []; - let view = new DataView(buffer); - for (let i = 0; i < view.byteLength % 4; i++) { - let value = view.getUint32(i * 4); - let stringValue = value.toString(16); - let padding = '00000000'; - let paddedValue = (padding + stringValue).slice(-padding.length); - hexCodes.push(paddedValue); - } - for (let i = (view.byteLength % 4) * 4; i < view.byteLength; i++) { - let value = view.getUint8(i).toString(16); - let padding = '00'; - hexCodes.push((padding + value).slice(-padding.length)); - } - return hexCodes.join(""); - } - hex.encode = encode; -})(hex || (hex = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["e1d54bf625c362c99387a9e5848a1d964a10e12d46a4b54b6e6afe928d0daca3"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["e1d54bf625c362c99387a9e5848a1d964a10e12d46a4b54b6e6afe928d0daca3"] = "e1d54bf625c362c99387a9e5848a1d964a10e12d46a4b54b6e6afe928d0daca3"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "flaw3JIB", path: "D:/TeaSpeak/web/shared/js/i18n/country.ts (1498,77)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var i18n; -(function (i18n) { - const country_infos = []; - const alpha_2_map = {}; - const fill_country_infos = (array) => { - array.push({ - name: "Afghanistan", - alpha_2: "AF", - alpha_3: "AFG", - un_code: 4 - }); - array.push({ - name: "Aland Islands", - alpha_2: "AX", - alpha_3: "ALA", - un_code: 248 - }); - array.push({ - name: "Albania", - alpha_2: "AL", - alpha_3: "ALB", - un_code: 8 - }); - array.push({ - name: "Algeria", - alpha_2: "DZ", - alpha_3: "DZA", - un_code: 12 - }); - array.push({ - name: "American Samoa", - alpha_2: "AS", - alpha_3: "ASM", - un_code: 16 - }); - array.push({ - name: "Andorra", - alpha_2: "AD", - alpha_3: "AND", - un_code: 20 - }); - array.push({ - name: "Angola", - alpha_2: "AO", - alpha_3: "AGO", - un_code: 24 - }); - array.push({ - name: "Anguilla", - alpha_2: "AI", - alpha_3: "AIA", - un_code: 660 - }); - array.push({ - name: "Antarctica", - alpha_2: "AQ", - alpha_3: "ATA", - un_code: 10 - }); - array.push({ - name: "Antigua and Barbuda", - alpha_2: "AG", - alpha_3: "ATG", - un_code: 28 - }); - array.push({ - name: "Argentina", - alpha_2: "AR", - alpha_3: "ARG", - un_code: 32 - }); - array.push({ - name: "Armenia", - alpha_2: "AM", - alpha_3: "ARM", - un_code: 51 - }); - array.push({ - name: "Aruba", - alpha_2: "AW", - alpha_3: "ABW", - un_code: 533 - }); - array.push({ - name: "Australia", - alpha_2: "AU", - alpha_3: "AUS", - un_code: 36 - }); - array.push({ - name: "Austria", - alpha_2: "AT", - alpha_3: "AUT", - un_code: 40 - }); - array.push({ - name: "Azerbaijan", - alpha_2: "AZ", - alpha_3: "AZE", - un_code: 31 - }); - array.push({ - name: "Bahamas", - alpha_2: "BS", - alpha_3: "BHS", - un_code: 44 - }); - array.push({ - name: "Bahrain", - alpha_2: "BH", - alpha_3: "BHR", - un_code: 48 - }); - array.push({ - name: "Bangladesh", - alpha_2: "BD", - alpha_3: "BGD", - un_code: 50 - }); - array.push({ - name: "Barbados", - alpha_2: "BB", - alpha_3: "BRB", - un_code: 52 - }); - array.push({ - name: "Belarus", - alpha_2: "BY", - alpha_3: "BLR", - un_code: 112 - }); - array.push({ - name: "Belgium", - alpha_2: "BE", - alpha_3: "BEL", - un_code: 56 - }); - array.push({ - name: "Belize", - alpha_2: "BZ", - alpha_3: "BLZ", - un_code: 84 - }); - array.push({ - name: "Benin", - alpha_2: "BJ", - alpha_3: "BEN", - un_code: 204 - }); - array.push({ - name: "Bermuda", - alpha_2: "BM", - alpha_3: "BMU", - un_code: 60 - }); - array.push({ - name: "Bhutan", - alpha_2: "BT", - alpha_3: "BTN", - un_code: 64 - }); - array.push({ - name: "Bolivia", - alpha_2: "BO", - alpha_3: "BOL", - un_code: 68 - }); - array.push({ - name: "Bosnia and Herzegovina", - alpha_2: "BA", - alpha_3: "BIH", - un_code: 70 - }); - array.push({ - name: "Botswana", - alpha_2: "BW", - alpha_3: "BWA", - un_code: 72 - }); - array.push({ - name: "Bouvet Island", - alpha_2: "BV", - alpha_3: "BVT", - un_code: 74 - }); - array.push({ - name: "Brazil", - alpha_2: "BR", - alpha_3: "BRA", - un_code: 76 - }); - array.push({ - name: "British Virgin Islands", - alpha_2: "VG", - alpha_3: "VGB", - un_code: 92 - }); - array.push({ - name: "British Indian Ocean Territory", - alpha_2: "IO", - alpha_3: "IOT", - un_code: 86 - }); - array.push({ - name: "Brunei Darussalam", - alpha_2: "BN", - alpha_3: "BRN", - un_code: 96 - }); - array.push({ - name: "Bulgaria", - alpha_2: "BG", - alpha_3: "BGR", - un_code: 100 - }); - array.push({ - name: "Burkina Faso", - alpha_2: "BF", - alpha_3: "BFA", - un_code: 854 - }); - array.push({ - name: "Burundi", - alpha_2: "BI", - alpha_3: "BDI", - un_code: 108 - }); - array.push({ - name: "Cambodia", - alpha_2: "KH", - alpha_3: "KHM", - un_code: 116 - }); - array.push({ - name: "Cameroon", - alpha_2: "CM", - alpha_3: "CMR", - un_code: 120 - }); - array.push({ - name: "Canada", - alpha_2: "CA", - alpha_3: "CAN", - un_code: 124 - }); - array.push({ - name: "Cape Verde", - alpha_2: "CV", - alpha_3: "CPV", - un_code: 132 - }); - array.push({ - name: "Cayman Islands", - alpha_2: "KY", - alpha_3: "CYM", - un_code: 136 - }); - array.push({ - name: "Central African Republic", - alpha_2: "CF", - alpha_3: "CAF", - un_code: 140 - }); - array.push({ - name: "Chad", - alpha_2: "TD", - alpha_3: "TCD", - un_code: 148 - }); - array.push({ - name: "Chile", - alpha_2: "CL", - alpha_3: "CHL", - un_code: 152 - }); - array.push({ - name: "China", - alpha_2: "CN", - alpha_3: "CHN", - un_code: 156 - }); - array.push({ - name: "Hong Kong, SAR China", - alpha_2: "HK", - alpha_3: "HKG", - un_code: 344 - }); - array.push({ - name: "Macao, SAR China", - alpha_2: "MO", - alpha_3: "MAC", - un_code: 446 - }); - array.push({ - name: "Christmas Island", - alpha_2: "CX", - alpha_3: "CXR", - un_code: 162 - }); - array.push({ - name: "Cocos (Keeling) Islands", - alpha_2: "CC", - alpha_3: "CCK", - un_code: 166 - }); - array.push({ - name: "Colombia", - alpha_2: "CO", - alpha_3: "COL", - un_code: 170 - }); - array.push({ - name: "Comoros", - alpha_2: "KM", - alpha_3: "COM", - un_code: 174 - }); - array.push({ - name: "Congo (Brazzaville)", - alpha_2: "CG", - alpha_3: "COG", - un_code: 178 - }); - array.push({ - name: "Congo, (Kinshasa)", - alpha_2: "CD", - alpha_3: "COD", - un_code: 180 - }); - array.push({ - name: "Cook Islands", - alpha_2: "CK", - alpha_3: "COK", - un_code: 184 - }); - array.push({ - name: "Costa Rica", - alpha_2: "CR", - alpha_3: "CRI", - un_code: 188 - }); - array.push({ - name: "Côte d'Ivoire", - alpha_2: "CI", - alpha_3: "CIV", - un_code: 384 - }); - array.push({ - name: "Croatia", - alpha_2: "HR", - alpha_3: "HRV", - un_code: 191 - }); - array.push({ - name: "Cuba", - alpha_2: "CU", - alpha_3: "CUB", - un_code: 192 - }); - array.push({ - name: "Cyprus", - alpha_2: "CY", - alpha_3: "CYP", - un_code: 196 - }); - array.push({ - name: "Czech Republic", - alpha_2: "CZ", - alpha_3: "CZE", - un_code: 203 - }); - array.push({ - name: "Denmark", - alpha_2: "DK", - alpha_3: "DNK", - un_code: 208 - }); - array.push({ - name: "Djibouti", - alpha_2: "DJ", - alpha_3: "DJI", - un_code: 262 - }); - array.push({ - name: "Dominica", - alpha_2: "DM", - alpha_3: "DMA", - un_code: 212 - }); - array.push({ - name: "Dominican Republic", - alpha_2: "DO", - alpha_3: "DOM", - un_code: 214 - }); - array.push({ - name: "Ecuador", - alpha_2: "EC", - alpha_3: "ECU", - un_code: 218 - }); - array.push({ - name: "Egypt", - alpha_2: "EG", - alpha_3: "EGY", - un_code: 818 - }); - array.push({ - name: "El Salvador", - alpha_2: "SV", - alpha_3: "SLV", - un_code: 222 - }); - array.push({ - name: "Equatorial Guinea", - alpha_2: "GQ", - alpha_3: "GNQ", - un_code: 226 - }); - array.push({ - name: "Eritrea", - alpha_2: "ER", - alpha_3: "ERI", - un_code: 232 - }); - array.push({ - name: "Estonia", - alpha_2: "EE", - alpha_3: "EST", - un_code: 233 - }); - array.push({ - name: "Ethiopia", - alpha_2: "ET", - alpha_3: "ETH", - un_code: 231 - }); - array.push({ - name: "Falkland Islands (Malvinas)", - alpha_2: "FK", - alpha_3: "FLK", - un_code: 238 - }); - array.push({ - name: "Faroe Islands", - alpha_2: "FO", - alpha_3: "FRO", - un_code: 234 - }); - array.push({ - name: "Fiji", - alpha_2: "FJ", - alpha_3: "FJI", - un_code: 242 - }); - array.push({ - name: "Finland", - alpha_2: "FI", - alpha_3: "FIN", - un_code: 246 - }); - array.push({ - name: "France", - alpha_2: "FR", - alpha_3: "FRA", - un_code: 250 - }); - array.push({ - name: "French Guiana", - alpha_2: "GF", - alpha_3: "GUF", - un_code: 254 - }); - array.push({ - name: "French Polynesia", - alpha_2: "PF", - alpha_3: "PYF", - un_code: 258 - }); - array.push({ - name: "French Southern Territories", - alpha_2: "TF", - alpha_3: "ATF", - un_code: 260 - }); - array.push({ - name: "Gabon", - alpha_2: "GA", - alpha_3: "GAB", - un_code: 266 - }); - array.push({ - name: "Gambia", - alpha_2: "GM", - alpha_3: "GMB", - un_code: 270 - }); - array.push({ - name: "Georgia", - alpha_2: "GE", - alpha_3: "GEO", - un_code: 268 - }); - array.push({ - name: "Germany", - alpha_2: "DE", - alpha_3: "DEU", - un_code: 276 - }); - array.push({ - name: "Ghana", - alpha_2: "GH", - alpha_3: "GHA", - un_code: 288 - }); - array.push({ - name: "Gibraltar", - alpha_2: "GI", - alpha_3: "GIB", - un_code: 292 - }); - array.push({ - name: "Greece", - alpha_2: "GR", - alpha_3: "GRC", - un_code: 300 - }); - array.push({ - name: "Greenland", - alpha_2: "GL", - alpha_3: "GRL", - un_code: 304 - }); - array.push({ - name: "Grenada", - alpha_2: "GD", - alpha_3: "GRD", - un_code: 308 - }); - array.push({ - name: "Guadeloupe", - alpha_2: "GP", - alpha_3: "GLP", - un_code: 312 - }); - array.push({ - name: "Guam", - alpha_2: "GU", - alpha_3: "GUM", - un_code: 316 - }); - array.push({ - name: "Guatemala", - alpha_2: "GT", - alpha_3: "GTM", - un_code: 320 - }); - array.push({ - name: "Guernsey", - alpha_2: "GG", - alpha_3: "GGY", - un_code: 831 - }); - array.push({ - name: "Guinea", - alpha_2: "GN", - alpha_3: "GIN", - un_code: 324 - }); - array.push({ - name: "Guinea-Bissau", - alpha_2: "GW", - alpha_3: "GNB", - un_code: 624 - }); - array.push({ - name: "Guyana", - alpha_2: "GY", - alpha_3: "GUY", - un_code: 328 - }); - array.push({ - name: "Haiti", - alpha_2: "HT", - alpha_3: "HTI", - un_code: 332 - }); - array.push({ - name: "Heard and Mcdonald Islands", - alpha_2: "HM", - alpha_3: "HMD", - un_code: 334 - }); - array.push({ - name: "Holy See (Vatican City State)", - alpha_2: "VA", - alpha_3: "VAT", - un_code: 336 - }); - array.push({ - name: "Honduras", - alpha_2: "HN", - alpha_3: "HND", - un_code: 340 - }); - array.push({ - name: "Hungary", - alpha_2: "HU", - alpha_3: "HUN", - un_code: 348 - }); - array.push({ - name: "Iceland", - alpha_2: "IS", - alpha_3: "ISL", - un_code: 352 - }); - array.push({ - name: "India", - alpha_2: "IN", - alpha_3: "IND", - un_code: 356 - }); - array.push({ - name: "Indonesia", - alpha_2: "ID", - alpha_3: "IDN", - un_code: 360 - }); - array.push({ - name: "Iran, Islamic Republic of", - alpha_2: "IR", - alpha_3: "IRN", - un_code: 364 - }); - array.push({ - name: "Iraq", - alpha_2: "IQ", - alpha_3: "IRQ", - un_code: 368 - }); - array.push({ - name: "Ireland", - alpha_2: "IE", - alpha_3: "IRL", - un_code: 372 - }); - array.push({ - name: "Isle of Man", - alpha_2: "IM", - alpha_3: "IMN", - un_code: 833 - }); - array.push({ - name: "Israel", - alpha_2: "IL", - alpha_3: "ISR", - un_code: 376 - }); - array.push({ - name: "Italy", - alpha_2: "IT", - alpha_3: "ITA", - un_code: 380 - }); - array.push({ - name: "Jamaica", - alpha_2: "JM", - alpha_3: "JAM", - un_code: 388 - }); - array.push({ - name: "Japan", - alpha_2: "JP", - alpha_3: "JPN", - un_code: 392 - }); - array.push({ - name: "Jersey", - alpha_2: "JE", - alpha_3: "JEY", - un_code: 832 - }); - array.push({ - name: "Jordan", - alpha_2: "JO", - alpha_3: "JOR", - un_code: 400 - }); - array.push({ - name: "Kazakhstan", - alpha_2: "KZ", - alpha_3: "KAZ", - un_code: 398 - }); - array.push({ - name: "Kenya", - alpha_2: "KE", - alpha_3: "KEN", - un_code: 404 - }); - array.push({ - name: "Kiribati", - alpha_2: "KI", - alpha_3: "KIR", - un_code: 296 - }); - array.push({ - name: "Korea (North)", - alpha_2: "KP", - alpha_3: "PRK", - un_code: 408 - }); - array.push({ - name: "Korea (South)", - alpha_2: "KR", - alpha_3: "KOR", - un_code: 410 - }); - array.push({ - name: "Kuwait", - alpha_2: "KW", - alpha_3: "KWT", - un_code: 414 - }); - array.push({ - name: "Kyrgyzstan", - alpha_2: "KG", - alpha_3: "KGZ", - un_code: 417 - }); - array.push({ - name: "Lao PDR", - alpha_2: "LA", - alpha_3: "LAO", - un_code: 418 - }); - array.push({ - name: "Latvia", - alpha_2: "LV", - alpha_3: "LVA", - un_code: 428 - }); - array.push({ - name: "Lebanon", - alpha_2: "LB", - alpha_3: "LBN", - un_code: 422 - }); - array.push({ - name: "Lesotho", - alpha_2: "LS", - alpha_3: "LSO", - un_code: 426 - }); - array.push({ - name: "Liberia", - alpha_2: "LR", - alpha_3: "LBR", - un_code: 430 - }); - array.push({ - name: "Libya", - alpha_2: "LY", - alpha_3: "LBY", - un_code: 434 - }); - array.push({ - name: "Liechtenstein", - alpha_2: "LI", - alpha_3: "LIE", - un_code: 438 - }); - array.push({ - name: "Lithuania", - alpha_2: "LT", - alpha_3: "LTU", - un_code: 440 - }); - array.push({ - name: "Luxembourg", - alpha_2: "LU", - alpha_3: "LUX", - un_code: 442 - }); - array.push({ - name: "Macedonia, Republic of", - alpha_2: "MK", - alpha_3: "MKD", - un_code: 807 - }); - array.push({ - name: "Madagascar", - alpha_2: "MG", - alpha_3: "MDG", - un_code: 450 - }); - array.push({ - name: "Malawi", - alpha_2: "MW", - alpha_3: "MWI", - un_code: 454 - }); - array.push({ - name: "Malaysia", - alpha_2: "MY", - alpha_3: "MYS", - un_code: 458 - }); - array.push({ - name: "Maldives", - alpha_2: "MV", - alpha_3: "MDV", - un_code: 462 - }); - array.push({ - name: "Mali", - alpha_2: "ML", - alpha_3: "MLI", - un_code: 466 - }); - array.push({ - name: "Malta", - alpha_2: "MT", - alpha_3: "MLT", - un_code: 470 - }); - array.push({ - name: "Marshall Islands", - alpha_2: "MH", - alpha_3: "MHL", - un_code: 584 - }); - array.push({ - name: "Martinique", - alpha_2: "MQ", - alpha_3: "MTQ", - un_code: 474 - }); - array.push({ - name: "Mauritania", - alpha_2: "MR", - alpha_3: "MRT", - un_code: 478 - }); - array.push({ - name: "Mauritius", - alpha_2: "MU", - alpha_3: "MUS", - un_code: 480 - }); - array.push({ - name: "Mayotte", - alpha_2: "YT", - alpha_3: "MYT", - un_code: 175 - }); - array.push({ - name: "Mexico", - alpha_2: "MX", - alpha_3: "MEX", - un_code: 484 - }); - array.push({ - name: "Micronesia, Federated States of", - alpha_2: "FM", - alpha_3: "FSM", - un_code: 583 - }); - array.push({ - name: "Moldova", - alpha_2: "MD", - alpha_3: "MDA", - un_code: 498 - }); - array.push({ - name: "Monaco", - alpha_2: "MC", - alpha_3: "MCO", - un_code: 492 - }); - array.push({ - name: "Mongolia", - alpha_2: "MN", - alpha_3: "MNG", - un_code: 496 - }); - array.push({ - name: "Montenegro", - alpha_2: "ME", - alpha_3: "MNE", - un_code: 499 - }); - array.push({ - name: "Montserrat", - alpha_2: "MS", - alpha_3: "MSR", - un_code: 500 - }); - array.push({ - name: "Morocco", - alpha_2: "MA", - alpha_3: "MAR", - un_code: 504 - }); - array.push({ - name: "Mozambique", - alpha_2: "MZ", - alpha_3: "MOZ", - un_code: 508 - }); - array.push({ - name: "Myanmar", - alpha_2: "MM", - alpha_3: "MMR", - un_code: 104 - }); - array.push({ - name: "Namibia", - alpha_2: "NA", - alpha_3: "NAM", - un_code: 516 - }); - array.push({ - name: "Nauru", - alpha_2: "NR", - alpha_3: "NRU", - un_code: 520 - }); - array.push({ - name: "Nepal", - alpha_2: "NP", - alpha_3: "NPL", - un_code: 524 - }); - array.push({ - name: "Netherlands", - alpha_2: "NL", - alpha_3: "NLD", - un_code: 528 - }); - array.push({ - name: "Netherlands Antilles", - alpha_2: "AN", - alpha_3: "ANT", - un_code: 530 - }); - array.push({ - name: "New Caledonia", - alpha_2: "NC", - alpha_3: "NCL", - un_code: 540 - }); - array.push({ - name: "New Zealand", - alpha_2: "NZ", - alpha_3: "NZL", - un_code: 554 - }); - array.push({ - name: "Nicaragua", - alpha_2: "NI", - alpha_3: "NIC", - un_code: 558 - }); - array.push({ - name: "Niger", - alpha_2: "NE", - alpha_3: "NER", - un_code: 562 - }); - array.push({ - name: "Nigeria", - alpha_2: "NG", - alpha_3: "NGA", - un_code: 566 - }); - array.push({ - name: "Niue", - alpha_2: "NU", - alpha_3: "NIU", - un_code: 570 - }); - array.push({ - name: "Norfolk Island", - alpha_2: "NF", - alpha_3: "NFK", - un_code: 574 - }); - array.push({ - name: "Northern Mariana Islands", - alpha_2: "MP", - alpha_3: "MNP", - un_code: 580 - }); - array.push({ - name: "Norway", - alpha_2: "NO", - alpha_3: "NOR", - un_code: 578 - }); - array.push({ - name: "Oman", - alpha_2: "OM", - alpha_3: "OMN", - un_code: 512 - }); - array.push({ - name: "Pakistan", - alpha_2: "PK", - alpha_3: "PAK", - un_code: 586 - }); - array.push({ - name: "Palau", - alpha_2: "PW", - alpha_3: "PLW", - un_code: 585 - }); - array.push({ - name: "Palestinian Territory", - alpha_2: "PS", - alpha_3: "PSE", - un_code: 275 - }); - array.push({ - name: "Panama", - alpha_2: "PA", - alpha_3: "PAN", - un_code: 591 - }); - array.push({ - name: "Papua New Guinea", - alpha_2: "PG", - alpha_3: "PNG", - un_code: 598 - }); - array.push({ - name: "Paraguay", - alpha_2: "PY", - alpha_3: "PRY", - un_code: 600 - }); - array.push({ - name: "Peru", - alpha_2: "PE", - alpha_3: "PER", - un_code: 604 - }); - array.push({ - name: "Philippines", - alpha_2: "PH", - alpha_3: "PHL", - un_code: 608 - }); - array.push({ - name: "Pitcairn", - alpha_2: "PN", - alpha_3: "PCN", - un_code: 612 - }); - array.push({ - name: "Poland", - alpha_2: "PL", - alpha_3: "POL", - un_code: 616 - }); - array.push({ - name: "Portugal", - alpha_2: "PT", - alpha_3: "PRT", - un_code: 620 - }); - array.push({ - name: "Puerto Rico", - alpha_2: "PR", - alpha_3: "PRI", - un_code: 630 - }); - array.push({ - name: "Qatar", - alpha_2: "QA", - alpha_3: "QAT", - un_code: 634 - }); - array.push({ - name: "Réunion", - alpha_2: "RE", - alpha_3: "REU", - un_code: 638 - }); - array.push({ - name: "Romania", - alpha_2: "RO", - alpha_3: "ROU", - un_code: 642 - }); - array.push({ - name: "Russian Federation", - alpha_2: "RU", - alpha_3: "RUS", - un_code: 643 - }); - array.push({ - name: "Rwanda", - alpha_2: "RW", - alpha_3: "RWA", - un_code: 646 - }); - array.push({ - name: "Saint-Barthélemy", - alpha_2: "BL", - alpha_3: "BLM", - un_code: 652 - }); - array.push({ - name: "Saint Helena", - alpha_2: "SH", - alpha_3: "SHN", - un_code: 654 - }); - array.push({ - name: "Saint Kitts and Nevis", - alpha_2: "KN", - alpha_3: "KNA", - un_code: 659 - }); - array.push({ - name: "Saint Lucia", - alpha_2: "LC", - alpha_3: "LCA", - un_code: 662 - }); - array.push({ - name: "Saint-Martin (French part)", - alpha_2: "MF", - alpha_3: "MAF", - un_code: 663 - }); - array.push({ - name: "Saint Pierre and Miquelon", - alpha_2: "PM", - alpha_3: "SPM", - un_code: 666 - }); - array.push({ - name: "Saint Vincent and Grenadines", - alpha_2: "VC", - alpha_3: "VCT", - un_code: 670 - }); - array.push({ - name: "Samoa", - alpha_2: "WS", - alpha_3: "WSM", - un_code: 882 - }); - array.push({ - name: "San Marino", - alpha_2: "SM", - alpha_3: "SMR", - un_code: 674 - }); - array.push({ - name: "Sao Tome and Principe", - alpha_2: "ST", - alpha_3: "STP", - un_code: 678 - }); - array.push({ - name: "Saudi Arabia", - alpha_2: "SA", - alpha_3: "SAU", - un_code: 682 - }); - array.push({ - name: "Senegal", - alpha_2: "SN", - alpha_3: "SEN", - un_code: 686 - }); - array.push({ - name: "Serbia", - alpha_2: "RS", - alpha_3: "SRB", - un_code: 688 - }); - array.push({ - name: "Seychelles", - alpha_2: "SC", - alpha_3: "SYC", - un_code: 690 - }); - array.push({ - name: "Sierra Leone", - alpha_2: "SL", - alpha_3: "SLE", - un_code: 694 - }); - array.push({ - name: "Singapore", - alpha_2: "SG", - alpha_3: "SGP", - un_code: 702 - }); - array.push({ - name: "Slovakia", - alpha_2: "SK", - alpha_3: "SVK", - un_code: 703 - }); - array.push({ - name: "Slovenia", - alpha_2: "SI", - alpha_3: "SVN", - un_code: 705 - }); - array.push({ - name: "Solomon Islands", - alpha_2: "SB", - alpha_3: "SLB", - un_code: 90 - }); - array.push({ - name: "Somalia", - alpha_2: "SO", - alpha_3: "SOM", - un_code: 706 - }); - array.push({ - name: "South Africa", - alpha_2: "ZA", - alpha_3: "ZAF", - un_code: 710 - }); - array.push({ - name: "South Georgia and the South Sandwich Islands", - alpha_2: "GS", - alpha_3: "SGS", - un_code: 239 - }); - array.push({ - name: "South Sudan", - alpha_2: "SS", - alpha_3: "SSD", - un_code: 728 - }); - array.push({ - name: "Spain", - alpha_2: "ES", - alpha_3: "ESP", - un_code: 724 - }); - array.push({ - name: "Sri Lanka", - alpha_2: "LK", - alpha_3: "LKA", - un_code: 144 - }); - array.push({ - name: "Sudan", - alpha_2: "SD", - alpha_3: "SDN", - un_code: 736 - }); - array.push({ - name: "Suriname", - alpha_2: "SR", - alpha_3: "SUR", - un_code: 740 - }); - array.push({ - name: "Svalbard and Jan Mayen Islands", - alpha_2: "SJ", - alpha_3: "SJM", - un_code: 744 - }); - array.push({ - name: "Swaziland", - alpha_2: "SZ", - alpha_3: "SWZ", - un_code: 748 - }); - array.push({ - name: "Sweden", - alpha_2: "SE", - alpha_3: "SWE", - un_code: 752 - }); - array.push({ - name: "Switzerland", - alpha_2: "CH", - alpha_3: "CHE", - un_code: 756 - }); - array.push({ - name: "Syrian Arab Republic (Syria)", - alpha_2: "SY", - alpha_3: "SYR", - un_code: 760 - }); - array.push({ - name: "Taiwan, Republic of China", - alpha_2: "TW", - alpha_3: "TWN", - un_code: 158 - }); - array.push({ - name: "Tajikistan", - alpha_2: "TJ", - alpha_3: "TJK", - un_code: 762 - }); - array.push({ - name: "Tanzania, United Republic of", - alpha_2: "TZ", - alpha_3: "TZA", - un_code: 834 - }); - array.push({ - name: "Thailand", - alpha_2: "TH", - alpha_3: "THA", - un_code: 764 - }); - array.push({ - name: "Timor-Leste", - alpha_2: "TL", - alpha_3: "TLS", - un_code: 626 - }); - array.push({ - name: "Togo", - alpha_2: "TG", - alpha_3: "TGO", - un_code: 768 - }); - array.push({ - name: "Tokelau", - alpha_2: "TK", - alpha_3: "TKL", - un_code: 772 - }); - array.push({ - name: "Tonga", - alpha_2: "TO", - alpha_3: "TON", - un_code: 776 - }); - array.push({ - name: "Trinidad and Tobago", - alpha_2: "TT", - alpha_3: "TTO", - un_code: 780 - }); - array.push({ - name: "Tunisia", - alpha_2: "TN", - alpha_3: "TUN", - un_code: 788 - }); - array.push({ - name: "Turkey", - alpha_2: "TR", - alpha_3: "TUR", - un_code: 792 - }); - array.push({ - name: "Turkmenistan", - alpha_2: "TM", - alpha_3: "TKM", - un_code: 795 - }); - array.push({ - name: "Turks and Caicos Islands", - alpha_2: "TC", - alpha_3: "TCA", - un_code: 796 - }); - array.push({ - name: "Tuvalu", - alpha_2: "TV", - alpha_3: "TUV", - un_code: 798 - }); - array.push({ - name: "Uganda", - alpha_2: "UG", - alpha_3: "UGA", - un_code: 800 - }); - array.push({ - name: "Ukraine", - alpha_2: "UA", - alpha_3: "UKR", - un_code: 804 - }); - array.push({ - name: "United Arab Emirates", - alpha_2: "AE", - alpha_3: "ARE", - un_code: 784 - }); - array.push({ - name: "United Kingdom", - alpha_2: "GB", - alpha_3: "GBR", - un_code: 826 - }); - array.push({ - name: "United States of America", - alpha_2: "US", - alpha_3: "USA", - un_code: 840 - }); - array.push({ - name: "US Minor Outlying Islands", - alpha_2: "UM", - alpha_3: "UMI", - un_code: 581 - }); - array.push({ - name: "Uruguay", - alpha_2: "UY", - alpha_3: "URY", - un_code: 858 - }); - array.push({ - name: "Uzbekistan", - alpha_2: "UZ", - alpha_3: "UZB", - un_code: 860 - }); - array.push({ - name: "Vanuatu", - alpha_2: "VU", - alpha_3: "VUT", - un_code: 548 - }); - array.push({ - name: "Venezuela (Bolivarian Republic)", - alpha_2: "VE", - alpha_3: "VEN", - un_code: 862 - }); - array.push({ - name: "Viet Nam", - alpha_2: "VN", - alpha_3: "VNM", - un_code: 704 - }); - array.push({ - name: "Virgin Islands, US", - alpha_2: "VI", - alpha_3: "VIR", - un_code: 850 - }); - array.push({ - name: "Wallis and Futuna Islands", - alpha_2: "WF", - alpha_3: "WLF", - un_code: 876 - }); - array.push({ - name: "Western Sahara", - alpha_2: "EH", - alpha_3: "ESH", - un_code: 732 - }); - array.push({ - name: "Yemen", - alpha_2: "YE", - alpha_3: "YEM", - un_code: 887 - }); - array.push({ - name: "Zambia", - alpha_2: "ZM", - alpha_3: "ZMB", - un_code: 894 - }); - array.push({ - name: "Zimbabwe", - alpha_2: "ZW", - alpha_3: "ZWE", - un_code: 716 - }); - }; - function country_name(alpha_code, fallback) { - return (alpha_2_map[alpha_code.toUpperCase()] || { name: fallback || (_translations.flaw3JIB || (_translations.flaw3JIB = i18n.tr("unknown country"))) }).name; - } - i18n.country_name = country_name; - fill_country_infos(country_infos); - for (const country of country_infos) - alpha_2_map[country.alpha_2] = country; -})(i18n || (i18n = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["36f3b62ac78dcf997caadc844250a877529ef7cc8f67b7c34ea38cae195bdf1d"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["36f3b62ac78dcf997caadc844250a877529ef7cc8f67b7c34ea38cae195bdf1d"] = "36f3b62ac78dcf997caadc844250a877529ef7cc8f67b7c34ea38cae195bdf1d"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "kET_CIMv", path: "D:/TeaSpeak/web/shared/js/profiles/ConnectionProfile.ts (124,31)" }, { name: "y0AzVS4M", path: "D:/TeaSpeak/web/shared/js/profiles/ConnectionProfile.ts (125,34)" }, { name: "zfwYoTqI", path: "D:/TeaSpeak/web/shared/js/profiles/ConnectionProfile.ts (125,90)" }, { name: "V5G4WXp1", path: "D:/TeaSpeak/web/shared/js/profiles/ConnectionProfile.ts (140,35)" }, { name: "RWlYypJZ", path: "D:/TeaSpeak/web/shared/js/profiles/ConnectionProfile.ts (165,38)" }, { name: "Y9SQ5M3h", path: "D:/TeaSpeak/web/shared/js/profiles/ConnectionProfile.ts (165,81)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var profiles; -(function (profiles_1) { - class ConnectionProfile { - constructor(id) { - this.selected_identity_type = "unset"; - this.identities = {}; - this.id = id; - } - connect_username() { - if (this.default_username && this.default_username !== "Another TeaSpeak user") - return this.default_username; - let selected = this.selected_identity(); - let name = selected ? selected.fallback_name() : undefined; - return name || "Another TeaSpeak user"; - } - selected_identity(current_type) { - if (!current_type) - current_type = this.selected_type(); - if (current_type === undefined) - return undefined; - if (current_type == profiles_1.identities.IdentitifyType.TEAFORO) { - return profiles_1.identities.static_forum_identity(); - } - else if (current_type == profiles_1.identities.IdentitifyType.TEAMSPEAK || current_type == profiles_1.identities.IdentitifyType.NICKNAME) { - return this.identities[profiles_1.identities.IdentitifyType[current_type].toLowerCase()]; - } - return undefined; - } - selected_type() { - return this.selected_identity_type ? profiles_1.identities.IdentitifyType[this.selected_identity_type.toUpperCase()] : undefined; - } - set_identity(type, identity) { - this.identities[profiles_1.identities.IdentitifyType[type].toLowerCase()] = identity; - } - spawn_identity_handshake_handler(connection) { - const identity = this.selected_identity(); - if (!identity) - return undefined; - return identity.spawn_identity_handshake_handler(connection); - } - encode() { - const identity_data = {}; - for (const key in this.identities) - if (this.identities[key]) - identity_data[key] = this.identities[key].encode(); - return JSON.stringify({ - version: 1, - username: this.default_username, - password: this.default_password, - profile_name: this.profile_name, - identity_type: this.selected_identity_type, - identity_data: identity_data, - id: this.id - }); - } - valid() { - const identity = this.selected_identity(); - if (!identity || !identity.valid()) - return false; - return true; - } - } - profiles_1.ConnectionProfile = ConnectionProfile; - function decode_profile(data) { - return __awaiter(this, void 0, void 0, function* () { - data = JSON.parse(data); - if (data.version !== 1) - return "invalid version"; - const result = new ConnectionProfile(data.id); - result.default_username = data.username; - result.default_password = data.password; - result.profile_name = data.profile_name; - result.selected_identity_type = (data.identity_type || "").toLowerCase(); - if (data.identity_data) { - for (const key in data.identity_data) { - const type = profiles_1.identities.IdentitifyType[key.toUpperCase()]; - const _data = data.identity_data[key]; - if (type == undefined) - continue; - const identity = yield profiles_1.identities.decode_identity(type, _data); - if (identity == undefined) - continue; - result.identities[key.toLowerCase()] = identity; - } - } - return result; - }); - } - let available_profiles = []; - function load() { - return __awaiter(this, void 0, void 0, function* () { - available_profiles = []; - const profiles_json = localStorage.getItem("profiles"); - let profiles_data = (() => { - try { - return profiles_json ? JSON.parse(profiles_json) : { version: 0 }; - } - catch (error) { - debugger; - console.error(_translations.kET_CIMv || (_translations.kET_CIMv = tr("Invalid profile json! Resetting profiles :( (%o)")), profiles_json); - createErrorModal(_translations.y0AzVS4M || (_translations.y0AzVS4M = tr("Profile data invalid")), MessageHelper.formatMessage(_translations.zfwYoTqI || (_translations.zfwYoTqI = tr("The profile data is invalid.{:br:}This might cause data loss.")))).open(); - return { version: 0 }; - } - })(); - if (profiles_data.version === 0) { - profiles_data = { - version: 1, - profiles: [] - }; - } - if (profiles_data.version == 1) { - for (const profile_data of profiles_data.profiles) { - const profile = yield decode_profile(profile_data); - if (typeof (profile) === 'string') { - console.error(_translations.V5G4WXp1 || (_translations.V5G4WXp1 = tr("Failed to load profile. Reason: %s, Profile data: %s")), profile, profiles_data); - continue; - } - available_profiles.push(profile); - } - } - if (!find_profile("default")) { //Create a default profile and teaforo profile - { - const profile = create_new_profile("default", "default"); - profile.default_password = ""; - profile.default_username = ""; - profile.profile_name = "Default Profile"; - /* generate default identity */ - try { - const identity = yield profiles_1.identities.TeaSpeakIdentity.generate_new(); - let active = true; - setTimeout(() => { - active = false; - }, 1000); - yield identity.improve_level(8, 1, () => active); - profile.set_identity(profiles_1.identities.IdentitifyType.TEAMSPEAK, identity); - profile.selected_identity_type = profiles_1.identities.IdentitifyType[profiles_1.identities.IdentitifyType.TEAMSPEAK]; - } - catch (error) { - createErrorModal(_translations.RWlYypJZ || (_translations.RWlYypJZ = tr("Failed to generate default identity")), _translations.Y9SQ5M3h || (_translations.Y9SQ5M3h = tr("Failed to generate default identity!
Please manually generate the identity within your settings => profiles"))).open(); - } - } - { /* forum identity (works only when connected to the forum) */ - const profile = create_new_profile("TeaSpeak Forum", "teaforo"); - profile.default_password = ""; - profile.default_username = ""; - profile.profile_name = "TeaSpeak Forum profile"; - profile.set_identity(profiles_1.identities.IdentitifyType.TEAFORO, profiles_1.identities.static_forum_identity()); - profile.selected_identity_type = profiles_1.identities.IdentitifyType[profiles_1.identities.IdentitifyType.TEAFORO]; - } - save(); - } - }); - } - profiles_1.load = load; - function create_new_profile(name, id) { - const profile = new ConnectionProfile(id || guid()); - profile.profile_name = name; - profile.default_username = ""; - available_profiles.push(profile); - return profile; - } - profiles_1.create_new_profile = create_new_profile; - let _requires_save = false; - function save() { - const profiles = []; - for (const profile of available_profiles) - profiles.push(profile.encode()); - const data = JSON.stringify({ - version: 1, - profiles: profiles - }); - localStorage.setItem("profiles", data); - } - profiles_1.save = save; - function mark_need_save() { - _requires_save = true; - } - profiles_1.mark_need_save = mark_need_save; - function requires_save() { - return _requires_save; - } - profiles_1.requires_save = requires_save; - function profiles() { - return available_profiles; - } - profiles_1.profiles = profiles; - function find_profile(id) { - for (const profile of profiles()) - if (profile.id == id) - return profile; - return undefined; - } - profiles_1.find_profile = find_profile; - function find_profile_by_name(name) { - name = name.toLowerCase(); - for (const profile of profiles()) - if ((profile.profile_name || "").toLowerCase() == name) - return profile; - return undefined; - } - profiles_1.find_profile_by_name = find_profile_by_name; - function default_profile() { - return find_profile("default"); - } - profiles_1.default_profile = default_profile; - function set_default_profile(profile) { - const old_default = default_profile(); - if (old_default && old_default != profile) { - old_default.id = guid(); - } - profile.id = "default"; - return old_default; - } - profiles_1.set_default_profile = set_default_profile; - function delete_profile(profile) { - available_profiles.remove(profile); - } - profiles_1.delete_profile = delete_profile; -})(profiles || (profiles = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["c98187f830dc6b0f36a4ad6002bfa58f867cf63df95d93b2615674cf6e7b68e2"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["c98187f830dc6b0f36a4ad6002bfa58f867cf63df95d93b2615674cf6e7b68e2"] = "c98187f830dc6b0f36a4ad6002bfa58f867cf63df95d93b2615674cf6e7b68e2"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "MP4Po9Pb", path: "D:/TeaSpeak/web/shared/js/profiles/Identity.ts (79,30)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var profiles; -(function (profiles) { - var identities; - (function (identities) { - let IdentitifyType; - (function (IdentitifyType) { - IdentitifyType[IdentitifyType["TEAFORO"] = 0] = "TEAFORO"; - IdentitifyType[IdentitifyType["TEAMSPEAK"] = 1] = "TEAMSPEAK"; - IdentitifyType[IdentitifyType["NICKNAME"] = 2] = "NICKNAME"; - })(IdentitifyType = identities.IdentitifyType || (identities.IdentitifyType = {})); - function decode_identity(type, data) { - return __awaiter(this, void 0, void 0, function* () { - let identity; - switch (type) { - case IdentitifyType.NICKNAME: - identity = new identities.NameIdentity(); - break; - case IdentitifyType.TEAFORO: - identity = new identities.TeaForumIdentity(undefined); - break; - case IdentitifyType.TEAMSPEAK: - identity = new identities.TeaSpeakIdentity(undefined, undefined); - break; - } - if (!identity) - return undefined; - try { - yield identity.decode(data); - } - catch (error) { - /* todo better error handling! */ - console.error(error); - return undefined; - } - return identity; - }); - } - identities.decode_identity = decode_identity; - function create_identity(type) { - let identity; - switch (type) { - case IdentitifyType.NICKNAME: - identity = new identities.NameIdentity(); - break; - case IdentitifyType.TEAFORO: - identity = new identities.TeaForumIdentity(undefined); - break; - case IdentitifyType.TEAMSPEAK: - identity = new identities.TeaSpeakIdentity(undefined, undefined); - break; - } - return identity; - } - identities.create_identity = create_identity; - class HandshakeCommandHandler extends connection.AbstractCommandHandler { - constructor(connection, handle) { - super(connection); - this.handle = handle; - } - handle_command(command) { - if ($.isFunction(this[command.command])) - this[command.command](command.arguments); - else if (command.command == "error") { - return false; - } - else { - console.warn(_translations.MP4Po9Pb || (_translations.MP4Po9Pb = tr("Received unknown command while handshaking (%o)")), command); - } - return true; - } - } - identities.HandshakeCommandHandler = HandshakeCommandHandler; - class AbstractHandshakeIdentityHandler { - constructor(connection) { - this.callbacks = []; - this.connection = connection; - } - register_callback(callback) { - this.callbacks.push(callback); - } - trigger_success() { - for (const callback of this.callbacks) - callback(true); - } - trigger_fail(message) { - for (const callback of this.callbacks) - callback(false, message); - } - } - identities.AbstractHandshakeIdentityHandler = AbstractHandshakeIdentityHandler; - })(identities = profiles.identities || (profiles.identities = {})); -})(profiles || (profiles = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["4f9e18c83b3da294810607c6f8fcf9feb14743dd1dce10c97c911a3eabfa9d4b"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["4f9e18c83b3da294810607c6f8fcf9feb14743dd1dce10c97c911a3eabfa9d4b"] = "4f9e18c83b3da294810607c6f8fcf9feb14743dd1dce10c97c911a3eabfa9d4b"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "u5Zv5_eG", path: "D:/TeaSpeak/web/shared/js/profiles/identities/NameIdentity.ts (23,51)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -var profiles; -(function (profiles) { - var identities; - (function (identities) { - class NameHandshakeHandler extends identities.AbstractHandshakeIdentityHandler { - constructor(connection, identity) { - super(connection); - this.identity = identity; - this.handler = new identities.HandshakeCommandHandler(connection, this); - this.handler["handshakeidentityproof"] = () => this.trigger_fail("server requested unexpected proof"); - } - start_handshake() { - this.connection.command_handler_boss().register_handler(this.handler); - this.connection.send_command("handshakebegin", { - intention: 0, - authentication_method: this.identity.type(), - client_nickname: this.identity.name() - }).catch(error => { - log.error(LogCategory.IDENTITIES, _translations.u5Zv5_eG || (_translations.u5Zv5_eG = tr("Failed to initialize name based handshake. Error: %o")), error); - if (error instanceof CommandResult) - error = error.extra_message || error.message; - this.trigger_fail("failed to execute begin (" + error + ")"); - }).then(() => this.trigger_success()); - } - trigger_fail(message) { - this.connection.command_handler_boss().unregister_handler(this.handler); - super.trigger_fail(message); - } - trigger_success() { - this.connection.command_handler_boss().unregister_handler(this.handler); - super.trigger_success(); - } - } - class NameIdentity { - constructor(name) { - this._name = name; - } - set_name(name) { this._name = name; } - name() { return this._name; } - fallback_name() { - return this._name; - } - uid() { - return btoa(this._name); //FIXME hash! - } - type() { - return identities.IdentitifyType.NICKNAME; - } - valid() { - return this._name != undefined && this._name.length >= 5; - } - decode(data) { - data = JSON.parse(data); - if (data.version !== 1) - throw "invalid version"; - this._name = data["name"]; - return; - } - encode() { - return JSON.stringify({ - version: 1, - name: this._name - }); - } - spawn_identity_handshake_handler(connection) { - return new NameHandshakeHandler(connection, this); - } - } - identities.NameIdentity = NameIdentity; - })(identities = profiles.identities || (profiles.identities = {})); -})(profiles || (profiles = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["5d120c56c8577b2f19ee369d9b574360ab78471e5f9b2b2d0fb08e8ad3807ea8"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["5d120c56c8577b2f19ee369d9b574360ab78471e5f9b2b2d0fb08e8ad3807ea8"] = "5d120c56c8577b2f19ee369d9b574360ab78471e5f9b2b2d0fb08e8ad3807ea8"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "W2pDcDNQ", path: "D:/TeaSpeak/web/shared/js/profiles/identities/TeaForumIdentity.ts (22,51)" }, { name: "SWcrhX8D", path: "D:/TeaSpeak/web/shared/js/profiles/identities/TeaForumIdentity.ts (35,51)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -var profiles; -(function (profiles) { - var identities; - (function (identities) { - class TeaForumHandshakeHandler extends identities.AbstractHandshakeIdentityHandler { - constructor(connection, identity) { - super(connection); - this.identity = identity; - this.handler = new identities.HandshakeCommandHandler(connection, this); - this.handler["handshakeidentityproof"] = this.handle_proof.bind(this); - } - start_handshake() { - this.connection.command_handler_boss().register_handler(this.handler); - this.connection.send_command("handshakebegin", { - intention: 0, - authentication_method: this.identity.type(), - data: this.identity.data().data_json() - }).catch(error => { - log.error(LogCategory.IDENTITIES, _translations.W2pDcDNQ || (_translations.W2pDcDNQ = tr("Failed to initialize TeaForum based handshake. Error: %o")), error); - if (error instanceof CommandResult) - error = error.extra_message || error.message; - this.trigger_fail("failed to execute begin (" + error + ")"); - }); - } - handle_proof(json) { - this.connection.send_command("handshakeindentityproof", { - proof: this.identity.data().data_sign() - }).catch(error => { - log.error(LogCategory.IDENTITIES, _translations.SWcrhX8D || (_translations.SWcrhX8D = tr("Failed to proof the identity. Error: %o")), error); - if (error instanceof CommandResult) - error = error.extra_message || error.message; - this.trigger_fail("failed to execute proof (" + error + ")"); - }).then(() => this.trigger_success()); - } - trigger_fail(message) { - this.connection.command_handler_boss().unregister_handler(this.handler); - super.trigger_fail(message); - } - trigger_success() { - this.connection.command_handler_boss().unregister_handler(this.handler); - super.trigger_success(); - } - } - class TeaForumIdentity { - constructor(data) { - this.identity_data = data; - } - valid() { - return !!this.identity_data && !this.identity_data.is_expired(); - } - data() { - return this.identity_data; - } - decode(data) { - data = JSON.parse(data); - if (data.version !== 1) - throw "invalid version"; - return; - } - encode() { - return JSON.stringify({ - version: 1 - }); - } - spawn_identity_handshake_handler(connection) { - return new TeaForumHandshakeHandler(connection, this); - } - fallback_name() { - return this.identity_data ? this.identity_data.name() : undefined; - } - type() { - return identities.IdentitifyType.TEAFORO; - } - uid() { - //FIXME: Real UID! - return "TeaForo#" + ((this.identity_data ? this.identity_data.name() : "Another TeaSpeak user")); - } - } - identities.TeaForumIdentity = TeaForumIdentity; - let static_identity; - function set_static_identity(identity) { - static_identity = identity; - } - identities.set_static_identity = set_static_identity; - function update_forum() { - if (forum.logged_in() && (!static_identity || static_identity.data() !== forum.data())) { - static_identity = new TeaForumIdentity(forum.data()); - } - else { - static_identity = undefined; - } - } - identities.update_forum = update_forum; - function valid_static_forum_identity() { - return static_identity && static_identity.valid(); - } - identities.valid_static_forum_identity = valid_static_forum_identity; - function static_forum_identity() { - return static_identity; - } - identities.static_forum_identity = static_forum_identity; - })(identities = profiles.identities || (profiles.identities = {})); -})(profiles || (profiles = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["bfe72893496c223378f70914d679ecbba6151df3cd16fa95aae3f5832ef4d162"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["bfe72893496c223378f70914d679ecbba6151df3cd16fa95aae3f5832ef4d162"] = "bfe72893496c223378f70914d679ecbba6151df3cd16fa95aae3f5832ef4d162"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "l6DvuihS", path: "D:/TeaSpeak/web/shared/js/profiles/identities/TeamSpeakIdentity.ts (231,51)" }, { name: "DMNxyJuG", path: "D:/TeaSpeak/web/shared/js/profiles/identities/TeamSpeakIdentity.ts (247,55)" }, { name: "ekkOaQqE", path: "D:/TeaSpeak/web/shared/js/profiles/identities/TeamSpeakIdentity.ts (298,55)" }, { name: "pGZABZ0J", path: "D:/TeaSpeak/web/shared/js/profiles/identities/TeamSpeakIdentity.ts (411,51)" }, { name: "tOjKyP5T", path: "D:/TeaSpeak/web/shared/js/profiles/identities/TeamSpeakIdentity.ts (419,46)" }, { name: "orYglH6g", path: "D:/TeaSpeak/web/shared/js/profiles/identities/TeamSpeakIdentity.ts (429,51)" }, { name: "mCXt2f6G", path: "D:/TeaSpeak/web/shared/js/profiles/identities/TeamSpeakIdentity.ts (478,51)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -var profiles; -(function (profiles) { - var identities; - (function (identities) { - let CryptoHelper; - (function (CryptoHelper) { - function base64_url_encode(str) { - return str.replace(/\+/g, '-').replace(/\//g, '_').replace(/\=+$/, ''); - } - CryptoHelper.base64_url_encode = base64_url_encode; - function base64_url_decode(str, pad) { - if (typeof (pad) === 'undefined' || pad) - str = (str + '===').slice(0, str.length + (str.length % 4)); - return str.replace(/-/g, '+').replace(/_/g, '/'); - } - CryptoHelper.base64_url_decode = base64_url_decode; - function arraybuffer_to_string(buf) { - return String.fromCharCode.apply(null, new Uint16Array(buf)); - } - CryptoHelper.arraybuffer_to_string = arraybuffer_to_string; - function export_ecc_key(crypto_key, public_key) { - return __awaiter(this, void 0, void 0, function* () { - /* - Tomcrypt public key export: - if (type == PK_PRIVATE) { - flags[0] = 1; - err = der_encode_sequence_multi(out, outlen, - LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_SHORT_INTEGER, 1UL, &key_size, - LTC_ASN1_INTEGER, 1UL, key->pubkey.x, - LTC_ASN1_INTEGER, 1UL, key->pubkey.y, - LTC_ASN1_INTEGER, 1UL, key->k, - LTC_ASN1_EOL, 0UL, NULL); - } else { - flags[0] = 0; - err = der_encode_sequence_multi(out, outlen, - LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_SHORT_INTEGER, 1UL, &key_size, - LTC_ASN1_INTEGER, 1UL, key->pubkey.x, - LTC_ASN1_INTEGER, 1UL, key->pubkey.y, - LTC_ASN1_EOL, 0UL, NULL); - } - - */ - const key_data = yield crypto.subtle.exportKey("jwk", crypto_key); - let index = 0; - const length = public_key ? 79 : 114; /* max lengths! Depends on the padding could be less */ - const buffer = new Uint8Array(length); /* fixed ASN1 length */ - { /* the initial sequence */ - buffer[index++] = 0x30; /* type */ - buffer[index++] = 0x00; /* we will set the sequence length later */ - } - { /* the flags bit string */ - buffer[index++] = 0x03; /* type */ - buffer[index++] = 0x02; /* length */ - buffer[index++] = 0x07; /* data */ - buffer[index++] = public_key ? 0x00 : 0x80; /* flag 1 or 0 (1 = private key)*/ - } - { /* key size (const 32 for P-256) */ - buffer[index++] = 0x02; /* type */ - buffer[index++] = 0x01; /* length */ - buffer[index++] = 0x20; - } - try { /* Public kex X */ - buffer[index++] = 0x02; /* type */ - buffer[index++] = 0x20; /* length */ - const raw = atob(base64_url_decode(key_data.x, false)); - if (raw.charCodeAt(0) > 0x7F) { - buffer[index - 1] += 1; - buffer[index++] = 0; - } - for (let i = 0; i < 32; i++) - buffer[index++] = raw.charCodeAt(i); - } - catch (error) { - if (error instanceof DOMException) - throw "failed to parse x coordinate (invalid base64)"; - throw error; - } - try { /* Public kex Y */ - buffer[index++] = 0x02; /* type */ - buffer[index++] = 0x20; /* length */ - const raw = atob(base64_url_decode(key_data.y, false)); - if (raw.charCodeAt(0) > 0x7F) { - buffer[index - 1] += 1; - buffer[index++] = 0; - } - for (let i = 0; i < 32; i++) - buffer[index++] = raw.charCodeAt(i); - } - catch (error) { - if (error instanceof DOMException) - throw "failed to parse y coordinate (invalid base64)"; - throw error; - } - if (!public_key) { - try { /* Public kex K */ - buffer[index++] = 0x02; /* type */ - buffer[index++] = 0x20; /* length */ - const raw = atob(base64_url_decode(key_data.d, false)); - if (raw.charCodeAt(0) > 0x7F) { - buffer[index - 1] += 1; - buffer[index++] = 0; - } - for (let i = 0; i < 32; i++) - buffer[index++] = raw.charCodeAt(i); - } - catch (error) { - if (error instanceof DOMException) - throw "failed to parse y coordinate (invalid base64)"; - throw error; - } - } - buffer[1] = index - 2; /* set the final sequence length */ - return base64_encode_ab(buffer.buffer.slice(0, index)); - }); - } - CryptoHelper.export_ecc_key = export_ecc_key; - const crypt_key = "b9dfaa7bee6ac57ac7b65f1094a1c155e747327bc2fe5d51c512023fe54a280201004e90ad1daaae1075d53b7d571c30e063b5a62a4a017bb394833aa0983e6e"; - function c_strlen(buffer, offset) { - let index = 0; - while (index + offset < buffer.length && buffer[index + offset] != 0) - index++; - return index; - } - function decrypt_ts_identity(buffer) { - return __awaiter(this, void 0, void 0, function* () { - /* buffer could contains a zero! */ - const hash = new Uint8Array(yield sha.sha1(buffer.buffer.slice(20, 20 + c_strlen(buffer, 20)))); - for (let i = 0; i < 20; i++) - buffer[i] ^= hash[i]; - const length = Math.min(buffer.length, 100); - for (let i = 0; i < length; i++) - buffer[i] ^= crypt_key.charCodeAt(i); - return arraybuffer_to_string(buffer); - }); - } - CryptoHelper.decrypt_ts_identity = decrypt_ts_identity; - function encrypt_ts_identity(buffer) { - return __awaiter(this, void 0, void 0, function* () { - const length = Math.min(buffer.length, 100); - for (let i = 0; i < length; i++) - buffer[i] ^= crypt_key.charCodeAt(i); - const hash = new Uint8Array(yield sha.sha1(buffer.buffer.slice(20, 20 + c_strlen(buffer, 20)))); - for (let i = 0; i < 20; i++) - buffer[i] ^= hash[i]; - return base64_encode_ab(buffer); - }); - } - CryptoHelper.encrypt_ts_identity = encrypt_ts_identity; - /** - * @param buffer base64 encoded ASN.1 string - */ - function decode_tomcrypt_key(buffer) { - let decoded; - try { - decoded = asn1.decode(atob(buffer)); - } - catch (error) { - if (error instanceof DOMException) - throw "failed to parse key buffer (invalid base64)"; - throw error; - } - let { x, y, k } = { - x: decoded.children[2].content(Infinity, asn1.TagType.VisibleString), - y: decoded.children[3].content(Infinity, asn1.TagType.VisibleString), - k: decoded.children[4].content(Infinity, asn1.TagType.VisibleString) - }; - if (x.length > 32) { - if (x.charCodeAt(0) != 0) - throw "Invalid X coordinate! (Too long)"; - x = x.substr(1); - } - if (y.length > 32) { - if (y.charCodeAt(0) != 0) - throw "Invalid Y coordinate! (Too long)"; - y = y.substr(1); - } - if (k.length > 32) { - if (k.charCodeAt(0) != 0) - throw "Invalid private coordinate! (Too long)"; - k = k.substr(1); - } - /* - console.log("Key x: %s (%d)", btoa(x), x.length); - console.log("Key y: %s (%d)", btoa(y), y.length); - console.log("Key k: %s (%d)", btoa(k), k.length); - */ - return { - crv: "P-256", - d: base64_url_encode(btoa(k)), - x: base64_url_encode(btoa(x)), - y: base64_url_encode(btoa(y)), - ext: true, - key_ops: ["deriveKey", "sign"], - kty: "EC", - }; - } - CryptoHelper.decode_tomcrypt_key = decode_tomcrypt_key; - })(CryptoHelper = identities.CryptoHelper || (identities.CryptoHelper = {})); - class TeaSpeakHandshakeHandler extends identities.AbstractHandshakeIdentityHandler { - constructor(connection, identity) { - super(connection); - this.identity = identity; - this.handler = new identities.HandshakeCommandHandler(connection, this); - this.handler["handshakeidentityproof"] = this.handle_proof.bind(this); - } - start_handshake() { - this.connection.command_handler_boss().register_handler(this.handler); - this.connection.send_command("handshakebegin", { - intention: 0, - authentication_method: this.identity.type(), - publicKey: this.identity.public_key - }).catch(error => { - log.error(LogCategory.IDENTITIES, _translations.l6DvuihS || (_translations.l6DvuihS = tr("Failed to initialize TeamSpeak based handshake. Error: %o")), error); - if (error instanceof CommandResult) - error = error.extra_message || error.message; - this.trigger_fail("failed to execute begin (" + error + ")"); - }); - } - handle_proof(json) { - if (!json[0]["digest"]) { - this.trigger_fail("server too old"); - return; - } - this.identity.sign_message(json[0]["message"], json[0]["digest"]).then(proof => { - this.connection.send_command("handshakeindentityproof", { proof: proof }).catch(error => { - log.error(LogCategory.IDENTITIES, _translations.DMNxyJuG || (_translations.DMNxyJuG = tr("Failed to proof the identity. Error: %o")), error); - if (error instanceof CommandResult) - error = error.extra_message || error.message; - this.trigger_fail("failed to execute proof (" + error + ")"); - }).then(() => this.trigger_success()); - }).catch(error => { - this.trigger_fail("failed to sign message"); - }); - } - trigger_fail(message) { - this.connection.command_handler_boss().unregister_handler(this.handler); - super.trigger_fail(message); - } - trigger_success() { - this.connection.command_handler_boss().unregister_handler(this.handler); - super.trigger_success(); - } - } - class IdentityPOWWorker { - initialize(key) { - return __awaiter(this, void 0, void 0, function* () { - this._worker = new Worker(settings.static("worker_directory", "js/workers/") + "WorkerPOW.js"); - /* initialize */ - yield new Promise((resolve, reject) => { - const timeout_id = setTimeout(() => reject("timeout"), 1000); - this._worker.onmessage = event => { - clearTimeout(timeout_id); - if (!event.data) { - reject("invalid data"); - return; - } - if (!event.data.success) { - reject("initialize failed (" + event.data.success + " | " + (event.data.message || "unknown eroror") + ")"); - return; - } - this._worker.onmessage = event => this.handle_message(event.data); - resolve(); - }; - this._worker.onerror = event => { - log.error(LogCategory.IDENTITIES, _translations.ekkOaQqE || (_translations.ekkOaQqE = tr("POW Worker error %o")), event); - clearTimeout(timeout_id); - reject("Failed to load worker (" + event.message + ")"); - }; - }); - /* set data */ - yield new Promise((resolve, reject) => { - this._worker.postMessage({ - type: "set_data", - private_key: key, - code: "set_data" - }); - const timeout_id = setTimeout(() => reject("timeout (data)"), 1000); - this._worker.onmessage = event => { - clearTimeout(timeout_id); - if (!event.data) { - reject("invalid data"); - return; - } - if (!event.data.success) { - reject("initialize of data failed (" + event.data.success + " | " + (event.data.message || "unknown eroror") + ")"); - return; - } - this._worker.onmessage = event => this.handle_message(event.data); - resolve(); - }; - }); - }); - } - mine(hash, iterations, target, timeout) { - return __awaiter(this, void 0, void 0, function* () { - this._current_hash = hash; - if (target < this._best_level) - return true; - return yield new Promise((resolve, reject) => { - this._worker.postMessage({ - type: "mine", - hash: this._current_hash, - iterations: iterations, - target: target, - code: "mine" - }); - const timeout_id = setTimeout(() => reject("timeout (mine)"), timeout || 5000); - this._worker.onmessage = event => { - this._worker.onmessage = event => this.handle_message(event.data); - clearTimeout(timeout_id); - if (!event.data) { - reject("invalid data"); - return; - } - if (!event.data.success) { - reject("mining failed (" + event.data.success + " | " + (event.data.message || "unknown eroror") + ")"); - return; - } - if (event.data.result) { - this._best_level = event.data.level; - this._current_hash = event.data.hash; - resolve(true); - } - else { - resolve(false); /* no result */ - } - }; - }); - }); - } - current_hash() { - return this._current_hash; - } - current_level() { - return this._best_level; - } - finalize(timeout) { - return __awaiter(this, void 0, void 0, function* () { - try { - yield new Promise((resolve, reject) => { - this._worker.postMessage({ - type: "finalize", - code: "finalize" - }); - const timeout_id = setTimeout(() => reject("timeout"), timeout || 250); - this._worker.onmessage = event => { - this._worker.onmessage = event => this.handle_message(event.data); - clearTimeout(timeout_id); - if (!event.data) { - reject("invalid data"); - return; - } - if (!event.data.success) { - reject("failed to finalize (" + event.data.success + " | " + (event.data.message || "unknown eroror") + ")"); - return; - } - resolve(); - }; - }); - } - catch (error) { - log.error(LogCategory.IDENTITIES, _translations.pGZABZ0J || (_translations.pGZABZ0J = tr("Failed to finalize POW worker! (%o)")), error); - } - this._worker.terminate(); - this._worker = undefined; - }); - } - handle_message(message) { - log.info(LogCategory.IDENTITIES, _translations.tOjKyP5T || (_translations.tOjKyP5T = tr("Received message: %o")), message); - } - } - class TeaSpeakIdentity { - constructor(private_key, hash, name, initialize) { - this.private_key = private_key; - this.hash_number = hash || "0"; - this._name = name; - if (this.private_key && (typeof (initialize) === "undefined" || initialize)) { - this.initialize().catch(error => { - log.error(LogCategory.IDENTITIES, "Failed to initialize TeaSpeakIdentity (%s)", error); - this._initialized = false; - }); - } - } - static generate_new() { - return __awaiter(this, void 0, void 0, function* () { - let key; - try { - key = yield crypto.subtle.generateKey({ name: 'ECDH', namedCurve: 'P-256' }, true, ["deriveKey"]); - } - catch (e) { - log.error(LogCategory.IDENTITIES, _translations.orYglH6g || (_translations.orYglH6g = tr("Could not generate a new key: %o")), e); - throw "Failed to generate keypair"; - } - const private_key = yield CryptoHelper.export_ecc_key(key.privateKey, false); - const identity = new TeaSpeakIdentity(private_key, "0", undefined, false); - yield identity.initialize(); - return identity; - }); - } - static import_ts(ts_string, ini) { - return __awaiter(this, void 0, void 0, function* () { - const parse_string = string => { - /* parsing without INI structure */ - const V_index = string.indexOf('V'); - if (V_index == -1) - throw "invalid input (missing V)"; - return { - hash: string.substr(0, V_index), - data: string.substr(V_index + 1), - name: "TeaSpeak user" - }; - }; - const { hash, data, name } = (!ini ? () => parse_string(ts_string) : () => { - /* parsing with INI structure */ - let identity, name; - for (const line of ts_string.split("\n")) { - if (line.startsWith("identity=")) - identity = line.substr(9); - else if (line.startsWith("nickname=")) - name = line.substr(9); - } - if (!identity) - throw "missing identity keyword"; - identity = identity.match(/^"?([0-9]+V[0-9a-zA-Z+\/]+[=]+)"?$/)[1]; - if (!identity) - throw "invalid identity key value"; - const result = parse_string(identity); - result.name = name || result.name; - return result; - })(); - if (!ts_string.match(/[0-9]+/g)) - throw "invalid hash!"; - let buffer; - try { - buffer = new Uint8Array(arrayBufferBase64(data)); - } - catch (error) { - log.error(LogCategory.IDENTITIES, _translations.mCXt2f6G || (_translations.mCXt2f6G = tr("Failed to decode given base64 data (%s)")), data); - throw "failed to base data (base64 decode failed)"; - } - const key64 = yield CryptoHelper.decrypt_ts_identity(new Uint8Array(arrayBufferBase64(data))); - const identity = new TeaSpeakIdentity(key64, hash, name, false); - yield identity.initialize(); - return identity; - }); - } - fallback_name() { - return this._name; - } - uid() { - return this._unique_id; - } - type() { - return identities.IdentitifyType.TEAMSPEAK; - } - valid() { - return this._initialized && !!this._crypto_key && !!this._crypto_key_sign; - } - decode(data) { - return __awaiter(this, void 0, void 0, function* () { - const json = JSON.parse(data); - if (!json) - throw "invalid json"; - if (json.version == 2) { - this.private_key = json.key; - this.hash_number = json.hash; - this._name = json.name; - } - else if (json.version == 1) { - const key = json.key; - this._name = json.name; - const clone = yield TeaSpeakIdentity.import_ts(key, false); - this.private_key = clone.private_key; - this.hash_number = clone.hash_number; - } - else - throw "invalid version"; - yield this.initialize(); - }); - } - encode() { - return JSON.stringify({ - key: this.private_key, - hash: this.hash_number, - name: this._name, - version: 2 - }); - } - level() { - return __awaiter(this, void 0, void 0, function* () { - if (!this._initialized || !this.public_key) - throw "not initialized"; - const hash = new Uint8Array(yield sha.sha1(this.public_key + this.hash_number)); - let level = 0; - while (level < hash.byteLength && hash[level] == 0) - level++; - if (level >= hash.byteLength) { - level = 256; - } - else { - let byte = hash[level]; - level <<= 3; - while ((byte & 0x1) == 0) { - level++; - byte >>= 1; - } - } - return level; - }); - } - /** - * @param {string} a - * @param {string} b - * @description b must be smaller (in bytes) then a - */ - string_add(a, b) { - const char_result = []; - const char_a = [...a].reverse().map(e => e.charCodeAt(0)); - const char_b = [...b].reverse().map(e => e.charCodeAt(0)); - let carry = false; - while (char_b.length > 0) { - let result = char_b.pop_front() + char_a.pop_front() + (carry ? 1 : 0) - 48; - if ((carry = result > 57)) - result -= 10; - char_result.push(result); - } - while (char_a.length > 0) { - let result = char_a.pop_front() + (carry ? 1 : 0); - if ((carry = result > 57)) - result -= 10; - char_result.push(result); - } - if (carry) - char_result.push(49); - return String.fromCharCode.apply(null, char_result.slice().reverse()); - } - improve_level_for(time, threads) { - return __awaiter(this, void 0, void 0, function* () { - let active = true; - setTimeout(() => active = false, time); - return yield this.improve_level(-1, threads, () => active); - }); - } - improve_level(target, threads, active_callback, callback_level, callback_status) { - return __awaiter(this, void 0, void 0, function* () { - if (!this._initialized || !this.public_key) - throw "not initialized"; - if (target == -1) /* get the highest level possible */ - target = 0; - else if (target <= (yield this.level())) - return true; - const workers = []; - const iterations = 100000; - let current_hash; - const next_hash = () => { - if (!current_hash) - return (current_hash = this.hash_number); - if (current_hash.length < iterations.toString().length) { - current_hash = this.string_add(iterations.toString(), current_hash); - } - else { - current_hash = this.string_add(current_hash, iterations.toString()); - } - return current_hash; - }; - { /* init */ - const initialize_promise = []; - for (let index = 0; index < threads; index++) { - const worker = new IdentityPOWWorker(); - workers.push(worker); - initialize_promise.push(worker.initialize(this.public_key)); - } - try { - yield Promise.all(initialize_promise); - } - catch (error) { - log.error(LogCategory.IDENTITIES, error); - throw "failed to initialize"; - } - } - let result = false; - let best_level = 0; - let target_level = target > 0 ? target : (yield this.level()) + 1; - const worker_promise = []; - const hash_timestamps = []; - let last_hashrate_update = 0; - const update_hashrate = () => { - if (!callback_status) - return; - const now = Date.now(); - hash_timestamps.push(now); - if (last_hashrate_update + 1000 < now) { - last_hashrate_update = now; - const timeout = now - 10 * 1000; /* 10s */ - const rounds = hash_timestamps.filter(e => e > timeout); - callback_status(Math.ceil((rounds.length * iterations) / Math.ceil((now - rounds[0]) / 1000))); - } - }; - try { - result = yield new Promise((resolve, reject) => { - let active = true; - const exit = () => { - const timeout = setTimeout(() => resolve(true), 1000); - Promise.all(worker_promise).then(result => { - clearTimeout(timeout); - resolve(true); - }).catch(error => resolve(true)); - active = false; - }; - for (const worker of workers) { - const worker_mine = () => { - if (!active) - return; - const promise = worker.mine(next_hash(), iterations, target_level); - const p = promise.then(result => { - update_hashrate(); - worker_promise.remove(p); - if (result.valueOf()) { - if (worker.current_level() > best_level) { - this.hash_number = worker.current_hash(); - log.info(LogCategory.IDENTITIES, "Found new best at %s (%d). Old was %d", this.hash_number, worker.current_level(), best_level); - best_level = worker.current_level(); - if (callback_level) - callback_level(best_level); - } - if (active) { - if (target > 0) - exit(); - else - target_level = best_level + 1; - } - } - if (active && (active = active_callback())) - setTimeout(() => worker_mine(), 0); - else { - exit(); - } - return Promise.resolve(); - }).catch(error => { - worker_promise.remove(p); - log.warn(LogCategory.IDENTITIES, "POW worker error %o", error); - reject(error); - return Promise.resolve(); - }); - worker_promise.push(p); - }; - worker_mine(); - } - }); - } - catch (error) { - //error already printed before reject had been called - } - { /* shutdown */ - const finalize_promise = []; - for (const worker of workers) - finalize_promise.push(worker.finalize(250)); - try { - yield Promise.all(finalize_promise); - } - catch (error) { - log.error(LogCategory.IDENTITIES, error); - throw "failed to finalize"; - } - } - return result; - }); - } - initialize() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.private_key) - throw "Invalid private key"; - let jwk; - try { - jwk = yield CryptoHelper.decode_tomcrypt_key(this.private_key); - if (!jwk) - throw "result undefined"; - } - catch (error) { - throw "failed to parse key (" + error + ")"; - } - try { - this._crypto_key_sign = yield crypto.subtle.importKey("jwk", jwk, { name: 'ECDSA', namedCurve: 'P-256' }, false, ["sign"]); - } - catch (error) { - log.error(LogCategory.IDENTITIES, error); - throw "failed to create crypto sign key"; - } - try { - this._crypto_key = yield crypto.subtle.importKey("jwk", jwk, { name: 'ECDH', namedCurve: 'P-256' }, true, ["deriveKey"]); - } - catch (error) { - log.error(LogCategory.IDENTITIES, error); - throw "failed to create crypto key"; - } - try { - this.public_key = yield CryptoHelper.export_ecc_key(this._crypto_key, true); - this._unique_id = base64_encode_ab(yield sha.sha1(this.public_key)); - } - catch (error) { - log.error(LogCategory.IDENTITIES, error); - throw "failed to calculate unique id"; - } - this._initialized = true; - //const public_key = await profiles.identities.CryptoHelper.export_ecc_key(key, true); - }); - } - export_ts(ini) { - return __awaiter(this, void 0, void 0, function* () { - if (!this.private_key) - throw "Invalid private key"; - const identity = this.hash_number + "V" + (yield CryptoHelper.encrypt_ts_identity(new Uint8Array(str2ab8(this.private_key)))); - if (!ini) - return identity; - return "[Identity]\n" + - "id=TeaWeb-Exported\n" + - "identity=\"" + identity + "\"\n" + - "nickname=\"" + this.fallback_name() + "\"\n" + - "phonetic_nickname="; - }); - } - sign_message(message, hash = "SHA-256") { - return __awaiter(this, void 0, void 0, function* () { - /* bring this to libtomcrypt format */ - const sign_buffer = yield crypto.subtle.sign({ - name: "ECDSA", - hash: hash - }, this._crypto_key_sign, str2ab8(message)); - const sign = new Uint8Array(sign_buffer); - /* first 32 r bits | last 32 s bits */ - const buffer = new Uint8Array(72); - let index = 0; - { /* the initial sequence */ - buffer[index++] = 0x30; /* type */ - buffer[index++] = 0x00; /* we will set the sequence length later */ - } - { /* integer r */ - buffer[index++] = 0x02; /* type */ - buffer[index++] = 0x20; /* length */ - if (sign[0] > 0x7F) { - buffer[index - 1] += 1; - buffer[index++] = 0; - } - for (let i = 0; i < 32; i++) - buffer[index++] = sign[i]; - } - { /* integer s */ - buffer[index++] = 0x02; /* type */ - buffer[index++] = 0x20; /* length */ - if (sign[32] > 0x7F) { - buffer[index - 1] += 1; - buffer[index++] = 0; - } - for (let i = 0; i < 32; i++) - buffer[index++] = sign[32 + i]; - } - buffer[1] = index - 2; - return base64_encode_ab(buffer.subarray(0, index)); - }); - } - spawn_identity_handshake_handler(connection) { - return new TeaSpeakHandshakeHandler(connection, this); - } - } - identities.TeaSpeakIdentity = TeaSpeakIdentity; - })(identities = profiles.identities || (profiles.identities = {})); -})(profiles || (profiles = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["252393eff9ee9bd3314e7489a9d25e6f643f4cde49f2b32fe1c7029eb0b5daee"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["252393eff9ee9bd3314e7489a9d25e6f643f4cde49f2b32fe1c7029eb0b5daee"] = "252393eff9ee9bd3314e7489a9d25e6f643f4cde49f2b32fe1c7029eb0b5daee"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "S4Ndcg1N", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (43,35)" }, { name: "EB7cq9IQ", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (44,27)" }, { name: "ObF9UjLw", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (54,23)" }, { name: "QqP4ziMI", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (61,31)" }, { name: "CB82sp6h", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (62,23)" }, { name: "XtV0zss8", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (158,37)" }, { name: "Vy5TBBLR", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (159,32)" }, { name: "OBRgr3qI", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (166,32)" }, { name: "aQTPJDUN", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (171,27)" }, { name: "qo0mcyqP", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (174,65)" }, { name: "dySnoVdL", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (179,27)" }, { name: "saqRg2Z9", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (181,27)" }, { name: "pWWqDzP0", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (185,27)" }, { name: "q7ZPaK5Y", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (192,31)" }, { name: "B_aTnd86", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (211,27)" }, { name: "Xp60Q526", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (214,32)" }, { name: "LyfKK5vy", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (240,37)" }, { name: "LGRGmAO1", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (241,32)" }, { name: "qQhEY7WN", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (246,19)" }, { name: "LWrXMvtN", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (250,27)" }, { name: "OyRiiDGL", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (251,52)" }, { name: "mOnXkXgi", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (261,19)" }, { name: "b7eQlRLY", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (263,23)" }, { name: "NKi7YaO9", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (271,27)" }, { name: "UFFPaqTS", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (272,19)" }, { name: "bxKhuXcc", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (298,37)" }, { name: "NxOnZbz3", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (299,32)" }, { name: "zRhhTEw9", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (304,19)" }, { name: "MqQjxf4A", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (308,27)" }, { name: "hJTwy8kO", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (309,52)" }, { name: "TPtST7cV", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (334,29)" }, { name: "oACRN0w_", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (341,31)" }, { name: "W98X1kxg", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (345,30)" }, { name: "v_PzN8TK", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (348,38)" }, { name: "TudD2giw", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (350,38)" }, { name: "SIztajHh", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (356,34)" }, { name: "iv0zFIyj", path: "D:/TeaSpeak/web/shared/js/profiles/identities/teaspeak-forum.ts (362,31)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var forum; -(function (forum) { - let gcaptcha; - (function (gcaptcha) { - function initialize() { - return __awaiter(this, void 0, void 0, function* () { - if (typeof (window.grecaptcha) === "undefined") { - let script = document.createElement("script"); - script.async = true; - let timeout; - const callback_name = "captcha_callback_" + Math.random().toString().replace(".", ""); - try { - yield new Promise((resolve, reject) => { - script.onerror = reject; - window[callback_name] = resolve; - script.src = "https://www.google.com/recaptcha/api.js?onload=" + encodeURIComponent(callback_name) + "&render=explicit"; - document.body.append(script); - timeout = setTimeout(() => reject("timeout"), 15000); - }); - } - catch (error) { - script.remove(); - script = undefined; - console.error(_translations.S4Ndcg1N || (_translations.S4Ndcg1N = tr("Failed to fetch recaptcha javascript source: %o")), error); - throw _translations.EB7cq9IQ || (_translations.EB7cq9IQ = tr("failed to download source")); - } - finally { - if (script) - script.onerror = undefined; - delete window[callback_name]; - clearTimeout(timeout); - } - } - if (typeof (window.grecaptcha) === "undefined") - throw _translations.ObF9UjLw || (_translations.ObF9UjLw = tr("failed to load recaptcha")); - }); - } - gcaptcha.initialize = initialize; - function spawn(container, key, callback_data) { - return __awaiter(this, void 0, void 0, function* () { - try { - yield initialize(); - } - catch (error) { - console.error(_translations.QqP4ziMI || (_translations.QqP4ziMI = tr("Failed to initialize G-Recaptcha. Error: %o")), error); - throw _translations.CB82sp6h || (_translations.CB82sp6h = tr("initialisation failed")); - } - if (container.attr("captcha-uuid")) - window.grecaptcha.reset(container.attr("captcha-uuid")); - else { - container.attr("captcha-uuid", window.grecaptcha.render(container[0], { - "sitekey": key, - callback: callback_data - })); - } - }); - } - gcaptcha.spawn = spawn; - })(gcaptcha = forum.gcaptcha || (forum.gcaptcha = {})); - function api_url() { - return settings.static_global(Settings.KEY_TEAFORO_URL); - } - class Data { - constructor(auth, raw, sign) { - this.auth_key = auth; - this.raw = raw; - this.sign = sign; - this.parsed = JSON.parse(raw); - } - data_json() { return this.raw; } - data_sign() { return this.sign; } - name() { return this.parsed.user_name; } - user_id() { return this.parsed.user_id; } - user_group() { return this.parsed.user_group_id; } - is_stuff() { return this.parsed.is_staff; } - is_premium() { return this.parsed.user_groups.indexOf(5) != -1; } - data_age() { return new Date(this.parsed.data_age); } - is_expired() { return this.parsed.data_age + 48 * 60 * 60 * 1000 < Date.now(); } - should_renew() { return this.parsed.data_age + 24 * 60 * 60 * 1000 < Date.now(); } /* renew data all 24hrs */ - } - forum.Data = Data; - let _data; - function logged_in() { - return !!_data && !_data.is_expired(); - } - forum.logged_in = logged_in; - function data() { return _data; } - forum.data = data; - function login(username, password, captcha) { - return __awaiter(this, void 0, void 0, function* () { - let response; - try { - response = yield new Promise((resolve, reject) => { - $.ajax({ - url: api_url() + "?web-api/v1/login", - type: "POST", - cache: false, - data: { - username: username, - password: password, - remember: true, - "g-recaptcha-response": captcha - }, - crossDomain: true, - success: resolve, - error: (xhr, status, error) => { - console.log(_translations.XtV0zss8 || (_translations.XtV0zss8 = tr("Login request failed %o: %o")), status, error); - reject(_translations.Vy5TBBLR || (_translations.Vy5TBBLR = tr("request failed"))); - } - }); - }); - } - catch (error) { - return { - status: "error", - error_message: _translations.OBRgr3qI || (_translations.OBRgr3qI = tr("failed to send login request")) - }; - } - if (response["status"] !== "ok") { - console.error(_translations.aQTPJDUN || (_translations.aQTPJDUN = tr("Response status not okey. Error happend: %o")), response); - return { - status: "error", - error_message: (response["errors"] || [])[0] || (_translations.qo0mcyqP || (_translations.qo0mcyqP = tr("Unknown error"))) - }; - } - if (!response["success"]) { - console.error(_translations.dySnoVdL || (_translations.dySnoVdL = tr("Login failed. Response %o")), response); - let message = _translations.saqRg2Z9 || (_translations.saqRg2Z9 = tr("failed to login")); - let captcha; - /* user/password wrong | and maybe captcha required */ - if (response["code"] == 1 || response["code"] == 3) - message = _translations.pWWqDzP0 || (_translations.pWWqDzP0 = tr("Invalid username or password")); - if (response["code"] == 2 || response["code"] == 3) { - captcha = { - type: response["captcha"]["type"], - data: response["captcha"]["siteKey"] //TODO: Why so static here? - }; - if (response["code"] == 2) - message = _translations.q7ZPaK5Y || (_translations.q7ZPaK5Y = tr("captcha required")); - } - return { - status: typeof (captcha) !== "undefined" ? "captcha" : "error", - error_message: message, - captcha: captcha - }; - } - //document.cookie = "user_data=" + response["data"] + ";path=/"; - //document.cookie = "user_sign=" + response["sign"] + ";path=/"; - try { - _data = new Data(response["auth-key"], response["data"], response["sign"]); - localStorage.setItem("teaspeak-forum-data", response["data"]); - localStorage.setItem("teaspeak-forum-sign", response["sign"]); - localStorage.setItem("teaspeak-forum-auth", response["auth-key"]); - profiles.identities.update_forum(); - } - catch (error) { - console.error(_translations.B_aTnd86 || (_translations.B_aTnd86 = tr("Failed to parse forum given data: %o")), error); - return { - status: "error", - error_message: _translations.Xp60Q526 || (_translations.Xp60Q526 = tr("Failed to parse response data")) - }; - } - return { - status: "success" - }; - }); - } - forum.login = login; - function renew_data() { - return __awaiter(this, void 0, void 0, function* () { - let response; - try { - response = yield new Promise((resolve, reject) => { - $.ajax({ - url: api_url() + "?web-api/v1/renew-data", - type: "GET", - cache: false, - crossDomain: true, - data: { - "auth-key": _data.auth_key - }, - success: resolve, - error: (xhr, status, error) => { - console.log(_translations.LyfKK5vy || (_translations.LyfKK5vy = tr("Renew request failed %o: %o")), status, error); - reject(_translations.LGRGmAO1 || (_translations.LGRGmAO1 = tr("request failed"))); - } - }); - }); - } - catch (error) { - throw _translations.qQhEY7WN || (_translations.qQhEY7WN = tr("failed to send renew request")); - } - if (response["status"] !== "ok") { - console.error(_translations.LWrXMvtN || (_translations.LWrXMvtN = tr("Response status not okey. Error happend: %o")), response); - throw (response["errors"] || [])[0] || (_translations.OyRiiDGL || (_translations.OyRiiDGL = tr("Unknown error"))); - } - if (!response["success"]) { - if (response["code"] == 1) { - return "login-required"; - } - throw "invalid error code (" + response["code"] + ")"; - } - if (!response["data"] || !response["sign"]) - throw _translations.mOnXkXgi || (_translations.mOnXkXgi = tr("response missing data")); - console.debug(_translations.b7eQlRLY || (_translations.b7eQlRLY = tr("Renew succeeded. Parsing data."))); - try { - _data = new Data(_data.auth_key, response["data"], response["sign"]); - localStorage.setItem("teaspeak-forum-data", response["data"]); - localStorage.setItem("teaspeak-forum-sign", response["sign"]); - profiles.identities.update_forum(); - } - catch (error) { - console.error(_translations.NKi7YaO9 || (_translations.NKi7YaO9 = tr("Failed to parse forum given data: %o")), error); - throw _translations.UFFPaqTS || (_translations.UFFPaqTS = tr("failed to parse data")); - } - return "success"; - }); - } - forum.renew_data = renew_data; - function logout() { - return __awaiter(this, void 0, void 0, function* () { - if (!logged_in()) - return; - let response; - try { - response = yield new Promise((resolve, reject) => { - $.ajax({ - url: api_url() + "?web-api/v1/logout", - type: "GET", - cache: false, - crossDomain: true, - data: { - "auth-key": _data.auth_key - }, - success: resolve, - error: (xhr, status, error) => { - console.log(_translations.bxKhuXcc || (_translations.bxKhuXcc = tr("Logout request failed %o: %o")), status, error); - reject(_translations.NxOnZbz3 || (_translations.NxOnZbz3 = tr("request failed"))); - } - }); - }); - } - catch (error) { - throw _translations.zRhhTEw9 || (_translations.zRhhTEw9 = tr("failed to send logout request")); - } - if (response["status"] !== "ok") { - console.error(_translations.MqQjxf4A || (_translations.MqQjxf4A = tr("Response status not okey. Error happend: %o")), response); - throw (response["errors"] || [])[0] || (_translations.hJTwy8kO || (_translations.hJTwy8kO = tr("Unknown error"))); - } - if (!response["success"]) { - /* code 1 means not logged in, its an success */ - if (response["code"] != 1) { - throw "invalid error code (" + response["code"] + ")"; - } - } - _data = undefined; - localStorage.removeItem("teaspeak-forum-data"); - localStorage.removeItem("teaspeak-forum-sign"); - localStorage.removeItem("teaspeak-forum-auth"); - profiles.identities.update_forum(); - }); - } - forum.logout = logout; - loader.register_task(loader.Stage.JAVASCRIPT_INITIALIZING, { - name: "TeaForo initialize", - priority: 10, - function: () => __awaiter(this, void 0, void 0, function* () { - const raw_data = localStorage.getItem("teaspeak-forum-data"); - const raw_sign = localStorage.getItem("teaspeak-forum-sign"); - const forum_auth = localStorage.getItem("teaspeak-forum-auth"); - if (!raw_data || !raw_sign || !forum_auth) { - console.log(_translations.TPtST7cV || (_translations.TPtST7cV = tr("No TeaForo authentification found. TeaForo connection status: unconnected"))); - return; - } - try { - _data = new Data(forum_auth, raw_data, raw_sign); - } - catch (error) { - console.error(_translations.oACRN0w_ || (_translations.oACRN0w_ = tr("Failed to initialize TeaForo connection from local data. Error: %o")), error); - return; - } - if (_data.should_renew()) { - console.info(_translations.W98X1kxg || (_translations.W98X1kxg = tr("TeaForo data should be renewed. Executing renew."))); - renew_data().then(status => { - if (status === "success") { - console.info(_translations.v_PzN8TK || (_translations.v_PzN8TK = tr("TeaForo data has been successfully renewed."))); - } - else { - console.warn(_translations.TudD2giw || (_translations.TudD2giw = tr("Failed to renew TeaForo data. New login required."))); - localStorage.removeItem("teaspeak-forum-data"); - localStorage.removeItem("teaspeak-forum-sign"); - localStorage.removeItem("teaspeak-forum-auth"); - } - }).catch(error => { - console.warn(_translations.SIztajHh || (_translations.SIztajHh = tr("Failed to renew TeaForo data. An error occurred: %o")), error); - }); - return; - } - if (_data && _data.is_expired()) { - console.error(_translations.iv0zFIyj || (_translations.iv0zFIyj = tr("TeaForo data is expired. TeaForo connection isn't available!"))); - } - }) - }); -})(forum || (forum = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["3ac4bc90640ab00e41ec66d414aef709d86113a645f77b253e52e9efeb40b68d"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["3ac4bc90640ab00e41ec66d414aef709d86113a645f77b253e52e9efeb40b68d"] = "3ac4bc90640ab00e41ec66d414aef709d86113a645f77b253e52e9efeb40b68d"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "aSWrAHYB", path: "D:/TeaSpeak/web/shared/js/sound/Sounds.ts (233,25)" }, { name: "UkmzxtCM", path: "D:/TeaSpeak/web/shared/js/sound/Sounds.ts (252,41)" }, { name: "kN3PHhau", path: "D:/TeaSpeak/web/shared/js/sound/Sounds.ts (262,45)" }, { name: "qr1gpdRg", path: "D:/TeaSpeak/web/shared/js/sound/Sounds.ts (270,49)" }, { name: "HoO3dFkw", path: "D:/TeaSpeak/web/shared/js/sound/Sounds.ts (282,49)" }, { name: "jBQ2VSvY", path: "D:/TeaSpeak/web/shared/js/sound/Sounds.ts (289,45)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var Sound; -(function (Sound) { - Sound["SOUND_TEST"] = "sound.test"; - Sound["SOUND_EGG"] = "sound.egg"; - Sound["AWAY_ACTIVATED"] = "away_activated"; - Sound["AWAY_DEACTIVATED"] = "away_deactivated"; - Sound["MICROPHONE_MUTED"] = "microphone.muted"; - Sound["MICROPHONE_ACTIVATED"] = "microphone.activated"; - Sound["SOUND_MUTED"] = "sound.muted"; - Sound["SOUND_ACTIVATED"] = "sound.activated"; - Sound["CONNECTION_CONNECTED"] = "connection.connected"; - Sound["CONNECTION_DISCONNECTED"] = "connection.disconnected"; - Sound["CONNECTION_BANNED"] = "connection.banned"; - Sound["CONNECTION_DISCONNECTED_TIMEOUT"] = "connection.disconnected.timeout"; - Sound["CONNECTION_REFUSED"] = "connection.refused"; - Sound["SERVER_EDITED"] = "server.edited"; - Sound["SERVER_EDITED_SELF"] = "server.edited.self"; - Sound["SERVER_KICKED"] = "server.kicked"; - Sound["CHANNEL_CREATED"] = "channel.created"; - Sound["CHANNEL_MOVED"] = "channel.moved"; - Sound["CHANNEL_EDITED"] = "channel.edited"; - Sound["CHANNEL_EDITED_SELF"] = "channel.edited.self"; - Sound["CHANNEL_DELETED"] = "channel.deleted"; - Sound["CHANNEL_JOINED"] = "channel.joined"; - Sound["CHANNEL_KICKED"] = "channel.kicked"; - Sound["USER_MOVED"] = "user.moved"; - Sound["USER_MOVED_SELF"] = "user.moved.self"; - Sound["USER_POKED_SELF"] = "user.poked.self"; - Sound["USER_BANNED"] = "user.banned"; - Sound["USER_ENTERED"] = "user.joined"; - Sound["USER_ENTERED_MOVED"] = "user.joined.moved"; - Sound["USER_ENTERED_KICKED"] = "user.joined.kicked"; - Sound["USER_ENTERED_CONNECT"] = "user.joined.connect"; - Sound["USER_LEFT"] = "user.left"; - Sound["USER_LEFT_MOVED"] = "user.left.moved"; - Sound["USER_LEFT_KICKED_CHANNEL"] = "user.left.kicked.server"; - Sound["USER_LEFT_KICKED_SERVER"] = "user.left.kicked.channel"; - Sound["USER_LEFT_DISCONNECT"] = "user.left.disconnect"; - Sound["USER_LEFT_BANNED"] = "user.left.banned"; - Sound["USER_LEFT_TIMEOUT"] = "user.left.timeout"; - Sound["ERROR_INSUFFICIENT_PERMISSIONS"] = "error.insufficient_permissions"; - Sound["MESSAGE_SEND"] = "message.send"; - Sound["MESSAGE_RECEIVED"] = "message.received"; - Sound["GROUP_SERVER_ASSIGNED"] = "group.server.assigned"; - Sound["GROUP_SERVER_REVOKED"] = "group.server.revoked"; - Sound["GROUP_CHANNEL_CHANGED"] = "group.channel.changed"; - Sound["GROUP_SERVER_ASSIGNED_SELF"] = "group.server.assigned.self"; - Sound["GROUP_SERVER_REVOKED_SELF"] = "group.server.revoked.self"; - Sound["GROUP_CHANNEL_CHANGED_SELF"] = "group.channel.changed.self"; -})(Sound || (Sound = {})); -var sound; -(function (sound_1) { - let speech_mapping = {}; - let volume_require_save = false; - let speech_volume = {}; - let master_volume; - let overlap_sounds; - let ignore_muted; - let master_mixed; - function register_sound(key, file) { - speech_mapping[key] = { key: key, filename: file }; - } - function get_sound_volume(sound, default_volume) { - let result = speech_volume[sound]; - if (typeof (result) === "undefined") { - if (typeof (default_volume) !== "undefined") - result = default_volume; - else - result = 1; - } - return result; - } - sound_1.get_sound_volume = get_sound_volume; - function set_sound_volume(sound, volume) { - volume_require_save = volume_require_save || speech_volume[sound] != volume; - speech_volume[sound] = volume == 1 ? undefined : volume; - } - sound_1.set_sound_volume = set_sound_volume; - function get_master_volume() { - return master_volume; - } - sound_1.get_master_volume = get_master_volume; - function set_master_volume(volume) { - volume_require_save = volume_require_save || master_volume != volume; - master_volume = volume; - if (master_mixed) { - if (master_mixed.gain.setValueAtTime) - master_mixed.gain.setValueAtTime(volume, 0); - else - master_mixed.gain.value = volume; - } - } - sound_1.set_master_volume = set_master_volume; - function overlap_activated() { - return overlap_sounds; - } - sound_1.overlap_activated = overlap_activated; - function set_overlap_activated(flag) { - volume_require_save = volume_require_save || overlap_sounds != flag; - overlap_sounds = flag; - } - sound_1.set_overlap_activated = set_overlap_activated; - function ignore_output_muted() { - return ignore_muted; - } - sound_1.ignore_output_muted = ignore_output_muted; - function set_ignore_output_muted(flag) { - volume_require_save = volume_require_save || ignore_muted != flag; - ignore_muted = flag; - } - sound_1.set_ignore_output_muted = set_ignore_output_muted; - function reinitialisize_audio() { - const context = audio.player.context(); - const destination = audio.player.destination(); - if (master_mixed) - master_mixed.disconnect(); - master_mixed = context.createGain(); - if (master_mixed.gain.setValueAtTime) - master_mixed.gain.setValueAtTime(master_volume, 0); - else - master_mixed.gain.value = master_volume; - master_mixed.connect(destination); - } - sound_1.reinitialisize_audio = reinitialisize_audio; - function save() { - if (volume_require_save) { - volume_require_save = false; - const data = {}; - data.version = 1; - for (const key in Sound) { - if (typeof (speech_volume[Sound[key]]) !== "undefined") - data[Sound[key]] = speech_volume[Sound[key]]; - } - data.master = master_volume; - data.overlap = overlap_sounds; - data.ignore_muted = ignore_muted; - settings.changeGlobal("sound_volume", JSON.stringify(data)); - } - } - sound_1.save = save; - function initialize() { - $.ajaxSetup({ - beforeSend: function (jqXHR, settings) { - if (settings.dataType === 'binary') { - settings.xhr().responseType = 'arraybuffer'; - settings.processData = false; - } - } - }); - /* volumes */ - { - const data = JSON.parse(settings.static_global("sound_volume", "{}")); - for (const sound_key in Sound) { - if (typeof (data[Sound[sound_key]]) !== "undefined") - speech_volume[Sound[sound_key]] = data[Sound[sound_key]]; - } - master_volume = typeof (data.master) === "number" ? data.master : 1; - overlap_sounds = typeof (data.overlap) === "boolean" ? data.overlap : true; - ignore_muted = typeof (data.ignore_muted) === "boolean" ? data.ignore_muted : false; - } - register_sound("message.received", "effects/message_received.wav"); - register_sound("message.send", "effects/message_send.wav"); - sound_1.manager = new SoundManager(undefined); - audio.player.on_ready(reinitialisize_audio); - return new Promise((resolve, reject) => { - $.ajax({ - url: "audio/speech/mapping.json", - success: response => { - if (typeof (response) === "string") - response = JSON.parse(response); - for (const entry of response) - register_sound(entry.key, "speech/" + entry.file); - resolve(); - }, - error: error => { - log.error(LogCategory.AUDIO, "error: %o", error); - reject(); - }, - timeout: 5000, - async: true, - type: 'GET' - }); - }); - } - sound_1.initialize = initialize; - function resolve_sound(sound) { - return __awaiter(this, void 0, void 0, function* () { - const file = speech_mapping[sound]; - if (!file) - throw _translations.aSWrAHYB || (_translations.aSWrAHYB = tr("Missing sound handle")); - return file; - }); - } - sound_1.resolve_sound = resolve_sound; - class SoundManager { - constructor(handle) { - this._playing_sounds = {}; - this._handle = handle; - } - play(_sound, options) { - options = options || {}; - const volume = get_sound_volume(_sound, options.default_volume); - log.info(LogCategory.AUDIO, _translations.UkmzxtCM || (_translations.UkmzxtCM = tr("Replaying sound %s (Sound volume: %o | Master volume %o)")), _sound, volume, master_volume); - if (volume == 0 || master_volume == 0) - return; - if (this._handle && !options.ignore_muted && !sound.ignore_output_muted() && this._handle.client_status.output_muted) - return; - const context = audio.player.context(); - if (!context) { - log.warn(LogCategory.AUDIO, _translations.kN3PHhau || (_translations.kN3PHhau = tr("Tried to replay a sound without an audio context (Sound: %o). Dropping playback")), _sound); - return; - } - sound.resolve_sound(_sound).then(handle => { - if (!handle) - return; - if (!options.ignore_overlap && (this._playing_sounds[handle.filename] > 0) && !sound.overlap_activated()) { - log.info(LogCategory.AUDIO, _translations.qr1gpdRg || (_translations.qr1gpdRg = tr("Dropping requested playback for sound %s because it would overlap.")), _sound); - return; - } - this._playing_sounds[handle.filename] = (this._playing_sounds[handle.filename] || 0) + 1; - audio.sounds.play_sound({ - path: "audio/" + handle.filename, - volume: volume * master_volume - }).then(() => { - if (options.callback) - options.callback(true); - }).catch(error => { - log.warn(LogCategory.AUDIO, _translations.HoO3dFkw || (_translations.HoO3dFkw = tr("Failed to replay sound %s: %o")), handle.filename, error); - if (options.callback) - options.callback(false); - }).then(() => { - this._playing_sounds[handle.filename]--; - }); - }).catch(error => { - log.warn(LogCategory.AUDIO, _translations.jBQ2VSvY || (_translations.jBQ2VSvY = tr("Failed to replay sound %o because it could not be resolved: %o")), sound, error); - if (options.callback) - options.callback(false); - }); - } - } - sound_1.SoundManager = SoundManager; -})(sound || (sound = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["94fd90a83218a1cef495ffe767f26df95b1521f409477f9ee4d9e716cb205b4d"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["94fd90a83218a1cef495ffe767f26df95b1521f409477f9ee4d9e716cb205b4d"] = "94fd90a83218a1cef495ffe767f26df95b1521f409477f9ee4d9e716cb205b4d"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "L1w47X12", path: "D:/TeaSpeak/web/shared/js/ui/htmltags.ts (41,30)" }, { name: "tylczNSM", path: "D:/TeaSpeak/web/shared/js/ui/htmltags.ts (49,30)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var htmltags; -(function (htmltags) { - let mouse_coordinates = { x: 0, y: 0 }; - function initialize() { - document.addEventListener('mousemove', event => { - mouse_coordinates.x = event.pageX; - mouse_coordinates.y = event.pageY; - }); - } - initialize(); - /* required for the bbcodes */ - function generate_client_open(properties) { - let result = ""; - /* build the opening tag:
*/ - result = result + "
"; - return result; - } - function generate_client(properties) { - let result = generate_client_open(properties); - /* content */ - { - if (properties.add_braces) - result = result + "\""; - result = result + MessageHelper.htmlEscape(properties.client_name || "undefined").join(" "); - if (properties.add_braces) - result = result + "\""; - } - /* close tag */ - { - result += "
"; - } - return result; - } - htmltags.generate_client = generate_client; - function generate_client_object(properties) { - return $(this.generate_client(properties)); - } - htmltags.generate_client_object = generate_client_object; - /* required for the bbcodes */ - function generate_channel_open(properties) { - let result = ""; - /* build the opening tag:
*/ - result = result + "
"; - return result; - } - function generate_channel(properties) { - let result = generate_channel_open(properties); - /* content */ - { - if (properties.add_braces) - result = result + "\""; - result = result + MessageHelper.htmlEscape(properties.channel_display_name || properties.channel_name || "undefined").join(" "); - if (properties.add_braces) - result = result + "\""; - } - /* close tag */ - { - result += "
"; - } - return result; - } - htmltags.generate_channel = generate_channel; - function generate_channel_object(properties) { - return $(this.generate_channel(properties)); - } - htmltags.generate_channel_object = generate_channel_object; - let callbacks; - (function (callbacks) { - function callback_context_client(element) { - const client_id = parseInt(element.attr("client-id") || "0"); - const client_unique_id = decodeURIComponent(element.attr("client-unique-id") || ""); - /* we ignore the name, we cant find clients by name because the name is too volatile*/ - let client; - const current_connection = server_connections.active_connection_handler(); - if (current_connection && current_connection.channelTree) { - if (!client && client_id) { - client = current_connection.channelTree.findClient(client_id); - if (client && (client_unique_id && client.properties.client_unique_identifier != client_unique_id)) { - client = undefined; /* client id dosn't match anymore, lets search for the unique id */ - } - } - if (!client && client_unique_id) - client = current_connection.channelTree.find_client_by_unique_id(client_unique_id); - if (!client) { - if (current_connection.channelTree.server.properties.virtualserver_unique_identifier === client_unique_id) { - current_connection.channelTree.server.spawnContextMenu(mouse_coordinates.x, mouse_coordinates.y); - return; - } - } - } - if (!client) { - /* we may should open a "offline" menu? */ - log.debug(LogCategory.GENERAL, "Failed to resolve client from html tag. Client id: %o, Client unique id: %o, Client name: %o", client_id, client_unique_id, decodeURIComponent(element.attr("client-name"))); - return false; - } - client.showContextMenu(mouse_coordinates.x, mouse_coordinates.y); - return false; - } - callbacks.callback_context_client = callback_context_client; - function callback_context_channel(element) { - const channel_id = parseInt(element.attr("channel-id") || "0"); - const current_connection = server_connections.active_connection_handler(); - let channel; - if (current_connection && current_connection.channelTree) { - channel = current_connection.channelTree.findChannel(channel_id); - } - if (!channel) - return false; - channel.showContextMenu(mouse_coordinates.x, mouse_coordinates.y); - return false; - } - callbacks.callback_context_channel = callback_context_channel; - })(callbacks = htmltags.callbacks || (htmltags.callbacks = {})); - let bbcodes; - (function (bbcodes) { - /* the = because we sometimes get that */ - //const url_client_regex = /?client:\/\/(?[0-9]+)\/(?[a-zA-Z0-9+=#]+)~(?(?:[^%]|%[0-9A-Fa-f]{2})+)$/g; - const url_client_regex = /client:\/\/([0-9]+)\/([a-zA-Z0-9+=/#]+)~((?:[^%]|%[0-9A-Fa-f]{2})+)$/g; /* IDK which browsers already support group naming */ - const url_channel_regex = /channel:\/\/([0-9]+)~((?:[^%]|%[0-9A-Fa-f]{2})+)$/g; - function initialize() { - const origin_url = xbbcode.register.find_parser('url'); - xbbcode.register.register_parser({ - tag: 'url', - build_html_tag_open(layer) { - if (layer.options) { - if (layer.options.match(url_channel_regex)) { - const groups = url_channel_regex.exec(layer.options); - return generate_channel_open({ - add_braces: false, - channel_id: parseInt(groups[1]), - channel_name: decodeURIComponent(groups[2]) - }); - } - else if (layer.options.match(url_client_regex)) { - const groups = url_client_regex.exec(layer.options); - return generate_client_open({ - add_braces: false, - client_id: parseInt(groups[1]), - client_unique_id: groups[2], - client_name: decodeURIComponent(groups[3]) - }); - } - } - return origin_url.build_html_tag_open(layer); - }, - build_html_tag_close(layer) { - if (layer.options) { - if (layer.options.match(url_client_regex)) - return "
"; - if (layer.options.match(url_channel_regex)) - return "
"; - } - return origin_url.build_html_tag_close(layer); - } - }); - /* - "img": { - openTag: function(params,content) { - let myUrl; - - if (!params) { - myUrl = content.replace(/<.*?>/g,""); - } else { - myUrl = params.substr(1); - } - - urlPattern.lastIndex = 0; - if ( !urlPattern.test( myUrl ) ) { - myUrl = "#"; - } - - return ''; - }, - closeTag: function(params,content) { - return ''; - } - }, - */ - } - initialize(); - })(bbcodes || (bbcodes = {})); -})(htmltags || (htmltags = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["e015f9e59a056d21357482ef065db99f87293c0c9049bdfeb1cb3c1515932bec"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["e015f9e59a056d21357482ef065db99f87293c0c9049bdfeb1cb3c1515932bec"] = "e015f9e59a056d21357482ef065db99f87293c0c9049bdfeb1cb3c1515932bec"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "sXkKn_Vj", path: "D:/TeaSpeak/web/shared/js/ui/elements/context_divider.ts (128,56)" }, { name: "yvApqoiK", path: "D:/TeaSpeak/web/shared/js/ui/elements/context_divider.ts (133,56)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -if (!$.fn.dividerfy) { - $.fn.dividerfy = function () { - this.find(".container-seperator").each(function () { - if (!this.previousElementSibling) - return; - if (!this.nextElementSibling) - return; - const element = $(this); - const parent_element = $(this.parentElement); - const previous_element = $(this.previousElementSibling); - const next_element = $(this.nextElementSibling); - const seperator_id = element.attr("seperator-id"); - const vertical = element.hasClass("vertical"); - const apply_view = (property, previous, next) => { - if (previous + next != 100) { - //Fix values if they dont addup to 100 - const diff = 100 - (previous + next); - previous += diff * previous / (previous + next); - next += diff * next / (previous + next); - //Some minor adjustments due to roundings - next += 100 - (previous + next); - } - const center = (vertical ? element.width() : element.height()) / 2; - const value_a = "calc(" + previous + "% - " + center + "px)"; - const value_b = "calc(" + next + "% - " + center + "px)"; - /* dont cause a reflow here */ - if (property === "height") { - previous_element[0].style.height = value_a; - next_element[0].style.height = value_b; - } - else { - previous_element[0].style.width = value_a; - next_element[0].style.width = value_b; - } - }; - const listener_move = (event) => { - const parent_offset = parent_element.offset(); - const min = vertical ? parent_offset.left : parent_offset.top; - const max = vertical ? parent_offset.left + parent_element.width() : parent_offset.top + parent_element.height(); - const current = event instanceof MouseEvent ? - (vertical ? event.pageX : event.pageY) : - (vertical ? event.touches[event.touches.length - 1].clientX : event.touches[event.touches.length - 1].clientY); - /* - const previous_offset = previous_element.offset(); - const next_offset = next_element.offset(); - - const min = vertical ? Math.min(previous_offset.left, next_offset.left) : Math.min(previous_offset.top, next_offset.top); - const max = vertical ? - Math.max(previous_offset.left + previous_element.width(), next_offset.left + next_element.width()) : - Math.max(previous_offset.top + previous_element.height(), next_offset.top + next_element.height()); - */ - let previous = 0; - let next = 0; - if (current < min) { - previous = 0; - next = 1; - } - else if (current < max) { - const x_offset = current - min; - const x_offset_max = max - min; - previous = x_offset / x_offset_max; - next = 1 - previous; - } - else { - previous = 1; - next = 0; - } - //console.log(min + " - " + max + " - " + current); - const property = vertical ? "width" : "height"; - const previous_p = Math.ceil(previous * 100); - const next_p = Math.ceil(next * 100); - apply_view(property, previous_p, next_p); - if (seperator_id) - settings.changeGlobal("seperator-settings-" + seperator_id, JSON.stringify({ - previous: previous_p, - next: next_p, - property: property - })); - }; - const listener_up = (event) => { - document.removeEventListener('mousemove', listener_move); - document.removeEventListener('touchmove', listener_move); - document.removeEventListener('mouseup', listener_up); - document.removeEventListener('touchend', listener_up); - document.removeEventListener('touchcancel', listener_up); - $(document.documentElement).css("user-select", ""); - element.removeClass("seperator-selected"); - next_element.find("[x-divider-require-resize]").trigger('resize'); - previous_element.find("[x-divider-require-resize]").trigger('resize'); - }; - element.on('mousedown', () => { - document.addEventListener('mousemove', listener_move); - document.addEventListener('touchmove', listener_move); - document.addEventListener('mouseup', listener_up); - document.addEventListener('touchend', listener_up); - document.addEventListener('touchcancel', listener_up); - $(document.documentElement).css("user-select", "none"); - element.addClass("seperator-selected"); - }); - element.on('touchstart', () => { - element.trigger('mousedown'); - }); - if (seperator_id) { - try { - const config = JSON.parse(settings.global("seperator-settings-" + seperator_id)); - if (config) { - log.debug(LogCategory.GENERAL, _translations.sXkKn_Vj || (_translations.sXkKn_Vj = tr("Applying previous changed sperator settings for %s: %o")), seperator_id, config); - apply_view(config.property, config.previous, config.next); - } - } - catch (e) { - if (!(e instanceof SyntaxError)) - log.error(LogCategory.GENERAL, _translations.yvApqoiK || (_translations.yvApqoiK = tr("Failed to parse seperator settings for sperator %s: %o")), seperator_id, e); - } - } - }); - return this; - }; -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["419e31bbcbccf7164faea307d49009f573280d58339c5f7ec7f7d00e4dcc73d0"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["419e31bbcbccf7164faea307d49009f573280d58339c5f7ec7f7d00e4dcc73d0"] = "419e31bbcbccf7164faea307d49009f573280d58339c5f7ec7f7d00e4dcc73d0"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var net; -(function (net) { - var graph; - (function (graph) { - /* Great explanation of Bezier curves: http://en.wikipedia.org/wiki/Bezier_curve#Quadratic_curves - * - * Assuming A was the last point in the line plotted and B is the new point, - * we draw a curve with control points P and Q as below. - * - * A---P - * | - * | - * | - * Q---B - * - * Importantly, A and P are at the same y coordinate, as are B and Q. This is - * so adjacent curves appear to flow as one. - */ - class Graph { - constructor(canvas) { - this.style = { - background_color: "#28292b", - //background_color: "red", - separator_color: "#283036", - //separator_color: 'blue', - separator_count: 10, - separator_width: 1, - upload: { - fill: "#2d3f4d", - stroke: "#336e9f", - strike_width: 2, - }, - download: { - fill: "#532c26", - stroke: "#a9321c", - strike_width: 2, - } - }; - this._entries = []; - this._entry_max = { - upload: 1, - download: 1, - }; - this._max_space = 1.12; - this._max_gap = 5; - this._time_span = { - origin: { - begin: 0, - end: 1, - time: 0 - }, - target: { - begin: 0, - end: 1, - time: 1 - } - }; - this._detailed_shown = false; - this.canvas = canvas; - this._animate_loop = () => this.draw(); - this.recalculate_cache(); /* initialize cache */ - } - initialize() { - this._canvas_context = this.canvas.getContext("2d"); - Graph._loops.push(this._animate_loop); - if (Graph._loops.length == 1) { - const static_loop = () => { - Graph._loops.forEach(l => l()); - if (Graph._loops.length > 0) - requestAnimationFrame(static_loop); - else - console.log("STATIC terminate!"); - }; - static_loop(); - } - this.canvas.onmousemove = this.on_mouse_move.bind(this); - this.canvas.onmouseleave = this.on_mouse_leave.bind(this); - } - terminate() { - Graph._loops.remove(this._animate_loop); - } - max_gap_size(value) { return typeof (value) === "number" ? (this._max_gap = value) : this._max_gap; } - recalculate_cache(time_span) { - this._entries = this._entries.sort((a, b) => a.timestamp - b.timestamp); - this._entry_max = { - download: 1, - upload: 1 - }; - if (time_span) { - this._time_span = { - origin: { - begin: 0, - end: 0, - time: 0 - }, - target: { - begin: this._entries.length > 0 ? this._entries[0].timestamp : 0, - end: this._entries.length > 0 ? this._entries.last().timestamp : 0, - time: 0 - } - }; - } - for (const entry of this._entries) { - if (typeof (entry.upload) === "number") - this._entry_max.upload = Math.max(this._entry_max.upload, entry.upload); - if (typeof (entry.download) === "number") - this._entry_max.download = Math.max(this._entry_max.download, entry.download); - } - this._entry_max.upload *= this._max_space; - this._entry_max.download *= this._max_space; - } - insert_entry(entry) { - if (this._entries.length > 0 && entry.timestamp < this._entries.last().timestamp) - throw "invalid timestamp"; - this._entries.push(entry); - if (typeof (entry.upload) === "number") - this._entry_max.upload = Math.max(this._entry_max.upload, entry.upload * this._max_space); - if (typeof (entry.download) === "number") - this._entry_max.download = Math.max(this._entry_max.download, entry.download * this._max_space); - } - insert_entries(entries) { - this._entries.push(...entries); - this.recalculate_cache(); - this.cleanup(); - } - resize() { - this.canvas.style.height = "100%"; - this.canvas.style.width = "100%"; - const cstyle = getComputedStyle(this.canvas); - this.canvas.width = parseInt(cstyle.width); - this.canvas.height = parseInt(cstyle.height); - } - cleanup() { - const time = this.calculate_time_span(); - let index = 0; - for (; index < this._entries.length; index++) { - if (this._entries[index].timestamp < time.begin) - continue; - if (index == 0) - return; - break; - } - /* keep the last entry as a reference point to the left */ - if (index > 1) { - this._entries.splice(0, index - 1); - this.recalculate_cache(); - } - } - calculate_time_span() { - const time = Date.now(); - if (time >= this._time_span.target.time) - return this._time_span.target; - if (time <= this._time_span.origin.time) - return this._time_span.origin; - const ob = this._time_span.origin.begin; - const oe = this._time_span.origin.end; - const ot = this._time_span.origin.time; - const tb = this._time_span.target.begin; - const te = this._time_span.target.end; - const tt = this._time_span.target.time; - const offset = (time - ot) / (tt - ot); - return { - begin: ob + (tb - ob) * offset, - end: oe + (te - oe) * offset, - }; - } - draw() { - let ctx = this._canvas_context; - const height = this.canvas.height; - const width = this.canvas.width; - //console.log("Painting on %ox%o", height, width); - ctx.shadowBlur = 0; - ctx.filter = ""; - ctx.lineCap = "square"; - ctx.fillStyle = this.style.background_color; - ctx.fillRect(0, 0, width, height); - /* first of all print the separators */ - { - const sw = this.style.separator_width; - const swh = this.style.separator_width / 2; - ctx.lineWidth = sw; - ctx.strokeStyle = this.style.separator_color; - ctx.beginPath(); - /* horizontal */ - { - const dw = width / this.style.separator_count; - let dx = dw / 2; - while (dx < width) { - ctx.moveTo(Math.floor(dx - swh) + .5, .5); - ctx.lineTo(Math.floor(dx - swh) + .5, Math.floor(height) + .5); - dx += dw; - } - } - /* vertical */ - { - const dh = height / 3; //tree lines (top, center, bottom) - let dy = dh / 2; - while (dy < height) { - ctx.moveTo(.5, Math.floor(dy - swh) + .5); - ctx.lineTo(Math.floor(width) + .5, Math.floor(dy - swh) + .5); - dy += dh; - } - } - ctx.stroke(); - ctx.closePath(); - } - /* draw the lines */ - { - const t = this.calculate_time_span(); - const tb = t.begin; /* time begin */ - const dt = t.end - t.begin; /* delta time */ - const dtw = width / dt; /* delta time width */ - const draw_graph = (type, direction, max) => { - const hy = Math.floor(height / 2); /* half y */ - const by = hy - direction * this.style[type].strike_width; /* the "base" line */ - const marked_points = []; - ctx.beginPath(); - ctx.moveTo(0, by); - let x, y, lx = 0, ly = by; /* last x, last y */ - const floor = a => a; //Math.floor; - for (const entry of this._entries) { - x = floor((entry.timestamp - tb) * dtw); - if (typeof entry[type] === "number") - y = floor(hy - direction * Math.max(hy * (entry[type] / max), this.style[type].strike_width)); - else - y = hy - direction * this.style[type].strike_width; - if (entry.timestamp < tb) { - lx = x; - ly = y; - continue; - } - if (x - lx > this._max_gap && this._max_gap > 0) { - ctx.lineTo(lx, by); - ctx.lineTo(x, by); - ctx.lineTo(x, y); - lx = x; - ly = y; - continue; - } - ctx.bezierCurveTo((x + lx) / 2, ly, (x + lx) / 2, y, x, y); - if (entry.highlight) - marked_points.push({ x: x, y: y }); - lx = x; - ly = y; - } - ctx.strokeStyle = this.style[type].stroke; - ctx.lineWidth = this.style[type].strike_width; - ctx.lineJoin = "miter"; - ctx.stroke(); - //Close the path and fill - ctx.lineTo(width, hy); - ctx.lineTo(0, hy); - ctx.fillStyle = this.style[type].fill; - ctx.fill(); - ctx.closePath(); - { - ctx.beginPath(); - const radius = 3; - for (const point of marked_points) { - ctx.moveTo(point.x, point.y); - ctx.ellipse(point.x, point.y, radius, radius, 0, 0, 2 * Math.PI, false); - } - ctx.stroke(); - ctx.fill(); - ctx.closePath(); - } - }; - const shared_max = Math.max(this._entry_max.upload, this._entry_max.download); - draw_graph("upload", 1, shared_max); - draw_graph("download", -1, shared_max); - } - } - on_mouse_move(event) { - const offset = event.offsetX; - const max_offset = this.canvas.width; - if (offset < 0) - return; - if (offset > max_offset) - return; - const time_span = this.calculate_time_span(); - const time = time_span.begin + (time_span.end - time_span.begin) * (offset / max_offset); - let index = 0; - for (; index < this._entries.length; index++) { - if (this._entries[index].timestamp > time) - break; - } - const entry_before = this._entries[index - 1]; /* In JS negative array access is allowed and returns undefined */ - const entry_next = this._entries[index]; /* In JS negative array access is allowed and returns undefined */ - let entry; - if (!entry_before || !entry_next) { - entry = entry_before || entry_next; - } - else { - const dn = entry_next.timestamp - time; - const db = time - entry_before.timestamp; - if (dn > db) - entry = entry_before; - else - entry = entry_next; - } - if (!entry) { - this.on_mouse_leave(event); - } - else { - this._entries.forEach(e => e.highlight = false); - this._detailed_shown = true; - entry.highlight = true; - if (this.callback_detailed_info) - this.callback_detailed_info(entry.upload, entry.download, entry.timestamp, event); - } - } - on_mouse_leave(event) { - if (!this._detailed_shown) - return; - this._detailed_shown = false; - this._entries.forEach(e => e.highlight = false); - if (this.callback_detailed_hide) - this.callback_detailed_hide(); - } - } - Graph._loops = []; - graph.Graph = Graph; - })(graph = net.graph || (net.graph = {})); -})(net || (net = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["c82d4662614adf5608bef1fd70a57019738a40114a7c07126b0c1de2799c39de"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["c82d4662614adf5608bef1fd70a57019738a40114a7c07126b0c1de2799c39de"] = "c82d4662614adf5608bef1fd70a57019738a40114a7c07126b0c1de2799c39de"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -function sliderfy(slider, options) { - options = Object.assign({ - initial_value: 0, - min_value: 0, - max_value: 100, - step: 1, - unit: '%', - value_field: [] - }, options); - if (!Array.isArray(options.value_field)) - options.value_field = [options.value_field]; - if (options.min_value >= options.max_value) - throw "invalid range"; - if (options.step > (options.max_value - options.min_value)) - throw "invalid step size"; - const tool = tooltip(slider); /* add the tooltip functionality */ - const filler = slider.find(".filler"); - const thumb = slider.find(".thumb"); - const tooltip_text = slider.find(".tooltip a"); - let _current_value; - const update_value = (value, trigger_change) => { - _current_value = value; - const offset = Math.min(100, Math.max(0, ((value - options.min_value) * 100) / (options.max_value - options.min_value))); - filler.css('width', offset + '%'); - thumb.css('left', offset + '%'); - tooltip_text.text(value.toFixed(0) + options.unit); - slider.attr("value", value); - if (trigger_change) - slider.trigger('change'); - for (const field of options.value_field) - field.text(value + options.unit); - tool.update(); - }; - const mouse_up_listener = () => { - document.removeEventListener('mousemove', mouse_listener); - document.removeEventListener('touchmove', mouse_listener); - document.removeEventListener('mouseup', mouse_up_listener); - document.removeEventListener('touchend', mouse_up_listener); - document.removeEventListener('touchcancel', mouse_up_listener); - tool.hide(); - slider.removeClass("active"); - console.log("Events removed"); - }; - const mouse_listener = (event) => { - const parent_offset = slider.offset(); - const min = parent_offset.left; - const max = parent_offset.left + slider.width(); - const current = event instanceof MouseEvent ? event.pageX : event.touches[event.touches.length - 1].clientX; - const range = options.max_value - options.min_value; - const offset = Math.round(((current - min) * (range / options.step)) / (max - min)) * options.step; - let value = Math.min(options.max_value, Math.max(options.min_value, options.min_value + offset)); - //console.log("Min: %o | Max: %o | %o (%o)", min, max, current, offset); - update_value(value, true); - }; - slider.on('mousedown', event => { - document.addEventListener('mousemove', mouse_listener); - document.addEventListener('touchmove', mouse_listener); - document.addEventListener('mouseup', mouse_up_listener); - document.addEventListener('touchend', mouse_up_listener); - document.addEventListener('touchcancel', mouse_up_listener); - tool.show(); - slider.addClass("active"); - }); - update_value(options.initial_value, false); - return { - value(value) { - if (typeof (value) !== "undefined" && value !== _current_value) - update_value(value, true); - return _current_value; - } - }; -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["2ab9d94c857ad8d8d402323b7cdb56fdfb7a29b68fa5484661c38be7b4f6a528"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["2ab9d94c857ad8d8d402323b7cdb56fdfb7a29b68fa5484661c38be7b4f6a528"] = "2ab9d94c857ad8d8d402323b7cdb56fdfb7a29b68fa5484661c38be7b4f6a528"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "z4Yri5dV", path: "D:/TeaSpeak/web/shared/js/ui/elements/tab.ts (26,18)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -if (typeof (customElements) !== "undefined") { - try { - class X_Tab extends HTMLElement { - } - class X_Entry extends HTMLElement { - } - class X_Tag extends HTMLElement { - } - class X_Content extends HTMLElement { - } - customElements.define('x-tab', X_Tab, { extends: 'div' }); - customElements.define('x-entry', X_Entry, { extends: 'div' }); - customElements.define('x-tag', X_Tag, { extends: 'div' }); - customElements.define('x-content', X_Content, { extends: 'div' }); - } - catch (error) { - console.warn("failed to define costum elements"); - } -} -else { - console.warn(_translations.z4Yri5dV || (_translations.z4Yri5dV = tr("Could not defied tab customElements!"))); -} -var TabFunctions = { - tabify(template, copy = true) { - console.log("Tabify: copy=" + copy); - console.log(template); - let tag = $.spawn("div"); - tag.addClass("tab"); - let header = $.spawn("div"); - header.addClass("tab-header"); - let content = $.spawn("div"); - content.addClass("tab-content"); - content.append($.spawn("div").addClass("height-watcher")); - let silentContent = $.spawn("div"); - silentContent.addClass("tab-content-invisible"); - /* add some kind of min height */ - const update_height = () => { - const height_watcher = tag.find("> .tab-content .height-watcher"); - const entries = tag.find("> .tab-content-invisible x-content, > .tab-content x-content"); - console.error(entries); - let max_height = 0; - entries.each((_, _e) => { - const entry = $(_e); - const height = entry.visible_height(); - if (height > max_height) - max_height = height; - }); - height_watcher.css('min-height', max_height + "px"); - tag.find(".window-resize-listener").trigger('resize'); - }; - template.find("x-entry").each((_, _entry) => { - const entry = $(_entry); - const tag_header = $.spawn("div").addClass("entry"); - const tag_content = copy ? entry.find("x-content").clone(true, true) : entry.find("x-content"); - { - const header_tag = entry.find("x-tag"); - const header_data = copy ? header_tag.contents().clone(true, true) : header_tag.contents(); - if (header_tag.attr("x-entry-class")) - tag_header.addClass(header_tag.attr("x-entry-class")); - if (header_tag.attr("x-entry-id")) - tag_header.attr("x-id", header_tag.attr("x-entry-id")); - tag_header.append(header_data); - /* listener if the tab might got removed */ - tag_header.addClass("window-resize-listener"); - tag_header.on('resize', event => { - if (!tag_header.is(':visible') && tag_header.hasClass('selected')) { - let element = tag_header.next('.entry:visible'); - if (element.length == 0) - element = tag_header.prev('.entry:visible'); - if (element.length == 0) { - tag_header.removeClass("selected"); - tag_content.hide(); - } - else { - element.first().trigger('click'); - } - console.log("Next: %o", tag_header.next('.entry:visible')); - console.log("prev: %o", tag_header.prev('.entry:visible')); - } - }); - } - content.append(tag_content.hide()); - tag_header.on("click", () => { - if (tag_header.hasClass("selected")) - return; - tag.find(".tab-header .selected").removeClass("selected"); - tag_header.addClass("selected"); - content.find("> x-content").hide(); - /* don't show many nodes at once */ - let entries = tag_content.find(".tab-show-partitional"); - entries.hide(); - const show_next = index => { - console.log("Show " + index); - if (index >= entries.length) - return; - entries.eq(index).show(); - setTimeout(show_next.bind(undefined, index + 1), 0); - }; - show_next(0); - tag_content.trigger('show'); - tag_content.show(); - }); - console.log(this); - header.append(tag_header); - }); - setTimeout(() => header.find(".entry").first().trigger("click"), 0); - tag.append(header); - tag.append(content); - tag.append(silentContent); - tag.on('tab.resize', update_height); - return tag; - } -}; -if (!$.fn.asTabWidget) { - $.fn.asTabWidget = function (copy) { - if ($(this).prop("tagName") == "X-TAB") - return TabFunctions.tabify($(this), typeof (copy) === "boolean" ? copy : true); - else { - throw "Invalid tag! " + $(this).prop("tagName"); - } - }; -} -if (!$.fn.tabify) { - $.fn.tabify = function (copy) { - const wrapped_tag = $.spawn("div").append(this); - wrapped_tag.find("x-tab").each((_, _element) => { - const element = $(_element); - element.replaceWith(element.asTabWidget(copy)); - }); - return wrapped_tag.children(); - }; -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["faa2a3135a562096ca469b0457951b9bde59e4203f728ea2934fbf639827e1cd"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["faa2a3135a562096ca469b0457951b9bde59e4203f728ea2934fbf639827e1cd"] = "faa2a3135a562096ca469b0457951b9bde59e4203f728ea2934fbf639827e1cd"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -function tooltip(entry) { - return tooltip.initialize(entry); -} -(function (tooltip) { - let _global_tooltip; - function initialize(entry, callbacks) { - if (!callbacks) - callbacks = {}; - let _show; - let _hide; - let _shown; - let _update; - entry.find(".container-tooltip").each((index, _node) => { - const node = $(_node); - const node_content = node.find(".tooltip"); - let _force_show = false, _flag_shown = false; - const mouseenter = (event) => { - const bounds = node[0].getBoundingClientRect(); - if (!_global_tooltip) { - _global_tooltip = $("#global-tooltip"); - } - _global_tooltip[0].style.left = (bounds.left + bounds.width / 2) + "px"; - _global_tooltip[0].style.top = bounds.top + "px"; - _global_tooltip[0].classList.add("shown"); - _global_tooltip[0].innerHTML = node_content[0].innerHTML; - callbacks.on_show && callbacks.on_show(_global_tooltip); - _flag_shown = _flag_shown || !!event; /* if event is undefined then it has been triggered by hand */ - }; - const mouseexit = () => { - if (_global_tooltip) { - if (!_force_show) { - callbacks.on_hide && callbacks.on_hide(_global_tooltip); - _global_tooltip[0].classList.remove("shown"); - } - _flag_shown = false; - } - }; - _node.addEventListener("mouseenter", mouseenter); - _node.addEventListener("mouseleave", mouseexit); - _show = () => { - _force_show = true; - mouseenter(); - }; - _hide = () => { - _force_show = false; - if (!_flag_shown) - mouseexit(); - }; - _update = () => { - if (_flag_shown || _force_show) - mouseenter(); - }; - _shown = () => _flag_shown || _force_show; - }); - return { - hide: _hide || (() => { }), - show: _show || (() => { }), - is_shown: _shown || (() => false), - update: _update || (() => { }) - }; - } - tooltip.initialize = initialize; -})(tooltip || (tooltip = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["c4e96182350831bf38d121b82c1e03618a32cef6c1c05d93fe5ce55633bb3e0e"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["c4e96182350831bf38d121b82c1e03618a32cef6c1c05d93fe5ce55633bb3e0e"] = "c4e96182350831bf38d121b82c1e03618a32cef6c1c05d93fe5ce55633bb3e0e"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "YHk3QMgK", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (233,44)" }, { name: "IQurT9kP", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (238,71)" }, { name: "WLGU6bnP", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (242,76)" }, { name: "IRFS6dUE", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (311,45)" }, { name: "trzsdqss", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (312,37)" }, { name: "WzWvOBTm", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (327,37)" }, { name: "tgGIp6eC", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (336,37)" }, { name: "XMwtJTlt", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (349,41)" }, { name: "YDk3ehXm", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (359,45)" }, { name: "ZLJ7E5ad", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (364,45)" }, { name: "Dcy8u586", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (366,37)" }, { name: "SGY3uiR3", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (373,37)" }, { name: "dWnfDpjs", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (380,37)" }, { name: "Qn5Y_BQT", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (387,37)" }, { name: "JR56gU5A", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (394,37)" }, { name: "S9GOLSrc", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (402,37)" }, { name: "ZrrAICSr", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (405,34)" }, { name: "tMyCKezh", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (405,57)" }, { name: "kjIOXUWT", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (409,37)" }, { name: "wga4YG6i", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (413,34)" }, { name: "r620ua7H", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (413,51)" }, { name: "IKaKTFJ0", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (421,45)" }, { name: "bhDNOIR7", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (421,62)" }, { name: "v5LsXjCv", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (424,46)" }, { name: "mtxGQQO1", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (424,91)" }, { name: "iwtQgyN6", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (432,45)" }, { name: "GZEpQEf5", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (448,37)" }, { name: "CsIwCkwd", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (456,42)" }, { name: "DyqpEtZd", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (456,78)" }, { name: "RgaMSFmp", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (460,38)" }, { name: "LWN4R9Z1", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (460,70)" }, { name: "A8Et845b", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (465,37)" }, { name: "VQsO5xjg", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (473,42)" }, { name: "EeaoSfA3", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (473,78)" }, { name: "BamyNO0n", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (477,38)" }, { name: "hT3TIxtD", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (477,70)" }, { name: "dmjFiiJh", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (482,37)" }, { name: "zQ2y7y4l", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (490,42)" }, { name: "Jbgud9rC", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (490,78)" }, { name: "p5GLEnDz", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (494,38)" }, { name: "b17gFELJ", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (494,70)" }, { name: "mkHwLaEd", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (500,37)" }, { name: "S0zdQo8Q", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (506,45)" }, { name: "TL7JhBKN", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (509,41)" }, { name: "XRlZ6m6L", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (512,41)" }, { name: "NdyN4NkV", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (516,37)" }, { name: "Zw4iJWN_", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (519,37)" }, { name: "W4o454QI", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (524,41)" }, { name: "JJbVuuAX", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (527,41)" }, { name: "rjgt_m0J", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (532,52)" }, { name: "TZWg3Vt_", path: "D:/TeaSpeak/web/shared/js/ui/frames/MenuBar.ts (532,73)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var top_menu; -(function (top_menu) { - let _driver; - function driver() { - return _driver; - } - top_menu.driver = driver; - function set_driver(driver) { - _driver = driver; - } - top_menu.set_driver = set_driver; - let html; - (function (html) { - class HTMLHrItem { - constructor() { - this.html_tag = $.spawn("hr"); - } - } - class HTMLMenuItem { - constructor(label, mode) { - this._items = []; - this._label = label; - this.html_tag = $.spawn("div").addClass("container-menu-item type-" + mode); - this._label_tag = $.spawn("div").addClass("menu-item"); - this._label_icon_tag = $.spawn("div").addClass("container-icon").appendTo(this._label_tag); - $.spawn("div").addClass("container-label").append(this._label_text_tag = $.spawn("a").text(label)).appendTo(this._label_tag); - this._label_tag.on('click', event => { - if (event.isDefaultPrevented()) - return; - const disabled = this.html_tag.hasClass("disabled"); - if (this._callback_click && !disabled) { - this._callback_click(); - } - event.preventDefault(); - if (disabled) - event.stopPropagation(); - else - HTMLMenuBarDriver.instance().close(); - }); - this._submenu_tag = $.spawn("div").addClass("sub-menu"); - this.html_tag.append(this._label_tag); - this.html_tag.append(this._submenu_tag); - } - append_item(label) { - const item = new HTMLMenuItem(label, "side"); - this._items.push(item); - this._submenu_tag.append(item.html_tag); - this.html_tag.addClass('sub-entries'); - return item; - } - append_hr() { - const item = new HTMLHrItem(); - this._items.push(item); - this._submenu_tag.append(item.html_tag); - return item; - } - delete_item(item) { - this._items.remove(item); - item.html_tag.detach(); - this.html_tag.toggleClass('sub-entries', this._items.length > 0); - } - disabled(value) { - if (typeof (value) === "undefined") - return this.html_tag.hasClass("disabled"); - this.html_tag.toggleClass("disabled", value); - return value; - } - items() { - return this._items; - } - label(value) { - if (typeof (value) === "undefined" || this._label === value) - return this._label; - return this._label; - } - visible(value) { - if (typeof (value) === "undefined") - return this.html_tag.is(':visible'); //FIXME! - this.html_tag.toggle(!!value); - return value; - } - click(callback) { - this._callback_click = callback; - return this; - } - icon(klass) { - this._label_icon_tag.children().remove(); - if (typeof (klass) === "string") - $.spawn("div").addClass("icon_em " + klass).appendTo(this._label_icon_tag); - else - IconManager.generate_tag(klass).appendTo(this._label_icon_tag); - return ""; - } - } - class HTMLMenuBarDriver { - constructor() { - this._items = []; - this.html_tag = $.spawn("div").addClass("top-menu-bar"); - } - static instance() { - if (!this._instance) - this._instance = new HTMLMenuBarDriver(); - return this._instance; - } - append_item(label) { - const item = new HTMLMenuItem(label, "down"); - this._items.push(item); - this.html_tag.append(item.html_tag); - item._label_tag.on('click', enable_event => { - enable_event.preventDefault(); - this.close(); - item.html_tag.addClass("active"); - setTimeout(() => { - $(document).one('click focusout', event => { - if (event.isDefaultPrevented()) - return; - event.preventDefault(); - item.html_tag.removeClass("active"); - }); - }, 0); - }); - return item; - } - close() { - this.html_tag.find(".active").removeClass("active"); - } - delete_item(item) { - return undefined; - } - items() { - return this._items; - } - flush_changes() { } - initialize() { - $("#top-menu-bar").replaceWith(this.html_tag); - } - } - html.HTMLMenuBarDriver = HTMLMenuBarDriver; - })(html || (html = {})); - let _items_bookmark; - function rebuild_bookmarks() { - if (!_items_bookmark) { - _items_bookmark = { - root: driver().append_item(_translations.YHk3QMgK || (_translations.YHk3QMgK = tr("Favorites"))), - add_current: undefined, - manage: undefined - }; - _items_bookmark.manage = _items_bookmark.root.append_item(_translations.IQurT9kP || (_translations.IQurT9kP = tr("Manage bookmarks"))); - _items_bookmark.manage.icon("client-bookmark_manager"); - _items_bookmark.manage.click(() => Modals.spawnBookmarkModal()); - _items_bookmark.add_current = _items_bookmark.root.append_item(_translations.WLGU6bnP || (_translations.WLGU6bnP = tr("Add current server to bookmarks"))); - _items_bookmark.add_current.icon('client-bookmark_add'); - _items_bookmark.add_current.click(() => bookmarks.add_current_server()); - _state_updater["bookmarks.ac"] = { item: _items_bookmark.add_current, conditions: [condition_connected] }; - } - _items_bookmark.root.items().filter(e => e !== _items_bookmark.add_current && e !== _items_bookmark.manage).forEach(e => { - _items_bookmark.root.delete_item(e); - }); - _items_bookmark.root.append_hr(); - const build_bookmark = (root, entry) => { - if (entry.type == bookmarks.BookmarkType.DIRECTORY) { - const directory = entry; - const item = root.append_item(directory.display_name); - item.icon('client-folder'); - for (const entry of directory.content) - build_bookmark(item, entry); - if (directory.content.length == 0) - item.disabled(true); - } - else { - const bookmark = entry; - const item = root.append_item(bookmark.display_name); - item.icon(IconManager.load_cached_icon(bookmark.last_icon_id || 0)); - item.click(() => bookmarks.boorkmak_connect(bookmark)); - } - }; - for (const entry of bookmarks.bookmarks().content) - build_bookmark(_items_bookmark.root, entry); - driver().flush_changes(); - } - top_menu.rebuild_bookmarks = rebuild_bookmarks; - /* will be called on connection handler change or on client connect state or mic state change etc... */ - let _state_updater = {}; - function update_state() { - for (const _key of Object.keys(_state_updater)) { - const item = _state_updater[_key]; - if (item.update_handler) { - if (item.update_handler(item.item)) - continue; - } - let enabled = true; - for (const condition of item.conditions) - if (!condition()) { - enabled = false; - break; - } - item.item.disabled(!enabled); - } - driver().flush_changes(); - } - top_menu.update_state = update_state; - const condition_connected = () => { - const scon = server_connections ? server_connections.active_connection_handler() : undefined; - return scon && scon.connected; - }; - function initialize() { - const driver = top_menu.driver(); - driver.initialize(); - /* build connection */ - let item; - { - const menu = driver.append_item(_translations.IRFS6dUE || (_translations.IRFS6dUE = tr("Connection"))); - item = menu.append_item(_translations.trzsdqss || (_translations.trzsdqss = tr("Connect to a server"))); - item.icon('client-connect'); - item.click(() => Modals.spawnConnectModal({})); - const do_disconnect = (handlers) => { - for (const handler of handlers) { - handler.cancel_reconnect(true); - handler.handleDisconnect(DisconnectReason.REQUESTED); //TODO message? - server_connections.active_connection_handler().serverConnection.disconnect(); - handler.sound.play(Sound.CONNECTION_DISCONNECTED); - handler.log.log(log.server.Type.DISCONNECTED, {}); - } - control_bar.update_connection_state(); - update_state(); - }; - item = menu.append_item(_translations.WzWvOBTm || (_translations.WzWvOBTm = tr("Disconnect from current server"))); - item.icon('client-disconnect'); - item.disabled(true); - item.click(() => { - const handler = server_connections.active_connection_handler(); - do_disconnect([handler]); - }); - _state_updater["connection.dc"] = { item: item, conditions: [() => condition_connected()] }; - item = menu.append_item(_translations.tgGIp6eC || (_translations.tgGIp6eC = tr("Disconnect from all servers"))); - item.icon('client-disconnect'); - item.click(() => { - do_disconnect(server_connections.server_connection_handlers()); - }); - _state_updater["connection.dca"] = { item: item, conditions: [], update_handler: (item) => { - item.visible(server_connections && server_connections.server_connection_handlers().length > 1); - return true; - } }; - if (!app.is_web()) { - menu.append_hr(); - item = menu.append_item(_translations.XMwtJTlt || (_translations.XMwtJTlt = tr("Quit"))); - item.icon('client-close_button'); - item.click(() => top_menu.native_actions.quit()); - } - } - { - rebuild_bookmarks(); - } - if (false) { - const menu = driver.append_item(_translations.YDk3ehXm || (_translations.YDk3ehXm = tr("Self"))); - /* Microphone | Sound | Away */ - } - { - const menu = driver.append_item(_translations.ZLJ7E5ad || (_translations.ZLJ7E5ad = tr("Permissions"))); - item = menu.append_item(_translations.Dcy8u586 || (_translations.Dcy8u586 = tr("Server Groups"))); - item.icon("client-permission_server_groups"); - item.click(() => { - Modals.spawnPermissionEdit(server_connections.active_connection_handler(), "sg").open(); - }); - _state_updater["permission.sg"] = { item: item, conditions: [condition_connected] }; - item = menu.append_item(_translations.SGY3uiR3 || (_translations.SGY3uiR3 = tr("Client Permissions"))); - item.icon("client-permission_client"); - item.click(() => { - Modals.spawnPermissionEdit(server_connections.active_connection_handler(), "clp").open(); - }); - _state_updater["permission.clp"] = { item: item, conditions: [condition_connected] }; - item = menu.append_item(_translations.dWnfDpjs || (_translations.dWnfDpjs = tr("Channel Client Permissions"))); - item.icon("client-permission_client"); - item.click(() => { - Modals.spawnPermissionEdit(server_connections.active_connection_handler(), "clchp").open(); - }); - _state_updater["permission.chclp"] = { item: item, conditions: [condition_connected] }; - item = menu.append_item(_translations.Qn5Y_BQT || (_translations.Qn5Y_BQT = tr("Channel Groups"))); - item.icon("client-permission_channel"); - item.click(() => { - Modals.spawnPermissionEdit(server_connections.active_connection_handler(), "cg").open(); - }); - _state_updater["permission.cg"] = { item: item, conditions: [condition_connected] }; - item = menu.append_item(_translations.JR56gU5A || (_translations.JR56gU5A = tr("Channel Permissions"))); - item.icon("client-permission_channel"); - item.click(() => { - Modals.spawnPermissionEdit(server_connections.active_connection_handler(), "chp").open(); - }); - _state_updater["permission.cp"] = { item: item, conditions: [condition_connected] }; - menu.append_hr(); - item = menu.append_item(_translations.S9GOLSrc || (_translations.S9GOLSrc = tr("List Privilege Keys"))); - item.icon("client-token"); - item.click(() => { - createErrorModal(_translations.ZrrAICSr || (_translations.ZrrAICSr = tr("Not implemented")), _translations.tMyCKezh || (_translations.tMyCKezh = tr("Privilege key list is not implemented yet!"))).open(); - }); - _state_updater["permission.pk"] = { item: item, conditions: [condition_connected] }; - item = menu.append_item(_translations.kjIOXUWT || (_translations.kjIOXUWT = tr("Use Privilege Key"))); - item.icon("client-token_use"); - item.click(() => { - //TODO: Fixeme use one method for the control bar and here! - createInputModal(_translations.wga4YG6i || (_translations.wga4YG6i = tr("Use token")), _translations.r620ua7H || (_translations.r620ua7H = tr("Please enter your token/privilege key")), message => message.length > 0, result => { - if (!result) - return; - const scon = server_connections.active_connection_handler(); - if (scon.serverConnection.connected) - scon.serverConnection.send_command("tokenuse", { - token: result - }).then(() => { - createInfoModal(_translations.IKaKTFJ0 || (_translations.IKaKTFJ0 = tr("Use token")), _translations.bhDNOIR7 || (_translations.bhDNOIR7 = tr("Toke successfully used!"))).open(); - }).catch(error => { - //TODO tr - createErrorModal(_translations.v5LsXjCv || (_translations.v5LsXjCv = tr("Use token")), MessageHelper.formatMessage(_translations.mtxGQQO1 || (_translations.mtxGQQO1 = tr("Failed to use token: {}")), error instanceof CommandResult ? error.message : error)).open(); - }); - }).open(); - }); - _state_updater["permission.upk"] = { item: item, conditions: [condition_connected] }; - } - { - const menu = driver.append_item(_translations.iwtQgyN6 || (_translations.iwtQgyN6 = tr("Tools"))); - /* - item = menu.append_item(tr("Manage Playlists")); - item.icon('client-music'); - item.click(() => { - const scon = server_connections.active_connection_handler(); - if(scon && scon.connected) { - Modals.spawnPlaylistManage(scon); - } else { - createErrorModal(tr("You have to be connected"), tr("You have to be connected to use this function!")).open(); - } - }); - _state_updater["tools.pl"] = { item: item, conditions: [condition_connected]}; - */ - item = menu.append_item(_translations.GZEpQEf5 || (_translations.GZEpQEf5 = tr("Ban List"))); - item.icon('client-ban_list'); - item.click(() => { - const scon = server_connections.active_connection_handler(); - if (scon && scon.connected) { - if (scon.permissions.neededPermission(PermissionType.B_CLIENT_BAN_LIST).granted(1)) { - Modals.openBanList(scon); - } - else { - createErrorModal(_translations.CsIwCkwd || (_translations.CsIwCkwd = tr("You dont have the permission")), _translations.DyqpEtZd || (_translations.DyqpEtZd = tr("You dont have the permission to view the ban list"))).open(); - scon.sound.play(Sound.ERROR_INSUFFICIENT_PERMISSIONS); - } - } - else { - createErrorModal(_translations.RgaMSFmp || (_translations.RgaMSFmp = tr("You have to be connected")), _translations.LWN4R9Z1 || (_translations.LWN4R9Z1 = tr("You have to be connected to use this function!"))).open(); - } - }); - _state_updater["tools.bl"] = { item: item, conditions: [condition_connected] }; - item = menu.append_item(_translations.A8Et845b || (_translations.A8Et845b = tr("Query List"))); - item.icon('client-server_query'); - item.click(() => { - const scon = server_connections.active_connection_handler(); - if (scon && scon.connected) { - if (scon.permissions.neededPermission(PermissionType.B_CLIENT_QUERY_LIST).granted(1) || scon.permissions.neededPermission(PermissionType.B_CLIENT_QUERY_LIST_OWN).granted(1)) { - Modals.spawnQueryManage(scon); - } - else { - createErrorModal(_translations.VQsO5xjg || (_translations.VQsO5xjg = tr("You dont have the permission")), _translations.EeaoSfA3 || (_translations.EeaoSfA3 = tr("You dont have the permission to view the server query list"))).open(); - scon.sound.play(Sound.ERROR_INSUFFICIENT_PERMISSIONS); - } - } - else { - createErrorModal(_translations.BamyNO0n || (_translations.BamyNO0n = tr("You have to be connected")), _translations.hT3TIxtD || (_translations.hT3TIxtD = tr("You have to be connected to use this function!"))).open(); - } - }); - _state_updater["tools.ql"] = { item: item, conditions: [condition_connected] }; - item = menu.append_item(_translations.dmjFiiJh || (_translations.dmjFiiJh = tr("Query Create"))); - item.icon('client-server_query'); - item.click(() => { - const scon = server_connections.active_connection_handler(); - if (scon && scon.connected) { - if (scon.permissions.neededPermission(PermissionType.B_CLIENT_CREATE_MODIFY_SERVERQUERY_LOGIN).granted(1) || scon.permissions.neededPermission(PermissionType.B_CLIENT_QUERY_CREATE).granted(1)) { - Modals.spawnQueryCreate(scon); - } - else { - createErrorModal(_translations.zQ2y7y4l || (_translations.zQ2y7y4l = tr("You dont have the permission")), _translations.Jbgud9rC || (_translations.Jbgud9rC = tr("You dont have the permission to create a server query login"))).open(); - scon.sound.play(Sound.ERROR_INSUFFICIENT_PERMISSIONS); - } - } - else { - createErrorModal(_translations.p5GLEnDz || (_translations.p5GLEnDz = tr("You have to be connected")), _translations.b17gFELJ || (_translations.b17gFELJ = tr("You have to be connected to use this function!"))).open(); - } - }); - _state_updater["tools.qc"] = { item: item, conditions: [condition_connected] }; - menu.append_hr(); - item = menu.append_item(_translations.mkHwLaEd || (_translations.mkHwLaEd = tr("Settings"))); - item.icon("client-settings"); - item.click(() => Modals.spawnSettingsModal()); - } - { - const menu = driver.append_item(_translations.S0zdQo8Q || (_translations.S0zdQo8Q = tr("Help"))); - if (!app.is_web()) { - item = menu.append_item(_translations.TL7JhBKN || (_translations.TL7JhBKN = tr("Check for updates"))); - item.click(() => top_menu.native_actions.check_native_update()); - item = menu.append_item(_translations.XRlZ6m6L || (_translations.XRlZ6m6L = tr("Open changelog"))); - item.click(() => top_menu.native_actions.open_change_log()); - } - item = menu.append_item(_translations.NdyN4NkV || (_translations.NdyN4NkV = tr("Visit TeaSpeak.de"))); - item.click(() => window.open('https://teaspeak.de/', '_blank')); - item = menu.append_item(_translations.Zw4iJWN_ || (_translations.Zw4iJWN_ = tr("Visit TeaSpeak forum"))); - item.click(() => window.open('https://forum.teaspeak.de/', '_blank')); - if (!app.is_web() && typeof (top_menu.native_actions.show_dev_tools) === "function" && top_menu.native_actions.show_dev_tools()) { - menu.append_hr(); - item = menu.append_item(_translations.W4o454QI || (_translations.W4o454QI = tr("Open developer tools"))); - item.click(() => top_menu.native_actions.open_dev_tools()); - item = menu.append_item(_translations.JJbVuuAX || (_translations.JJbVuuAX = tr("Reload UI"))); - item.click(() => top_menu.native_actions.reload_page()); - } - menu.append_hr(); - item = menu.append_item(app.is_web() ? _translations.rjgt_m0J || (_translations.rjgt_m0J = tr("About TeaWeb")) : _translations.TZWg3Vt_ || (_translations.TZWg3Vt_ = tr("About TeaClient"))); - item.click(() => Modals.spawnAbout()); - } - update_state(); - } - top_menu.initialize = initialize; - /* default is HTML, the client will override this */ - set_driver(html.HTMLMenuBarDriver.instance()); -})(top_menu || (top_menu = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["cf77d6d8a35237928a5ec1202e1c1ffbf44694d05a62e3e6fd0979af4dadf05b"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["cf77d6d8a35237928a5ec1202e1c1ffbf44694d05a62e3e6fd0979af4dadf05b"] = "cf77d6d8a35237928a5ec1202e1c1ffbf44694d05a62e3e6fd0979af4dadf05b"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "cSuOVkHn", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat_frame.ts (148,33)" }, { name: "yNvFymJQ", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat_frame.ts (160,61)" }, { name: "pqXaIVXD", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat_frame.ts (166,37)" }, { name: "c1C0TPhH", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat_frame.ts (184,33)" }, { name: "_9h4MR1v", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat_frame.ts (198,91)" }, { name: "GdZEXcYF", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat_frame.ts (202,72)" }, { name: "JEyIfN9E", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat_frame.ts (218,36)" }, { name: "IETaAnAP", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat_frame.ts (220,36)" }, { name: "sAdL5qG_", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat_frame.ts (222,65)" }, { name: "DssXnAbR", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat_frame.ts (248,59)" }, { name: "WBXUzAj5", path: "D:/TeaSpeak/web/shared/js/ui/frames/chat_frame.ts (250,59)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/* the bar on the right with the chats (Channel & Client) */ -var chat; -(function (chat) { - let InfoFrameMode; - (function (InfoFrameMode) { - InfoFrameMode["NONE"] = "none"; - InfoFrameMode["CHANNEL_CHAT"] = "channel_chat"; - InfoFrameMode["PRIVATE_CHAT"] = "private_chat"; - InfoFrameMode["CLIENT_INFO"] = "client_info"; - InfoFrameMode["MUSIC_BOT"] = "music_bot"; - })(InfoFrameMode = chat.InfoFrameMode || (chat.InfoFrameMode = {})); - class InfoFrame { - constructor(handle) { - this.handle = handle; - this._build_html_tag(); - this.update_channel_talk(); - this.update_channel_text(); - this.set_mode(InfoFrameMode.CHANNEL_CHAT); - this._ping_updater = setInterval(() => this.update_ping(), 2000); - this.update_ping(); - } - html_tag() { return this._html_tag; } - destroy() { - clearInterval(this._ping_updater); - this._html_tag && this._html_tag.remove(); - this._html_tag = undefined; - this._value_ping = undefined; - } - _build_html_tag() { - this._html_tag = $("#tmpl_frame_chat_info").renderTag(); - this._html_tag.find(".button-switch-chat-channel").on('click', () => this.handle.show_channel_conversations()); - this._value_ping = this._html_tag.find(".value-ping"); - this._html_tag.find(".chat-counter").on('click', event => this.handle.show_private_conversations()); - this._button_conversation = this._html_tag.find(".button.open-conversation").on('click', event => { - const selected_client = this.handle.client_info().current_client(); - if (!selected_client) - return; - const conversation = selected_client ? this.handle.private_conversations().find_conversation({ - name: selected_client.properties.client_nickname, - unique_id: selected_client.properties.client_unique_identifier, - client_id: selected_client.clientId() - }, { create: true, attach: true }) : undefined; - if (!conversation) - return; - this.handle.private_conversations().set_selected_conversation(conversation); - this.handle.show_private_conversations(); - })[0]; - this._button_bot_manage = this._html_tag.find(".bot-manage").on('click', event => { - const bot = this.handle.music_info().current_bot(); - if (!bot) - return; - Modals.openMusicManage(this.handle.handle, bot); - }); - this._button_song_add = this._html_tag.find(".bot-add-song").on('click', event => { - this.handle.music_info().events.fire("action_song_add"); - }); - } - update_ping() { - this._value_ping.removeClass("very-good good medium poor very-poor"); - const connection = this.handle.handle.serverConnection; - if (!this.handle.handle.connected || !connection) { - this._value_ping.text("Not connected"); - return; - } - const ping = connection.ping(); - if (!ping || typeof (ping.native) !== "number") { - this._value_ping.text("Not available"); - return; - } - let value; - if (typeof (ping.javascript) !== "undefined") { - value = ping.javascript; - this._value_ping.text(ping.javascript.toFixed(0) + "ms").attr('title', 'Native: ' + ping.native.toFixed(3) + "ms \nJavascript: " + ping.javascript.toFixed(3) + "ms"); - } - else { - value = ping.native; - this._value_ping.text(ping.native.toFixed(0) + "ms").attr('title', "Ping: " + ping.native.toFixed(3) + "ms"); - } - if (value <= 10) - this._value_ping.addClass("very-good"); - else if (value <= 30) - this._value_ping.addClass("good"); - else if (value <= 60) - this._value_ping.addClass("medium"); - else if (value <= 150) - this._value_ping.addClass("poor"); - else - this._value_ping.addClass("very-poor"); - } - update_channel_talk() { - const client = this.handle.handle.getClient(); - const channel = client ? client.currentChannel() : undefined; - this._channel_voice = channel; - const html_tag = this._html_tag.find(".value-voice-channel"); - const html_limit_tag = this._html_tag.find(".value-voice-limit"); - html_limit_tag.text(""); - html_tag.children().remove(); - if (channel) { - if (channel.properties.channel_icon_id != 0) - client.handle.fileManager.icons.generateTag(channel.properties.channel_icon_id).appendTo(html_tag); - $.spawn("div").text(channel.formattedChannelName()).appendTo(html_tag); - this.update_channel_limit(channel, html_limit_tag); - } - else { - $.spawn("div").text("Not connected").appendTo(html_tag); - } - } - update_channel_text() { - const channel_tree = this.handle.handle.connected ? this.handle.handle.channelTree : undefined; - const current_channel_id = channel_tree ? this.handle.channel_conversations().current_channel() : 0; - const channel = channel_tree ? channel_tree.findChannel(current_channel_id) : undefined; - this._channel_text = channel; - const tag_container = this._html_tag.find(".mode-channel_chat.channel"); - const html_tag_title = tag_container.find(".title"); - const html_tag = tag_container.find(".value-text-channel"); - const html_limit_tag = tag_container.find(".value-text-limit"); - /* reset */ - html_tag_title.text(_translations.cSuOVkHn || (_translations.cSuOVkHn = tr("You're chatting in Channel"))); - html_limit_tag.text(""); - html_tag.children().detach(); - /* initialize */ - if (channel) { - if (channel.properties.channel_icon_id != 0) - this.handle.handle.fileManager.icons.generateTag(channel.properties.channel_icon_id).appendTo(html_tag); - $.spawn("div").text(channel.formattedChannelName()).appendTo(html_tag); - this.update_channel_limit(channel, html_limit_tag); - } - else if (channel_tree && current_channel_id > 0) { - html_tag.append(MessageHelper.formatMessage(_translations.yNvFymJQ || (_translations.yNvFymJQ = tr("Unknown channel id {}")), current_channel_id)); - } - else if (channel_tree && current_channel_id == 0) { - const server = this.handle.handle.channelTree.server; - if (server.properties.virtualserver_icon_id != 0) - this.handle.handle.fileManager.icons.generateTag(server.properties.virtualserver_icon_id).appendTo(html_tag); - $.spawn("div").text(server.properties.virtualserver_name).appendTo(html_tag); - html_tag_title.text(_translations.pqXaIVXD || (_translations.pqXaIVXD = tr("You're chatting in Server"))); - this.update_server_limit(server, html_limit_tag); - } - else if (this.handle.handle.connected) { - $.spawn("div").text("No channel selected").appendTo(html_tag); - } - else { - $.spawn("div").text("Not connected").appendTo(html_tag); - } - } - update_channel_client_count(channel) { - if (channel === this._channel_text) - this.update_channel_limit(channel, this._html_tag.find(".value-text-limit")); - if (channel === this._channel_voice) - this.update_channel_limit(channel, this._html_tag.find(".value-voice-limit")); - } - update_channel_limit(channel, tag) { - let channel_limit = _translations.c1C0TPhH || (_translations.c1C0TPhH = tr("Unlimited")); - if (!channel.properties.channel_flag_maxclients_unlimited) - channel_limit = "" + channel.properties.channel_maxclients; - else if (!channel.properties.channel_flag_maxfamilyclients_unlimited) { - if (channel.properties.channel_maxfamilyclients >= 0) - channel_limit = "" + channel.properties.channel_maxfamilyclients; - } - tag.text(channel.clients(false).length + " / " + channel_limit); - } - update_server_limit(server, tag) { - const fn = () => { - let text = server.properties.virtualserver_clientsonline + " / " + server.properties.virtualserver_maxclients; - if (server.properties.virtualserver_reserved_slots) - text += " (" + server.properties.virtualserver_reserved_slots + " " + (_translations._9h4MR1v || (_translations._9h4MR1v = tr("Reserved"))) + ")"; - tag.text(text); - }; - server.updateProperties().then(fn).catch(error => tag.text(_translations.GdZEXcYF || (_translations.GdZEXcYF = tr("Failed to update info")))); - fn(); - } - update_chat_counter() { - const conversations = this.handle.private_conversations().conversations(); - { - const count = conversations.filter(e => e.is_unread()).length; - const count_container = this._html_tag.find(".container-indicator"); - const count_tag = count_container.find(".chat-unread-counter"); - count_container.toggle(count > 0); - count_tag.text(count); - } - { - const count_tag = this._html_tag.find(".chat-counter"); - if (conversations.length == 0) - count_tag.text(_translations.JEyIfN9E || (_translations.JEyIfN9E = tr("No conversations"))); - else if (conversations.length == 1) - count_tag.text(_translations.IETaAnAP || (_translations.IETaAnAP = tr("One conversation"))); - else - count_tag.text(conversations.length + " " + (_translations.sAdL5qG_ || (_translations.sAdL5qG_ = tr("conversations")))); - } - } - current_mode() { - return this._mode; - } - set_mode(mode) { - for (const mode in InfoFrameMode) - this._html_tag.removeClass("mode-" + InfoFrameMode[mode]); - this._html_tag.addClass("mode-" + mode); - if (mode === InfoFrameMode.CLIENT_INFO && this._button_conversation) { - //Will be called every time a client is shown - const selected_client = this.handle.client_info().current_client(); - const conversation = selected_client ? this.handle.private_conversations().find_conversation({ - name: selected_client.properties.client_nickname, - unique_id: selected_client.properties.client_unique_identifier, - client_id: selected_client.clientId() - }, { create: false, attach: false }) : undefined; - const visibility = (selected_client && selected_client.clientId() !== this.handle.handle.clientId) ? "visible" : "hidden"; - if (this._button_conversation.style.visibility !== visibility) - this._button_conversation.style.visibility = visibility; - if (conversation) { - this._button_conversation.innerText = _translations.DssXnAbR || (_translations.DssXnAbR = tr("Open conversation")); - } - else { - this._button_conversation.innerText = _translations.WBXUzAj5 || (_translations.WBXUzAj5 = tr("Start a conversation")); - } - } - else if (mode === InfoFrameMode.MUSIC_BOT) { - //TODO? - } - } - } - chat.InfoFrame = InfoFrame; - let FrameContent; - (function (FrameContent) { - FrameContent[FrameContent["NONE"] = 0] = "NONE"; - FrameContent[FrameContent["PRIVATE_CHAT"] = 1] = "PRIVATE_CHAT"; - FrameContent[FrameContent["CHANNEL_CHAT"] = 2] = "CHANNEL_CHAT"; - FrameContent[FrameContent["CLIENT_INFO"] = 3] = "CLIENT_INFO"; - FrameContent[FrameContent["MUSIC_BOT"] = 4] = "MUSIC_BOT"; - })(FrameContent = chat.FrameContent || (chat.FrameContent = {})); - class Frame { - constructor(handle) { - this.handle = handle; - this._content_type = FrameContent.NONE; - this._info_frame = new InfoFrame(this); - this._conversations = new chat.PrivateConverations(this); - this._channel_conversations = new chat.channel.ConversationManager(this); - this._client_info = new chat.ClientInfo(this); - this._music_info = new chat.MusicInfo(this); - this._build_html_tag(); - this.show_channel_conversations(); - this.info_frame().update_chat_counter(); - } - html_tag() { return this._html_tag; } - info_frame() { return this._info_frame; } - content_type() { return this._content_type; } - destroy() { - this._html_tag && this._html_tag.remove(); - this._html_tag = undefined; - this._info_frame && this._info_frame.destroy(); - this._info_frame = undefined; - this._conversations && this._conversations.destroy(); - this._conversations = undefined; - this._client_info && this._client_info.destroy(); - this._client_info = undefined; - this._music_info && this._music_info.destroy(); - this._music_info = undefined; - this._channel_conversations && this._channel_conversations.destroy(); - this._channel_conversations = undefined; - this._container_info && this._container_info.remove(); - this._container_info = undefined; - this._container_chat && this._container_chat.remove(); - this._container_chat = undefined; - } - _build_html_tag() { - this._html_tag = $("#tmpl_frame_chat").renderTag(); - this._container_info = this._html_tag.find(".container-info"); - this._container_chat = this._html_tag.find(".container-chat"); - this._info_frame.html_tag().appendTo(this._container_info); - } - private_conversations() { - return this._conversations; - } - channel_conversations() { - return this._channel_conversations; - } - client_info() { - return this._client_info; - } - music_info() { - return this._music_info; - } - _clear() { - this._content_type = FrameContent.NONE; - this._container_chat.children().detach(); - } - show_private_conversations() { - if (this._content_type === FrameContent.PRIVATE_CHAT) - return; - this._clear(); - this._content_type = FrameContent.PRIVATE_CHAT; - this._container_chat.append(this._conversations.html_tag()); - this._conversations.on_show(); - this._info_frame.set_mode(InfoFrameMode.PRIVATE_CHAT); - } - show_channel_conversations() { - if (this._content_type === FrameContent.CHANNEL_CHAT) - return; - this._clear(); - this._content_type = FrameContent.CHANNEL_CHAT; - this._container_chat.append(this._channel_conversations.html_tag()); - this._channel_conversations.on_show(); - this._info_frame.set_mode(InfoFrameMode.CHANNEL_CHAT); - } - show_client_info(client) { - this._client_info.set_current_client(client); - this._info_frame.set_mode(InfoFrameMode.CLIENT_INFO); /* specially needs an update here to update the conversation button */ - if (this._content_type === FrameContent.CLIENT_INFO) - return; - this._client_info.previous_frame_content = this._content_type; - this._clear(); - this._content_type = FrameContent.CLIENT_INFO; - this._container_chat.append(this._client_info.html_tag()); - } - show_music_player(client) { - this._music_info.set_current_bot(client); - if (this._content_type === FrameContent.MUSIC_BOT) - return; - this._info_frame.set_mode(InfoFrameMode.MUSIC_BOT); - this._music_info.previous_frame_content = this._content_type; - this._clear(); - this._content_type = FrameContent.MUSIC_BOT; - this._container_chat.append(this._music_info.html_tag()); - } - set_content(type) { - if (this._content_type === type) - return; - if (type === FrameContent.CHANNEL_CHAT) - this.show_channel_conversations(); - else if (type === FrameContent.PRIVATE_CHAT) - this.show_private_conversations(); - else { - this._clear(); - this._content_type = FrameContent.NONE; - this._info_frame.set_mode(InfoFrameMode.NONE); - } - } - } - chat.Frame = Frame; -})(chat || (chat = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["f9d2d9cd4442d865648ce19099773f225ebe72215759a124bcb54cada2fd51ef"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["f9d2d9cd4442d865648ce19099773f225ebe72215759a124bcb54cada2fd51ef"] = "f9d2d9cd4442d865648ce19099773f225ebe72215759a124bcb54cada2fd51ef"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -let server_connections; -class ServerConnectionManager { - constructor(tag) { - this.connection_handlers = []; - this._tag = tag; - if (settings.static_global(Settings.KEY_DISABLE_MULTI_SESSION, false)) - this._tag.hide(); - this._tag_connection_entries = this._tag.find(".connection-handlers"); - this._tag_buttons_scoll = this._tag.find(".container-scroll"); - this._tag_button_scoll_left = this._tag_buttons_scoll.find(".button-scroll-left"); - this._tag_button_scoll_right = this._tag_buttons_scoll.find(".button-scroll-right"); - this._tag_button_scoll_left.on('click', this._button_scroll_left_clicked.bind(this)); - this._tag_button_scoll_right.on('click', this._button_scroll_right_clicked.bind(this)); - this._container_log_server = $("#server-log"); - this._container_channel_tree = $("#channelTree"); - this._container_hostbanner = $("#hostbanner"); - this._container_chat = $("#chat"); - this.set_active_connection_handler(undefined); - } - spawn_server_connection_handler() { - const handler = new ConnectionHandler(); - this.connection_handlers.push(handler); - control_bar.update_button_away(); - control_bar.initialize_connection_handler_state(handler); - handler.tag_connection_handler.appendTo(this._tag_connection_entries); - this._tag.toggleClass("shown", this.connection_handlers.length > 1); - this._update_scroll(); - return handler; - } - destroy_server_connection_handler(handler) { - this.connection_handlers.remove(handler); - handler.tag_connection_handler.remove(); - this._update_scroll(); - this._tag.toggleClass("shown", this.connection_handlers.length > 1); - if (handler.serverConnection) { - const connected = handler.connected; - handler.serverConnection.disconnect("handler destroyed"); - handler.handleDisconnect(DisconnectReason.HANDLER_DESTROYED, connected); - } - if (handler === this.active_handler) - this.set_active_connection_handler(this.connection_handlers[0]); - /* destroy all elements */ - handler.destroy(); - } - set_active_connection_handler(handler) { - if (handler && this.connection_handlers.indexOf(handler) == -1) - throw "Handler hasn't been registered or is already obsolete!"; - this._tag_connection_entries.find(".active").removeClass("active"); - this._container_channel_tree.children().detach(); - this._container_chat.children().detach(); - this._container_log_server.children().detach(); - this._container_hostbanner.children().detach(); - if (handler) { - handler.tag_connection_handler.addClass("active"); - this._container_hostbanner.append(handler.hostbanner.html_tag); - this._container_channel_tree.append(handler.channelTree.tag_tree()); - this._container_chat.append(handler.side_bar.html_tag()); - this._container_log_server.append(handler.log.html_tag()); - if (handler.invoke_resized_on_activate) - handler.resize_elements(); - } - this.active_handler = handler; - control_bar.set_connection_handler(handler); - top_menu.update_state(); - } - active_connection_handler() { - return this.active_handler; - } - server_connection_handlers() { - return this.connection_handlers; - } - update_ui() { - this._update_scroll(); - } - _update_scroll() { - const has_scroll = this._tag_connection_entries.hasScrollBar("width") - && this._tag_connection_entries.width() + 10 >= this._tag_connection_entries.parent().width(); - this._tag_buttons_scoll.toggleClass("enabled", has_scroll); - this._tag.toggleClass("scrollbar", has_scroll); - if (has_scroll) - this._update_scroll_buttons(); - } - _button_scroll_right_clicked() { - this._tag_connection_entries.scrollLeft((this._tag_connection_entries.scrollLeft() || 0) + 50); - this._update_scroll_buttons(); - } - _button_scroll_left_clicked() { - this._tag_connection_entries.scrollLeft((this._tag_connection_entries.scrollLeft() || 0) - 50); - this._update_scroll_buttons(); - } - _update_scroll_buttons() { - const scroll = this._tag_connection_entries.scrollLeft() || 0; - this._tag_button_scoll_left.toggleClass("disabled", scroll <= 0); - this._tag_button_scoll_right.toggleClass("disabled", scroll + this._tag_connection_entries.width() + 2 >= this._tag_connection_entries[0].scrollWidth); - } -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["aad43bc9987777ba1c29e2b3fe4eac7892a4efc3d2fe8f83a2308f49a3da326c"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["aad43bc9987777ba1c29e2b3fe4eac7892a4efc3d2fe8f83a2308f49a3da326c"] = "aad43bc9987777ba1c29e2b3fe4eac7892a4efc3d2fe8f83a2308f49a3da326c"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "eoM0uyT9", path: "D:/TeaSpeak/web/shared/js/ui/frames/hostbanner.ts (44,43)" }, { name: "WvGf45xH", path: "D:/TeaSpeak/web/shared/js/ui/frames/hostbanner.ts (64,42)" }, { name: "qS3_dAAx", path: "D:/TeaSpeak/web/shared/js/ui/frames/hostbanner.ts (84,30)" }, { name: "mLgbtjnu", path: "D:/TeaSpeak/web/shared/js/ui/frames/hostbanner.ts (97,43)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -class Hostbanner { - constructor(client) { - this._destryed = false; - this.client = client; - this.html_tag = $.spawn("div").addClass("container-hostbanner"); - this.html_tag.on('click', event => { - const server = this.client.channelTree.server; - if (!server || !server.properties.virtualserver_hostbanner_url) - return; - window.open(server.properties.virtualserver_hostbanner_url, '_blank'); - }); - this.update(); - } - destroy() { - if (this.updater) { - clearTimeout(this.updater); - this.updater = undefined; - } - if (this.html_tag) { - this.html_tag.remove(); - } - this._destryed = true; - } - update() { - if (this._destryed) - return; - if (this.updater) { - clearTimeout(this.updater); - this.updater = undefined; - } - this.html_tag.toggleClass("no-background", !settings.static_global(Settings.KEY_HOSTBANNER_BACKGROUND)); - const tag = this.generate_tag(); - tag.then(element => { - log.debug(LogCategory.CLIENT, _translations.eoM0uyT9 || (_translations.eoM0uyT9 = tr("Regenerated hostbanner tag. Replacing it: %o")), element); - if (!element) { - this.html_tag.empty().addClass("disabled"); - return; - } - const children = this.html_tag.children(); - this.html_tag.append(element).removeClass("disabled"); - /* allow the new image be loaded from cache URL */ - { - children - .css('z-index', '2') - .css('position', 'absolute') - .css('height', '100%') - .css('width', '100%'); - setTimeout(() => { - children.detach(); - }, 250); - } - }).catch(error => { - log.warn(LogCategory.CLIENT, _translations.WvGf45xH || (_translations.WvGf45xH = tr("Failed to load the hostbanner: %o")), error); - this.html_tag.empty().addClass("disabled"); - }); - const server = this.client.channelTree.server; - this.html_tag.attr('title', server ? server.properties.virtualserver_hostbanner_url : undefined); - } - static generate_tag(banner_url, gfx_interval, mode) { - return __awaiter(this, void 0, void 0, function* () { - if (!banner_url) - return undefined; - if (gfx_interval > 0) { - const update_interval = Math.max(gfx_interval, 60); - const update_timestamp = (Math.floor((Date.now() / 1000) / update_interval) * update_interval).toString(); - try { - const url = new URL(banner_url); - if (url.search.length == 0) - banner_url += "?_ts=" + update_timestamp; - else - banner_url += "&_ts=" + update_timestamp; - } - catch (error) { - console.warn(_translations.qS3_dAAx || (_translations.qS3_dAAx = tr("Failed to parse banner URL: %o. Using default '&' append.")), error); - banner_url += "&_ts=" + update_timestamp; - } - } - /* first now load the image */ - const image_element = document.createElement("img"); - yield new Promise((resolve, reject) => { - image_element.onload = resolve; - image_element.onerror = reject; - image_element.src = banner_url; - image_element.style.display = 'none'; - document.body.append(image_element); - log.debug(LogCategory.CLIENT, _translations.mLgbtjnu || (_translations.mLgbtjnu = tr("Successfully loaded hostbanner image."))); - }); - image_element.parentNode.removeChild(image_element); - image_element.style.display = 'unset'; - return $.spawn("div").addClass("hostbanner-image-container hostbanner-mode-" + mode).append($(image_element)); - }); - } - generate_tag() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.client.connected) - return undefined; - const server = this.client.channelTree.server; - if (!server) - return undefined; - if (!server.properties.virtualserver_hostbanner_gfx_url) - return undefined; - const timeout = server.properties.virtualserver_hostbanner_gfx_interval; - const tag = Hostbanner.generate_tag(server.properties.virtualserver_hostbanner_gfx_url, server.properties.virtualserver_hostbanner_gfx_interval, server.properties.virtualserver_hostbanner_mode); - if (timeout > 0) - this.updater = setTimeout(() => this.update(), timeout * 1000); - return tag; - }); - } -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["956e29b868c2e9a6289cd1b992fe709ac449075b7c754e43a53fef956517a791"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["956e29b868c2e9a6289cd1b992fe709ac449075b7c754e43a53fef956517a791"] = "956e29b868c2e9a6289cd1b992fe709ac449075b7c754e43a53fef956517a791"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var image_preview; -(function (image_preview) { - let preview_overlay; - let container_image; - let button_open_in_browser; - function preview_image(url, original_url) { - if (!preview_overlay) - return; - container_image.empty(); - $.spawn("img").attr({ - "src": url, - "title": original_url, - "x-original-src": original_url - }).appendTo(container_image); - preview_overlay.removeClass("hidden"); - button_open_in_browser.show(); - } - image_preview.preview_image = preview_image; - function preview_image_tag(tag) { - if (!preview_overlay) - return; - container_image.empty(); - container_image.append(tag); - preview_overlay.removeClass("hidden"); - button_open_in_browser.hide(); - } - image_preview.preview_image_tag = preview_image_tag; - function current_url() { - const image_tag = container_image.find("img"); - return image_tag.attr("x-original-src") || image_tag.attr("src") || ""; - } - image_preview.current_url = current_url; - function close_preview() { - preview_overlay.addClass("hidden"); - } - image_preview.close_preview = close_preview; - loader.register_task(loader.Stage.LOADED, { - priority: 0, - name: "image preview init", - function: () => __awaiter(this, void 0, void 0, function* () { - preview_overlay = $("#overlay-image-preview"); - container_image = preview_overlay.find(".container-image"); - preview_overlay.find("img").on('click', event => event.preventDefault()); - preview_overlay.on('click', event => { - if (event.isDefaultPrevented()) - return; - close_preview(); - }); - preview_overlay.find(".button-close").on('click', event => { - event.preventDefault(); - close_preview(); - }); - preview_overlay.find(".button-download").on('click', event => { - event.preventDefault(); - const link = document.createElement('a'); - link.href = current_url(); - link.target = "_blank"; - const findex = link.href.lastIndexOf("/") + 1; - link.download = link.href.substr(findex); - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - }); - button_open_in_browser = preview_overlay.find(".button-open-in-window"); - button_open_in_browser.on('click', event => { - event.preventDefault(); - const win = window.open(current_url(), '_blank'); - win.focus(); - }); - }) - }); -})(image_preview || (image_preview = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["5fc74f145b59b8238703696afb5cc22ca2d480fef1ab02d2b3bcec80e04b5038"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["5fc74f145b59b8238703696afb5cc22ca2d480fef1ab02d2b3bcec80e04b5038"] = "5fc74f145b59b8238703696afb5cc22ca2d480fef1ab02d2b3bcec80e04b5038"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "OtbdfpKf", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (338,49)" }, { name: "TjslEtuu", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (388,52)" }, { name: "tgKTt68B", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (391,142)" }, { name: "EwoTjp_H", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (392,144)" }, { name: "VLiF_jTd", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (393,153)" }, { name: "wQTTZBOL", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (395,121)" }, { name: "kYlrLsJh", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (396,123)" }, { name: "O27TI6gw", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (397,129)" }, { name: "DMjxS8Gy", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (400,52)" }, { name: "ekA1Jk45", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (400,155)" }, { name: "ZjRwAH8e", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (400,167)" }, { name: "BiOcwyQS", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (404,52)" }, { name: "Ds9JwNz3", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (413,79)" }, { name: "aEaFAUSl", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (413,121)" }, { name: "s3gggN2V", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (415,79)" }, { name: "LQfEHDHq", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (415,121)" }, { name: "eJVz0xy_", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (419,79)" }, { name: "rHoYTw2I", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (419,143)" }, { name: "a6eWAgVb", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (426,79)" }, { name: "za6usZnN", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (426,134)" }, { name: "GyEUhfQH", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (434,79)" }, { name: "pqtlwDzo", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (434,147)" }, { name: "ssaVXJ6s", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (442,79)" }, { name: "HloiwTjB", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (442,138)" }, { name: "T94YFRKJ", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (455,74)" }, { name: "aRnZWAxP", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (455,127)" }, { name: "mC_Bj6QF", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (462,74)" }, { name: "M3RlPff9", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (462,119)" }, { name: "OC81J6RI", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (468,74)" }, { name: "OzN4pqWV", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (468,145)" }, { name: "nI0lFUtf", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (481,75)" }, { name: "PAxjJKgM", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (481,128)" }, { name: "RX3ynvys", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (483,56)" }, { name: "KkAPpmPk", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (485,56)" }, { name: "KLX2eoxD", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (487,75)" }, { name: "mBmCZEyz", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (487,127)" }, { name: "b_y3zLOL", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (497,56)" }, { name: "Mcvtq5Rd", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (504,56)" }, { name: "owzm_mo1", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (506,75)" }, { name: "iNLIAxK4", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (506,142)" }, { name: "hQ_fh6ph", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (522,56)" }, { name: "LrNB3SF3", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (524,56)" }, { name: "NjTFIAZI", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (532,81)" }, { name: "DX3AQjzT", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (535,92)" }, { name: "H2Ej_Ul2", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (549,47)" }, { name: "BwNSE0JI", path: "D:/TeaSpeak/web/shared/js/ui/frames/server_log.ts (549,104)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var log; -(function (log) { - let server; - (function (server) { - let Type; - (function (Type) { - Type["CONNECTION_BEGIN"] = "connection_begin"; - Type["CONNECTION_HOSTNAME_RESOLVE"] = "connection_hostname_resolve"; - Type["CONNECTION_HOSTNAME_RESOLVE_ERROR"] = "connection_hostname_resolve_error"; - Type["CONNECTION_HOSTNAME_RESOLVED"] = "connection_hostname_resolved"; - Type["CONNECTION_LOGIN"] = "connection_login"; - Type["CONNECTION_CONNECTED"] = "connection_connected"; - Type["CONNECTION_FAILED"] = "connection_failed"; - Type["DISCONNECTED"] = "disconnected"; - Type["CONNECTION_VOICE_SETUP_FAILED"] = "connection_voice_setup_failed"; - Type["CONNECTION_COMMAND_ERROR"] = "connection_command_error"; - Type["GLOBAL_MESSAGE"] = "global_message"; - Type["SERVER_WELCOME_MESSAGE"] = "server_welcome_message"; - Type["SERVER_HOST_MESSAGE"] = "server_host_message"; - Type["SERVER_HOST_MESSAGE_DISCONNECT"] = "server_host_message_disconnect"; - Type["SERVER_CLOSED"] = "server_closed"; - Type["SERVER_BANNED"] = "server_banned"; - Type["SERVER_REQUIRES_PASSWORD"] = "server_requires_password"; - Type["CLIENT_VIEW_ENTER"] = "client_view_enter"; - Type["CLIENT_VIEW_LEAVE"] = "client_view_leave"; - Type["CLIENT_VIEW_MOVE"] = "client_view_move"; - Type["CLIENT_NICKNAME_CHANGED"] = "client_nickname_changed"; - Type["CLIENT_NICKNAME_CHANGE_FAILED"] = "client_nickname_change_failed"; - Type["CLIENT_SERVER_GROUP_ADD"] = "client_server_group_add"; - Type["CLIENT_SERVER_GROUP_REMOVE"] = "client_server_group_remove"; - Type["CLIENT_CHANNEL_GROUP_CHANGE"] = "client_channel_group_change"; - Type["CHANNEL_CREATE"] = "channel_create"; - Type["CHANNEL_DELETE"] = "channel_delete"; - Type["ERROR_CUSTOM"] = "error_custom"; - Type["ERROR_PERMISSION"] = "error_permission"; - Type["RECONNECT_SCHEDULED"] = "reconnect_scheduled"; - Type["RECONNECT_EXECUTE"] = "reconnect_execute"; - Type["RECONNECT_CANCELED"] = "reconnect_canceled"; - })(Type = server.Type || (server.Type = {})); - server.MessageBuilders = { - "error_custom": (data, options) => { - return [$.spawn("div").addClass("log-error").text(data.message)]; - } - }; - })(server = log.server || (log.server = {})); - class ServerLog { - constructor(handle) { - this.history_length = 100; - this._log = []; - this.handle = handle; - this.auto_follow = true; - this._html_tag = $.spawn("div").addClass("container-log"); - this._log_container = $.spawn("div").addClass("container-messages"); - this._log_container.appendTo(this._html_tag); - this._html_tag.on('scroll', event => { - if (Date.now() - this._ignore_event < 100) { - this._ignore_event = 0; - return; - } - this.auto_follow = (this._html_tag[0].scrollTop + this._html_tag[0].clientHeight + this._html_tag[0].clientHeight * .125) > this._html_tag[0].scrollHeight; - }); - } - log(type, data) { - const event = { - data: data, - timestamp: Date.now(), - type: type - }; - this._log.push(event); - while (this._log.length > this.history_length) - this._log.pop_front(); - this.append_log(event); - } - html_tag() { - return this._html_tag; - } - destroy() { - this._html_tag && this._html_tag.remove(); - this._html_tag = undefined; - this._log_container = undefined; - this._log = undefined; - } - append_log(message) { - let container = $.spawn("div").addClass("log-message"); - /* build timestamp */ - { - const num = number => ('00' + number).substr(-2); - const date = new Date(message.timestamp); - $.spawn("div") - .addClass("timestamp") - .text("<" + num(date.getHours()) + ":" + num(date.getMinutes()) + ":" + num(date.getSeconds()) + ">") - .appendTo(container); - } - /* build message data */ - { - const builder = server.MessageBuilders[message.type]; - if (!builder) { - MessageHelper.formatMessage(_translations.OtbdfpKf || (_translations.OtbdfpKf = tr("missing log message builder {0}!")), message.type).forEach(e => e.addClass("log-error").appendTo(container)); - } - else { - const elements = builder(message.data, {}); - if (!elements || elements.length == 0) - return; /* discard message */ - container.append(...elements); - } - } - this._ignore_event = Date.now(); - this._log_container.append(container); - /* max history messages! */ - const messages = this._log_container.children(); - let index = 0; - while (messages.length - index > this.history_length) - index++; - const hide_elements = messages.filter(idx => idx < index); - hide_elements.hide(250, () => hide_elements.remove()); - if (this.auto_follow) { - clearTimeout(this._scroll_task); - /* do not enforce a recalculate style here */ - this._scroll_task = setTimeout(() => { - this._html_tag.scrollTop(this._html_tag[0].scrollHeight); - this._scroll_task = 0; - }, 5); - } - } - } - log.ServerLog = ServerLog; -})(log || (log = {})); -/* impl of the parsers */ -(function (log) { - let server; - (function (server) { - let impl; - (function (impl) { - const client_tag = (client, braces) => htmltags.generate_client_object({ - client_unique_id: client.client_unique_id, - client_id: client.client_id, - client_name: client.client_name, - add_braces: braces - }); - const channel_tag = (channel, braces) => htmltags.generate_channel_object({ - channel_display_name: channel.channel_name, - channel_name: channel.channel_name, - channel_id: channel.channel_id, - add_braces: braces - }); - server.MessageBuilders["connection_begin"] = (data, options) => { - return MessageHelper.formatMessage(_translations.TjslEtuu || (_translations.TjslEtuu = tr("Connecting to {0}{1}")), data.address.server_hostname, data.address.server_port == 9987 ? "" : (":" + data.address.server_port)); - }; - server.MessageBuilders["connection_hostname_resolve"] = (data, options) => MessageHelper.formatMessage(_translations.tgKTt68B || (_translations.tgKTt68B = tr("Resolving hostname"))); - server.MessageBuilders["connection_hostname_resolved"] = (data, options) => MessageHelper.formatMessage(_translations.EwoTjp_H || (_translations.EwoTjp_H = tr("Hostname resolved successfully to {0}:{1}")), data.address.server_hostname, data.address.server_port); - server.MessageBuilders["connection_hostname_resolve_error"] = (data, options) => MessageHelper.formatMessage(_translations.VLiF_jTd || (_translations.VLiF_jTd = tr("Failed to resolve hostname. Connecting to given hostname. Error: {0}")), data.message); - server.MessageBuilders["connection_login"] = (data, options) => MessageHelper.formatMessage(_translations.wQTTZBOL || (_translations.wQTTZBOL = tr("Logging in..."))); - server.MessageBuilders["connection_failed"] = (data, options) => MessageHelper.formatMessage(_translations.kYlrLsJh || (_translations.kYlrLsJh = tr("Connect failed."))); - server.MessageBuilders["connection_connected"] = (data, options) => MessageHelper.formatMessage(_translations.O27TI6gw || (_translations.O27TI6gw = tr("Connected as {0}")), client_tag(data.own_client, true)); - server.MessageBuilders["connection_voice_setup_failed"] = (data, options) => { - return MessageHelper.formatMessage(_translations.DMjxS8Gy || (_translations.DMjxS8Gy = tr("Failed to setup voice bridge: {0}. Allow reconnect: {1}")), data.reason, data.reconnect_delay > 0 ? _translations.ekA1Jk45 || (_translations.ekA1Jk45 = tr("yes")) : _translations.ZjRwAH8e || (_translations.ZjRwAH8e = tr("no"))); - }; - server.MessageBuilders["error_permission"] = (data, options) => { - return MessageHelper.formatMessage(_translations.BiOcwyQS || (_translations.BiOcwyQS = tr("Insufficient client permissions. Failed on permission {0}")), data.permission ? data.permission.name : "unknown").map(e => e.addClass("log-error")); - }; - server.MessageBuilders["client_view_enter"] = (data, options) => { - if (data.reason == ViewReasonId.VREASON_SYSTEM) { - return undefined; - } - if (data.reason == ViewReasonId.VREASON_USER_ACTION) { - /* client appeared */ - if (data.channel_from) { - return MessageHelper.formatMessage(data.own_channel ? _translations.Ds9JwNz3 || (_translations.Ds9JwNz3 = tr("{0} appeared from {1} to your {2}")) : _translations.aEaFAUSl || (_translations.aEaFAUSl = tr("{0} appeared from {1} to {2}")), client_tag(data.client), channel_tag(data.channel_from), channel_tag(data.channel_to)); - } - else { - return MessageHelper.formatMessage(data.own_channel ? _translations.s3gggN2V || (_translations.s3gggN2V = tr("{0} connected to your channel {1}")) : _translations.LQfEHDHq || (_translations.LQfEHDHq = tr("{0} connected to channel {1}")), client_tag(data.client), channel_tag(data.channel_to)); - } - } - else if (data.reason == ViewReasonId.VREASON_MOVED) { - if (data.channel_from) { - return MessageHelper.formatMessage(data.own_channel ? _translations.eJVz0xy_ || (_translations.eJVz0xy_ = tr("{0} appeared from {1} to your channel {2}, moved by {3}")) : _translations.rHoYTw2I || (_translations.rHoYTw2I = tr("{0} appeared from {1} to {2}, moved by {3}")), client_tag(data.client), channel_tag(data.channel_from), channel_tag(data.channel_to), client_tag(data.invoker)); - } - else { - return MessageHelper.formatMessage(data.own_channel ? _translations.a6eWAgVb || (_translations.a6eWAgVb = tr("{0} appeared to your channel {1}, moved by {2}")) : _translations.za6usZnN || (_translations.za6usZnN = tr("{0} appeared to {1}, moved by {2}")), client_tag(data.client), channel_tag(data.channel_to), client_tag(data.invoker)); - } - } - else if (data.reason == ViewReasonId.VREASON_CHANNEL_KICK) { - if (data.channel_from) { - return MessageHelper.formatMessage(data.own_channel ? _translations.GyEUhfQH || (_translations.GyEUhfQH = tr("{0} appeared from {1} to your channel {2}, kicked by {3}{4}")) : _translations.pqtlwDzo || (_translations.pqtlwDzo = tr("{0} appeared from {1} to {2}, kicked by {3}{4}")), client_tag(data.client), channel_tag(data.channel_from), channel_tag(data.channel_to), client_tag(data.invoker), data.message ? (" (" + data.message + ")") : ""); - } - else { - return MessageHelper.formatMessage(data.own_channel ? _translations.ssaVXJ6s || (_translations.ssaVXJ6s = tr("{0} appeared to your channel {1}, kicked by {2}{3}")) : _translations.HloiwTjB || (_translations.HloiwTjB = tr("{0} appeared to {1}, kicked by {2}{3}")), client_tag(data.client), channel_tag(data.channel_to), client_tag(data.invoker), data.message ? (" (" + data.message + ")") : ""); - } - } - return [$.spawn("div").addClass("log-error").text("Invalid view enter reason id (" + data.message + ")")]; - }; - server.MessageBuilders["client_view_move"] = (data, options) => { - if (data.reason == ViewReasonId.VREASON_MOVED) { - return MessageHelper.formatMessage(data.client_own ? _translations.T94YFRKJ || (_translations.T94YFRKJ = tr("You was moved by {3} from channel {1} to {2}")) : _translations.aRnZWAxP || (_translations.aRnZWAxP = tr("{0} was moved from channel {1} to {2} by {3}")), client_tag(data.client), channel_tag(data.channel_from), channel_tag(data.channel_to), client_tag(data.invoker)); - } - else if (data.reason == ViewReasonId.VREASON_USER_ACTION) { - return MessageHelper.formatMessage(data.client_own ? _translations.mC_Bj6QF || (_translations.mC_Bj6QF = tr("You switched from channel {1} to {2}")) : _translations.M3RlPff9 || (_translations.M3RlPff9 = tr("{0} switched from channel {1} to {2}")), client_tag(data.client), channel_tag(data.channel_from), channel_tag(data.channel_to)); - } - else if (data.reason == ViewReasonId.VREASON_CHANNEL_KICK) { - return MessageHelper.formatMessage(data.client_own ? _translations.OC81J6RI || (_translations.OC81J6RI = tr("You got kicked out of the channel {1} to channel {2} by {3}{4}")) : _translations.OzN4pqWV || (_translations.OzN4pqWV = tr("{0} got kicked from channel {1} to {2} by {3}{4}")), client_tag(data.client), channel_tag(data.channel_from), channel_tag(data.channel_to), client_tag(data.invoker), data.message ? (" (" + data.message + ")") : ""); - } - return [$.spawn("div").addClass("log-error").text("Invalid view move reason id (" + data.reason + ")")]; - }; - server.MessageBuilders["client_view_leave"] = (data, options) => { - if (data.reason == ViewReasonId.VREASON_USER_ACTION) { - return MessageHelper.formatMessage(data.own_channel ? _translations.nI0lFUtf || (_translations.nI0lFUtf = tr("{0} disappeared from your channel {1} to {2}")) : _translations.PAxjJKgM || (_translations.PAxjJKgM = tr("{0} disappeared from {1} to {2}")), client_tag(data.client), channel_tag(data.channel_from), channel_tag(data.channel_to)); - } - else if (data.reason == ViewReasonId.VREASON_SERVER_LEFT) { - return MessageHelper.formatMessage(_translations.RX3ynvys || (_translations.RX3ynvys = tr("{0} left the server{1}")), client_tag(data.client), data.message ? (" (" + data.message + ")") : ""); - } - else if (data.reason == ViewReasonId.VREASON_SERVER_KICK) { - return MessageHelper.formatMessage(_translations.KkAPpmPk || (_translations.KkAPpmPk = tr("{0} was kicked from the server by {1}.{2}")), client_tag(data.client), client_tag(data.invoker), data.message ? (" (" + data.message + ")") : ""); - } - else if (data.reason == ViewReasonId.VREASON_CHANNEL_KICK) { - return MessageHelper.formatMessage(data.own_channel ? _translations.KLX2eoxD || (_translations.KLX2eoxD = tr("{0} was kicked from your channel by {2}.{3}")) : _translations.mBmCZEyz || (_translations.mBmCZEyz = tr("{0} was kicked from channel {1} by {2}.{3}")), client_tag(data.client), channel_tag(data.channel_from), client_tag(data.invoker), data.message ? (" (" + data.message + ")") : ""); - } - else if (data.reason == ViewReasonId.VREASON_BAN) { - let duration = "permanently"; - if (data.ban_time) - duration = "for " + formatDate(data.ban_time); - return MessageHelper.formatMessage(_translations.b_y3zLOL || (_translations.b_y3zLOL = tr("{0} was banned {1} by {2}.{3}")), client_tag(data.client), duration, client_tag(data.invoker), data.message ? (" (" + data.message + ")") : ""); - } - else if (data.reason == ViewReasonId.VREASON_TIMEOUT) { - return MessageHelper.formatMessage(_translations.Mcvtq5Rd || (_translations.Mcvtq5Rd = tr("{0} timed out{1}")), client_tag(data.client), data.message ? (" (" + data.message + ")") : ""); - } - else if (data.reason == ViewReasonId.VREASON_MOVED) { - return MessageHelper.formatMessage(data.own_channel ? _translations.owzm_mo1 || (_translations.owzm_mo1 = tr("{0} disappeared from your channel {1} to {2}, moved by {3}")) : _translations.iNLIAxK4 || (_translations.iNLIAxK4 = tr("{0} disappeared from {1} to {2}, moved by {3}")), client_tag(data.client), channel_tag(data.channel_from), channel_tag(data.channel_to), client_tag(data.invoker)); - } - return [$.spawn("div").addClass("log-error").text("Invalid view leave reason id (" + data.reason + ")")]; - }; - server.MessageBuilders["server_welcome_message"] = (data, options) => { - return MessageHelper.bbcode_chat("[color=green]" + data.message + "[/color]"); - }; - server.MessageBuilders["server_host_message"] = (data, options) => { - return MessageHelper.bbcode_chat("[color=green]" + data.message + "[/color]"); - }; - server.MessageBuilders["client_nickname_changed"] = (data, options) => { - if (data.own_client) { - return MessageHelper.formatMessage(_translations.hQ_fh6ph || (_translations.hQ_fh6ph = tr("Nickname successfully changed."))); - } - else { - return MessageHelper.formatMessage(_translations.LrNB3SF3 || (_translations.LrNB3SF3 = tr("{0} changed his nickname from \"{1}\" to \"{2}\"")), client_tag(data.client), data.old_name, data.new_name); - } - }; - server.MessageBuilders["global_message"] = (data, options) => { - return []; /* we do not show global messages within log */ - }; - server.MessageBuilders["disconnected"] = () => MessageHelper.formatMessage(_translations.NjTFIAZI || (_translations.NjTFIAZI = tr("Disconnected from server"))); - server.MessageBuilders["reconnect_scheduled"] = (data, options) => { - return tra("Reconnecting in {0}.", MessageHelper.format_time(data.timeout, _translations.DX3AQjzT || (_translations.DX3AQjzT = tr("now")))); - }; - server.MessageBuilders["reconnect_canceled"] = (data, options) => { - return tra("Canceled reconnect."); - }; - server.MessageBuilders["reconnect_execute"] = (data, options) => { - return tra("Reconnecting..."); - }; - server.MessageBuilders["server_banned"] = (data, options) => { - let result; - const time = data.time == 0 ? _translations.H2Ej_Ul2 || (_translations.H2Ej_Ul2 = tr("ever")) : MessageHelper.format_time(data.time * 1000, _translations.BwNSE0JI || (_translations.BwNSE0JI = tr("one second"))); - if (data.invoker.client_id > 0) { - if (data.message) - result = tra("You've been banned from the server by {0} for {1}. Reason: {2}", client_tag(data.invoker), time, data.message); - else - result = tra("You've been banned from the server by {0} for {1}.", client_tag(data.invoker), time); - } - else { - if (data.message) - result = tra("You've been banned from the server for {0}. Reason: {1}", time, data.message); - else - result = tra("You've been banned from the server for {0}.", time); - } - return result.map(e => e.addClass("log-error")); - }; - })(impl || (impl = {})); - })(server = log.server || (log.server = {})); -})(log || (log = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["918f834521cd8b02e67c6b743aecf2431853a74ac702b87b960137ed0f080dd0"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["918f834521cd8b02e67c6b743aecf2431853a74ac702b87b960137ed0f080dd0"] = "918f834521cd8b02e67c6b743aecf2431853a74ac702b87b960137ed0f080dd0"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var chat; -(function (chat) { - class ChatBox { - constructor() { - this._message_history = []; - this._message_history_length = 100; - this._message_history_index = 0; - this.typing_interval = 2000; /* update frequency */ - this._enabled = true; - this.__callback_key_up = this._callback_key_up.bind(this); - this.__callback_key_down = this._callback_key_down.bind(this); - this.__callback_text_changed = this._callback_text_changed.bind(this); - this.__callback_paste = event => this._callback_paste(event); - this._build_html_tag(); - this._initialize_listener(); - } - html_tag() { - return this._html_tag; - } - destroy() { - this._html_tag && this._html_tag.remove(); - this._html_tag = undefined; - this._html_input = undefined; - clearTimeout(this._typing_timeout); - this.__callback_text_changed = undefined; - this.__callback_key_down = undefined; - this.__callback_paste = undefined; - this.callback_text = undefined; - this.callback_typing = undefined; - } - _initialize_listener() { - this._html_input.on("cut paste drop keydown keyup", (event) => this.__callback_text_changed(event)); - this._html_input.on("change", this.__callback_text_changed); - this._html_input.on("keydown", this.__callback_key_down); - this._html_input.on("keyup", this.__callback_key_up); - this._html_input.on("paste", this.__callback_paste); - } - _build_html_tag() { - this._html_tag = $("#tmpl_frame_chat_chatbox").renderTag({ - emojy_support: settings.static_global(Settings.KEY_CHAT_COLORED_EMOJIES) - }); - this._html_input = this._html_tag.find(".textarea"); - const tag = this._html_tag.find('.button-emoji'); - tag.lsxEmojiPicker({ - width: 300, - height: 400, - twemoji: typeof (window.twemoji) !== "undefined", - onSelect: emoji => this._html_input.html(this._html_input.html() + emoji.value), - closeOnSelect: false - }); - } - _callback_text_changed(event) { - if (event && event.defaultPrevented) - return; - /* Auto resize */ - const text = this._html_input[0]; - text.style.height = "1em"; - text.style.height = text.scrollHeight + 'px'; - if (!event || (event.type !== "keydown" && event.type !== "keyup" && event.type !== "change")) - return; - this._typing_last_event = Date.now(); - if (this._typing_timeout) - return; - const _trigger_typing = (last_time) => { - if (this._typing_last_event <= last_time) { - this._typing_timeout = 0; - return; - } - try { - if (this.callback_typing) - this.callback_typing(); - } - finally { - this._typing_timeout = setTimeout(_trigger_typing, this.typing_interval, this._typing_last_event); - } - }; - _trigger_typing(0); /* We def want that*/ - } - _text(element) { - if (typeof (element) !== "object") - return element; - if (element instanceof HTMLImageElement) - return element.alt || element.title; - if (element instanceof HTMLBRElement) { - return '\n'; - } - if (element.childNodes.length > 0) - return [...element.childNodes].map(e => this._text(e)).join(""); - if (element.nodeType == Node.TEXT_NODE) - return element.textContent; - return typeof (element.innerText) === "string" ? element.innerText : ""; - } - htmlEscape(message) { - const div = document.createElement('div'); - div.innerText = message; - message = div.innerHTML; - return message.replace(/ /g, ' '); - } - _callback_paste(event) { - const _event = event.originalEvent || event; - const clipboard = _event.clipboardData || window.clipboardData; - if (!clipboard) - return; - const raw_text = clipboard.getData('text/plain'); - const selection = window.getSelection(); - if (!selection.rangeCount) - return false; - let html_xml = clipboard.getData('text/html'); - if (!html_xml) - html_xml = $.spawn("div").text(raw_text).html(); - const parser = new DOMParser(); - const nodes = parser.parseFromString(html_xml, "text/html"); - let data = this._text(nodes.body); - /* fix prefix & suffix new lines */ - { - let prefix_length = 0, suffix_length = 0; - { - for (let i = 0; i < raw_text.length; i++) - if (raw_text.charAt(i) === '\n') - prefix_length++; - else if (raw_text.charAt(i) !== '\r') - break; - for (let i = raw_text.length - 1; i >= 0; i++) - if (raw_text.charAt(i) === '\n') - suffix_length++; - else if (raw_text.charAt(i) !== '\r') - break; - } - data = data.replace(/^[\n\r]+|[\n\r]+$/g, ''); - data = "\n".repeat(prefix_length) + data + "\n".repeat(suffix_length); - } - event.preventDefault(); - selection.deleteFromDocument(); - document.execCommand('insertHTML', false, this.htmlEscape(data)); - } - test_message(message) { - message = message - .replace(/ /gi, "") - .replace(/
/gi, "") - .replace(/\n/gi, "") - .replace(//gi, ""); - return message.length > 0; - } - _callback_key_down(event) { - if (event.key.toLowerCase() === "enter" && !event.shiftKey) { - event.preventDefault(); - /* deactivate chatbox when no callback? */ - let text = this._html_input[0].innerText; - if (!this.test_message(text)) - return; - this._message_history.push(text); - this._message_history_index = this._message_history.length; - if (this._message_history.length > this._message_history_length) - this._message_history = this._message_history.slice(this._message_history.length - this._message_history_length); - if (this.callback_text) { - this.callback_text(chat.helpers.preprocess_chat_message(text)); - } - if (this._typing_timeout) - clearTimeout(this._typing_timeout); - this._typing_timeout = 1; /* enforce no typing update while sending */ - this._html_input.text(""); - setTimeout(() => { - this.__callback_text_changed(); - this._typing_timeout = 0; /* enable text change listener again */ - }); - } - else if (event.key.toLowerCase() === "arrowdown") { - //TODO: Test for at the last line within the box - if (this._message_history_index < 0) - return; - if (this._message_history_index >= this._message_history.length) - return; /* OOB, even with the empty message */ - this._message_history_index++; - this._html_input[0].innerText = this._message_history[this._message_history_index] || ""; /* OOB just returns "undefined" */ - } - else if (event.key.toLowerCase() === "arrowup") { - //TODO: Test for at the first line within the box - if (this._message_history_index <= 0) - return; /* we cant go "down" */ - this._message_history_index--; - this._html_input[0].innerText = this._message_history[this._message_history_index]; - } - else { - if (this._message_history_index >= 0) { - if (this._message_history_index >= this._message_history.length) { - if ("" !== this._html_input[0].innerText) - this._message_history_index = -1; - } - else if (this._message_history[this._message_history_index] !== this._html_input[0].innerText) - this._message_history_index = -1; - } - } - } - _callback_key_up(event) { - if ("" === this._html_input[0].innerText) - this._message_history_index = this._message_history.length; - } - set_enabled(flag) { - if (this._enabled === flag) - return; - if (!this._context_task) { - this._enabled = flag; - /* Allow the browser to asynchronously recalculate everything */ - this._context_task = setTimeout(() => { - this._context_task = undefined; - this._html_input.each((_, e) => { e.contentEditable = this._enabled ? "true" : "false"; }); - }); - this._html_tag.find('.button-emoji').toggleClass("disabled", !flag); - } - } - is_enabled() { - return this._enabled; - } - focus_input() { - this._html_input.focus(); - } - } - chat.ChatBox = ChatBox; -})(chat || (chat = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["c5be3188cf21fcbc775719d2ac72dd358cb3e8e285fbafe64efad84171587ae9"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["c5be3188cf21fcbc775719d2ac72dd358cb3e8e285fbafe64efad84171587ae9"] = "c5be3188cf21fcbc775719d2ac72dd358cb3e8e285fbafe64efad84171587ae9"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "fLceMi2w", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/chat_helper.ts (15,56)" }, { name: "p3JBDN23", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/chat_helper.ts (176,52)" }, { name: "p_7G78re", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/chat_helper.ts (179,52)" }, { name: "HIvttmjm", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/chat_helper.ts (352,73)" }, { name: "yUP_LiSX", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/chat_helper.ts (352,94)" }, { name: "i_VB2Zg6", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/chat_helper.ts (380,74)" }, { name: "dDilhGjF", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/chat_helper.ts (384,45)" }, { name: "uZp2aiUD", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/chat_helper.ts (386,85)" }, { name: "SLaP2Hpu", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/chat_helper.ts (407,45)" }, { name: "LVc9nB1W", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/chat_helper.ts (409,44)" }, { name: "hVY41Mvc", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/chat_helper.ts (411,45)" }, { name: "BGNiWoVt", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/chat_helper.ts (413,47)" }, { name: "dE7l9KPA", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/chat_helper.ts (415,47)" }, { name: "WWKyCzCv", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/chat_helper.ts (417,30)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var chat; -(function (chat) { - let helpers; - (function (helpers) { - //https://regex101.com/r/YQbfcX/2 - //static readonly URL_REGEX = /^(?([a-zA-Z0-9-]+\.)+[a-zA-Z0-9-]{2,63})(?:\/(?(?:[^\s?]+)?)(?:\?(?\S+))?)?$/gm; - const URL_REGEX = /^(([a-zA-Z0-9-]+\.)+[a-zA-Z0-9-]{2,63})(?:\/((?:[^\s?]+)?)(?:\?(\S+))?)?$/gm; - function process_urls(message) { - const words = message.split(/[ \n]/); - for (let index = 0; index < words.length; index++) { - const flag_escaped = words[index].startsWith('!'); - const unescaped = flag_escaped ? words[index].substr(1) : words[index]; - _try: try { - const url = new URL(unescaped); - log.debug(LogCategory.GENERAL, _translations.fLceMi2w || (_translations.fLceMi2w = tr("Chat message contains URL: %o")), url); - if (url.protocol !== 'http:' && url.protocol !== 'https:') - break _try; - if (flag_escaped) { - message = undefined; - words[index] = unescaped; - } - else { - message = undefined; - words[index] = "[url=" + url.toString() + "]" + url.toString() + "[/url]"; - } - } - catch (e) { /* word isn't an url */ } - if (unescaped.match(URL_REGEX)) { - if (flag_escaped) { - message = undefined; - words[index] = unescaped; - } - else { - message = undefined; - words[index] = "[url=" + unescaped + "]" + unescaped + "[/url]"; - } - } - } - return message || words.join(" "); - } - let md2bbc; - (function (md2bbc) { - class Renderer { - render(tokens, options, env) { - this.last_paragraph = undefined; - this._options = options; - let result = ''; - //TODO: Escape BB-Codes - for (let index = 0; index < tokens.length; index++) { - if (tokens[index].type === 'inline') { - result += this.render_inline(tokens[index].children, index); - } - else { - result += this.render_token(tokens[index], index); - } - } - this._options = undefined; - return result; - } - render_token(token, index) { - log.debug(LogCategory.GENERAL, _translations.p3JBDN23 || (_translations.p3JBDN23 = tr("Render Markdown token: %o")), token); - const renderer = Renderer.renderers[token.type]; - if (typeof (renderer) === "undefined") { - log.warn(LogCategory.CHAT, _translations.p_7G78re || (_translations.p_7G78re = tr("Missing markdown to bbcode renderer for token %s: %o")), token.type, token); - return token.content || ""; - } - const result = renderer(this, token, index); - if (token.type === "paragraph_open") - this.last_paragraph = token; - return result; - } - render_inline(tokens, index) { - let result = ''; - for (let index = 0; index < tokens.length; index++) { - result += this.render_token(tokens[index], index); - } - return result; - } - options() { - return this._options; - } - maybe_escape_bb(text) { - if (this._options.escape_bb) - return xbbcode.escape(text); - return text; - } - } - Renderer.renderers = { - "text": (renderer, token) => renderer.options().process_url ? process_urls(renderer.maybe_escape_bb(token.content)) : renderer.maybe_escape_bb(token.content), - "softbreak": () => "\n", - "hardbreak": () => "\n", - "paragraph_open": (renderer, token) => { - const last_line = !renderer.last_paragraph || !renderer.last_paragraph.lines ? 0 : renderer.last_paragraph.lines[1]; - const lines = token.lines[0] - last_line; - return [...new Array(lines)].map(e => "[br]").join(""); - }, - "paragraph_close": () => "", - "strong_open": (renderer, token) => "[b]", - "strong_close": (renderer, token) => "[/b]", - "em_open": (renderer, token) => "[i]", - "em_close": (renderer, token) => "[/i]", - "del_open": () => "[s]", - "del_close": () => "[/s]", - "sup": (renderer, token) => "[sup]" + renderer.maybe_escape_bb(token.content) + "[/sup]", - "sub": (renderer, token) => "[sub]" + renderer.maybe_escape_bb(token.content) + "[/sub]", - "bullet_list_open": () => "[ul]", - "bullet_list_close": () => "[/ul]", - "ordered_list_open": () => "[ol]", - "ordered_list_close": () => "[/ol]", - "list_item_open": () => "[li]", - "list_item_close": () => "[/li]", - "table_open": () => "[table]", - "table_close": () => "[/table]", - "thead_open": () => "", - "thead_close": () => "", - "tbody_open": () => "", - "tbody_close": () => "", - "tr_open": () => "[tr]", - "tr_close": () => "[/tr]", - "th_open": (renderer, token) => "[th" + (token.align ? ("=" + token.align) : "") + "]", - "th_close": () => "[/th]", - "td_open": () => "[td]", - "td_close": () => "[/td]", - "link_open": (renderer, token) => "[url" + (token.href ? ("=" + token.href) : "") + "]", - "link_close": () => "[/url]", - "image": (renderer, token) => "[img=" + (token.src) + "]" + (token.alt || token.src) + "[/img]", - //footnote_ref - //"content": "==Marked text==", - //mark_open - //mark_close - //++Inserted text++ - "ins_open": () => "[u]", - "ins_close": () => "[/u]", - /* -``` -test -[/code] -test -``` - */ - "code": (renderer, token) => "[i-code]" + xbbcode.escape(token.content) + "[/i-code]", - "fence": (renderer, token) => "[code" + (token.params ? ("=" + token.params) : "") + "]" + xbbcode.escape(token.content) + "[/code]", - "heading_open": (renderer, token) => "[size=" + (9 - Math.min(4, token.hLevel)) + "]", - "heading_close": (renderer, token) => "[/size][hr]", - "hr": () => "[hr]", - }; - md2bbc.Renderer = Renderer; - })(md2bbc || (md2bbc = {})); - let _renderer; - function process_markdown(message, options) { - if (typeof (window.remarkable) === "undefined") - return (options.process_url ? process_urls(message) : message); - if (!_renderer) { - _renderer = new window.remarkable.Remarkable('full'); - _renderer.set({ - typographer: true - }); - _renderer.renderer = new md2bbc.Renderer(); - _renderer.inline.ruler.disable(['newline', 'autolink']); - } - _renderer.set({ - process_url: !!options.process_url, - escape_bb: !!options.escape_bb - }); - let result = _renderer.render(message); - if (result.endsWith("\n")) - result = result.substr(0, result.length - 1); - return result; - } - function preprocess_chat_message(message) { - const process_url = settings.static_global(Settings.KEY_CHAT_TAG_URLS); - const parse_markdown = settings.static_global(Settings.KEY_CHAT_ENABLE_MARKDOWN); - const escape_bb = !settings.static_global(Settings.KEY_CHAT_ENABLE_BBCODE); - if (parse_markdown) - return process_markdown(message, { - process_url: process_url, - escape_bb: escape_bb - }); - if (escape_bb) - message = xbbcode.escape(message); - return process_url ? process_urls(message) : message; - } - helpers.preprocess_chat_message = preprocess_chat_message; - let history; - (function (history) { - let _local_cache; - function get_cache() { - return __awaiter(this, void 0, void 0, function* () { - if (_local_cache) - return _local_cache; - if (!('caches' in window)) - throw "missing cache extension!"; - return (_local_cache = yield caches.open('chat_history')); - }); - } - function load_history(key) { - return __awaiter(this, void 0, void 0, function* () { - const cache = yield get_cache(); - const request = new Request("https://_local_cache/cache_request_" + key); - const cached_response = yield cache.match(request); - if (!cached_response) - return undefined; - return yield cached_response.json(); - }); - } - history.load_history = load_history; - function save_history(key, value) { - return __awaiter(this, void 0, void 0, function* () { - const cache = yield get_cache(); - const request = new Request("https://_local_cache/cache_request_" + key); - const data = JSON.stringify(value); - const new_headers = new Headers(); - new_headers.set("Content-type", "application/json"); - new_headers.set("Content-length", data.length.toString()); - yield cache.put(request, new Response(data, { - headers: new_headers - })); - }); - } - history.save_history = save_history; - })(history = helpers.history || (helpers.history = {})); - let date; - (function (date) { - function same_day(a, b) { - a = a instanceof Date ? a : new Date(a); - b = b instanceof Date ? b : new Date(b); - if (a.getDate() !== b.getDate()) - return false; - if (a.getMonth() !== b.getMonth()) - return false; - return a.getFullYear() === b.getFullYear(); - } - date.same_day = same_day; - })(date = helpers.date || (helpers.date = {})); - })(helpers = chat.helpers || (chat.helpers = {})); - let format; - (function (format_1) { - let date; - (function (date_1) { - let ColloquialFormat; - (function (ColloquialFormat) { - ColloquialFormat[ColloquialFormat["YESTERDAY"] = 0] = "YESTERDAY"; - ColloquialFormat[ColloquialFormat["TODAY"] = 1] = "TODAY"; - ColloquialFormat[ColloquialFormat["GENERAL"] = 2] = "GENERAL"; - })(ColloquialFormat = date_1.ColloquialFormat || (date_1.ColloquialFormat = {})); - function date_format(date, now, ignore_settings) { - if (!ignore_settings && !settings.static_global(Settings.KEY_CHAT_COLLOQUIAL_TIMESTAMPS)) - return ColloquialFormat.GENERAL; - let delta_day = now.getDate() - date.getDate(); - if (delta_day < 1) /* month change? */ - delta_day = date.getDate() - now.getDate(); - if (delta_day == 0) - return ColloquialFormat.TODAY; - else if (delta_day == 1) - return ColloquialFormat.YESTERDAY; - return ColloquialFormat.GENERAL; - } - date_1.date_format = date_format; - function format_date_general(date, hours) { - return ('00' + date.getDate()).substr(-2) + "." - + ('00' + date.getMonth()).substr(-2) + "." - + date.getFullYear() + - (typeof (hours) === "undefined" || hours ? " at " - + ('00' + date.getHours()).substr(-2) + ":" - + ('00' + date.getMinutes()).substr(-2) - : ""); - } - date_1.format_date_general = format_date_general; - function format_date_colloquial(date, current_timestamp) { - const format = date_format(date, current_timestamp); - if (format == ColloquialFormat.GENERAL) { - return { - result: format_date_general(date), - format: format - }; - } - else { - let hrs = date.getHours(); - let time = "AM"; - if (hrs > 12) { - hrs -= 12; - time = "PM"; - } - return { - result: (format == ColloquialFormat.YESTERDAY ? _translations.HIvttmjm || (_translations.HIvttmjm = tr("Yesterday at")) : _translations.yUP_LiSX || (_translations.yUP_LiSX = tr("Today at"))) + " " + hrs + ":" + date.getMinutes() + " " + time, - format: format - }; - } - } - date_1.format_date_colloquial = format_date_colloquial; - function format_chat_time(date) { - const timestamp = date.getTime(); - const current_timestamp = new Date(); - const result = { - result: "", - next_update: 0 - }; - if (settings.static_global(Settings.KEY_CHAT_FIXED_TIMESTAMPS)) { - const format = format_date_colloquial(date, current_timestamp); - result.result = format.result; - result.next_update = 0; /* TODO: Update on day change? */ - } - else { - const delta = current_timestamp.getTime() - timestamp; - if (delta < 2000) { - result.result = "now"; - result.next_update = 2500 - delta; /* update after two seconds */ - } - else if (delta < 30000) { /* 30 seconds */ - result.result = Math.floor(delta / 1000) + " " + (_translations.i_VB2Zg6 || (_translations.i_VB2Zg6 = tr("seconds ago"))); - result.next_update = 1000; /* update every second */ - } - else if (delta < 30 * 60 * 1000) { /* 30 minutes */ - if (delta < 120 * 1000) - result.result = _translations.dDilhGjF || (_translations.dDilhGjF = tr("one minute ago")); - else - result.result = Math.floor(delta / (1000 * 60)) + " " + (_translations.uZp2aiUD || (_translations.uZp2aiUD = tr("minutes ago"))); - result.next_update = 60000; /* updater after a minute */ - } - else { - result.result = format_date_colloquial(date, current_timestamp).result; - result.next_update = 0; /* TODO: Update on day change? */ - } - } - return result; - } - date_1.format_chat_time = format_chat_time; - })(date = format_1.date || (format_1.date = {})); - let time; - (function (time) { - function format_online_time(secs) { - let years = Math.floor(secs / (60 * 60 * 24 * 365)); - let days = Math.floor(secs / (60 * 60 * 24)) % 365; - let hours = Math.floor(secs / (60 * 60)) % 24; - let minutes = Math.floor(secs / 60) % 60; - let seconds = Math.floor(secs % 60); - let result = ""; - if (years > 0) - result += years + " " + (_translations.SLaP2Hpu || (_translations.SLaP2Hpu = tr("years"))) + " "; - if (years > 0 || days > 0) - result += days + " " + (_translations.LVc9nB1W || (_translations.LVc9nB1W = tr("days"))) + " "; - if (years > 0 || days > 0 || hours > 0) - result += hours + " " + (_translations.hVY41Mvc || (_translations.hVY41Mvc = tr("hours"))) + " "; - if (years > 0 || days > 0 || hours > 0 || minutes > 0) - result += minutes + " " + (_translations.BGNiWoVt || (_translations.BGNiWoVt = tr("minutes"))) + " "; - if (years > 0 || days > 0 || hours > 0 || minutes > 0 || seconds > 0) - result += seconds + " " + (_translations.dE7l9KPA || (_translations.dE7l9KPA = tr("seconds"))) + " "; - else - result = (_translations.WWKyCzCv || (_translations.WWKyCzCv = tr("now"))) + " "; - return result.substr(0, result.length - 1); - } - time.format_online_time = format_online_time; - })(time = format_1.time || (format_1.time = {})); - })(format = chat.format || (chat.format = {})); -})(chat || (chat = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["b95f363e0f5bc44d4fb25a34df7141f88562c49ef5fb94014debc75d5db9cb0b"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["b95f363e0f5bc44d4fb25a34df7141f88562c49ef5fb94014debc75d5db9cb0b"] = "b95f363e0f5bc44d4fb25a34df7141f88562c49ef5fb94014debc75d5db9cb0b"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "Dp1iLhtX", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (109,67)" }, { name: "D09E5x0q", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (148,40)" }, { name: "EsaodnJz", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (150,40)" }, { name: "AtQnQgBE", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (152,40)" }, { name: "vwdjmn_F", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (175,51)" }, { name: "l65uhuvX", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (186,51)" }, { name: "Qdw6LANe", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (194,51)" }, { name: "iSy8yGYs", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (202,51)" }, { name: "M0LdnKoE", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (210,51)" }, { name: "Urfvx1ZJ", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (218,51)" }, { name: "KNP4yV0s", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (238,73)" }, { name: "xrYdPJ1G", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (238,131)" }, { name: "rVlVp788", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (246,77)" }, { name: "NKtvfR4K", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (265,77)" }, { name: "pgVV72hD", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (269,66)" }, { name: "OyhbrRno", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/client_info.ts (269,110)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var chat; -(function (chat) { - class ClientInfo { - constructor(handle) { - this.handle = handle; - this._build_html_tag(); - } - html_tag() { - return this._html_tag; - } - destroy() { - clearInterval(this._online_time_updater); - this._html_tag && this._html_tag.remove(); - this._html_tag = undefined; - this._current_client = undefined; - this.previous_frame_content = undefined; - } - _build_html_tag() { - this._html_tag = $("#tmpl_frame_chat_client_info").renderTag(); - this._html_tag.find(".button-close").on('click', () => { - if (this.previous_frame_content === chat.FrameContent.CLIENT_INFO) - this.previous_frame_content = chat.FrameContent.NONE; - this.handle.set_content(this.previous_frame_content); - }); - this._html_tag.find(".button-more").on('click', () => { - if (!this._current_client) - return; - Modals.openClientInfo(this._current_client); - }); - this._html_tag.find('.container-avatar-edit').on('click', () => this.handle.handle.update_avatar()); - } - current_client() { - return this._current_client; - } - set_current_client(client, enforce) { - if (client) - client.updateClientVariables(); /* just to ensure */ - if (client === this._current_client && (typeof (enforce) === "undefined" || !enforce)) - return; - this._current_client = client; - /* updating the header */ - { - const client_name = this._html_tag.find(".client-name"); - client_name.children().remove(); - htmltags.generate_client_object({ - add_braces: false, - client_name: client ? client.clientNickName() : "undefined", - client_unique_id: client ? client.clientUid() : "", - client_id: client ? client.clientId() : 0 - }).appendTo(client_name); - const client_description = this._html_tag.find(".client-description"); - client_description.text(client ? client.properties.client_description : "").toggle(!!client.properties.client_description); - const is_local_entry = client instanceof LocalClientEntry; - const container_avatar = this._html_tag.find(".container-avatar"); - container_avatar.find(".avatar").remove(); - if (client) { - const avatar = this.handle.handle.fileManager.avatars.generate_chat_tag({ id: client.clientId() }, client.clientUid()); - if (!is_local_entry) { - avatar.css("cursor", "pointer").on('click', event => { - image_preview.preview_image_tag(this.handle.handle.fileManager.avatars.generate_chat_tag({ id: client.clientId() }, client.clientUid())); - }); - } - avatar.appendTo(container_avatar); - } - else - this.handle.handle.fileManager.avatars.generate_chat_tag(undefined, undefined).appendTo(container_avatar); - container_avatar.toggleClass("editable", is_local_entry); - } - /* updating the info fields */ - { - const online_time = this._html_tag.find(".client-online-time"); - online_time.text(chat.format.time.format_online_time(client ? client.calculateOnlineTime() : 0)); - if (this._online_time_updater) { - clearInterval(this._online_time_updater); - this._online_time_updater = 0; - } - if (client) { - this._online_time_updater = setInterval(() => { - const client = this._current_client; - if (!client) { - clearInterval(this._online_time_updater); - this._online_time_updater = undefined; - return; - } - if (client.currentChannel()) /* If he has no channel then he might be disconnected */ - online_time.text(chat.format.time.format_online_time(client.calculateOnlineTime())); - else { - online_time.text(online_time.text() + (_translations.Dp1iLhtX || (_translations.Dp1iLhtX = tr(" (left view)")))); - clearInterval(this._online_time_updater); - } - }, 1000); - } - const country = this._html_tag.find(".client-country"); - country.children().detach(); - const country_code = (client ? client.properties.client_country : undefined) || "xx"; - $.spawn("div").addClass("country flag-" + country_code.toLowerCase()).appendTo(country); - $.spawn("a").text(i18n.country_name(country_code.toUpperCase())).appendTo(country); - const version = this._html_tag.find(".client-version"); - version.children().detach(); - if (client) { - let platform = client.properties.client_platform; - if (platform.indexOf("Win32") != 0 && (client.properties.client_version.indexOf("Win64") != -1 || client.properties.client_version.indexOf("WOW64") != -1)) - platform = platform.replace("Win32", "Win64"); - $.spawn("a").attr("title", client.properties.client_version).text(client.properties.client_version.split(" ")[0] + " on " + platform).appendTo(version); - } - const volume = this._html_tag.find(".client-local-volume"); - volume.text((client && client.get_audio_handle() ? (client.get_audio_handle().get_volume() * 100) : -1).toFixed(0) + "%"); - } - /* teaspeak forum */ - { - const container_forum = this._html_tag.find(".container-teaforo"); - if (client && client.properties.client_teaforo_id) { - container_forum.show(); - const container_data = container_forum.find(".client-teaforo-account"); - container_data.children().remove(); - let text = client.properties.client_teaforo_name; - if ((client.properties.client_teaforo_flags & 0x01) > 0) - text += " (" + (_translations.D09E5x0q || (_translations.D09E5x0q = tr("Banned"))) + ")"; - if ((client.properties.client_teaforo_flags & 0x02) > 0) - text += " (" + (_translations.EsaodnJz || (_translations.EsaodnJz = tr("Stuff"))) + ")"; - if ((client.properties.client_teaforo_flags & 0x04) > 0) - text += " (" + (_translations.AtQnQgBE || (_translations.AtQnQgBE = tr("Premium"))) + ")"; - $.spawn("a") - .attr("href", "https://forum.teaspeak.de/index.php?members/" + client.properties.client_teaforo_id) - .attr("target", "_blank") - .text(text) - .appendTo(container_data); - } - else { - container_forum.hide(); - } - } - /* update the client status */ - { - //TODO Implement client status! - const container_status = this._html_tag.find(".container-client-status"); - const container_status_entries = container_status.find(".client-status"); - container_status_entries.children().detach(); - if (client) { - if (client.properties.client_away) { - container_status_entries.append($.spawn("div").addClass("status-entry").append($.spawn("div").addClass("icon_em client-away"), $.spawn("a").text(_translations.vwdjmn_F || (_translations.vwdjmn_F = tr("Away"))), client.properties.client_away_message ? - $.spawn("a").addClass("away-message").text("(" + client.properties.client_away_message + ")") : - undefined)); - } - if (client.is_muted()) { - container_status_entries.append($.spawn("div").addClass("status-entry").append($.spawn("div").addClass("icon_em client-input_muted_local"), $.spawn("a").text(_translations.l65uhuvX || (_translations.l65uhuvX = tr("Client local muted"))))); - } - if (!client.properties.client_output_hardware) { - container_status_entries.append($.spawn("div").addClass("status-entry").append($.spawn("div").addClass("icon_em client-hardware_output_muted"), $.spawn("a").text(_translations.Qdw6LANe || (_translations.Qdw6LANe = tr("Speakers/Headphones disabled"))))); - } - if (!client.properties.client_input_hardware) { - container_status_entries.append($.spawn("div").addClass("status-entry").append($.spawn("div").addClass("icon_em client-hardware_input_muted"), $.spawn("a").text(_translations.iSy8yGYs || (_translations.iSy8yGYs = tr("Microphone disabled"))))); - } - if (client.properties.client_output_muted) { - container_status_entries.append($.spawn("div").addClass("status-entry").append($.spawn("div").addClass("icon_em client-output_muted"), $.spawn("a").text(_translations.M0LdnKoE || (_translations.M0LdnKoE = tr("Speakers/Headphones Muted"))))); - } - if (client.properties.client_input_muted) { - container_status_entries.append($.spawn("div").addClass("status-entry").append($.spawn("div").addClass("icon_em client-input_muted"), $.spawn("a").text(_translations.Urfvx1ZJ || (_translations.Urfvx1ZJ = tr("Microphone Muted"))))); - } - } - container_status.toggle(container_status_entries.children().length > 0); - } - /* update client server groups */ - { - const container_groups = this._html_tag.find(".client-group-server"); - container_groups.children().detach(); - if (client) { - const invalid_groups = []; - const groups = client.assignedServerGroupIds().map(group_id => { - const result = this.handle.handle.groups.serverGroup(group_id); - if (!result) - invalid_groups.push(group_id); - return result; - }).filter(e => !!e).sort(GroupManager.sorter()); - for (const invalid_id of invalid_groups) { - container_groups.append($.spawn("a").text("{" + (_translations.KNP4yV0s || (_translations.KNP4yV0s = tr("server group "))) + invalid_groups + "}").attr("title", (_translations.xrYdPJ1G || (_translations.xrYdPJ1G = tr("Missing server group id!"))) + " (" + invalid_groups + ")")); - } - for (let group of groups) { - container_groups.append($.spawn("div").addClass("group-container") - .append(this.handle.handle.fileManager.icons.generateTag(group.properties.iconid)).append($.spawn("a").text(group.name).attr("title", (_translations.rVlVp788 || (_translations.rVlVp788 = tr("Group id: "))) + group.id))); - } - } - } - /* update client channel group */ - { - const container_group = this._html_tag.find(".client-group-channel"); - container_group.children().detach(); - if (client) { - const group_id = client.assignedChannelGroup(); - let group = this.handle.handle.groups.channelGroup(group_id); - if (group) { - container_group.append($.spawn("div").addClass("group-container") - .append(this.handle.handle.fileManager.icons.generateTag(group.properties.iconid)).append($.spawn("a").text(group.name).attr("title", (_translations.NKtvfR4K || (_translations.NKtvfR4K = tr("Group id: "))) + group_id))); - } - else { - container_group.append($.spawn("a").text(_translations.pgVV72hD || (_translations.pgVV72hD = tr("Invalid channel group!"))).attr("title", (_translations.OyhbrRno || (_translations.OyhbrRno = tr("Missing channel group id!"))) + " (" + group_id + ")")); - } - } - } - } - } - chat.ClientInfo = ClientInfo; -})(chat || (chat = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["c8d174f4cbf19f8187e08cd0cc4bb35c191fd340838f5553eaec62915ed394f9"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["c8d174f4cbf19f8187e08cd0cc4bb35c191fd340838f5553eaec62915ed394f9"] = "c8d174f4cbf19f8187e08cd0cc4bb35c191fd340838f5553eaec62915ed394f9"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "hh__Ub6e", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/conversations.ts (105,72)" }, { name: "TQ1xVaxQ", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/conversations.ts (106,81)" }, { name: "gusrL0gQ", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/conversations.ts (222,49)" }, { name: "Rghf6HNS", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/conversations.ts (248,49)" }, { name: "lfcMsCaE", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/conversations.ts (433,49)" }, { name: "mwRMbLH_", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/conversations.ts (436,38)" }, { name: "keOq3AeP", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/conversations.ts (436,98)" }, { name: "MQA1F_tv", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/conversations.ts (438,47)" }, { name: "RbUV5nYv", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/conversations.ts (608,52)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var chat; -(function (chat) { - let channel; - (function (channel) { - class Conversation { - constructor(handle, channel_id) { - this._container_no_permissions_shown = false; - this._container_is_private_shown = false; - this._container_no_support_shown = false; - this._view_max_messages = 40; /* reset to 40 again as soon we tab out :) */ - this._view_entries = []; - this._last_messages = []; - this._last_messages_timestamp = 0; - this.handle = handle; - this.channel_id = channel_id; - this._build_html_tag(); - } - html_tag() { return this._html_tag; } - destroy() { - this._first_unread_message_pointer.html_element.detach(); - this._first_unread_message_pointer = undefined; - this._view_older_messages.html_element.detach(); - this._view_older_messages = undefined; - for (const view_entry of this._view_entries) { - view_entry.html_element.detach(); - clearTimeout(view_entry.update_timer); - } - this._view_entries = []; - } - _build_html_tag() { - this._html_tag = $("#tmpl_frame_chat_channel_messages").renderTag(); - this._container_new_message = this._html_tag.find(".new-message"); - this._container_no_permissions = this._html_tag.find(".no-permissions").hide(); - this._container_is_private = this._html_tag.find(".private-conversation").hide(); - this._container_no_support = this._html_tag.find(".not-supported").hide(); - this._container_messages = this._html_tag.find(".container-messages"); - this._container_messages.on('scroll', event => { - const exact_position = this._container_messages[0].scrollTop + this._container_messages[0].clientHeight; - const current_view = exact_position + this._container_messages[0].clientHeight * .125; - if (current_view > this._container_messages[0].scrollHeight) { - this._scroll_position = undefined; - } - else { - this._scroll_position = this._container_messages[0].scrollTop; - } - const will_visible = !!this._first_unread_message && this._first_unread_message_pointer.html_element[0].offsetTop > exact_position; - const is_visible = this._container_new_message[0].classList.contains("shown"); - if (!is_visible && will_visible) - this._container_new_message[0].classList.add("shown"); - if (is_visible && !will_visible) - this._container_new_message[0].classList.remove("shown"); - //This causes a Layout recalc (Forced reflow) - //this._container_new_message.toggleClass("shown",!!this._first_unread_message && this._first_unread_message_pointer.html_element[0].offsetTop > exact_position); - }); - this._view_older_messages = this._generate_view_spacer(_translations.hh__Ub6e || (_translations.hh__Ub6e = tr("Load older messages")), "old"); - this._first_unread_message_pointer = this._generate_view_spacer(_translations.TQ1xVaxQ || (_translations.TQ1xVaxQ = tr("Unread messages")), "new"); - this._view_older_messages.html_element.appendTo(this._container_messages).on('click', event => { - this.fetch_older_messages(); - }); - this._container_new_message.on('click', event => { - if (!this._first_unread_message) - return; - this._scroll_position = this._first_unread_message_pointer.html_element[0].offsetTop; - this.fix_scroll(true); - }); - this._container_messages.on('click', event => { - if (this._container_new_message.hasClass('shown')) - return; /* we have clicked, but no chance to see the unread message pointer */ - this._mark_read(); - }); - this.set_flag_private(false); - } - is_unread() { return !!this._first_unread_message; } - mark_read() { this._mark_read(); } - _mark_read() { - if (this._first_unread_message) { - this._first_unread_message = undefined; - const ctree = this.handle.handle.handle.channelTree; - if (ctree && ctree.tag_tree()) - ctree.tag_tree().find(".marker-text-unread[conversation='" + this.channel_id + "']").addClass("hidden"); - } - this._first_unread_message_pointer.html_element.detach(); - } - _generate_view_message(data) { - const response = data; - if (response.html_element) - return response; - const timestamp = new Date(data.timestamp); - let time = chat.format.date.format_chat_time(timestamp); - response.html_element = $("#tmpl_frame_chat_channel_message").renderTag({ - timestamp: time.result, - client_name: htmltags.generate_client_object({ - add_braces: false, - client_name: data.sender_name, - client_unique_id: data.sender_unique_id, - client_id: 0 - }), - message: MessageHelper.bbcode_chat(data.message), - avatar: this.handle.handle.handle.fileManager.avatars.generate_chat_tag({ database_id: data.sender_database_id }, data.sender_unique_id) - }); - response.html_element.find(".button-delete").on('click', () => this.delete_message(data)); - if (time.next_update > 0) { - const _updater = () => { - time = chat.format.date.format_chat_time(timestamp); - response.html_element.find(".info .timestamp").text(time.result); - if (time.next_update > 0) - response.update_timer = setTimeout(_updater, time.next_update); - else - response.update_timer = 0; - }; - response.update_timer = setTimeout(_updater, time.next_update); - } - else { - response.update_timer = 0; - } - return response; - } - _generate_view_spacer(message, type) { - const tag = $("#tmpl_frame_chat_private_spacer").renderTag({ - message: message - }).addClass("type-" + type); - return { - html_element: tag, - update_timer: 0 - }; - } - last_messages_timestamp() { - return this._last_messages_timestamp; - } - fetch_last_messages() { - const fetch_count = this._view_max_messages - this._last_messages.length; - const fetch_timestamp_end = this._last_messages_timestamp + 1; /* we want newer messages then the last message we have */ - //conversationhistory cid=1 [cpw=xxx] [timestamp_begin] [timestamp_end (0 := no end)] [message_count (default 25| max 100)] [-merge] - this.handle.handle.handle.serverConnection.send_command("conversationhistory", { - cid: this.channel_id, - timestamp_end: fetch_timestamp_end, - message_count: fetch_count - }, { flagset: ["merge"], process_result: false }).catch(error => { - this._view_older_messages.html_element.toggleClass('shown', false); - if (error instanceof CommandResult) { - if (error.id == ErrorID.CONVERSATION_MORE_DATA) { - if (typeof (this._has_older_messages) === "undefined") - this._has_older_messages = true; - this._view_older_messages.html_element.toggleClass('shown', true); - return; - } - else if (error.id == ErrorID.PERMISSION_ERROR) { - this._container_no_permissions.show(); - this._container_no_permissions_shown = true; - } - else if (error.id == ErrorID.CONVERSATION_IS_PRIVATE) { - this.set_flag_private(true); - } - /* - else if(error.id == ErrorID.NOT_IMPLEMENTED || error.id == ErrorID.COMMAND_NOT_FOUND) { - this._container_no_support.show(); - this._container_no_support_shown = true; - } - */ - } - //TODO log and handle! - log.error(LogCategory.CHAT, _translations.gusrL0gQ || (_translations.gusrL0gQ = tr("Failed to fetch conversation history. %o")), error); - }).then(() => { - this.fix_scroll(true); - this.handle.update_chat_box(); - }); - } - fetch_older_messages() { - this._view_older_messages.html_element.toggleClass('shown', false); - const entry = this._view_entries.slice().reverse().find(e => 'timestamp' in e); - //conversationhistory cid=1 [cpw=xxx] [timestamp_begin] [timestamp_end (0 := no end)] [message_count (default 25| max 100)] [-merge] - this.handle.handle.handle.serverConnection.send_command("conversationhistory", { - cid: this.channel_id, - timestamp_begin: entry.timestamp - 1, - message_count: this._view_max_messages - }, { flagset: ["merge"] }).catch(error => { - this._view_older_messages.html_element.toggleClass('shown', false); - if (error instanceof CommandResult) { - if (error.id == ErrorID.CONVERSATION_MORE_DATA) { - this._view_older_messages.html_element.toggleClass('shown', true); - this.handle.update_chat_box(); - return; - } - } - //TODO log and handle! - log.error(LogCategory.CHAT, _translations.Rghf6HNS || (_translations.Rghf6HNS = tr("Failed to fetch conversation history. %o")), error); - }).then(() => { - this.fix_scroll(true); - }); - } - register_new_message(message, update_view) { - /* lets insert the message at the right index */ - let _new_message = false; - { - let spliced = false; - for (let index = 0; index < this._last_messages.length; index++) { - if (this._last_messages[index].timestamp < message.timestamp) { - this._last_messages.splice(index, 0, message); - spliced = true; - _new_message = index == 0; /* only set flag if this has been inserted at the front */ - break; - } - else if (this._last_messages[index].timestamp == message.timestamp && this._last_messages[index].sender_database_id == message.sender_database_id) { - return; /* we already have that message */ - } - } - if (!spliced && this._last_messages.length < this._view_max_messages) { - this._last_messages.push(message); - } - this._last_messages_timestamp = this._last_messages[0].timestamp; - while (this._last_messages.length > this._view_max_messages) { - if (this._last_messages[this._last_messages.length - 1] == this._first_unread_message) - break; - this._last_messages.pop(); - } - } - /* message is within view */ - { - const entry = this._generate_view_message(message); - let previous; - for (let index = 0; index < this._view_entries.length; index++) { - const current_entry = this._view_entries[index]; - if (!('timestamp' in current_entry)) - continue; - if (current_entry.timestamp < message.timestamp) { - this._view_entries.splice(index, 0, entry); - previous = current_entry; - break; - } - } - if (!previous) - this._view_entries.push(entry); - if (previous) - entry.html_element.insertAfter(previous.html_element); - else - entry.html_element.insertAfter(this._view_older_messages.html_element); /* last element is already the current element */ - if (_new_message && (typeof (this._scroll_position) === "number" || this.handle.current_channel() !== this.channel_id || this.handle.handle.content_type() !== chat.FrameContent.CHANNEL_CHAT)) { - if (typeof (this._first_unread_message) === "undefined") - this._first_unread_message = entry; - this._first_unread_message_pointer.html_element.insertBefore(entry.html_element); - this._container_messages.trigger('scroll'); /* updates the new message stuff */ - } - if (typeof (update_view) !== "boolean" || update_view) - this.fix_scroll(true); - } - /* update chat state */ - this._container_no_permissions.hide(); - this._container_no_permissions_shown = false; - if (update_view) - this.handle.update_chat_box(); - } - fix_scroll(animate) { - if (this._scroll_fix_timer) { - this._scroll_animate = this._scroll_animate && animate; - return; - } - this._scroll_fix_timer = setTimeout(() => { - this._scroll_fix_timer = undefined; - let offset; - if (this._first_unread_message) { - offset = this._first_unread_message.html_element[0].offsetTop; - } - else if (typeof (this._scroll_position) !== "undefined") { - offset = this._scroll_position; - } - else { - offset = this._container_messages[0].scrollHeight; - } - if (this._scroll_animate) { - this._container_messages.stop(true).animate({ - scrollTop: offset - }, 'slow'); - } - else { - this._container_messages.stop(true).scrollTop(offset); - } - }, 5); - } - fix_view_size() { - this._view_older_messages.html_element.toggleClass('shown', !!this._has_older_messages); - let count = 0; - for (let index = 0; index < this._view_entries.length; index++) { - if ('timestamp' in this._view_entries[index]) - count++; - if (count > this._view_max_messages) { - this._view_entries.splice(index, this._view_entries.length - index).forEach(e => { - clearTimeout(e.update_timer); - e.html_element.remove(); - }); - this._has_older_messages = true; - this._view_older_messages.html_element.toggleClass('shown', true); - break; - } - } - } - chat_available() { - return !this._container_no_permissions_shown && !this._container_is_private_shown && !this._container_no_support_shown; - } - text_send_failed(error) { - log.warn(LogCategory.CHAT, "Failed to send text message! (%o)", error); - //TODO: Log if message send failed? - if (error instanceof CommandResult) { - if (error.id == ErrorID.PERMISSION_ERROR) { - //TODO: Split up between channel_text_message_send permission and no view permission - if (error.json["failed_permid"] == 0) { - this._container_no_permissions_shown = true; - this._container_no_permissions.show(); - this.handle.update_chat_box(); - } - } - } - } - set_flag_private(flag) { - if (this._flag_private === flag) - return; - this._flag_private = flag; - this.update_private_state(); - if (!flag) - this.fetch_last_messages(); - } - update_private_state() { - if (!this._flag_private) { - this._container_is_private.hide(); - this._container_is_private_shown = false; - } - else { - const client = this.handle.handle.handle.getClient(); - if (client && client.currentChannel() && client.currentChannel().channelId === this.channel_id) { - this._container_is_private_shown = false; - this._container_is_private.hide(); - } - else { - this._container_is_private.show(); - this._container_is_private_shown = true; - } - } - } - delete_message(message) { - //TODO A lot of checks! - //conversationmessagedelete cid=2 timestamp_begin= timestamp_end= cldbid= limit=1 - this.handle.handle.handle.serverConnection.send_command('conversationmessagedelete', { - cid: this.channel_id, - cldbid: message.sender_database_id, - timestamp_begin: message.timestamp - 1, - timestamp_end: message.timestamp + 1, - limit: 1 - }).then(() => { - return; /* in general it gets deleted via notify */ - }).catch(error => { - log.error(LogCategory.CHAT, _translations.lfcMsCaE || (_translations.lfcMsCaE = tr("Failed to delete conversation message for conversation %o: %o")), this.channel_id, error); - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.mwRMbLH_ || (_translations.mwRMbLH_ = tr("Failed to delete message")), MessageHelper.formatMessage(_translations.keOq3AeP || (_translations.keOq3AeP = tr("Failed to delete conversation message{:br:}Error: {}")), error)).open(); - }); - log.debug(LogCategory.CLIENT, _translations.MQA1F_tv || (_translations.MQA1F_tv = tr("Deleting text message %o")), message); - } - delete_messages(begin, end, sender, limit) { - let count = 0; - for (const message of this._view_entries.slice()) { - if (!('sender_database_id' in message)) - continue; - const cmsg = message; - if (end != 0 && cmsg.timestamp > end) - continue; - if (begin != 0 && cmsg.timestamp < begin) - break; - if (cmsg.sender_database_id !== sender) - continue; - this._delete_message(message); - if (--count >= limit) - return; - } - //TODO remove in cache? (_last_messages) - } - _delete_message(message) { - if ('html_element' in message) { - const cmessage = message; - cmessage.html_element.remove(); - clearTimeout(cmessage.update_timer); - this._view_entries.remove(message); - } - this._last_messages.remove(message); - } - } - channel.Conversation = Conversation; - class ConversationManager { - constructor(handle) { - this._conversations = []; - this._needed_listener = () => this.update_chat_box(); - this.handle = handle; - this._chat_box = new chat.ChatBox(); - this._build_html_tag(); - this._chat_box.callback_text = text => { - if (!this._current_conversation) - return; - const conv = this._current_conversation; - this.handle.handle.serverConnection.send_command("sendtextmessage", { targetmode: conv.channel_id == 0 ? 3 : 2, cid: conv.channel_id, msg: text }, { process_result: false }).catch(error => { - conv.text_send_failed(error); - }); - }; - this.update_chat_box(); - } - initialize_needed_listener() { - this.handle.handle.permissions.register_needed_permission(PermissionType.B_CLIENT_CHANNEL_TEXTMESSAGE_SEND, this._needed_listener); - this.handle.handle.permissions.register_needed_permission(PermissionType.B_CLIENT_SERVER_TEXTMESSAGE_SEND, this._needed_listener); - } - html_tag() { return this._html_tag; } - destroy() { - if (this.handle.handle.permissions) - this.handle.handle.permissions.unregister_needed_permission(PermissionType.B_CLIENT_CHANNEL_TEXTMESSAGE_SEND, this._needed_listener); - this.handle.handle.permissions.unregister_needed_permission(PermissionType.B_CLIENT_SERVER_TEXTMESSAGE_SEND, this._needed_listener); - this._needed_listener = undefined; - this._chat_box && this._chat_box.destroy(); - this._chat_box = undefined; - this._html_tag && this._html_tag.remove(); - this._html_tag = undefined; - this._container_conversation = undefined; - for (const conversation of this._conversations) - conversation.destroy(); - this._conversations = []; - this._current_conversation = undefined; - } - update_chat_box() { - let flag = true; - flag = flag && !!this._current_conversation; /* test if we have a conversation */ - flag = flag && !!this.handle.handle.permissions; /* test if we got permissions to test with */ - flag = flag && this.handle.handle.permissions.neededPermission(this._current_conversation.channel_id == 0 ? PermissionType.B_CLIENT_SERVER_TEXTMESSAGE_SEND : PermissionType.B_CLIENT_CHANNEL_TEXTMESSAGE_SEND).granted(1); - flag = flag && this._current_conversation.chat_available(); - this._chat_box.set_enabled(flag); - } - _build_html_tag() { - this._html_tag = $("#tmpl_frame_chat_channel").renderTag({ - chatbox: this._chat_box.html_tag() - }); - this._container_conversation = this._html_tag.find(".container-chat"); - this._chat_box.html_tag().on('focus', event => { - if (this._current_conversation) - this._current_conversation.mark_read(); - }); - this.update_input_format_helper(); - } - set_current_channel(channel_id, update_info_frame) { - if (this._current_conversation && this._current_conversation.channel_id === channel_id) - return; - let conversation = this.conversation(channel_id); - this._current_conversation = conversation; - if (this._current_conversation) { - this._container_conversation.children().detach(); - this._container_conversation.append(conversation.html_tag()); - this._current_conversation.fix_view_size(); - this._current_conversation.fix_scroll(false); - this.update_chat_box(); - } - if (typeof (update_info_frame) === "undefined" || update_info_frame) - this.handle.info_frame().update_channel_text(); - } - current_channel() { return this._current_conversation ? this._current_conversation.channel_id : 0; } - /* Used by notifychanneldeleted */ - delete_conversation(channel_id) { - const entry = this._conversations.find(e => e.channel_id === channel_id); - if (!entry) - return; - this._conversations.remove(entry); - entry.html_tag().detach(); - entry.destroy(); - } - reset() { - while (this._conversations.length > 0) - this.delete_conversation(this._conversations[0].channel_id); - } - conversation(channel_id, create) { - let conversation = this._conversations.find(e => e.channel_id === channel_id); - if (!conversation && channel_id >= 0 && (typeof (create) === "undefined" || create)) { - conversation = new Conversation(this, channel_id); - this._conversations.push(conversation); - conversation.fetch_last_messages(); - } - return conversation; - } - on_show() { - if (this._current_conversation) - this._current_conversation.fix_scroll(false); - } - update_input_format_helper() { - const tag = this._html_tag.find(".container-format-helper"); - if (settings.static_global(Settings.KEY_CHAT_ENABLE_MARKDOWN)) { - tag.removeClass("hidden").text(_translations.RbUV5nYv || (_translations.RbUV5nYv = tr("*italic*, **bold**, ~~strikethrough~~, `code`, and more..."))); - } - else { - tag.addClass("hidden"); - } - } - } - channel.ConversationManager = ConversationManager; - })(channel = chat.channel || (chat.channel = {})); -})(chat || (chat = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["878e3b2427be39ef52c1cc697e3e57ad5bc79eb84ce8ccf6202267edc530f2d7"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["878e3b2427be39ef52c1cc697e3e57ad5bc79eb84ce8ccf6202267edc530f2d7"] = "878e3b2427be39ef52c1cc697e3e57ad5bc79eb84ce8ccf6202267edc530f2d7"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "E8EoU11A", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (269,54)" }, { name: "ZjhaCM4A", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (306,56)" }, { name: "CpuEwfbP", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (310,82)" }, { name: "P9gCZwQr", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (310,127)" }, { name: "cypDJ0_f", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (362,55)" }, { name: "jMSYQz4l", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (373,55)" }, { name: "dD2jftte", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (375,42)" }, { name: "XsVWXGSI", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (375,75)" }, { name: "X6UV2IrX", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (392,51)" }, { name: "uGfSbNyd", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (394,38)" }, { name: "RDZR0ORC", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (394,65)" }, { name: "lFZTPJsX", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (401,34)" }, { name: "cjVItg91", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (401,56)" }, { name: "NWuLJecu", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (418,55)" }, { name: "zkm5Y7oM", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (421,42)" }, { name: "iM96OH3b", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (421,71)" }, { name: "QxjOjqK0", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (438,51)" }, { name: "JcVfEfgT", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (441,38)" }, { name: "iZ6FfzUr", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (441,67)" }, { name: "gZJMtY87", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (452,50)" }, { name: "qGMVH8CP", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (517,54)" }, { name: "K933Nc0J", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (541,31)" }, { name: "tSljglBN", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (541,93)" }, { name: "h1azsSHK", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (542,57)" }, { name: "YnsxXHDT", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (542,111)" }, { name: "POFVPD93", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (635,59)" }, { name: "TLoVNGxd", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (638,46)" }, { name: "ZsiAh6Et", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (638,76)" }, { name: "hjLbCBgy", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (729,46)" }, { name: "HCGbFx4a", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (745,51)" }, { name: "vjourOhk", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (762,50)" }, { name: "HDVNAONI", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (768,50)" }, { name: "TNiqTN3i", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/music_info.ts (794,23)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var chat; -(function (chat) { - var PlayerState = connection.voice.PlayerState; - class MusicInfo { - constructor(handle) { - this.update_song_info = 0; /* timestamp when we force update the info */ - this.time_select = { active: false, current_select_time: 0, max_time: 0, current_player_time: 0 }; - this.song_reorder = { active: false, song_id: 0, previous_entry: 0, html: undefined, indicator: $.spawn("div").addClass("reorder-indicator") }; - this._playlist_subscribed = false; - this.events = new events.Registry(); - this.handle = handle; - this.events.enable_debug("music-info"); - this.initialize_listener(); - this._build_html_tag(); - this.set_current_bot(undefined, true); - } - html_tag() { - return this._html_tag; - } - destroy() { - this.set_current_bot(undefined); - this.events.destory(); - this._html_tag && this._html_tag.remove(); - this._html_tag = undefined; - this._current_bot = undefined; - this.previous_frame_content = undefined; - } - format_time(value) { - if (value == 0) - return "--:--:--"; - value /= 1000; - let hours = 0, minutes = 0; - while (value >= 60 * 60) { - hours++; - value -= 60 * 60; - } - while (value >= 60) { - minutes++; - value -= 60; - } - return ("0" + hours).substr(-2) + ":" + ("0" + minutes).substr(-2) + ":" + ("0" + value.toFixed(0)).substr(-2); - } - ; - _build_html_tag() { - this._html_tag = $("#tmpl_frame_chat_music_info").renderTag(); - this._container_playlist = this._html_tag.find(".container-playlist"); - this._html_tag.find(".button-close").on('click', () => { - if (this.previous_frame_content === chat.FrameContent.CLIENT_INFO) - this.previous_frame_content = chat.FrameContent.NONE; - this.handle.set_content(this.previous_frame_content); - }); - this._html_tag.find(".button-reload-playlist").on('click', () => this.events.fire("action_playlist_reload")); - this._html_tag.find(".button-song-add").on('click', () => this.events.fire("action_song_add")); - this._html_tag.find(".thumbnail").on('click', event => { - const image = this._html_tag.find(".thumbnail img"); - const url = image.attr("x-thumbnail-url"); - if (!url) - return; - image_preview.preview_image(decodeURIComponent(url), decodeURIComponent(url)); - }); - { - const button_play = this._html_tag.find(".control-buttons .button-play"); - const button_pause = this._html_tag.find(".control-buttons .button-pause"); - button_play.on('click', () => this.events.fire("action_play")); - button_pause.on('click', () => this.events.fire("action_pause")); - this.events.on(["bot_change", "bot_property_update"], event => { - if (event.type === "bot_property_update" && event.as().properties.indexOf("player_state") == -1) - return; - button_play.toggleClass("hidden", this._current_bot === undefined || this._current_bot.properties.player_state < PlayerState.STOPPING); - }); - this.events.on(["bot_change", "bot_property_update"], event => { - if (event.type === "bot_property_update" && event.as().properties.indexOf("player_state") == -1) - return; - button_pause.toggleClass("hidden", this._current_bot !== undefined && this._current_bot.properties.player_state >= PlayerState.STOPPING); - }); - this._html_tag.find(".control-buttons .button-rewind").on('click', () => this.events.fire("action_rewind")); - this._html_tag.find(".control-buttons .button-forward").on('click', () => this.events.fire("action_forward")); - } - /* timeline updaters */ - { - const container = this._html_tag.find(".container-timeline"); - const timeline = container.find(".timeline"); - const indicator_playtime = container.find(".indicator-playtime"); - const indicator_buffered = container.find(".indicator-buffered"); - const thumb = container.find(".thumb"); - const timestamp_current = container.find(".timestamps .current"); - const timestamp_max = container.find(".timestamps .max"); - thumb.on('mousedown', event => event.button === 0 && this.events.fire("playtime_move_begin")); - this.events.on(["bot_change", "player_song_change", "player_time_update", "playtime_move_end"], event => { - if (!this._current_bot) { - this.time_select.max_time = 0; - indicator_buffered.each((_, e) => { e.style.width = "0%"; }); - indicator_playtime.each((_, e) => { e.style.width = "0%"; }); - thumb.each((_, e) => { e.style.marginLeft = "0%"; }); - timestamp_current.text("--:--:--"); - timestamp_max.text("--:--:--"); - return; - } - if (event.type === "playtime_move_end" && !event.as().canceled) - return; - const update_info = Date.now() > this.update_song_info; - this._current_bot.requestPlayerInfo(update_info ? 1000 : 60 * 1000).then(data => { - if (update_info) - this.display_song_info(data); - let played, buffered; - if (event.type !== "player_time_update") { - played = data.player_replay_index; - buffered = data.player_buffered_index; - } - else { - played = event.as().player_replay_index; - buffered = event.as().player_buffered_index; - } - this.time_select.current_player_time = played; - this.time_select.max_time = data.player_max_index; - timestamp_max.text(data.player_max_index ? this.format_time(data.player_max_index) : "--:--:--"); - if (this.time_select.active) - return; - let wplayed, wbuffered; - if (data.player_max_index) { - wplayed = (played * 100 / data.player_max_index).toFixed(2) + "%"; - wbuffered = (buffered * 100 / data.player_max_index).toFixed(2) + "%"; - timestamp_current.text(this.format_time(played)); - } - else { - wplayed = "100%"; - wbuffered = "100%"; - timestamp_current.text(this.format_time(played)); - } - indicator_buffered.each((_, e) => { e.style.width = wbuffered; }); - indicator_playtime.each((_, e) => { e.style.width = wplayed; }); - thumb.each((_, e) => { e.style.marginLeft = wplayed; }); - }); - }); - const move_callback = (event) => { - const x_min = timeline.offset().left; - const x_max = x_min + timeline.width(); - let current = event.pageX; - if (current < x_min) - current = x_min; - else if (current > x_max) - current = x_max; - const percent = (current - x_min) / (x_max - x_min); - this.time_select.current_select_time = percent * this.time_select.max_time; - timestamp_current.text(this.format_time(this.time_select.current_select_time)); - const w = (percent * 100).toFixed(2) + "%"; - indicator_playtime.each((_, e) => { e.style.width = w; }); - thumb.each((_, e) => { e.style.marginLeft = w; }); - }; - const up_callback = (event) => { - if (event.type === "mouseup") - if (event.button !== 0) - return; - this.events.fire("playtime_move_end", { - canceled: event.type !== "mouseup", - target_time: this.time_select.current_select_time - }); - }; - this.events.on("playtime_move_begin", event => { - if (this.time_select.max_time <= 0) - return; - this.time_select.active = true; - indicator_buffered.each((_, e) => { e.style.width = "0"; }); - document.addEventListener("mousemove", move_callback); - document.addEventListener("mouseleave", up_callback); - document.addEventListener("blur", up_callback); - document.addEventListener("mouseup", up_callback); - document.body.style.userSelect = "none"; - }); - this.events.on(["bot_change", "player_song_change", "playtime_move_end"], event => { - document.removeEventListener("mousemove", move_callback); - document.removeEventListener("mouseleave", up_callback); - document.removeEventListener("blur", up_callback); - document.removeEventListener("mouseup", up_callback); - document.body.style.userSelect = undefined; - this.time_select.active = false; - if (event.type === "playtime_move_end") { - const data = event.as(); - if (data.canceled) - return; - const offset = data.target_time - this.time_select.current_player_time; - this.events.fire(offset > 0 ? "action_forward_ms" : "action_rewind_ms", { units: Math.abs(offset) }); - } - }); - } - /* song info handlers */ - this.events.on(["bot_change", "player_song_change"], event => { - let song; - /* update the player info so we dont get old data */ - if (this._current_bot) { - this.update_song_info = 0; - this._current_bot.requestPlayerInfo(1000).then(data => { - this.display_song_info(data); - }).catch(error => { - log.warn(LogCategory.CLIENT, _translations.E8EoU11A || (_translations.E8EoU11A = tr("Failed to update current song for side bar: %o")), error); - }); - } - if (event.type === "bot_change") { - song = undefined; - } - else { - song = event.as().song; - } - this.display_song_info(song); - }); - } - display_song_info(song) { - if (song) { - if (!song.song_loaded) { - console.log("Awaiting a loaded song info."); - this.update_song_info = 0; - } - else { - console.log("Song info loaded."); - this.update_song_info = Date.now() + 60 * 1000; - } - } - if (!song) - song = new SongInfo(); - const container_thumbnail = this._html_tag.find(".player .container-thumbnail"); - const container_info = this._html_tag.find(".player .container-song-info"); - container_thumbnail.find("img") - .attr("src", song.song_thumbnail || "img/music/no-thumbnail.png") - .attr("x-thumbnail-url", encodeURIComponent(song.song_thumbnail)) - .css("cursor", song.song_thumbnail ? "pointer" : null); - if (song.song_id) - container_info.find(".song-name").text(song.song_title || song.song_url).attr("title", song.song_title || song.song_url); - else - container_info.find(".song-name").text(_translations.ZjhaCM4A || (_translations.ZjhaCM4A = tr("No song selected"))); - if (song.song_description) { - container_info.find(".song-description").removeClass("hidden").text(song.song_description).attr("title", song.song_description); - } - else { - container_info.find(".song-description").addClass("hidden").text(_translations.CpuEwfbP || (_translations.CpuEwfbP = tr("Song has no description"))).attr("title", _translations.P9gCZwQr || (_translations.P9gCZwQr = tr("Song has no description"))); - } - } - initialize_listener() { - //Must come at first! - this.events.on("player_song_change", event => { - if (!this._current_bot) - return; - this._current_bot.requestPlayerInfo(0); /* enforce an info refresh */ - }); - /* bot property listener */ - const callback_property = event => this.events.fire("bot_property_update", { properties: event.properties }); - const callback_time_update = event => this.events.fire("player_time_update", event); - const callback_song_change = event => this.events.fire("player_song_change", event); - this.events.on("bot_change", event => { - if (event.old) { - event.old.events.off(callback_property); - event.old.events.off(callback_time_update); - event.old.events.off(callback_song_change); - event.old.events.disconnect_all(this.events); - } - if (event.new) { - event.new.events.on("property_update", callback_property); - event.new.events.on("music_status_update", callback_time_update); - event.new.events.on("music_song_change", callback_song_change); - event.new.events.connect("playlist_song_add", this.events); - event.new.events.connect("playlist_song_remove", this.events); - event.new.events.connect("playlist_song_reorder", this.events); - event.new.events.connect("playlist_song_loaded", this.events); - } - }); - /* basic player actions */ - { - const action_map = { - "action_play": 1, - "action_pause": 2, - "action_forward": 3, - "action_rewind": 4, - "action_forward_ms": 5, - "action_rewind_ms": 6 - }; - this.events.on(Object.keys(action_map), event => { - if (!this._current_bot) - return; - const action_id = action_map[event.type]; - if (typeof action_id === "undefined") { - log.warn(LogCategory.GENERAL, _translations.cypDJ0_f || (_translations.cypDJ0_f = tr("Invalid music bot action event detected: %s. This should not happen!")), event.type); - return; - } - const data = { - bot_id: this._current_bot.properties.client_database_id, - action: action_id, - units: event.units - }; - this.handle.handle.serverConnection.send_command("musicbotplayeraction", data).catch(error => { - if (error instanceof CommandResult && error.id === ErrorID.PERMISSION_ERROR) - return; - log.error(LogCategory.CLIENT, _translations.jMSYQz4l || (_translations.jMSYQz4l = tr("Failed to perform action %s on bot: %o")), event.type, error); - //TODO: Better error dialog - createErrorModal(_translations.dD2jftte || (_translations.dD2jftte = tr("Failed to perform action.")), _translations.XsVWXGSI || (_translations.XsVWXGSI = tr("Failed to perform action for music bot."))).open(); - }); - }); - } - this.events.on("action_song_set", event => { - if (!this._current_bot) - return; - const connection = this.handle.handle.serverConnection; - if (!connection || !connection.connected()) - return; - connection.send_command("playlistsongsetcurrent", { - playlist_id: this._current_bot.properties.client_playlist_id, - song_id: event.song_id - }).catch(error => { - if (error instanceof CommandResult && error.id === ErrorID.PERMISSION_ERROR) - return; - log.error(LogCategory.CLIENT, _translations.X6UV2IrX || (_translations.X6UV2IrX = tr("Failed to set current song on bot: %o")), event.type, error); - //TODO: Better error dialog - createErrorModal(_translations.uGfSbNyd || (_translations.uGfSbNyd = tr("Failed to set song.")), _translations.RDZR0ORC || (_translations.RDZR0ORC = tr("Failed to set current replaying song."))).open(); - }); - }); - this.events.on("action_song_add", () => { - if (!this._current_bot) - return; - createInputModal(_translations.lFZTPJsX || (_translations.lFZTPJsX = tr("Enter song URL")), _translations.cjVItg91 || (_translations.cjVItg91 = tr("Please enter the target song URL")), text => { - try { - new URL(text); - return true; - } - catch (error) { - return false; - } - }, result => { - if (!result || !this._current_bot) - return; - const connection = this.handle.handle.serverConnection; - connection.send_command("playlistsongadd", { - playlist_id: this._current_bot.properties.client_playlist_id, - url: result - }).catch(error => { - if (error instanceof CommandResult && error.id === ErrorID.PERMISSION_ERROR) - return; - log.error(LogCategory.CLIENT, _translations.NWuLJecu || (_translations.NWuLJecu = tr("Failed to add song to bot playlist: %o")), error); - //TODO: Better error description - createErrorModal(_translations.zkm5Y7oM || (_translations.zkm5Y7oM = tr("Failed to insert song")), _translations.iM96OH3b || (_translations.iM96OH3b = tr("Failed to append song to the playlist."))).open(); - }); - }).open(); - }); - this.events.on("action_song_delete", event => { - if (!this._current_bot) - return; - const connection = this.handle.handle.serverConnection; - if (!connection || !connection.connected()) - return; - connection.send_command("playlistsongremove", { - playlist_id: this._current_bot.properties.client_playlist_id, - song_id: event.song_id - }).catch(error => { - if (error instanceof CommandResult && error.id === ErrorID.PERMISSION_ERROR) - return; - log.error(LogCategory.CLIENT, _translations.QxjOjqK0 || (_translations.QxjOjqK0 = tr("Failed to delete song from bot playlist: %o")), error); - //TODO: Better error description - createErrorModal(_translations.JcVfEfgT || (_translations.JcVfEfgT = tr("Failed to delete song")), _translations.iZ6FfzUr || (_translations.iZ6FfzUr = tr("Failed to remove song from the playlist."))).open(); - }); - }); - /* bot subscription */ - this.events.on("bot_change", () => { - const connection = this.handle.handle.serverConnection; - if (!connection || !connection.connected()) - return; - const bot_id = this._current_bot ? this._current_bot.properties.client_database_id : 0; - this.handle.handle.serverConnection.send_command("musicbotsetsubscription", { bot_id: bot_id }).catch(error => { - log.warn(LogCategory.CLIENT, _translations.gZJMtY87 || (_translations.gZJMtY87 = tr("Failed to subscribe to displayed bot within the side bar: %o")), error); - }); - }); - /* playlist stuff */ - this.events.on(["bot_change", "action_playlist_reload"], event => { - this.playlist_subscribe(true); - this.update_playlist(); - }); - this.events.on("playlist_song_add", event => { - const animation = typeof event.insert_effect === "boolean" ? event.insert_effect : true; - const html_entry = this.build_playlist_entry(event.song, animation); - const playlist = this._container_playlist.find(".playlist"); - const previous = playlist.find(".entry[song-id=" + event.song.song_previous_song_id + "]"); - if (previous.length) - html_entry.insertAfter(previous); - else - html_entry.appendTo(playlist); - if (event.song.song_loaded) - this.events.fire("playlist_song_loaded", { - html_entry: html_entry, - metadata: event.song.song_metadata, - success: true, - song_id: event.song.song_id - }); - if (animation) - setTimeout(() => html_entry.addClass("shown"), 50); - }); - this.events.on("playlist_song_remove", event => { - const playlist = this._container_playlist.find(".playlist"); - const song = playlist.find(".entry[song-id=" + event.song_id + "]"); - song.addClass("deleted"); - setTimeout(() => song.remove(), 5000); /* to play some animations */ - }); - this.events.on("playlist_song_reorder", event => { - const playlist = this._container_playlist.find(".playlist"); - const entry = playlist.find(".entry[song-id=" + event.song_id + "]"); - if (!entry) - return; - console.log(event); - const previous = playlist.find(".entry[song-id=" + event.previous_song_id + "]"); - if (previous.length) { - entry.insertAfter(previous); - } - else { - entry.insertBefore(playlist.find(".entry")[0]); - } - }); - this.events.on("playlist_song_loaded", event => { - const entry = event.html_entry || this._container_playlist.find(".playlist .entry[song-id=" + event.song_id + "]"); - const thumbnail = entry.find(".container-thumbnail img"); - const name = entry.find(".name"); - const description = entry.find(".description"); - const length = entry.find(".length"); - if (event.success) { - let meta; - try { - meta = JSON.parse(event.metadata); - } - catch (error) { - log.warn(LogCategory.CLIENT, _translations.qGMVH8CP || (_translations.qGMVH8CP = tr("Failed to decode song metadata"))); - meta = { - description: "", - title: "", - metadata: {}, - length: 0, - url: entry.attr("song-url") - }; - } - if (!meta.title && meta.description) { - meta.title = meta.description.split("\n")[0]; - meta.description = meta.description.split("\n").slice(1).join("\n"); - } - meta.title = meta.title || meta.url; - name.text(meta.title); - description.text(meta.description); - length.text(this.format_time(meta.length || 0)); - if (meta.thumbnail) { - thumbnail.attr("src", meta.thumbnail) - .attr("x-thumbnail-url", encodeURIComponent(meta.thumbnail)); - } - } - else { - name.text((_translations.K933Nc0J || (_translations.K933Nc0J = tr("failed to load "))) + entry.attr("song-url")).attr("title", (_translations.tSljglBN || (_translations.tSljglBN = tr("failed to load "))) + entry.attr("song-url")); - description.text(event.error_msg || (_translations.h1azsSHK || (_translations.h1azsSHK = tr("unknown error")))).attr("title", event.error_msg || (_translations.YnsxXHDT || (_translations.YnsxXHDT = tr("unknown error")))); - } - }); - /* song reorder */ - { - const move_callback = (event) => { - if (!this.song_reorder.html) - return; - this.song_reorder.html.each((_, e) => { - e.style.left = (event.pageX - this.song_reorder.mouse.x) + "px"; - e.style.top = (event.pageY - this.song_reorder.mouse.y) + "px"; - }); - const entries = this._container_playlist.find(".playlist .entry"); - let before; - for (const entry of entries) { - const off = $(entry).offset().top; - if (off > event.pageY) { - this.song_reorder.indicator.insertBefore(entry); - this.song_reorder.previous_entry = before ? parseInt(before.attributes.getNamedItem("song-id").value) : 0; - return; - } - before = entry; - } - this.song_reorder.indicator.insertAfter(entries.last()); - this.song_reorder.previous_entry = before ? parseInt(before.attributes.getNamedItem("song-id").value) : 0; - }; - const up_callback = (event) => { - if (event.type === "mouseup") - if (event.button !== 0) - return; - this.events.fire("reorder_end", { - canceled: event.type !== "mouseup", - song_id: this.song_reorder.song_id, - entry: this.song_reorder.html, - previous_entry: this.song_reorder.previous_entry - }); - }; - this.events.on("reorder_begin", event => { - this.song_reorder.song_id = event.song_id; - this.song_reorder.html = event.entry; - const width = this.song_reorder.html.width() + "px"; - this.song_reorder.html.each((_, e) => { e.style.width = width; }); - this.song_reorder.active = true; - this.song_reorder.html.addClass("reordering"); - document.addEventListener("mousemove", move_callback); - document.addEventListener("mouseleave", up_callback); - document.addEventListener("blur", up_callback); - document.addEventListener("mouseup", up_callback); - document.body.style.userSelect = "none"; - }); - this.events.on(["bot_change", "playlist_song_remove", "reorder_end"], event => { - if (event.type === "playlist_song_remove" && event.as().song_id !== this.song_reorder.song_id) - return; - document.removeEventListener("mousemove", move_callback); - document.removeEventListener("mouseleave", up_callback); - document.removeEventListener("blur", up_callback); - document.removeEventListener("mouseup", up_callback); - document.body.style.userSelect = undefined; - this.song_reorder.active = false; - this.song_reorder.indicator.remove(); - if (this.song_reorder.html) { - this.song_reorder.html.each((_, e) => { - e.style.width = null; - e.style.left = null; - e.style.top = null; - }); - this.song_reorder.html.removeClass("reordering"); - } - if (event.type === "reorder_end") { - const data = event.as(); - if (data.canceled) - return; - const connection = this.handle.handle.serverConnection; - if (!connection || !connection.connected()) - return; - if (!this._current_bot) - return; - connection.send_command("playlistsongreorder", { - playlist_id: this._current_bot.properties.client_playlist_id, - song_id: data.song_id, - song_previous_song_id: data.previous_entry - }).catch(error => { - if (error instanceof CommandResult && error.id === ErrorID.PERMISSION_ERROR) - return; - log.error(LogCategory.CLIENT, _translations.POFVPD93 || (_translations.POFVPD93 = tr("Failed to add song to bot playlist: %o")), error); - //TODO: Better error description - createErrorModal(_translations.TLoVNGxd || (_translations.TLoVNGxd = tr("Failed to reorder song")), _translations.ZsiAh6Et || (_translations.ZsiAh6Et = tr("Failed to reorder song within the playlist."))).open(); - }); - console.log("Reorder to %d", data.previous_entry); - } - }); - this.events.on(["bot_change", "player_song_change"], event => { - if (!this._current_bot) { - this._html_tag.find(".playlist .current-song").removeClass("current-song"); - return; - } - this._current_bot.requestPlayerInfo(1000).then(data => { - const song_id = data ? data.song_id : 0; - this._html_tag.find(".playlist .current-song").removeClass("current-song"); - this._html_tag.find(".playlist .entry[song-id=" + song_id + "]").addClass("current-song"); - }); - }); - } - } - set_current_bot(client, enforce) { - if (client) - client.updateClientVariables(); /* just to ensure */ - if (client === this._current_bot && (typeof (enforce) === "undefined" || !enforce)) - return; - const old = this._current_bot; - this._current_bot = client; - this.events.fire("bot_change", { - new: client, - old: old - }); - } - current_bot() { - return this._current_bot; - } - sort_songs(data) { - const result = []; - let appendable = []; - for (const song of data) { - if (song.song_id == 0 || data.findIndex(e => e.song_id === song.song_previous_song_id) == -1) - result.push(song); - else - appendable.push(song); - } - let iters; - while (appendable.length) { - do { - iters = 0; - const left = []; - for (const song of appendable) { - const index = data.findIndex(e => e.song_id === song.song_previous_song_id); - if (index == -1) { - left.push(song); - continue; - } - result.splice(index + 1, 0, song); - iters++; - } - appendable = left; - } while (iters > 0); - if (appendable.length) - result.push(appendable.pop_front()); - } - return result; - } - /* playlist stuff */ - update_playlist() { - this.playlist_subscribe(true); - this._container_playlist.find(".overlay").toggleClass("hidden", true); - const playlist = this._container_playlist.find(".playlist"); - playlist.empty(); - if (!this.handle.handle.serverConnection || !this.handle.handle.serverConnection.connected() || !this._current_bot) { - this._container_playlist.find(".overlay-empty").removeClass("hidden"); - return; - } - const overlay_loading = this._container_playlist.find(".overlay-loading"); - overlay_loading.removeClass("hidden"); - this._current_bot.updateClientVariables(true).catch(error => { - log.warn(LogCategory.CLIENT, _translations.hjLbCBgy || (_translations.hjLbCBgy = tr("Failed to update music bot variables: %o")), error); - }).then(() => { - this.handle.handle.serverConnection.command_helper.request_playlist_songs(this._current_bot.properties.client_playlist_id).then(songs => { - this.playlist_subscribe(false); /* we're allowed to see the playlist */ - if (!songs) { - this._container_playlist.find(".overlay-empty").removeClass("hidden"); - return; - } - for (const song of this.sort_songs(songs)) - this.events.fire("playlist_song_add", { song: song, insert_effect: false }); - }).catch(error => { - if (error instanceof CommandResult && error.id === ErrorID.PERMISSION_ERROR) { - this._container_playlist.find(".overlay-no-permissions").removeClass("hidden"); - return; - } - log.error(LogCategory.CLIENT, _translations.HCGbFx4a || (_translations.HCGbFx4a = tr("Failed to load bot playlist: %o")), error); - this._container_playlist.find(".overlay.overlay-error").removeClass("hidden"); - }).then(() => { - overlay_loading.addClass("hidden"); - }); - }); - } - playlist_subscribe(unsubscribe) { - if (!this.handle.handle.serverConnection) - return; - if (unsubscribe || !this._current_bot) { - if (!this._playlist_subscribed) - return; - this._playlist_subscribed = false; - this.handle.handle.serverConnection.send_command("playlistsetsubscription", { playlist_id: 0 }).catch(error => { - log.warn(LogCategory.CLIENT, _translations.vjourOhk || (_translations.vjourOhk = tr("Failed to unsubscribe from last playlist: %o")), error); - }); - } - else { - this.handle.handle.serverConnection.send_command("playlistsetsubscription", { - playlist_id: this._current_bot.properties.client_playlist_id - }).then(() => this._playlist_subscribed = true).catch(error => { - log.warn(LogCategory.CLIENT, _translations.HDVNAONI || (_translations.HDVNAONI = tr("Failed to subscribe to bots playlist: %o")), error); - }); - } - } - build_playlist_entry(data, insert_effect) { - const tag = $("#tmpl_frame_music_playlist_entry").renderTag(); - tag.attr({ - "song-id": data.song_id, - "song-url": data.song_url - }); - const thumbnail = tag.find(".container-thumbnail img"); - const name = tag.find(".name"); - const description = tag.find(".description"); - const length = tag.find(".length"); - tag.find(".button-delete").on('click', () => this.events.fire("action_song_delete", { song_id: data.song_id })); - tag.find(".container-thumbnail").on('click', event => { - const target = tag.find(".container-thumbnail img"); - const url = target.attr("x-thumbnail-url"); - if (!url) - return; - image_preview.preview_image(decodeURIComponent(url), decodeURIComponent(url)); - }); - tag.on('dblclick', event => this.events.fire("action_song_set", { song_id: data.song_id })); - name.text(_translations.TNiqTN3i || (_translations.TNiqTN3i = tr("loading..."))); - description.text(data.song_url); - tag.on('mousedown', event => { - if (event.button !== 0) - return; - this.song_reorder.mouse = { - x: event.pageX, - y: event.pageY - }; - const baseOff = tag.offset(); - const off = { x: event.pageX - baseOff.left, y: event.pageY - baseOff.top }; - const move_listener = (event) => { - const distance = Math.pow(event.pageX - this.song_reorder.mouse.x, 2) + Math.pow(event.pageY - this.song_reorder.mouse.y, 2); - if (distance < 50) - return; - document.removeEventListener("blur", up_listener); - document.removeEventListener("mouseup", up_listener); - document.removeEventListener("mousemove", move_listener); - this.song_reorder.mouse = off; - this.events.fire("reorder_begin", { - entry: tag, - song_id: data.song_id - }); - }; - const up_listener = event => { - if (event.type === "mouseup" && event.button !== 0) - return; - document.removeEventListener("blur", up_listener); - document.removeEventListener("mouseup", up_listener); - document.removeEventListener("mousemove", move_listener); - }; - document.addEventListener("blur", up_listener); - document.addEventListener("mouseup", up_listener); - document.addEventListener("mousemove", move_listener); - }); - if (this._current_bot) { - this._current_bot.requestPlayerInfo(60 * 1000).then(pdata => { - if (pdata.song_id === data.song_id) - tag.addClass("current-song"); - }); - } - if (insert_effect) { - tag.removeClass("shown"); - tag.addClass("animation"); - } - return tag; - } - } - chat.MusicInfo = MusicInfo; -})(chat || (chat = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["52993fa72b08c5cb4366d0fab99788e3d4126eddfe5dfaa34a89c3679daa82be"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["52993fa72b08c5cb4366d0fab99788e3d4126eddfe5dfaa34a89c3679daa82be"] = "52993fa72b08c5cb4366d0fab99788e3d4126eddfe5dfaa34a89c3679daa82be"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "pRHnlG22", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (109,44)" }, { name: "U6OPHjhG", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (116,44)" }, { name: "IQ73bGpZ", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (302,65)" }, { name: "vAvu9aXX", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (308,65)" }, { name: "Usc8Z0dA", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (417,70)" }, { name: "usbbbJmF", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (419,70)" }, { name: "YB1tzr5O", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (436,78)" }, { name: "zIQR20pQ", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (438,78)" }, { name: "wcP0LRC8", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (451,61)" }, { name: "bhESUduw", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (489,28)" }, { name: "wUufMAi5", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (531,85)" }, { name: "OEugjVYr", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (558,27)" }, { name: "rQyF4uB3", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (560,87)" }, { name: "aQ79wdKI", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (560,129)" }, { name: "YpJr2VKc", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (562,27)" }, { name: "kY_eo4IV", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (564,27)" }, { name: "qCa4M1e6", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (624,44)" }, { name: "a3TO9oPJ", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (683,48)" }, { name: "oXV6BFdj", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (691,48)" }, { name: "P7dP7UKz", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (782,51)" }, { name: "HQmGkDk1", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (791,51)" }, { name: "XZu8l5EV", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (794,47)" }, { name: "WTCSSX6D", path: "D:/TeaSpeak/web/shared/js/ui/frames/side/private_conversations.ts (890,48)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/* the bar on the right with the chats (Channel & Client) */ -var chat; -(function (chat) { - let PrivateConversationState; - (function (PrivateConversationState) { - PrivateConversationState[PrivateConversationState["OPEN"] = 0] = "OPEN"; - PrivateConversationState[PrivateConversationState["CLOSED"] = 1] = "CLOSED"; - PrivateConversationState[PrivateConversationState["DISCONNECTED"] = 2] = "DISCONNECTED"; - PrivateConversationState[PrivateConversationState["DISCONNECTED_SELF"] = 3] = "DISCONNECTED_SELF"; - })(PrivateConversationState = chat.PrivateConversationState || (chat.PrivateConversationState = {})); - class PrivateConveration { - constructor(handle, client_unique_id, client_name, client_id) { - this._message_history = []; - this._last_typing = 0; - this._typing_timeout = 4000; - this._displayed_messages = []; - this._displayed_messages_length = 500; - this.handle = handle; - this.client_name = client_name; - this.client_unique_id = client_unique_id; - this.client_id = client_id; - this._state = PrivateConversationState.OPEN; - this._build_entry_tag(); - this.set_unread_flag(false); - this.load_history(); - } - history_key() { return this.handle.handle.handle.channelTree.server.properties.virtualserver_unique_identifier + "_" + this.client_unique_id; } - load_history() { - chat.helpers.history.load_history(this.history_key()).then((data) => { - if (!data) - return; - const flag_unread = !!this._spacer_unread_message; - for (const message of data.slice(data.length > this._displayed_messages_length ? data.length - this._displayed_messages_length : 0)) { - this.append_message(message.message, { - type: message.sender, - name: message.sender_name, - unique_id: message.sender_unique_id, - client_id: message.sender_client_id - }, new Date(message.timestamp), false); - } - if (!flag_unread) - this.set_unread_flag(false); - this.fix_scroll(false); - this.save_history(); - }).catch(error => { - log.warn(LogCategory.CHAT, _translations.pRHnlG22 || (_translations.pRHnlG22 = tr("Failed to load private conversation history for user %s on server %s: %o")), this.client_unique_id, this.handle.handle.handle.channelTree.server.properties.virtualserver_unique_identifier, error); - }); - } - save_history() { - chat.helpers.history.save_history(this.history_key(), this._message_history).catch(error => { - log.warn(LogCategory.CHAT, _translations.U6OPHjhG || (_translations.U6OPHjhG = tr("Failed to save private conversation history for user %s on server %s: %o")), this.client_unique_id, this.handle.handle.handle.channelTree.server.properties.virtualserver_unique_identifier, error); - }); - } - entry_tag() { - return this._html_entry_tag; - } - destroy() { - this._html_message_container = undefined; /* we do not own this container */ - this.clear_messages(false); - this._html_entry_tag && this._html_entry_tag.remove(); - this._html_entry_tag = undefined; - this._message_history = undefined; - if (this._typing_timeout_task) - clearTimeout(this._typing_timeout_task); - } - _2d_flat(array) { - const result = []; - for (const a of array) - result.push(...a.filter(e => typeof (e) !== "undefined")); - return result; - } - messages_tags() { - return this._2d_flat(this._displayed_messages.slice().reverse().map(e => [ - e.tag_timepointer ? e.tag_timepointer.html_tag : undefined, - e.tag_unread ? e.tag_unread.html_tag : undefined, - e.tag_message - ])); - } - append_message(message, sender, timestamp, save_history) { - const message_date = timestamp || new Date(); - const message_timestamp = message_date.getTime(); - const packed_message = { - message: message, - sender: sender.type, - sender_name: sender.name, - sender_client_id: sender.client_id, - sender_unique_id: sender.unique_id, - timestamp: message_date.getTime(), - message_id: 'undefined' - }; - /* first of all register message in message history */ - { - let index = 0; - for (; index < this._message_history.length; index++) { - if (this._message_history[index].timestamp > message_timestamp) - continue; - this._message_history.splice(index, 0, packed_message); - break; - } - if (index > 100) - return; /* message is too old to be displayed */ - if (index >= this._message_history.length) - this._message_history.push(packed_message); - while (this._message_history.length > 100) - this._message_history.pop(); - } - if (sender.type === "partner") { - clearTimeout(this._typing_timeout_task); - this._typing_timeout_task = 0; - if (this.typing_active()) { - this._last_typing = 0; - this.typing_expired(); - } - else { - this._update_message_timestamp(); - } - } - else { - this._update_message_timestamp(); - } - if (typeof (save_history) !== "boolean" || save_history) - this.save_history(); - /* insert in view */ - { - const basic_view_entry = this._build_message(packed_message); - this._register_displayed_message({ - timestamp: basic_view_entry.timestamp, - message: basic_view_entry, - message_type: "message", - tag_message: basic_view_entry.html_tag, - tag_timepointer: undefined, - tag_unread: undefined - }, true); - } - } - _displayed_message_first_tag(message) { - const tp = message.tag_timepointer ? message.tag_timepointer.html_tag : undefined; - const tu = message.tag_unread ? message.tag_unread.html_tag : undefined; - return tp || tu || message.tag_message; - } - _destroy_displayed_message(message, update_pointers) { - if (update_pointers) { - const index = this._displayed_messages.indexOf(message); - if (index != -1 && index > 0) { - const next = this._displayed_messages[index - 1]; - if (!next.tag_timepointer && message.tag_timepointer) { - next.tag_timepointer = message.tag_timepointer; - message.tag_timepointer = undefined; - } - if (!next.tag_unread && message.tag_unread) { - this._spacer_unread_message = next; - next.tag_unread = message.tag_unread; - message.tag_unread = undefined; - } - } - if (message == this._spacer_unread_message) - this._spacer_unread_message = undefined; - } - this._displayed_messages.remove(message); - if (message.tag_timepointer) - this._destroy_view_entry(message.tag_timepointer); - if (message.tag_unread) - this._destroy_view_entry(message.tag_unread); - this._destroy_view_entry(message.message); - } - clear_messages(save) { - this._message_history = []; - while (this._displayed_messages.length > 0) { - this._destroy_displayed_message(this._displayed_messages[0], false); - } - this._spacer_unread_message = undefined; - this._update_message_timestamp(); - if (save) - this.save_history(); - } - fix_scroll(animate) { - if (!this._html_message_container) - return; - let offset; - if (this._spacer_unread_message) { - offset = this._displayed_message_first_tag(this._spacer_unread_message)[0].offsetTop; - } - else if (typeof (this._scroll_position) !== "undefined") { - offset = this._scroll_position; - } - else { - offset = this._html_message_container[0].scrollHeight; - } - if (animate) { - this._html_message_container.stop(true).animate({ - scrollTop: offset - }, 'slow'); - } - else { - this._html_message_container.stop(true).scrollTop(offset); - } - } - _update_message_timestamp() { - if (this._last_message_updater_id) - clearTimeout(this._last_message_updater_id); - if (!this._html_entry_tag) - return; /* we got deleted, not need for updates */ - if (this.typing_active()) { - this._html_entry_tag.find(".last-message").text(_translations.IQ73bGpZ || (_translations.IQ73bGpZ = tr("currently typing..."))); - return; - } - const last_message = this._message_history[0]; - if (!last_message) { - this._html_entry_tag.find(".last-message").text(_translations.vAvu9aXX || (_translations.vAvu9aXX = tr("no history"))); - return; - } - const timestamp = new Date(last_message.timestamp); - let time = chat.format.date.format_chat_time(timestamp); - this._html_entry_tag.find(".last-message").text(time.result); - if (time.next_update > 0) { - this._last_message_updater_id = setTimeout(() => this._update_message_timestamp(), time.next_update); - } - else { - this._last_message_updater_id = 0; - } - } - _destroy_message(message) { - if (message.time_update_id) - clearTimeout(message.time_update_id); - } - _build_message(message) { - const result = message; - if (result.html_tag) - return result; - const timestamp = new Date(message.timestamp); - let time = chat.format.date.format_chat_time(timestamp); - result.html_tag = $("#tmpl_frame_chat_private_message").renderTag({ - timestamp: time.result, - message_id: message.message_id, - client_name: htmltags.generate_client_object({ - add_braces: false, - client_name: message.sender_name, - client_unique_id: message.sender_unique_id, - client_id: message.sender_client_id - }), - message: MessageHelper.bbcode_chat(message.message), - avatar: this.handle.handle.handle.fileManager.avatars.generate_chat_tag({ id: message.sender_client_id }, message.sender_unique_id) - }); - if (time.next_update > 0) { - const _updater = () => { - time = chat.format.date.format_chat_time(timestamp); - result.html_tag.find(".info .timestamp").text(time.result); - if (time.next_update > 0) - result.time_update_id = setTimeout(_updater, time.next_update); - else - result.time_update_id = 0; - }; - result.time_update_id = setTimeout(_updater, time.next_update); - } - else { - result.time_update_id = 0; - } - return result; - } - _build_spacer(message, type) { - const tag = $("#tmpl_frame_chat_private_spacer").renderTag({ - message: message - }).addClass("type-" + type); - return { - html_tag: tag - }; - } - _register_displayed_message(message, update_new) { - const message_date = new Date(message.timestamp); - /* before := older message; after := newer message */ - let entry_before, entry_after; - let index = 0; - for (; index < this._displayed_messages.length; index++) { - if (this._displayed_messages[index].timestamp > message.timestamp) - continue; - entry_after = index > 0 ? this._displayed_messages[index - 1] : undefined; - entry_before = this._displayed_messages[index]; - this._displayed_messages.splice(index, 0, message); - break; - } - if (index >= this._displayed_messages_length) { - return; /* message is out of view region */ - } - if (index >= this._displayed_messages.length) { - entry_before = undefined; - entry_after = this._displayed_messages.last(); - this._displayed_messages.push(message); - } - while (this._displayed_messages.length > this._displayed_messages_length) - this._destroy_displayed_message(this._displayed_messages.last(), true); - const flag_new_message = update_new && index == 0 && (message.message_type === "spacer" || message.message.sender === "partner"); - /* Timeline for before - now */ - { - let append_pointer = false; - if (entry_before) { - if (!chat.helpers.date.same_day(message.timestamp, entry_before.timestamp)) { - append_pointer = true; - } - } - else { - append_pointer = true; - } - if (append_pointer) { - const diff = chat.format.date.date_format(message_date, new Date()); - if (diff == chat.format.date.ColloquialFormat.YESTERDAY) - message.tag_timepointer = this._build_spacer(_translations.Usc8Z0dA || (_translations.Usc8Z0dA = tr("Yesterday")), "date"); - else if (diff == chat.format.date.ColloquialFormat.TODAY) - message.tag_timepointer = this._build_spacer(_translations.usbbbJmF || (_translations.usbbbJmF = tr("Today")), "date"); - else if (diff == chat.format.date.ColloquialFormat.GENERAL) - message.tag_timepointer = this._build_spacer(chat.format.date.format_date_general(message_date, false), "date"); - } - } - /* Timeline not and after */ - { - if (entry_after) { - if (chat.helpers.date.same_day(message_date, entry_after.timestamp)) { - if (entry_after.tag_timepointer) { - this._destroy_view_entry(entry_after.tag_timepointer); - entry_after.tag_timepointer = undefined; - } - } - else if (!entry_after.tag_timepointer) { - const diff = chat.format.date.date_format(new Date(entry_after.timestamp), new Date()); - if (diff == chat.format.date.ColloquialFormat.YESTERDAY) - entry_after.tag_timepointer = this._build_spacer(_translations.YB1tzr5O || (_translations.YB1tzr5O = tr("Yesterday")), "date"); - else if (diff == chat.format.date.ColloquialFormat.TODAY) - entry_after.tag_timepointer = this._build_spacer(_translations.zIQR20pQ || (_translations.zIQR20pQ = tr("Today")), "date"); - else if (diff == chat.format.date.ColloquialFormat.GENERAL) - entry_after.tag_timepointer = this._build_spacer(chat.format.date.format_date_general(message_date, false), "date"); - entry_after.tag_timepointer.html_tag.insertBefore(entry_after.tag_message); - } - } - } - /* new message flag */ - if (flag_new_message) { - if (!this._spacer_unread_message) { - this._spacer_unread_message = message; - message.tag_unread = this._build_spacer(_translations.wcP0LRC8 || (_translations.wcP0LRC8 = tr("Unread messages")), "new"); - this.set_unread_flag(true); - } - } - if (this._html_message_container) { - if (entry_before) { - message.tag_message.insertAfter(entry_before.tag_message); - } - else if (entry_after) { - message.tag_message.insertBefore(this._displayed_message_first_tag(entry_after)); - } - else { - this._html_message_container.append(message.tag_message); - } - /* first time pointer */ - if (message.tag_timepointer) - message.tag_timepointer.html_tag.insertBefore(message.tag_message); - /* the unread */ - if (message.tag_unread) - message.tag_unread.html_tag.insertBefore(message.tag_message); - } - this.fix_scroll(true); - } - _destroy_view_entry(entry) { - if (!entry.html_tag) - return; - entry.html_tag.remove(); - if ('sender' in entry) - this._destroy_message(entry); - } - _build_entry_tag() { - this._html_entry_tag = $("#tmpl_frame_chat_private_entry").renderTag({ - client_name: this.client_name, - last_time: _translations.bhESUduw || (_translations.bhESUduw = tr("error no timestamp")), - avatar: this.handle.handle.handle.fileManager.avatars.generate_chat_tag({ id: this.client_id }, this.client_unique_id) - }); - this._html_entry_tag.on('click', event => { - if (event.isDefaultPrevented()) - return; - this.handle.set_selected_conversation(this); - }); - this._html_entry_tag.find('.button-close').on('click', event => { - event.preventDefault(); - this.close_conversation(); - }); - this._update_message_timestamp(); - } - update_avatar() { - const container = this._html_entry_tag.find(".container-avatar"); - container.find(".avatar").remove(); - container.append(this.handle.handle.handle.fileManager.avatars.generate_chat_tag({ id: this.client_id }, this.client_unique_id)); - } - close_conversation() { - this.handle.delete_conversation(this, true); - } - set_client_name(name) { - if (this.client_name === name) - return; - this.client_name = name; - this._html_entry_tag.find(".client-name").text(name); - } - set_unread_flag(flag, update_chat_counter) { - /* unread message pointer */ - if (flag != (typeof (this._spacer_unread_message) !== "undefined")) { - if (flag) { - if (this._displayed_messages.length > 0) /* without messages we cant be unread */ - return; - if (!this._spacer_unread_message) { - this._spacer_unread_message = this._displayed_messages[0]; - this._spacer_unread_message.tag_unread = this._build_spacer(_translations.wUufMAi5 || (_translations.wUufMAi5 = tr("Unread messages")), "new"); - this._spacer_unread_message.tag_unread.html_tag.insertBefore(this._spacer_unread_message.tag_message); - } - } - else { - const ctree = this.handle.handle.handle.channelTree; - if (ctree && ctree.tag_tree() && this.client_id) - ctree.tag_tree().find(".marker-text-unread[private-conversation='" + this.client_id + "']").addClass("hidden"); - if (this._spacer_unread_message) { - this._destroy_view_entry(this._spacer_unread_message.tag_unread); - this._spacer_unread_message.tag_unread = undefined; - this._spacer_unread_message = undefined; - } - } - } - /* general notify */ - this._html_entry_tag.toggleClass("unread", flag); - if (typeof (update_chat_counter) !== "boolean" || update_chat_counter) - this.handle.handle.info_frame().update_chat_counter(); - } - is_unread() { return !!this._spacer_unread_message; } - _append_state_change(state) { - let message; - if (state == "closed") - message = _translations.OEugjVYr || (_translations.OEugjVYr = tr("Your chat partner has closed the conversation")); - else if (state == "reconnect") - message = this._state === PrivateConversationState.DISCONNECTED_SELF ? _translations.rQyF4uB3 || (_translations.rQyF4uB3 = tr("You've reconnected to the server")) : _translations.aQ79wdKI || (_translations.aQ79wdKI = tr("Your chat partner has reconnected")); - else if (state === "disconnect") - message = _translations.YpJr2VKc || (_translations.YpJr2VKc = tr("Your chat partner has disconnected")); - else - message = _translations.kY_eo4IV || (_translations.kY_eo4IV = tr("You've disconnected from the server")); - const spacer = this._build_spacer(message, state); - this._register_displayed_message({ - timestamp: Date.now(), - message: spacer, - message_type: "spacer", - tag_message: spacer.html_tag, - tag_timepointer: undefined, - tag_unread: undefined - }, state === "disconnect"); - } - state() { - return this._state; - } - set_state(state) { - if (this._state == state) - return; - if (state == PrivateConversationState.DISCONNECTED) { - this._append_state_change("disconnect"); - this.client_id = 0; - } - else if (state == PrivateConversationState.OPEN && this._state != PrivateConversationState.CLOSED) - this._append_state_change("reconnect"); - else if (state == PrivateConversationState.CLOSED) - this._append_state_change("closed"); - else if (state == PrivateConversationState.DISCONNECTED_SELF) - this._append_state_change("disconnect_self"); - this._state = state; - } - set_text_callback(callback, update_enabled_state) { - this._callback_message = callback; - if (typeof (update_enabled_state) !== "boolean" || update_enabled_state) - this.handle.update_chatbox_state(); - } - chat_enabled() { - return typeof (this._callback_message) !== "undefined" && (this._state == PrivateConversationState.OPEN || this._state == PrivateConversationState.CLOSED); - } - append_error(message, date) { - const spacer = this._build_spacer(message, "error"); - this._register_displayed_message({ - timestamp: date || Date.now(), - message: spacer, - message_type: "spacer", - tag_message: spacer.html_tag, - tag_timepointer: undefined, - tag_unread: undefined - }, true); - } - call_message(message) { - if (this._callback_message) - this._callback_message(message); - else { - log.warn(LogCategory.CHAT, _translations.qCa4M1e6 || (_translations.qCa4M1e6 = tr("Dropping conversation message for client %o because of no message callback.")), { - client_name: this.client_name, - client_id: this.client_id, - client_unique_id: this.client_unique_id - }); - } - } - typing_expired() { - this._update_message_timestamp(); - if (this.handle.current_conversation() === this) - this.handle.update_typing_state(); - } - trigger_typing() { - let _new = Date.now() - this._last_typing > this._typing_timeout; - this._last_typing = Date.now(); - if (this._typing_timeout_task) - clearTimeout(this._typing_timeout_task); - if (_new) - this._update_message_timestamp(); - if (this.handle.current_conversation() === this) - this.handle.update_typing_state(); - this._typing_timeout_task = setTimeout(() => this.typing_expired(), this._typing_timeout); - } - typing_active() { - return Date.now() - this._last_typing < this._typing_timeout; - } - } - chat.PrivateConveration = PrivateConveration; - class PrivateConverations { - constructor(handle) { - this._conversations = []; - this._current_conversation = undefined; - this.handle = handle; - this._chat_box = new chat.ChatBox(); - this._build_html_tag(); - this.update_chatbox_state(); - this.update_typing_state(); - this._chat_box.callback_text = message => { - if (!this._current_conversation) { - log.warn(LogCategory.CHAT, _translations.a3TO9oPJ || (_translations.a3TO9oPJ = tr("Dropping conversation message because of no active conversation."))); - return; - } - this._current_conversation.call_message(message); - }; - this._chat_box.callback_typing = () => { - if (!this._current_conversation) { - log.warn(LogCategory.CHAT, _translations.oXV6BFdj || (_translations.oXV6BFdj = tr("Dropping conversation typing action because of no active conversation."))); - return; - } - const connection = this.handle.handle.serverConnection; - if (!connection || !connection.connected()) - return; - connection.send_command("clientchatcomposing", { - clid: this._current_conversation.client_id - }); - }; - } - clear_client_ids() { - this._conversations.forEach(e => { - e.client_id = 0; - e.set_state(PrivateConversationState.DISCONNECTED_SELF); - }); - } - html_tag() { return this._html_tag; } - destroy() { - this._chat_box && this._chat_box.destroy(); - this._chat_box = undefined; - for (const conversation of this._conversations) - conversation.destroy(); - this._conversations = []; - this._current_conversation = undefined; - clearTimeout(this._select_read_timer); - this._html_tag && this._html_tag.remove(); - this._html_tag = undefined; - } - current_conversation() { return this._current_conversation; } - conversations() { return this._conversations; } - create_conversation(client_uid, client_name, client_id) { - const conv = new PrivateConveration(this, client_uid, client_name, client_id); - this._conversations.push(conv); - this._html_no_chats.hide(); - this._container_conversation_list.append(conv.entry_tag()); - this.handle.info_frame().update_chat_counter(); - return conv; - } - delete_conversation(conv, update_chat_couner) { - if (!this._conversations.remove(conv)) - return; - //TODO: May animate? - conv.destroy(); - conv.clear_messages(false); - this._html_no_chats.toggle(this._conversations.length == 0); - if (conv === this._current_conversation) - this.set_selected_conversation(undefined); - if (update_chat_couner || typeof (update_chat_couner) !== "boolean") - this.handle.info_frame().update_chat_counter(); - } - find_conversation(partner, mode) { - for (const conversation of this.conversations()) - if (conversation.client_id == partner.client_id && (!partner.unique_id || conversation.client_unique_id == partner.unique_id)) { - if (conversation.state() != PrivateConversationState.OPEN) - conversation.set_state(PrivateConversationState.OPEN); - return conversation; - } - let conv; - if (mode.attach) { - for (const conversation of this.conversations()) - if (conversation.client_unique_id == partner.unique_id && conversation.state() != PrivateConversationState.OPEN) { - conversation.set_state(PrivateConversationState.OPEN); - conversation.client_id = partner.client_id; - conversation.set_client_name(partner.name); - conv = conversation; - break; - } - } - if (mode.create && !conv) { - conv = this.create_conversation(partner.unique_id, partner.name, partner.client_id); - conv.client_id = partner.client_id; - conv.set_client_name(partner.name); - } - if (conv) { - conv.set_text_callback(message => { - log.debug(LogCategory.CLIENT, _translations.P7dP7UKz || (_translations.P7dP7UKz = tr("Sending text message %s to %o")), message, partner); - this.handle.handle.serverConnection.send_command("sendtextmessage", { "targetmode": 1, "target": partner.client_id, "msg": message }).catch(error => { - if (error instanceof CommandResult) { - if (error.id == ErrorID.CLIENT_INVALID_ID) { - conv.set_state(PrivateConversationState.DISCONNECTED); - conv.set_text_callback(undefined); - } - else if (error.id == ErrorID.PERMISSION_ERROR) { - /* may notify for no permissions? */ - } - else { - conv.append_error((_translations.HQmGkDk1 || (_translations.HQmGkDk1 = tr("Failed to send message: "))) + (error.extra_message || error.message)); - } - } - else { - conv.append_error(_translations.XZu8l5EV || (_translations.XZu8l5EV = tr("Failed to send message. Lookup the console for more details"))); - log.error(LogCategory.CHAT, tr("Failed to send conversation message: %o", error)); - } - }); - }); - } - return conv; - } - clear_conversations() { - while (this._conversations.length > 0) - this.delete_conversation(this._conversations[0], false); - this.handle.info_frame().update_chat_counter(); - } - set_selected_conversation(conv) { - if (conv === this._current_conversation) - return; - if (this._select_read_timer) - clearTimeout(this._select_read_timer); - if (this._current_conversation) - this._current_conversation._html_message_container = undefined; - this._container_conversation_list.find(".selected").removeClass("selected"); - this._container_conversation_messages.children().detach(); - this._current_conversation = conv; - if (!this._current_conversation) { - this.update_chatbox_state(); - return; - } - this._current_conversation._html_message_container = this._container_conversation_messages; - const messages = this._current_conversation.messages_tags(); - /* TODO: Check if the messages are empty and display "No messages" */ - this._container_conversation_messages.append(...messages); - if (this._current_conversation.is_unread() && false) { - this._select_read_timer = setTimeout(() => { - this._current_conversation.set_unread_flag(false, true); - }, 20 * 1000); /* Lets guess you've read the new messages within 5 seconds */ - } - this._current_conversation.fix_scroll(false); - this._current_conversation.entry_tag().addClass("selected"); - this.update_chatbox_state(); - } - update_chatbox_state() { - this._chat_box.set_enabled(!!this._current_conversation && this._current_conversation.chat_enabled()); - } - update_typing_state() { - this._container_typing.toggleClass("hidden", !this._current_conversation || !this._current_conversation.typing_active()); - } - _build_html_tag() { - this._html_tag = $("#tmpl_frame_chat_private").renderTag({ - chatbox: this._chat_box.html_tag() - }).dividerfy(); - this._container_conversation = this._html_tag.find(".conversation"); - this._container_conversation.on('click', event => { - if (this._current_conversation) - this._current_conversation.set_unread_flag(false, true); /* only updates everything if the state changes */ - }); - this._container_conversation_messages = this._container_conversation.find(".messages"); - this._container_conversation_messages.on('scroll', event => { - if (!this._current_conversation) - return; - const current_view = this._container_conversation_messages[0].scrollTop + this._container_conversation_messages[0].clientHeight + this._container_conversation_messages[0].clientHeight * .125; - if (current_view > this._container_conversation_messages[0].scrollHeight) - this._current_conversation._scroll_position = undefined; - else - this._current_conversation._scroll_position = this._container_conversation_messages[0].scrollTop; - }); - this._container_conversation_list = this._html_tag.find(".conversation-list"); - this._html_no_chats = this._container_conversation_list.find(".no-chats"); - this._container_typing = this._html_tag.find(".container-typing"); - this.update_input_format_helper(); - } - try_input_focus() { - this._chat_box.focus_input(); - } - on_show() { - if (this._current_conversation) - this._current_conversation.fix_scroll(false); - } - update_input_format_helper() { - const tag = this._html_tag.find(".container-format-helper"); - if (settings.static_global(Settings.KEY_CHAT_ENABLE_MARKDOWN)) { - tag.removeClass("hidden").text(_translations.WTCSSX6D || (_translations.WTCSSX6D = tr("*italic*, **bold**, ~~strikethrough~~, `code`, and more..."))); - } - else { - tag.addClass("hidden"); - } - } - } - chat.PrivateConverations = PrivateConverations; -})(chat || (chat = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["cb1a8cd441d1bbbd9b2737e4c26524694bd2bd35f9024e2a99bd9a12d07cf7b0"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["cb1a8cd441d1bbbd9b2737e4c26524694bd2bd35f9024e2a99bd9a12d07cf7b0"] = "cb1a8cd441d1bbbd9b2737e4c26524694bd2bd35f9024e2a99bd9a12d07cf7b0"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "UvC90shS", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAbout.ts (27,21)" }, { name: "_OdnrDIg", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAbout.ts (50,48)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - function format_date(date) { - const d = new Date(date); - return ('00' + d.getDay()).substr(-2) + "." + ('00' + d.getMonth()).substr(-2) + "." + d.getFullYear() + " - " + ('00' + d.getHours()).substr(-2) + ":" + ('00' + d.getMinutes()).substr(-2); - } - function spawnAbout() { - const app_version = (() => { - const version_node = document.getElementById("app_version"); - if (!version_node) - return undefined; - const version = version_node.hasAttribute("value") ? version_node.getAttribute("value") : undefined; - if (!version) - return undefined; - if (version == "unknown" || version.replace(/0+/, "").length == 0) - return undefined; - return version; - })(); - const connectModal = createModal({ - header: _translations.UvC90shS || (_translations.UvC90shS = tr("About")), - body: () => { - let tag = $("#tmpl_about").renderTag({ - client: !app.is_web(), - version_client: app.is_web() ? app_version || "in-dev" : "loading...", - version_ui: app_version || "in-dev", - version_timestamp: !!app_version ? format_date(Date.now()) : "--" - }); - return tag; - }, - footer: null, - width: "60em" - }); - connectModal.htmlTag.find(".modal-body").addClass("modal-about"); - connectModal.open(); - if (!app.is_web()) { - window.native.client_version().then(version => { - connectModal.htmlTag.find(".version-client").text(version); - }).catch(error => { - log.error(LogCategory.GENERAL, _translations._OdnrDIg || (_translations._OdnrDIg = tr("Failed to load client version: %o")), error); - connectModal.htmlTag.find(".version-client").text("unknown"); - }); - } - } - Modals.spawnAbout = spawnAbout; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["ba60e7511140f62e2e02c5860bea99e474c1f09dfb5d657bb59ea95b5ca607cc"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["ba60e7511140f62e2e02c5860bea99e474c1f09dfb5d657bb59ea95b5ca607cc"] = "ba60e7511140f62e2e02c5860bea99e474c1f09dfb5d657bb59ea95b5ca607cc"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "ClTfrLVQ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatar.ts (9,21)" }, { name: "bltBa8CM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatar.ts (59,35)" }, { name: "u7xCv0Fo", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatar.ts (60,38)" }, { name: "ABQle2XS", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatar.ts (65,29)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - //TODO: Test if we could render this image and not only the browser by knowing the type. - function spawnAvatarUpload(callback_data) { - const modal = createModal({ - header: _translations.ClTfrLVQ || (_translations.ClTfrLVQ = tr("Avatar Upload")), - footer: undefined, - body: () => { - return $("#tmpl_avatar_upload").renderTag({}); - } - }); - let _data_submitted = false; - let _current_avatar; - modal.htmlTag.find(".button-select").on('click', event => { - modal.htmlTag.find(".file-inputs").trigger('click'); - }); - modal.htmlTag.find(".button-delete").on('click', () => { - if (_data_submitted) - return; - _data_submitted = true; - modal.close(); - callback_data(null); - }); - modal.htmlTag.find(".button-cancel").on('click', () => modal.close()); - const button_upload = modal.htmlTag.find(".button-upload"); - button_upload.on('click', event => (!_data_submitted) && (_data_submitted = true, modal.close(), true) && callback_data(_current_avatar)); - const set_avatar = (data, type) => { - _current_avatar = data ? arrayBufferBase64(data) : undefined; - button_upload.prop("disabled", !_current_avatar); - modal.htmlTag.find(".preview img").attr("src", data ? ("data:image/" + type + ";base64," + data) : "img/style/avatar.png"); - }; - const input_node = modal.htmlTag.find(".file-inputs")[0]; - input_node.multiple = false; - modal.htmlTag.find(".file-inputs").on('change', event => { - console.log("Files: %o", input_node.files); - const read_file = (file) => new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.onload = () => resolve(reader.result); - reader.onerror = error => reject(error); - reader.readAsDataURL(file); - }); - (() => __awaiter(this, void 0, void 0, function* () { - const data = yield read_file(input_node.files[0]); - if (!data.startsWith("data:image/")) { - console.error(_translations.bltBa8CM || (_translations.bltBa8CM = tr("Failed to load file %s: Invalid data media type (%o)")), input_node.files[0].name, data); - createErrorModal(_translations.u7xCv0Fo || (_translations.u7xCv0Fo = tr("Icon upload failed")), tra("Failed to select avatar {}.
File is not an image", input_node.files[0].name)).open(); - return; - } - const semi = data.indexOf(';'); - const type = data.substring(11, semi); - console.log(_translations.ABQle2XS || (_translations.ABQle2XS = tr("Given image has type %s")), type); - set_avatar(data.substr(semi + 8 /* 8 bytes := base64, */), type); - }))(); - }); - set_avatar(undefined); - modal.close_listener.push(() => !_data_submitted && callback_data(undefined)); - modal.open(); - } - Modals.spawnAvatarUpload = spawnAvatarUpload; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["b6161b8459fe46763e17df58843394182a9583e985503f2e71811b45b30b4ffd"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["b6161b8459fe46763e17df58843394182a9583e985503f2e71811b45b30b4ffd"] = "b6161b8459fe46763e17df58843394182a9583e985503f2e71811b45b30b4ffd"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "WyO_9diE", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatarList.ts (25,21)" }, { name: "dDeDPqV3", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatarList.ts (57,86)" }, { name: "rxNEagLS", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatarList.ts (58,88)" }, { name: "YjHvCku4", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatarList.ts (59,84)" }, { name: "JxSfQpqn", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatarList.ts (89,28)" }, { name: "xPENqFxw", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatarList.ts (89,49)" }, { name: "WtQT3rEW", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatarList.ts (91,42)" }, { name: "YQR30jMM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatarList.ts (91,65)" }, { name: "EAlpgDaJ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatarList.ts (147,52)" }, { name: "_9ZhLutC", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatarList.ts (148,38)" }, { name: "V5Na3lr_", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatarList.ts (148,71)" }, { name: "yN5_Hp_F", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatarList.ts (152,48)" }, { name: "jrf39vdv", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatarList.ts (153,34)" }, { name: "q3nuUEOC", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalAvatarList.ts (153,64)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - const avatar_to_uid = (id) => { - const buffer = new Uint8Array(id.length / 2); - for (let index = 0; index < id.length; index += 2) { - const upper_nibble = id.charCodeAt(index) - 97; - const lower_nibble = id.charCodeAt(index + 1) - 97; - buffer[index / 2] = (upper_nibble << 4) | lower_nibble; - } - return base64_encode_ab(buffer); - }; - Modals.human_file_size = (size) => { - if (size < 1000) - return size + "B"; - const exp = Math.floor(Math.log2(size) / 10); - return (size / Math.pow(1024, exp)).toFixed(2) + 'KMGTPE'.charAt(exp - 1) + "iB"; - }; - function spawnAvatarList(client) { - const modal = createModal({ - header: _translations.WyO_9diE || (_translations.WyO_9diE = tr("Avatars")), - footer: undefined, - body: () => { - const template = $("#tmpl_avatar_list").renderTag({}); - return template; - } - }); - let callback_download; - let callback_delete; - const button_download = modal.htmlTag.find(".button-download"); - const button_delete = modal.htmlTag.find(".button-delete"); - const container_list = modal.htmlTag.find(".container-list .list-entries-container"); - const list_entries = container_list.find(".list-entries"); - const container_info = modal.htmlTag.find(".container-info"); - const overlay_no_user = container_info.find(".disabled-overlay").show(); - const set_selected_avatar = (unique_id, avatar_id, size) => { - button_download.prop("disabled", true); - callback_download = undefined; - if (!unique_id) { - overlay_no_user.show(); - return; - } - const tag_username = container_info.find(".property-username"); - const tag_unique_id = container_info.find(".property-unique-id"); - const tag_avatar_id = container_info.find(".property-avatar-id"); - const container_avatar = container_info.find(".container-image"); - const tag_image_bytes = container_info.find(".property-image-size"); - const tag_image_width = container_info.find(".property-image-width").val(_translations.dDeDPqV3 || (_translations.dDeDPqV3 = tr("loading..."))); - const tag_image_height = container_info.find(".property-image-height").val(_translations.rxNEagLS || (_translations.rxNEagLS = tr("loading..."))); - const tag_image_type = container_info.find(".property-image-type").val(_translations.YjHvCku4 || (_translations.YjHvCku4 = tr("loading..."))); - tag_username.val("unknown"); - tag_unique_id.val(unique_id); - tag_avatar_id.val(avatar_id); - tag_image_bytes.val(size); - container_avatar.empty().append(client.fileManager.avatars.generate_tag(avatar_id, undefined, { - callback_image: image => { - tag_image_width.val(image[0].naturalWidth + 'px'); - tag_image_height.val(image[0].naturalHeight + 'px'); - }, - callback_avatar: avatar => { - tag_image_type.val(media_image_type(avatar.type)); - button_download.prop("disabled", false); - callback_download = () => { - const element = $.spawn("a") - .text("download") - .attr("href", avatar.url) - .attr("download", "avatar-" + unique_id + "." + media_image_type(avatar.type, true)) - .css("display", "none") - .appendTo($("body")); - element[0].click(); - element.remove(); - }; - } - })); - callback_delete = () => { - Modals.spawnYesNo(_translations.JxSfQpqn || (_translations.JxSfQpqn = tr("Are you sure?")), _translations.xPENqFxw || (_translations.xPENqFxw = tr("Do you really want to delete this avatar?")), result => { - if (result) { - createErrorModal(_translations.WtQT3rEW || (_translations.WtQT3rEW = tr("Not implemented")), _translations.YQR30jMM || (_translations.YQR30jMM = tr("Avatar delete hasn't implemented yet"))).open(); - //TODO Implement avatar delete - } - }); - }; - overlay_no_user.hide(); - }; - set_selected_avatar(undefined, undefined, 0); - const update_avatar_list = () => { - const template_entry = $("#tmpl_avatar_list-list_entry"); - list_entries.empty(); - client.fileManager.requestFileList("/").then(files => { - const username_resolve = {}; - for (const entry of files) { - const avatar_id = entry.name.substr('avatar_'.length); - const unique_id = avatar_to_uid(avatar_id); - const tag = template_entry.renderTag({ - username: 'loading', - unique_id: unique_id, - size: Modals.human_file_size(entry.size), - timestamp: moment(entry.datetime * 1000).format('YY-MM-DD HH:mm') - }); - (username_resolve[unique_id] || (username_resolve[unique_id] = [])).push(name => { - const tag_username = tag.find(".column-username").empty(); - if (name) { - tag_username.append(ClientEntry.chatTag(0, name, unique_id, false)); - } - else { - tag_username.text("unknown"); - } - }); - list_entries.append(tag); - tag.on('click', () => { - list_entries.find('.selected').removeClass('selected'); - tag.addClass('selected'); - set_selected_avatar(unique_id, avatar_id, entry.size); - }); - } - if (container_list.hasScrollBar()) - container_list.addClass("scrollbar"); - client.serverConnection.command_helper.info_from_uid(...Object.keys(username_resolve)).then(result => { - for (const info of result) { - username_resolve[info.client_unique_id].forEach(e => e(info.client_nickname)); - delete username_resolve[info.client_unique_id]; - } - for (const uid of Object.keys(username_resolve)) { - (username_resolve[uid] || []).forEach(e => e(undefined)); - } - }).catch(error => { - log.error(LogCategory.GENERAL, _translations.EAlpgDaJ || (_translations.EAlpgDaJ = tr("Failed to fetch usernames from avatar names. Error: %o")), error); - createErrorModal(_translations._9ZhLutC || (_translations._9ZhLutC = tr("Failed to fetch usernames")), _translations.V5Na3lr_ || (_translations.V5Na3lr_ = tr("Failed to fetch usernames related to their avatar names")), undefined).open(); - }); - }).catch(error => { - //TODO: Display no perms error - log.error(LogCategory.GENERAL, _translations.yN5_Hp_F || (_translations.yN5_Hp_F = tr("Failed to receive avatar list. Error: %o")), error); - createErrorModal(_translations.jrf39vdv || (_translations.jrf39vdv = tr("Failed to list avatars")), _translations.q3nuUEOC || (_translations.q3nuUEOC = tr("Failed to receive avatar list.")), undefined).open(); - }); - }; - button_download.on('click', () => (callback_download || (() => { }))()); - button_delete.on('click', () => (callback_delete || (() => { }))()); - setTimeout(() => update_avatar_list(), 250); - modal.open(); - } - Modals.spawnAvatarList = spawnAvatarList; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["d08a8911c127b3f383f7c4a52021137598cace00cb6d24c3fcce51d3b4047aa0"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["d08a8911c127b3f383f7c4a52021137598cace00cb6d24c3fcce51d3b4047aa0"] = "d08a8911c127b3f383f7c4a52021137598cace00cb6d24c3fcce51d3b4047aa0"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "TsgDlJVp", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (9,21)" }, { name: "vheWLtP2", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (51,88)" }, { name: "mBoCWnAP", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (55,64)" }, { name: "Q3EMl6hY", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (58,52)" }, { name: "hwuaCgCO", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (59,62)" }, { name: "m6Nljdlg", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (60,53)" }, { name: "x9AY7Kln", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (62,64)" }, { name: "nuFGAPOV", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (65,46)" }, { name: "Wlsrp0ec", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (198,47)" }, { name: "fPLYDIee", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (198,67)" }, { name: "FXdq1lZN", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (213,42)" }, { name: "QcWetQw3", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (213,69)" }, { name: "kRMVC8Kv", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (232,42)" }, { name: "rUYIwFuH", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (232,71)" }, { name: "x53hiZEu", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalBookmarks.ts (305,59)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - function spawnBookmarkModal() { - let modal; - modal = createModal({ - header: _translations.TsgDlJVp || (_translations.TsgDlJVp = tr("Manage bookmarks")), - body: () => { - let template = $("#tmpl_manage_bookmarks").renderTag({}); - let selected_bookmark; - const button_delete = template.find(".button-delete"); - const button_add_folder = template.find(".button-add-folder"); - const button_add_bookmark = template.find(".button-add-bookmark"); - const button_connect = template.find(".button-connect"); - const button_connect_tab = template.find(".button-connect-tab"); - const label_bookmark_name = template.find(".header .container-name"); - const label_server_address = template.find(".header .container-address"); - const input_bookmark_name = template.find(".input-bookmark-name"); - const input_connect_profile = template.find(".input-connect-profile"); - const input_server_address = template.find(".input-server-address"); - const input_server_password = template.find(".input-server-password"); - const label_server_name = template.find(".server-name"); - const label_server_region = template.find(".server-region"); - const label_last_ping = template.find(".server-ping"); - const label_client_count = template.find(".server-client-count"); - const label_connection_count = template.find(".server-connection-count"); - const update_buttons = () => { - button_delete.prop("disabled", !selected_bookmark); - button_connect.prop("disabled", !selected_bookmark || selected_bookmark.type !== bookmarks.BookmarkType.ENTRY); - button_connect_tab.prop("disabled", !selected_bookmark || selected_bookmark.type !== bookmarks.BookmarkType.ENTRY); - }; - const update_connect_info = () => { - if (selected_bookmark && selected_bookmark.type === bookmarks.BookmarkType.ENTRY) { - const entry = selected_bookmark; - const history = connection_log.history().find(e => e.address.hostname === entry.server_properties.server_address && e.address.port === entry.server_properties.server_port); - if (history) { - label_server_name.text(history.name); - label_server_region.empty().append($.spawn("div").addClass("country flag-" + history.country.toLowerCase()), $.spawn("div").text(i18n.country_name(history.country, _translations.vheWLtP2 || (_translations.vheWLtP2 = tr("Global"))))); - label_client_count.text(history.clients_online + "/" + history.clients_total); - label_connection_count.empty().append(...MessageHelper.formatMessage(_translations.mBoCWnAP || (_translations.mBoCWnAP = tr("You've connected {} times")), $.spawn("div").addClass("connect-count").text(history.total_connection))); - } - else { - label_server_name.text(_translations.Q3EMl6hY || (_translations.Q3EMl6hY = tr("Unknown"))); - label_server_region.empty().text(_translations.hwuaCgCO || (_translations.hwuaCgCO = tr("Unknown"))); - label_client_count.text(_translations.m6Nljdlg || (_translations.m6Nljdlg = tr("Unknown"))); - label_connection_count.empty().append(...MessageHelper.formatMessage(_translations.x9AY7Kln || (_translations.x9AY7Kln = tr("You {} connected to that server address")), $.spawn("div").addClass("connect-never").text("never"))); - } - label_last_ping.text(_translations.nuFGAPOV || (_translations.nuFGAPOV = tr("Average ping isn't yet supported"))); - } - else { - label_server_name.text("--"); - label_server_region.text("--"); - label_last_ping.text("--"); - label_client_count.text("--"); - label_connection_count.text("--"); - } - }; - const update_selected = () => { - input_bookmark_name.prop("disabled", !selected_bookmark); - input_connect_profile.prop("disabled", !selected_bookmark || selected_bookmark.type !== bookmarks.BookmarkType.ENTRY); - input_server_address.prop("disabled", !selected_bookmark || selected_bookmark.type !== bookmarks.BookmarkType.ENTRY); - input_server_password.prop("disabled", !selected_bookmark || selected_bookmark.type !== bookmarks.BookmarkType.ENTRY); - if (selected_bookmark) { - input_bookmark_name.val(selected_bookmark.display_name); - label_bookmark_name.text(selected_bookmark.display_name); - } - if (selected_bookmark && selected_bookmark.type === bookmarks.BookmarkType.ENTRY) { - const entry = selected_bookmark; - const address = entry.server_properties.server_address + (entry.server_properties.server_port == 9987 ? "" : (" " + entry.server_properties.server_port)); - label_server_address.text(address); - input_server_address.val(address); - let profile = input_connect_profile.find("option[value='" + entry.connect_profile + "']"); - if (profile.length == 0) - profile = input_connect_profile.find("option[value=default]"); - profile.prop("selected", true); - input_server_password.val(entry.server_properties.server_password_hash || entry.server_properties.server_password ? "WolverinDEV" : ""); - } - else { - input_server_password.val(""); - input_server_address.val(""); - input_connect_profile.find("option[value='no-value']").prop('selected', true); - label_server_address.text(" "); - } - update_connect_info(); - }; - const container_bookmarks = template.find(".container-bookmarks"); - const update_bookmark_list = (_current_selected) => { - container_bookmarks.empty(); - selected_bookmark = undefined; - update_selected(); - const hide_links = []; - const build_entry = (entry, sibling_data, index) => { - let container = $.spawn("div") - .addClass(entry.type === bookmarks.BookmarkType.ENTRY ? "bookmark" : "directory") - .addClass(index > 0 ? "linked" : "") - .addClass(sibling_data.first ? "link-start" : ""); - for (let i = 0; i < index; i++) { - container.append($.spawn("div") - .addClass("link") - .addClass(i + 1 === index ? " connected" : "") - .addClass(hide_links[i + 1] ? "hidden" : "")); - } - if (entry.type === bookmarks.BookmarkType.ENTRY) { - const bookmark = entry; - container.append(bookmark.last_icon_id ? - IconManager.generate_tag(IconManager.load_cached_icon(bookmark.last_icon_id || 0), { animate: false }) : - $.spawn("div").addClass("icon-container icon_em")); - } - else { - container.append($.spawn("div").addClass("icon-container icon_em client-folder")); - } - container.append($.spawn("div").addClass("name").attr("title", entry.display_name).text(entry.display_name)); - container.appendTo(container_bookmarks); - container.on('click', event => { - if (selected_bookmark === entry) - return; - selected_bookmark = entry; - container_bookmarks.find(".selected").removeClass("selected"); - container.addClass("selected"); - update_buttons(); - update_selected(); - }); - if (entry.unique_id === _current_selected) - container.trigger('click'); - hide_links.push(sibling_data.last); - let cindex = 0; - const children = entry.content || []; - for (const child of children) - build_entry(child, { first: cindex++ == 0, last: cindex == children.length }, index + 1); - hide_links.pop(); - }; - let cindex = 0; - const children = bookmarks.bookmarks().content; - for (const bookmark of children) - build_entry(bookmark, { first: cindex++ == 0, last: cindex == children.length }, 0); - }; - /* generate profile list */ - { - input_connect_profile.append($.spawn("option") - .attr("value", "no-value") - .text("") - .css("display", "none")); - for (const profile of profiles.profiles()) { - input_connect_profile.append($.spawn("option") - .attr("value", profile.id) - .text(profile.profile_name)); - } - } - /* buttons */ - { - button_delete.on('click', event => { - if (!selected_bookmark) - return; - if (selected_bookmark.type === bookmarks.BookmarkType.DIRECTORY && selected_bookmark.content.length > 0) { - Modals.spawnYesNo(_translations.Wlsrp0ec || (_translations.Wlsrp0ec = tr("Are you sure")), _translations.fPLYDIee || (_translations.fPLYDIee = tr("Do you really want to delete this non empty directory?")), answer => { - if (answer) { - bookmarks.delete_bookmark(selected_bookmark); - bookmarks.save_bookmark(selected_bookmark); - update_bookmark_list(undefined); - } - }); - } - else { - bookmarks.delete_bookmark(selected_bookmark); - bookmarks.save_bookmark(selected_bookmark); - update_bookmark_list(undefined); - } - }); - button_add_folder.on('click', event => { - createInputModal(_translations.FXdq1lZN || (_translations.FXdq1lZN = tr("Enter a folder name")), _translations.QcWetQw3 || (_translations.QcWetQw3 = tr("Enter the folder name")), text => { - return true; - }, result => { - if (result) { - const mark = bookmarks.create_bookmark_directory(selected_bookmark ? - selected_bookmark.type === bookmarks.BookmarkType.DIRECTORY ? - selected_bookmark : - selected_bookmark.parent : - bookmarks.bookmarks(), result); - bookmarks.save_bookmark(mark); - update_bookmark_list(mark.unique_id); - } - }).open(); - }); - button_add_bookmark.on('click', event => { - createInputModal(_translations.kRMVC8Kv || (_translations.kRMVC8Kv = tr("Enter a bookmark name")), _translations.rUYIwFuH || (_translations.rUYIwFuH = tr("Enter the bookmark name")), text => { - return true; - }, result => { - if (result) { - const mark = bookmarks.create_bookmark(result, selected_bookmark ? - selected_bookmark.type === bookmarks.BookmarkType.DIRECTORY ? - selected_bookmark : - selected_bookmark.parent : - bookmarks.bookmarks(), { - server_password: "", - server_port: 9987, - server_address: "", - server_password_hash: "" - }, ""); - bookmarks.save_bookmark(mark); - update_bookmark_list(mark.unique_id); - } - }).open(); - }); - button_connect_tab.on('click', event => { - bookmarks.boorkmak_connect(selected_bookmark, true); - modal.close(); - }).toggle(!settings.static_global(Settings.KEY_DISABLE_MULTI_SESSION)); - button_connect.on('click', event => { - bookmarks.boorkmak_connect(selected_bookmark, false); - modal.close(); - }); - } - /* inputs */ - { - input_bookmark_name.on('change keydown', event => { - const name = input_bookmark_name.val(); - const valid = name.length > 3; - input_bookmark_name.firstParent(".input-boxed").toggleClass("is-invalid", !valid); - if (event.type === "change" && valid) { - selected_bookmark.display_name = name; - label_bookmark_name.text(name); - } - }); - input_server_address.on('change keydown', event => { - const address = input_server_address.val(); - const valid = !!address.match(Modals.Regex.IP_V4) || !!address.match(Modals.Regex.IP_V6) || !!address.match(Modals.Regex.DOMAIN); - input_server_address.firstParent(".input-boxed").toggleClass("is-invalid", !valid); - if (valid) { - const entry = selected_bookmark; - let _v6_end = address.indexOf(']'); - let idx = address.lastIndexOf(':'); - if (idx != -1 && idx > _v6_end) { - entry.server_properties.server_port = parseInt(address.substr(idx + 1)); - entry.server_properties.server_address = address.substr(0, idx); - } - else { - entry.server_properties.server_address = address; - entry.server_properties.server_port = 9987; - } - label_server_address.text(entry.server_properties.server_address + (entry.server_properties.server_port == 9987 ? "" : (" " + entry.server_properties.server_port))); - update_connect_info(); - } - }); - input_connect_profile.on('change', event => { - const id = input_connect_profile.val(); - const profile = profiles.profiles().find(e => e.id === id); - if (profile) { - selected_bookmark.connect_profile = id; - } - else { - log.warn(LogCategory.GENERAL, _translations.x53hiZEu || (_translations.x53hiZEu = tr("Failed to change connect profile for profile %s to %s")), selected_bookmark.unique_id, id); - } - }); - } - /* Arrow key navigation for the bookmark list */ - { - let _focused = false; - let _focus_listener; - let _key_listener; - _focus_listener = event => { - _focused = false; - let element = event.target; - while (element) { - if (element === container_bookmarks[0]) { - _focused = true; - break; - } - element = element.parentNode; - } - }; - _key_listener = event => { - if (!_focused) - return; - if (event.key.toLowerCase() === "arrowdown") { - container_bookmarks.find(".selected").next().trigger('click'); - } - else if (event.key.toLowerCase() === "arrowup") { - container_bookmarks.find(".selected").prev().trigger('click'); - } - }; - document.addEventListener('click', _focus_listener); - document.addEventListener('keydown', _key_listener); - modal.close_listener.push(() => { - document.removeEventListener('click', _focus_listener); - document.removeEventListener('keydown', _key_listener); - }); - } - update_bookmark_list(undefined); - update_buttons(); - template.find(".container-bookmarks").on('keydown', event => { - console.error(event.key); - }); - template.find(".button-close").on('click', event => modal.close()); - return template.children(); - }, - footer: undefined, - width: "40em" - }); - modal.htmlTag.dividerfy().find(".modal-body").addClass("modal-bookmarks"); - modal.close_listener.push(() => { - control_bar.update_bookmarks(); - top_menu.rebuild_bookmarks(); - }); - modal.open(); - } - Modals.spawnBookmarkModal = spawnBookmarkModal; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["0e23f86b74d3179ef83d3e49bd849b2e36271d501e8e6ae0dafe6ad5bf4fc1a1"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["0e23f86b74d3179ef83d3e49bd849b2e36271d501e8e6ae0dafe6ad5bf4fc1a1"] = "0e23f86b74d3179ef83d3e49bd849b2e36271d501e8e6ae0dafe6ad5bf4fc1a1"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["9956def2660d1b3f450e99957454a2512b88c5456b04ba6ea6622103ae26fe34"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["9956def2660d1b3f450e99957454a2512b88c5456b04ba6ea6622103ae26fe34"] = "9956def2660d1b3f450e99957454a2512b88c5456b04ba6ea6622103ae26fe34"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "rnpixUHv", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChangeLatency.ts (14,21)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - let modal; - function spawnChangeLatency(client, current, reset, apply, callback_flush) { - if (modal) - modal.close(); - const begin = Object.assign({}, current); - current = Object.assign({}, current); - modal = createModal({ - header: _translations.rnpixUHv || (_translations.rnpixUHv = tr("Change playback latency")), - body: function () { - let tag = $("#tmpl_change_latency").renderTag({ - client: htmltags.generate_client_object({ - add_braces: false, - client_name: client.clientNickName(), - client_unique_id: client.properties.client_unique_identifier, - client_id: client.clientId() - }), - have_flush: (typeof (callback_flush) === "function") - }); - const update_value = () => { - const valid = current.min_buffer < current.max_buffer; - modal.htmlTag.find(".modal-body").toggleClass("modal-red", !valid); - modal.htmlTag.find(".modal-body").toggleClass("modal-green", valid); - if (!valid) - return; - apply(current); - }; - let slider_min, slider_max; - { - const container = tag.find(".container-min"); - const tag_value = container.find(".value"); - const slider_tag = container.find(".container-slider"); - slider_min = sliderfy(slider_tag, { - initial_value: current.min_buffer, - step: 20, - max_value: 1000, - min_value: 0, - unit: 'ms' - }); - slider_tag.on('change', event => { - current.min_buffer = parseInt(slider_tag.attr("value")); - tag_value.text(current.min_buffer + "ms"); - update_value(); - }); - tag_value.text(current.min_buffer + "ms"); - } - { - const container = tag.find(".container-max"); - const tag_value = container.find(".value"); - const slider_tag = container.find(".container-slider"); - slider_max = sliderfy(slider_tag, { - initial_value: current.max_buffer, - step: 20, - max_value: 1020, - min_value: 20, - unit: 'ms' - }); - slider_tag.on('change', event => { - current.max_buffer = parseInt(slider_tag.attr("value")); - tag_value.text(current.max_buffer + "ms"); - update_value(); - }); - tag_value.text(current.max_buffer + "ms"); - } - setTimeout(update_value, 0); - tag.find(".button-close").on('click', event => { - modal.close(); - }); - tag.find(".button-cancel").on('click', event => { - apply(begin); - modal.close(); - }); - tag.find(".button-reset").on('click', event => { - current = Object.assign({}, reset()); - slider_max.value(current.max_buffer); - slider_min.value(current.min_buffer); - }); - tag.find(".button-flush").on('click', event => callback_flush()); - return tag.children(); - }, - footer: null, - width: 600 - }); - modal.close_listener.push(() => modal = undefined); - modal.open(); - modal.htmlTag.find(".modal-body").addClass("modal-latency"); - } - Modals.spawnChangeLatency = spawnChangeLatency; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["11929b66a8fc3047cb47278d16ce2fb341d4e68bf2428ef134e561ea19cce86a"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["11929b66a8fc3047cb47278d16ce2fb341d4e68bf2428ef134e561ea19cce86a"] = "11929b66a8fc3047cb47278d16ce2fb341d4e68bf2428ef134e561ea19cce86a"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "I5sxCWb1", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (6,21)" }, { name: "MWhXMLY3", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (18,37)" }, { name: "RE2vZk9z", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (18,63)" }, { name: "QaIxrSq4", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (47,41)" }, { name: "EnZqLY5O", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (52,33)" }, { name: "LSPBpazO", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (56,9)" }, { name: "b5HSmHYG", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (57,9)" }, { name: "sEjNJjwa", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (58,9)" }, { name: "mpF_YaoQ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (59,9)" }, { name: "rKgUkVIE", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (60,9)" }, { name: "UyvxGUrS", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (61,9)" }, { name: "YHbfKEbb", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (69,26)" }, { name: "BR_g0fBa", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (71,26)" }, { name: "MhdcoTGM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (74,26)" }, { name: "mGNRZmBq", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (81,26)" }, { name: "ndprpEHA", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (84,30)" }, { name: "m3R76_Ct", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (86,30)" }, { name: "oFX6TI_6", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (88,60)" }, { name: "SOznTjw5", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (98,37)" }, { name: "MoxbL41x", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (108,26)" }, { name: "jXz3b_jU", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (115,72)" }, { name: "BM72xXA7", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (124,28)" }, { name: "sAPSOS4t", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (126,28)" }, { name: "l53YQJDt", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (128,73)" }, { name: "f7A9CNx_", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (128,93)" }, { name: "NJeT_LZU", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (135,26)" }, { name: "O6LcaNSq", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalChannelInfo.ts (137,26)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var Modals; -(function (Modals) { - function openChannelInfo(channel) { - let modal; - modal = createModal({ - header: (_translations.I5sxCWb1 || (_translations.I5sxCWb1 = tr("Channel information: "))) + channel.channelName(), - body: () => { - const template = $("#tmpl_channel_info").renderTag(); - const update_values = (container) => { - apply_channel_description(container.find(".container-description"), channel); - apply_general(container, channel); - }; - template.find(".button-copy").on('click', event => { - copy_to_clipboard(channel.properties.channel_description); - createInfoModal(_translations.MWhXMLY3 || (_translations.MWhXMLY3 = tr("Description copied")), _translations.RE2vZk9z || (_translations.RE2vZk9z = tr("The channel description has been copied to your clipboard!"))).open(); - }); - const button_update = template.find(".button-update"); - button_update.on('click', event => update_values(modal.htmlTag)); - update_values(template); - tooltip(template); - return template.children(); - }, - footer: null, - width: "65em" - }); - modal.htmlTag.find(".button-close").on('click', event => modal.close()); - modal.htmlTag.find(".modal-body").addClass("modal-channel-info"); - modal.open(); - } - Modals.openChannelInfo = openChannelInfo; - function apply_channel_description(container, channel) { - const container_value = container.find(".value"); - const container_no_value = container.find(".no-value"); - channel.getChannelDescription().then(description => { - if (description) { - const result = xbbcode.parse(description, {}); - container_value[0].innerHTML = result.build_html(); - container_no_value.hide(); - container_value.show(); - } - else { - container_no_value.text(_translations.QaIxrSq4 || (_translations.QaIxrSq4 = tr("Channel has no description"))); - } - }); - container_value.hide(); - container_no_value.text(_translations.EnZqLY5O || (_translations.EnZqLY5O = tr("loading..."))).show(); - } - const codec_names = [ - _translations.LSPBpazO || (_translations.LSPBpazO = tr("Speex Narrowband")), - _translations.b5HSmHYG || (_translations.b5HSmHYG = tr("Speex Wideband")), - _translations.sEjNJjwa || (_translations.sEjNJjwa = tr("Speex Ultra-Wideband")), - _translations.mpF_YaoQ || (_translations.mpF_YaoQ = tr("CELT Mono")), - _translations.rKgUkVIE || (_translations.rKgUkVIE = tr("Opus Voice")), - _translations.UyvxGUrS || (_translations.UyvxGUrS = tr("Opus Music")) - ]; - function apply_general(container, channel) { - /* channel type */ - { - const tag = container.find(".channel-type .value").empty(); - if (channel.properties.channel_flag_permanent) - tag.text(_translations.YHbfKEbb || (_translations.YHbfKEbb = tr("Permanent"))); - else if (channel.properties.channel_flag_semi_permanent) - tag.text(_translations.BR_g0fBa || (_translations.BR_g0fBa = tr("Semi permanent"))); - else - //TODO: Channel delete delay! - tag.text(_translations.MhdcoTGM || (_translations.MhdcoTGM = tr("Temporary"))); - } - /* chat mode */ - { - const tag = container.find(".chat-mode .value").empty(); - if (channel.properties.channel_flag_conversation_private || channel.properties.channel_flag_password) { - tag.text(_translations.mGNRZmBq || (_translations.mGNRZmBq = tr("Private"))); - } - else { - if (channel.properties.channel_conversation_history_length == -1) - tag.text(_translations.ndprpEHA || (_translations.ndprpEHA = tr("Public; Semi permanent message saving"))); - else if (channel.properties.channel_conversation_history_length == 0) - tag.text(_translations.m3R76_Ct || (_translations.m3R76_Ct = tr("Public; Permanent message saving"))); - else - tag.append(MessageHelper.formatMessage(_translations.oFX6TI_6 || (_translations.oFX6TI_6 = tr("Public; Saving last {} messages")), channel.properties.channel_conversation_history_length)); - } - } - /* current clients */ - { - const tag = container.find(".current-clients .value").empty(); - if (channel.flag_subscribed) { - const current = channel.clients().length; - let channel_limit = _translations.SOznTjw5 || (_translations.SOznTjw5 = tr("Unlimited")); - if (!channel.properties.channel_flag_maxclients_unlimited) - channel_limit = "" + channel.properties.channel_maxclients; - else if (!channel.properties.channel_flag_maxfamilyclients_unlimited) { - if (channel.properties.channel_maxfamilyclients >= 0) - channel_limit = "" + channel.properties.channel_maxfamilyclients; - } - tag.text(current + " / " + channel_limit); - } - else { - tag.text(_translations.MoxbL41x || (_translations.MoxbL41x = tr("Channel not subscribed"))); - } - } - /* audio codec */ - { - const tag = container.find(".audio-codec .value").empty(); - tag.text((codec_names[channel.properties.channel_codec] || (_translations.jXz3b_jU || (_translations.jXz3b_jU = tr("Unknown")))) + " (" + channel.properties.channel_codec_quality + ")"); - } - /* audio encrypted */ - { - const tag = container.find(".audio-encrypted .value").empty(); - const mode = channel.channelTree.server.properties.virtualserver_codec_encryption_mode; - let appendix; - if (mode == 1) - appendix = _translations.BM72xXA7 || (_translations.BM72xXA7 = tr("Overridden by the server with Unencrypted!")); - else if (mode == 2) - appendix = _translations.sAPSOS4t || (_translations.sAPSOS4t = tr("Overridden by the server with Encrypted!")); - tag.html((channel.properties.channel_codec_is_unencrypted ? _translations.l53YQJDt || (_translations.l53YQJDt = tr("Unencrypted")) : _translations.f7A9CNx_ || (_translations.f7A9CNx_ = tr("Encrypted"))) + (appendix ? "
" + appendix : "")); - } - /* flag password */ - { - const tag = container.find(".flag-password .value").empty(); - if (channel.properties.channel_flag_password) - tag.text(_translations.NJeT_LZU || (_translations.NJeT_LZU = tr("Yes"))); - else - tag.text(_translations.O6LcaNSq || (_translations.O6LcaNSq = tr("No"))); - } - /* topic */ - { - const container_tag = container.find(".topic"); - const tag = container_tag.find(".value").empty(); - if (channel.properties.channel_topic) { - container_tag.show(); - tag.text(channel.properties.channel_topic); - } - else { - container_tag.hide(); - } - } - } -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["3e0d934846e6678af688be0aae682a444a3e95e9842710b8911212ab336fc824"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["3e0d934846e6678af688be0aae682a444a3e95e9842710b8911212ab336fc824"] = "3e0d934846e6678af688be0aae682a444a3e95e9842710b8911212ab336fc824"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "q4nJUy60", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (8,21)" }, { name: "yHGa0IfR", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (61,58)" }, { name: "fmWIsvZh", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (61,72)" }, { name: "wBmsWQ1W", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (67,58)" }, { name: "xHHtl43Q", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (67,71)" }, { name: "JUA4eXwZ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (73,58)" }, { name: "wXLHZg4c", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (73,72)" }, { name: "vutnPHSB", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (79,58)" }, { name: "ZdTd3wyS", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (79,74)" }, { name: "au_VFD3u", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (85,58)" }, { name: "gJBoJ4Ma", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (85,74)" }, { name: "GUq7Pfeo", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (132,33)" }, { name: "PFTGjDJA", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (132,57)" }, { name: "oLMwSJYc", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (145,36)" }, { name: "AxikKxHc", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (147,36)" }, { name: "zskgIt4S", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (149,36)" }, { name: "gSwEalIF", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (157,52)" }, { name: "DvkrY7gD", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (194,87)" }, { name: "Jn3_cGLt", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (202,24)" }, { name: "jmL5o4nI", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (206,33)" }, { name: "Tz0k6vyV", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (206,57)" }, { name: "O1OHNB8l", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (210,122)" }, { name: "RTQwXVHs", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (218,45)" }, { name: "NXeVdyQD", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (222,49)" }, { name: "Rcficr3s", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (230,45)" }, { name: "DRUtOKKo", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (234,49)" }, { name: "fAGxWnB9", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (245,87)" }, { name: "S2krnqJS", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (259,77)" }, { name: "bzbgZkFM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (261,34)" }, { name: "SkjAXN3e", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (275,42)" }, { name: "FjOC00RC", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (277,42)" }, { name: "kIMQ6Lut", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (279,34)" }, { name: "SjS4iMTN", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (306,92)" }, { name: "vozQRN8R", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (336,104)" }, { name: "vdSpi1jT", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (338,45)" }, { name: "syz7QWKN", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (343,100)" }, { name: "icJiGa8t", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (345,43)" }, { name: "a7UYf6jl", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (362,53)" }, { name: "Rghh2BiN", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (366,45)" }, { name: "YhgjzYlu", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (376,51)" }, { name: "XAulSBWk", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (380,43)" }, { name: "jstU8KwW", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (397,53)" }, { name: "iizJRjxp", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (401,45)" }, { name: "hsKLHain", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (411,51)" }, { name: "NAdmQZoI", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (415,43)" }, { name: "dP3HUqzO", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (432,53)" }, { name: "i2XrSfWG", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (436,45)" }, { name: "KB1Gb7t_", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (446,51)" }, { name: "O0s5zgie", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (450,43)" }, { name: "AkeqGziU", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (467,53)" }, { name: "HWcY62Qh", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (471,45)" }, { name: "s0iM_F0m", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (481,51)" }, { name: "ks4dg80v", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (485,43)" }, { name: "j8hYfOEQ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (500,45)" }, { name: "Zf4MdfLy", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalClientInfo.ts (508,43)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var Modals; -(function (Modals) { - function openClientInfo(client) { - let modal; - let update_callbacks = []; - modal = createModal({ - header: (_translations.q4nJUy60 || (_translations.q4nJUy60 = tr("Profile Information: "))) + client.clientNickName(), - body: () => { - const template = $("#tmpl_client_info").renderTag(); - /* the tab functionality */ - { - const container_tabs = template.find(".container-categories"); - container_tabs.find(".categories .entry").on('click', event => { - const entry = $(event.target); - container_tabs.find(".bodies > .body").addClass("hidden"); - container_tabs.find(".categories > .selected").removeClass("selected"); - entry.addClass("selected"); - container_tabs.find(".bodies > .body." + entry.attr("container")).removeClass("hidden"); - }); - container_tabs.find(".entry").first().trigger('click'); - } - apply_static_info(client, template, modal, update_callbacks); - apply_client_status(client, template, modal, update_callbacks); - apply_basic_info(client, template.find(".container-basic"), modal, update_callbacks); - apply_groups(client, template.find(".container-groups"), modal, update_callbacks); - apply_packets(client, template.find(".container-packets"), modal, update_callbacks); - tooltip(template); - return template.children(); - }, - footer: null, - width: '60em' - }); - const updater = setInterval(() => { - client.request_connection_info().then(info => update_callbacks.forEach(e => e(info))); - }, 1000); - modal.htmlTag.find(".modal-body").addClass("modal-client-info"); - modal.open(); - modal.close_listener.push(() => clearInterval(updater)); - } - Modals.openClientInfo = openClientInfo; - const TIME_SECOND = 1000; - const TIME_MINUTE = 60 * TIME_SECOND; - const TIME_HOUR = 60 * TIME_MINUTE; - const TIME_DAY = 24 * TIME_HOUR; - const TIME_WEEK = 7 * TIME_DAY; - function format_time(time, default_value) { - let result = ""; - if (time > TIME_WEEK) { - const amount = Math.floor(time / TIME_WEEK); - result += " " + amount + " " + (amount > 1 ? _translations.yHGa0IfR || (_translations.yHGa0IfR = tr("Weeks")) : _translations.fmWIsvZh || (_translations.fmWIsvZh = tr("Week"))); - time -= amount * TIME_WEEK; - } - if (time > TIME_DAY) { - const amount = Math.floor(time / TIME_DAY); - result += " " + amount + " " + (amount > 1 ? _translations.wBmsWQ1W || (_translations.wBmsWQ1W = tr("Days")) : _translations.xHHtl43Q || (_translations.xHHtl43Q = tr("Day"))); - time -= amount * TIME_DAY; - } - if (time > TIME_HOUR) { - const amount = Math.floor(time / TIME_HOUR); - result += " " + amount + " " + (amount > 1 ? _translations.JUA4eXwZ || (_translations.JUA4eXwZ = tr("Hours")) : _translations.wXLHZg4c || (_translations.wXLHZg4c = tr("Hour"))); - time -= amount * TIME_HOUR; - } - if (time > TIME_MINUTE) { - const amount = Math.floor(time / TIME_MINUTE); - result += " " + amount + " " + (amount > 1 ? _translations.vutnPHSB || (_translations.vutnPHSB = tr("Minutes")) : _translations.ZdTd3wyS || (_translations.ZdTd3wyS = tr("Minute"))); - time -= amount * TIME_MINUTE; - } - if (time > TIME_SECOND) { - const amount = Math.floor(time / TIME_SECOND); - result += " " + amount + " " + (amount > 1 ? _translations.au_VFD3u || (_translations.au_VFD3u = tr("Seconds")) : _translations.gJBoJ4Ma || (_translations.gJBoJ4Ma = tr("Second"))); - time -= amount * TIME_SECOND; - } - return result.length > 0 ? result.substring(1) : default_value; - } - function apply_static_info(client, tag, modal, callbacks) { - tag.find(".container-avatar").append(client.channelTree.client.fileManager.avatars.generate_chat_tag({ database_id: client.properties.client_database_id, id: client.clientId() }, client.properties.client_unique_identifier)); - tag.find(".container-name").append(client.createChatTag()); - tag.find(".client-description").text(client.properties.client_description); - } - function apply_client_status(client, tag, modal, callbacks) { - tag.find(".status-output-disabled").toggle(!client.properties.client_output_hardware); - tag.find(".status-input-disabled").toggle(!client.properties.client_input_hardware); - tag.find(".status-output-muted").toggle(client.properties.client_output_muted); - tag.find(".status-input-muted").toggle(client.properties.client_input_muted); - tag.find(".status-away").toggle(client.properties.client_away); - if (client.properties.client_away_message) { - tag.find(".container-away-message").show().find("a").text(client.properties.client_away_message); - } - else { - tag.find(".container-away-message").hide(); - } - } - function apply_basic_info(client, tag, modal, callbacks) { - /* Unique ID */ - { - const container = tag.find(".property-unique-id"); - container.find(".value a").text(client.clientUid()); - container.find(".value-dbid").text(client.properties.client_database_id); - container.find(".button-copy").on('click', event => { - copy_to_clipboard(client.clientUid()); - createInfoModal(_translations.GUq7Pfeo || (_translations.GUq7Pfeo = tr("Unique ID copied")), _translations.PFTGjDJA || (_translations.PFTGjDJA = tr("The unique id has been copied to your clipboard!"))).open(); - }); - } - /* TeaForo */ - { - const container = tag.find(".property-teaforo .value").empty(); - if (client.properties.client_teaforo_id) { - container.children().remove(); - let text = client.properties.client_teaforo_name; - if ((client.properties.client_teaforo_flags & 0x01) > 0) - text += " (" + (_translations.oLMwSJYc || (_translations.oLMwSJYc = tr("Banned"))) + ")"; - if ((client.properties.client_teaforo_flags & 0x02) > 0) - text += " (" + (_translations.AxikKxHc || (_translations.AxikKxHc = tr("Stuff"))) + ")"; - if ((client.properties.client_teaforo_flags & 0x04) > 0) - text += " (" + (_translations.zskgIt4S || (_translations.zskgIt4S = tr("Premium"))) + ")"; - $.spawn("a") - .attr("href", "https://forum.teaspeak.de/index.php?members/" + client.properties.client_teaforo_id) - .attr("target", "_blank") - .text(text) - .appendTo(container); - } - else { - container.append($.spawn("a").text(_translations.gSwEalIF || (_translations.gSwEalIF = tr("Not connected")))); - } - } - /* Version */ - { - const container = tag.find(".property-version"); - let version_full = client.properties.client_version; - let version = version_full.substring(0, version_full.indexOf(" ")); - container.find(".value").empty().append($.spawn("a").attr("title", version_full).text(version), $.spawn("a").addClass("a-on").text("on"), $.spawn("a").text(client.properties.client_platform)); - const container_timestamp = container.find(".container-tooltip"); - let timestamp = -1; - version_full.replace(/\[build: ?([0-9]+)]/gmi, (group, ts) => { - timestamp = parseInt(ts); - return ""; - }); - if (timestamp > 0) { - container_timestamp.find(".value-timestamp").text(moment(timestamp * 1000).format('MMMM Do YYYY, h:mm:ss a')); - container_timestamp.show(); - } - else { - container_timestamp.hide(); - } - } - /* Country */ - { - const container = tag.find(".property-country"); - container.find(".value").empty().append($.spawn("div").addClass("country flag-" + client.properties.client_country.toLowerCase()), $.spawn("a").text(i18n.country_name(client.properties.client_country, _translations.DvkrY7gD || (_translations.DvkrY7gD = tr("Unknown"))))); - } - /* IP Address */ - { - const container = tag.find(".property-ip"); - const value = container.find(".value a"); - value.text(_translations.Jn3_cGLt || (_translations.Jn3_cGLt = tr("loading..."))); - container.find(".button-copy").on('click', event => { - copy_to_clipboard(value.text()); - createInfoModal(_translations.jmL5o4nI || (_translations.jmL5o4nI = tr("Client IP copied")), _translations.Tz0k6vyV || (_translations.Tz0k6vyV = tr("The client IP has been copied to your clipboard!"))).open(); - }); - callbacks.push(info => { - value.text(info.connection_client_ip ? (info.connection_client_ip + ":" + info.connection_client_port) : _translations.O1OHNB8l || (_translations.O1OHNB8l = tr("Hidden"))); - }); - } - /* first connected */ - { - const container = tag.find(".property-first-connected"); - container.find(".value a").text(_translations.RTQwXVHs || (_translations.RTQwXVHs = tr("loading..."))); - client.updateClientVariables().then(() => { - container.find(".value a").text(moment(client.properties.client_created * 1000).format('MMMM Do YYYY, h:mm:ss a')); - }).catch(error => { - container.find(".value a").text(_translations.NXeVdyQD || (_translations.NXeVdyQD = tr("error"))); - }); - } - /* connect count */ - { - const container = tag.find(".property-connect-count"); - container.find(".value a").text(_translations.Rcficr3s || (_translations.Rcficr3s = tr("loading..."))); - client.updateClientVariables().then(() => { - container.find(".value a").text(client.properties.client_totalconnections); - }).catch(error => { - container.find(".value a").text(_translations.DRUtOKKo || (_translations.DRUtOKKo = tr("error"))); - }); - } - /* Online since */ - { - const container = tag.find(".property-online-since"); - const node = container.find(".value a")[0]; - if (node) { - const update = () => { - node.innerText = format_time(client.calculateOnlineTime() * 1000, _translations.fAGxWnB9 || (_translations.fAGxWnB9 = tr("0 Seconds"))); - }; - callbacks.push(update); /* keep it in sync with all other updates. Else it looks wired */ - update(); - } - } - /* Idle time */ - { - const container = tag.find(".property-idle-time"); - const node = container.find(".value a")[0]; - if (node) { - callbacks.push(info => { - node.innerText = format_time(info.connection_idle_time, _translations.S2krnqJS || (_translations.S2krnqJS = tr("Currently active"))); - }); - node.innerText = _translations.bzbgZkFM || (_translations.bzbgZkFM = tr("loading...")); - } - } - /* ping */ - { - const container = tag.find(".property-ping"); - const node = container.find(".value a")[0]; - if (node) { - callbacks.push(info => { - if (info.connection_ping >= 0) - node.innerText = info.connection_ping.toFixed(0) + "ms ± " + info.connection_ping_deviation.toFixed(2) + "ms"; - else if (info.connection_ping == -1 && info.connection_ping_deviation == -1) - node.innerText = _translations.SkjAXN3e || (_translations.SkjAXN3e = tr("Not calculated")); - else - node.innerText = _translations.FjOC00RC || (_translations.FjOC00RC = tr("loading...")); - }); - node.innerText = _translations.kIMQ6Lut || (_translations.kIMQ6Lut = tr("loading...")); - } - } - } - function apply_groups(client, tag, modal, callbacks) { - /* server groups */ - { - const container_entries = tag.find(".entries"); - const container_empty = tag.find(".container-default-groups"); - const update_groups = () => { - container_entries.empty(); - container_empty.show(); - for (const group_id of client.assignedServerGroupIds()) { - if (group_id == client.channelTree.server.properties.virtualserver_default_server_group) - continue; - const group = client.channelTree.client.groups.serverGroup(group_id); - if (!group) - continue; //This shall never happen! - container_empty.hide(); - container_entries.append($.spawn("div").addClass("entry").append(client.channelTree.client.fileManager.icons.generateTag(group.properties.iconid), $.spawn("a").addClass("name").text(group.name + " (" + group.id + ")"), $.spawn("div").addClass("button-delete").append($.spawn("div").addClass("icon_em client-delete").attr("title", _translations.SjS4iMTN || (_translations.SjS4iMTN = tr("Delete group"))).on('click', event => { - client.channelTree.client.serverConnection.send_command("servergroupdelclient", { - sgid: group.id, - cldbid: client.properties.client_database_id - }).then(result => update_groups()); - })).toggleClass("visible", client.channelTree.client.permissions.neededPermission(PermissionType.I_SERVER_GROUP_MEMBER_REMOVE_POWER).granted(group.requiredMemberRemovePower) || - client.clientId() == client.channelTree.client.getClientId() && client.channelTree.client.permissions.neededPermission(PermissionType.I_SERVER_GROUP_SELF_REMOVE_POWER).granted(group.requiredMemberRemovePower)))); - } - }; - tag.find(".button-group-add").on('click', () => client.open_assignment_modal()); - update_groups(); - } - } - function apply_packets(client, tag, modal, callbacks) { - /* Packet Loss */ - { - const container = tag.find(".statistic-packet-loss"); - const node_downstream = container.find(".downstream .value")[0]; - const node_upstream = container.find(".upstream .value")[0]; - if (node_downstream) { - callbacks.push(info => { - node_downstream.innerText = info.connection_server2client_packetloss_control < 0 ? _translations.vozQRN8R || (_translations.vozQRN8R = tr("Not calculated")) : (info.connection_server2client_packetloss_control || 0).toFixed(); - }); - node_downstream.innerText = _translations.vdSpi1jT || (_translations.vdSpi1jT = tr("loading...")); - } - if (node_upstream) { - callbacks.push(info => { - node_upstream.innerText = info.connection_client2server_packetloss_total < 0 ? _translations.syz7QWKN || (_translations.syz7QWKN = tr("Not calculated")) : (info.connection_client2server_packetloss_total || 0).toFixed(); - }); - node_upstream.innerText = _translations.icJiGa8t || (_translations.icJiGa8t = tr("loading...")); - } - } - /* Packets transmitted */ - { - const container = tag.find(".statistic-transmitted-packets"); - const node_downstream = container.find(".downstream .value")[0]; - const node_upstream = container.find(".upstream .value")[0]; - if (node_downstream) { - callbacks.push(info => { - let packets = 0; - packets += info.connection_packets_received_speech > 0 ? info.connection_packets_received_speech : 0; - packets += info.connection_packets_received_control > 0 ? info.connection_packets_received_control : 0; - packets += info.connection_packets_received_keepalive > 0 ? info.connection_packets_received_keepalive : 0; - if (packets == 0 && info.connection_packets_received_keepalive == -1) - node_downstream.innerText = _translations.a7UYf6jl || (_translations.a7UYf6jl = tr("Not calculated")); - else - node_downstream.innerText = MessageHelper.format_number(packets, { unit: "Packets" }); - }); - node_downstream.innerText = _translations.Rghh2BiN || (_translations.Rghh2BiN = tr("loading...")); - } - if (node_upstream) { - callbacks.push(info => { - let packets = 0; - packets += info.connection_packets_sent_speech > 0 ? info.connection_packets_sent_speech : 0; - packets += info.connection_packets_sent_control > 0 ? info.connection_packets_sent_control : 0; - packets += info.connection_packets_sent_keepalive > 0 ? info.connection_packets_sent_keepalive : 0; - if (packets == 0 && info.connection_packets_sent_keepalive == -1) - node_upstream.innerText = _translations.YhgjzYlu || (_translations.YhgjzYlu = tr("Not calculated")); - else - node_upstream.innerText = MessageHelper.format_number(packets, { unit: "Packets" }); - }); - node_upstream.innerText = _translations.XAulSBWk || (_translations.XAulSBWk = tr("loading...")); - } - } - /* Bytes transmitted */ - { - const container = tag.find(".statistic-transmitted-bytes"); - const node_downstream = container.find(".downstream .value")[0]; - const node_upstream = container.find(".upstream .value")[0]; - if (node_downstream) { - callbacks.push(info => { - let bytes = 0; - bytes += info.connection_bytes_received_speech > 0 ? info.connection_bytes_received_speech : 0; - bytes += info.connection_bytes_received_control > 0 ? info.connection_bytes_received_control : 0; - bytes += info.connection_bytes_received_keepalive > 0 ? info.connection_bytes_received_keepalive : 0; - if (bytes == 0 && info.connection_bytes_received_keepalive == -1) - node_downstream.innerText = _translations.jstU8KwW || (_translations.jstU8KwW = tr("Not calculated")); - else - node_downstream.innerText = MessageHelper.network.format_bytes(bytes); - }); - node_downstream.innerText = _translations.iizJRjxp || (_translations.iizJRjxp = tr("loading...")); - } - if (node_upstream) { - callbacks.push(info => { - let bytes = 0; - bytes += info.connection_bytes_sent_speech > 0 ? info.connection_bytes_sent_speech : 0; - bytes += info.connection_bytes_sent_control > 0 ? info.connection_bytes_sent_control : 0; - bytes += info.connection_bytes_sent_keepalive > 0 ? info.connection_bytes_sent_keepalive : 0; - if (bytes == 0 && info.connection_bytes_sent_keepalive == -1) - node_upstream.innerText = _translations.hsKLHain || (_translations.hsKLHain = tr("Not calculated")); - else - node_upstream.innerText = MessageHelper.network.format_bytes(bytes); - }); - node_upstream.innerText = _translations.NAdmQZoI || (_translations.NAdmQZoI = tr("loading...")); - } - } - /* Bandwidth second */ - { - const container = tag.find(".statistic-bandwidth-second"); - const node_downstream = container.find(".downstream .value")[0]; - const node_upstream = container.find(".upstream .value")[0]; - if (node_downstream) { - callbacks.push(info => { - let bytes = 0; - bytes += info.connection_bandwidth_received_last_second_speech > 0 ? info.connection_bandwidth_received_last_second_speech : 0; - bytes += info.connection_bandwidth_received_last_second_control > 0 ? info.connection_bandwidth_received_last_second_control : 0; - bytes += info.connection_bandwidth_received_last_second_keepalive > 0 ? info.connection_bandwidth_received_last_second_keepalive : 0; - if (bytes == 0 && info.connection_bandwidth_received_last_second_keepalive == -1) - node_downstream.innerText = _translations.dP3HUqzO || (_translations.dP3HUqzO = tr("Not calculated")); - else - node_downstream.innerText = MessageHelper.network.format_bytes(bytes, { time: "s" }); - }); - node_downstream.innerText = _translations.i2XrSfWG || (_translations.i2XrSfWG = tr("loading...")); - } - if (node_upstream) { - callbacks.push(info => { - let bytes = 0; - bytes += info.connection_bandwidth_sent_last_second_speech > 0 ? info.connection_bandwidth_sent_last_second_speech : 0; - bytes += info.connection_bandwidth_sent_last_second_control > 0 ? info.connection_bandwidth_sent_last_second_control : 0; - bytes += info.connection_bandwidth_sent_last_second_keepalive > 0 ? info.connection_bandwidth_sent_last_second_keepalive : 0; - if (bytes == 0 && info.connection_bandwidth_sent_last_second_keepalive == -1) - node_upstream.innerText = _translations.KB1Gb7t_ || (_translations.KB1Gb7t_ = tr("Not calculated")); - else - node_upstream.innerText = MessageHelper.network.format_bytes(bytes, { time: "s" }); - }); - node_upstream.innerText = _translations.O0s5zgie || (_translations.O0s5zgie = tr("loading...")); - } - } - /* Bandwidth minute */ - { - const container = tag.find(".statistic-bandwidth-minute"); - const node_downstream = container.find(".downstream .value")[0]; - const node_upstream = container.find(".upstream .value")[0]; - if (node_downstream) { - callbacks.push(info => { - let bytes = 0; - bytes += info.connection_bandwidth_received_last_minute_speech > 0 ? info.connection_bandwidth_received_last_minute_speech : 0; - bytes += info.connection_bandwidth_received_last_minute_control > 0 ? info.connection_bandwidth_received_last_minute_control : 0; - bytes += info.connection_bandwidth_received_last_minute_keepalive > 0 ? info.connection_bandwidth_received_last_minute_keepalive : 0; - if (bytes == 0 && info.connection_bandwidth_received_last_minute_keepalive == -1) - node_downstream.innerText = _translations.AkeqGziU || (_translations.AkeqGziU = tr("Not calculated")); - else - node_downstream.innerText = MessageHelper.network.format_bytes(bytes, { time: "s" }); - }); - node_downstream.innerText = _translations.HWcY62Qh || (_translations.HWcY62Qh = tr("loading...")); - } - if (node_upstream) { - callbacks.push(info => { - let bytes = 0; - bytes += info.connection_bandwidth_sent_last_minute_speech > 0 ? info.connection_bandwidth_sent_last_minute_speech : 0; - bytes += info.connection_bandwidth_sent_last_minute_control > 0 ? info.connection_bandwidth_sent_last_minute_control : 0; - bytes += info.connection_bandwidth_sent_last_minute_keepalive > 0 ? info.connection_bandwidth_sent_last_minute_keepalive : 0; - if (bytes == 0 && info.connection_bandwidth_sent_last_minute_keepalive == -1) - node_upstream.innerText = _translations.s0iM_F0m || (_translations.s0iM_F0m = tr("Not calculated")); - else - node_upstream.innerText = MessageHelper.network.format_bytes(bytes, { time: "s" }); - }); - node_upstream.innerText = _translations.ks4dg80v || (_translations.ks4dg80v = tr("loading...")); - } - } - /* quota */ - { - const container = tag.find(".statistic-quota"); - const node_downstream = container.find(".downstream .value")[0]; - const node_upstream = container.find(".upstream .value")[0]; - if (node_downstream) { - client.updateClientVariables().then(info => { - //TODO: Test for own client info and if so then show the max quota (needed permission) - node_downstream.innerText = MessageHelper.network.format_bytes(client.properties.client_month_bytes_downloaded, { exact: false }); - }); - node_downstream.innerText = _translations.j8hYfOEQ || (_translations.j8hYfOEQ = tr("loading...")); - } - if (node_upstream) { - client.updateClientVariables().then(info => { - //TODO: Test for own client info and if so then show the max quota (needed permission) - node_upstream.innerText = MessageHelper.network.format_bytes(client.properties.client_month_bytes_uploaded, { exact: false }); - }); - node_upstream.innerText = _translations.Zf4MdfLy || (_translations.Zf4MdfLy = tr("loading...")); - } - } - } -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["5bc7b026ccd4fdff697caf41b4c42b847d0401f9506454a667d610d3f97f0462"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["5bc7b026ccd4fdff697caf41b4c42b847d0401f9506454a667d610d3f97f0462"] = "5bc7b026ccd4fdff697caf41b4c42b847d0401f9506454a667d610d3f97f0462"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "IhOda4YW", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalGroupAssignment.ts (8,21)" }, { name: "VqL4CmtZ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalGroupAssignment.ts (43,42)" }, { name: "TvHg9OzB", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalGroupAssignment.ts (48,97)" }, { name: "IAFhqbSA", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalGroupAssignment.ts (64,91)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var Modals; -(function (Modals) { - let current_modal; - function createServerGroupAssignmentModal(client, callback) { - if (current_modal) - current_modal.close(); - current_modal = createModal({ - header: _translations.IhOda4YW || (_translations.IhOda4YW = tr("Server Groups")), - body: () => { - let tag = {}; - let groups = tag["groups"] = []; - tag["client"] = client.createChatTag(); - const _groups = client.channelTree.client.groups.serverGroups.sort(GroupManager.sorter()); - for (let group of _groups) { - if (group.type != GroupType.NORMAL) - continue; - let entry = {}; - entry["id"] = group.id; - entry["name"] = group.name; - entry["disabled"] = !client.channelTree.client.permissions.neededPermission(PermissionType.I_GROUP_MEMBER_ADD_POWER).granted(group.requiredMemberRemovePower); - entry["default"] = client.channelTree.server.properties.virtualserver_default_server_group == group.id; - tag["icon_" + group.id] = client.channelTree.client.fileManager.icons.generateTag(group.properties.iconid); - groups.push(entry); - } - let template = $("#tmpl_server_group_assignment").renderTag(tag); - const update_groups = () => { - for (let group of _groups) { - template.find("input[group-id='" + group.id + "']").prop("checked", client.groupAssigned(group)); - } - }; - template.find(".group-entry input").each((_idx, _entry) => { - let entry = $(_entry); - entry.on('change', event => { - let group_id = parseInt(entry.attr("group-id")); - let group = client.channelTree.client.groups.serverGroup(group_id); - if (!group) { - console.warn(_translations.VqL4CmtZ || (_translations.VqL4CmtZ = tr("Could not resolve target group!"))); - return false; - } - let target = entry.prop("checked"); - callback([group.id], target).catch(e => { log.warn(LogCategory.GENERAL, _translations.TvHg9OzB || (_translations.TvHg9OzB = tr("Failed to change group assignment: %o")), e); }).then(update_groups); - }); - }); - template.find(".button-close").on('click', () => current_modal.close()); - template.find(".button-remove-all").on('click', () => { - const group_ids = []; - template.find(".group-entry input").each((_idx, _entry) => { - let entry = $(_entry); - if (entry.attr("default") !== undefined || !entry.prop("checked")) - return; - group_ids.push(parseInt(entry.attr("group-id"))); - }); - callback(group_ids, false).catch(e => { log.warn(LogCategory.GENERAL, _translations.IAFhqbSA || (_translations.IAFhqbSA = tr("Failed to remove all group assignments: %o")), e); }).then(update_groups); - }); - update_groups(); - return template; - }, - footer: null, - min_width: "10em" - }); - current_modal.htmlTag.find(".modal-body").addClass("modal-server-group-assignments"); - current_modal.close_listener.push(() => current_modal = undefined); - current_modal.open(); - } - Modals.createServerGroupAssignmentModal = createServerGroupAssignmentModal; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["6ddbc806d1e545bfbe7cd6edfda70c9a909461095cf3c503ccf9a1e9c6e456f2"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["6ddbc806d1e545bfbe7cd6edfda70c9a909461095cf3c503ccf9a1e9c6e456f2"] = "6ddbc806d1e545bfbe7cd6edfda70c9a909461095cf3c503ccf9a1e9c6e456f2"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "CQoIZUkg", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (11,21)" }, { name: "zoVj4N6w", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (98,59)" }, { name: "aGhDORx1", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (136,52)" }, { name: "Ygeok_Hp", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (137,42)" }, { name: "OKoqOjb_", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (149,30)" }, { name: "V9FDbgFE", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (158,30)" }, { name: "_KpIpBvt", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (162,34)" }, { name: "WTCs0FZc", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (204,27)" }, { name: "OBdh35e5", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (205,30)" }, { name: "weFhyRXi", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (211,27)" }, { name: "slnJLUnr", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (212,30)" }, { name: "ZQUb3mnr", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (228,35)" }, { name: "PM2yox2o", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (229,38)" }, { name: "Hdzgrw14", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (236,35)" }, { name: "haFBfmL2", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (237,38)" }, { name: "fWTWB0rC", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (246,39)" }, { name: "rXQ9XpMl", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (247,42)" }, { name: "qwKMVZCa", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (253,33)" }, { name: "FKg8ziMk", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (255,39)" }, { name: "jbJiQdmE", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (256,42)" }, { name: "Cnm0yzhD", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (276,35)" }, { name: "nP_b16tY", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (277,38)" }, { name: "VWE0wbL5", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (282,35)" }, { name: "p7VzcfRi", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (283,38)" }, { name: "LRMQF4bW", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (340,37)" }, { name: "iPgGKIpi", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (358,31)" }, { name: "TveVOKL0", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (364,41)" }, { name: "Sdb1D0Df", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (368,39)" }, { name: "hPVhYCvy", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (373,35)" }, { name: "Xqb7msAQ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (381,37)" }, { name: "evYSGDAg", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (397,45)" }, { name: "gJb1dy46", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (402,39)" }, { name: "fYxv3EsZ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (403,39)" }, { name: "kU_0puQM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (408,37)" }, { name: "EPY4nTY6", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (414,39)" }, { name: "CqQcLAq4", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (416,43)" }, { name: "NyIZkcuR", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (418,43)" }, { name: "bt6ItaiX", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (420,43)" }, { name: "x9YWUXAH", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (429,37)" }, { name: "wn8NJP_6", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (440,21)" }, { name: "F2IChL3l", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (582,39)" }, { name: "mO_jmbzr", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIconSelect.ts (586,39)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - function spawnIconSelect(client, callback_icon, selected_icon) { - selected_icon = selected_icon || 0; - let allow_manage = client.permissions.neededPermission(PermissionType.B_ICON_MANAGE).granted(1); - const modal = createModal({ - header: _translations.CQoIZUkg || (_translations.CQoIZUkg = tr("Icons")), - footer: undefined, - body: () => { - return $("#tmpl_icon_select").renderTag({ - enable_select: !!callback_icon, - enable_upload: allow_manage, - enable_delete: allow_manage - }); - }, - min_width: "20em" - }); - modal.htmlTag.find(".modal-body").addClass("modal-icon-select"); - const button_select = modal.htmlTag.find(".button-select"); - const button_delete = modal.htmlTag.find(".button-delete").prop("disabled", true); - const button_upload = modal.htmlTag.find(".button-upload").prop("disabled", !allow_manage); - const container_loading = modal.htmlTag.find(".container-loading").hide(); - const container_no_permissions = modal.htmlTag.find(".container-no-permissions").hide(); - const container_error = modal.htmlTag.find(".container-error").hide(); - const selected_container = modal.htmlTag.find(".selected-item-container"); - const container_icons = modal.htmlTag.find(".container-icons"); - const container_icons_remote = container_icons.find(".container-icons-remote"); - const container_icons_local = container_icons.find(".container-icons-local"); - const update_local_icons = (icons) => { - container_icons_local.empty(); - for (const icon_id of icons) { - const tag = client.fileManager.icons.generateTag(icon_id, { animate: false }).attr('title', "Icon " + icon_id); - if (callback_icon) { - tag.on('click', event => { - container_icons.find(".selected").removeClass("selected"); - tag.addClass("selected"); - selected_container.empty().append(tag.clone()); - selected_icon = icon_id; - button_select.prop("disabled", false); - }); - tag.on('dblclick', event => { - callback_icon(icon_id); - modal.close(); - }); - if (icon_id == selected_icon) - tag.trigger('click'); - } - tag.appendTo(container_icons_local); - } - }; - const update_remote_icons = () => { - container_no_permissions.hide(); - container_error.hide(); - container_loading.show(); - const display_remote_error = (error) => { - if (typeof (error) === "string") { - container_error.find(".error-message").text(error); - container_error.show(); - } - else { - container_error.hide(); - } - }; - client.fileManager.requestFileList("/icons").then(icons => { - const container_icons_remote_parent = container_icons_remote.parent(); - container_icons_remote.detach().empty(); - const chunk_size = 50; - const icon_chunks = []; - let index = 0; - while (icons.length > index) { - icon_chunks.push(icons.slice(index, index + chunk_size)); - index += chunk_size; - } - const process_next_chunk = () => { - const chunk = icon_chunks.pop_front(); - if (!chunk) - return; - for (const icon of chunk) { - const icon_id = parseInt(icon.name.substr("icon_".length)); - if (Number.isNaN(icon_id)) { - log.warn(LogCategory.GENERAL, _translations.zoVj4N6w || (_translations.zoVj4N6w = tr("Received an unparsable icon within icon list (%o)")), icon); - continue; - } - const tag = client.fileManager.icons.generateTag(icon_id, { animate: false }).attr('title', "Icon " + icon_id); - if (callback_icon || allow_manage) { - tag.on('click', event => { - container_icons.find(".selected").removeClass("selected"); - tag.addClass("selected"); - selected_container.empty().append(tag.clone()); - selected_icon = icon_id; - button_select.prop("disabled", false); - button_delete.prop("disabled", !allow_manage); - }); - tag.on('dblclick', event => { - if (!callback_icon) - return; - callback_icon(icon_id); - modal.close(); - }); - if (icon_id == selected_icon) - tag.trigger('click'); - } - tag.appendTo(container_icons_remote); - } - setTimeout(process_next_chunk, 100); - }; - process_next_chunk(); - container_icons_remote_parent.append(container_icons_remote); - container_error.hide(); - container_loading.hide(); - container_no_permissions.hide(); - }).catch(error => { - if (error instanceof CommandResult && error.id == ErrorID.PERMISSION_ERROR) { - container_no_permissions.show(); - } - else { - log.error(LogCategory.GENERAL, _translations.aGhDORx1 || (_translations.aGhDORx1 = tr("Failed to fetch icon list. Error: %o")), error); - display_remote_error(_translations.Ygeok_Hp || (_translations.Ygeok_Hp = tr("Failed to fetch icon list"))); - } - container_loading.hide(); - }); - }; - button_delete.on('click', event => { - if (!selected_icon) - return; - const selected = modal.htmlTag.find(".selected"); - if (selected.length != 1) - console.warn(_translations.OKoqOjb_ || (_translations.OKoqOjb_ = tr("UI selected icon length does not equal with 1! (%o)")), selected.length); - if (selected_icon < 1000) - return; /* we cant delete local icons */ - client.fileManager.icons.delete_icon(selected_icon).then(() => { - selected.detach(); - }).catch(error => { - if (error instanceof CommandResult && error.id == ErrorID.PERMISSION_ERROR) - return; - console.warn(_translations.V9FDbgFE || (_translations.V9FDbgFE = tr("Failed to delete icon %d: %o")), selected_icon, error); - error = error instanceof CommandResult ? error.extra_message || error.message : error; - createErrorModal(_translations._KpIpBvt || (_translations._KpIpBvt = tr("Failed to delete icon")), tra("Failed to delete icon.
Error: ", error)).open(); - }); - }); - button_upload.on('click', event => spawnIconUpload(client)); - update_local_icons([100, 200, 300, 500, 600]); - update_remote_icons(); - modal.htmlTag.find('.button-reload').on('click', () => update_remote_icons()); - button_select.prop("disabled", true).on('click', () => { - if (callback_icon) - callback_icon(selected_icon); - modal.close(); - }); - modal.htmlTag.find(".button-select-no-icon").on('click', () => { - if (callback_icon) - callback_icon(0); - modal.close(); - }); - modal.open(); - } - Modals.spawnIconSelect = spawnIconSelect; - function handle_icon_upload(file, client) { - const icon = {}; - icon.file = file; - icon.upload_state = "unset"; - const file_too_big = () => { - console.error(_translations.WTCs0FZc || (_translations.WTCs0FZc = tr("Failed to load file %s: File is too big!")), file.name); - createErrorModal(_translations.OBdh35e5 || (_translations.OBdh35e5 = tr("Icon upload failed")), tra("Failed to upload icon {}.
The given file is too big!", file.name)).open(); - icon.state = "error"; - }; - if (file.size > 1024 * 1024 * 512) { - file_too_big(); - } - else if ((file.size | 0) <= 0) { - console.error(_translations.weFhyRXi || (_translations.weFhyRXi = tr("Failed to load file %s: Your browser does not support file sizes!")), file.name); - createErrorModal(_translations.slnJLUnr || (_translations.slnJLUnr = tr("Icon upload failed")), tra("Failed to upload icon {}.
Your browser does not support file sizes!", file.name)).open(); - icon.state = "error"; - return; - } - else { - icon.state = "loading"; - icon.loader = (() => __awaiter(this, void 0, void 0, function* () { - const reader = new FileReader(); - try { - yield new Promise((resolve, reject) => { - reader.onload = resolve; - reader.onerror = reject; - reader.readAsDataURL(file); - }); - } - catch (error) { - console.log("Image failed to load (%o)", error); - console.error(_translations.ZQUb3mnr || (_translations.ZQUb3mnr = tr("Failed to load file %s: Image failed to load")), file.name); - createErrorModal(_translations.PM2yox2o || (_translations.PM2yox2o = tr("Icon upload failed")), tra("Failed to upload icon {}.
Failed to load image", file.name)).open(); - icon.state = "error"; - return; - } - const result = reader.result; - if (typeof (result) !== "string") { - console.error(_translations.Hdzgrw14 || (_translations.Hdzgrw14 = tr("Failed to load file %s: Result is not an media string (%o)")), file.name, result); - createErrorModal(_translations.haFBfmL2 || (_translations.haFBfmL2 = tr("Icon upload failed")), tra("Failed to upload icon {}.
Result is not an media string", file.name)).open(); - icon.state = "error"; - return; - } - /* get the CRC32 sum */ - { - if (!result.startsWith("data:image/")) { - console.error(_translations.fWTWB0rC || (_translations.fWTWB0rC = tr("Failed to load file %s: Invalid data media type (%o)")), file.name, result); - createErrorModal(_translations.rXQ9XpMl || (_translations.rXQ9XpMl = tr("Icon upload failed")), tra("Failed to upload icon {}.
File is not an image", file.name)).open(); - icon.state = "error"; - return; - } - const semi = result.indexOf(';'); - const type = result.substring(11, semi); - console.log(_translations.qwKMVZCa || (_translations.qwKMVZCa = tr("Given image has type %s")), type); - if (!result.substr(semi + 1).startsWith("base64,")) { - console.error(_translations.FKg8ziMk || (_translations.FKg8ziMk = tr("Failed to load file %s: Mimetype isnt base64 encoded (%o)")), file.name, result.substr(semi + 1)); - createErrorModal(_translations.jbJiQdmE || (_translations.jbJiQdmE = tr("Icon upload failed")), tra("Failed to upload icon {}.
Decoder returned unknown result", file.name)).open(); - icon.state = "error"; - return; - } - const crc = new Crc32(); - crc.update(arrayBufferBase64(result.substr(semi + 8))); - icon.icon_id = crc.digest(10); - } - const image = document.createElement("img"); - try { - yield new Promise((resolve, reject) => { - image.onload = resolve; - image.onerror = reject; - image.src = result; - }); - } - catch (error) { - console.log("Image failed to load (%o)", error); - console.error(_translations.Cnm0yzhD || (_translations.Cnm0yzhD = tr("Failed to load file %s: Image failed to load")), file.name); - createErrorModal(_translations.nP_b16tY || (_translations.nP_b16tY = tr("Icon upload failed")), tra("Failed to upload icon {}.{:br:}Failed to load image", file.name)).open(); - icon.state = "error"; - } - const width_error = message => { - console.error(_translations.VWE0wbL5 || (_translations.VWE0wbL5 = tr("Failed to load file %s: Invalid bounds: %s")), file.name, message); - createErrorModal(_translations.p7VzcfRi || (_translations.p7VzcfRi = tr("Icon upload failed")), tra("Failed to upload icon {}.{:br:}Image is too large ({})", file.name, message)).open(); - icon.state = "error"; - }; - if (!result.startsWith("data:image/svg+xml")) { - if (image.naturalWidth > 32 && image.naturalHeight > 32) { - width_error("width and height (max 32px). Given: " + image.naturalWidth + "x" + image.naturalHeight); - return; - } - if (image.naturalWidth > 32) { - width_error("width (max 32px)"); - return; - } - if (image.naturalHeight > 32) { - width_error("height (max 32px)"); - return; - } - } - console.log("Image loaded (%dx%d) %s (%s)", image.naturalWidth, image.naturalHeight, image.name, icon.icon_id); - icon.image_element = () => { - const image = document.createElement("img"); - image.src = result; - return image; - }; - icon.state = "valid"; - }))(); - icon.upload_icon = () => { - const create_progress_bar = () => { - const html = $.spawn("div").addClass("progress"); - const indicator = $.spawn("div").addClass("progress-bar bg-success progress-bar-striped progress-bar-animated"); - const message = $.spawn("div").addClass("progress-message"); - const set_value = value => { - indicator.stop(true, false).animate({ width: value + "%" }, 250); - if (value === 100) - setTimeout(() => indicator.removeClass("progress-bar-striped progress-bar-animated"), 900); - }; - return { - html_tag: html.append(indicator).append(message), - set_value: set_value, - set_message: msg => message.text(msg), - set_error: (msg) => { - let index = msg.lastIndexOf(':'); - message.text(index == -1 ? msg : msg.substring(index + 1)); - message.attr('title', msg); - set_value(100); - indicator.removeClass("bg-success").addClass("bg-danger"); - } - }; - }; - const container_image = $.spawn("div").addClass("container-icon"); - const bar = create_progress_bar(); - const set_error = message => { - bar.set_value(100); - bar.set_message((_translations.LRMQF4bW || (_translations.LRMQF4bW = tr("error: "))) + message); - }; - const html_tag = $.spawn("div") - .addClass("upload-entry") - .append(container_image) - .append(bar.html_tag); - icon.upload_html_tag = html_tag; - let icon_added = false; - if (icon.image_element) { - container_image.append(icon.image_element()); - icon_added = true; - } - bar.set_value(0); - bar.set_value(_translations.iPgGKIpi || (_translations.iPgGKIpi = tr("waiting"))); - return () => __awaiter(this, void 0, void 0, function* () { - const time_begin = Date.now(); - if (icon.state === "loading") { - bar.set_message(_translations.TveVOKL0 || (_translations.TveVOKL0 = tr("Awaiting local processing"))); - yield icon.loader; - // @ts-ignore Could happen because the loader function updates the state - if (icon.state !== "valid") { - set_error(_translations.Sdb1D0Df || (_translations.Sdb1D0Df = tr("local processing failed"))); - icon.upload_state = "error"; - return; - } - } - else if (icon.state === "error") { - set_error(_translations.hPVhYCvy || (_translations.hPVhYCvy = tr("local processing error"))); - icon.upload_state = "error"; - return; - } - if (!icon_added) - container_image.append(icon.image_element()); - bar.set_value(25); - bar.set_message(_translations.Xqb7msAQ || (_translations.Xqb7msAQ = tr("initializing"))); - let upload_key; - try { - upload_key = yield client.fileManager.upload_file({ - channel: undefined, - channel_password: undefined, - name: '/icon_' + icon.icon_id, - overwrite: false, - path: '', - size: icon.file.size - }); - } - catch (error) { - if (error instanceof CommandResult && error.id == ErrorID.FILE_ALREADY_EXISTS) { - if (!settings.static_global(Settings.KEY_DISABLE_COSMETIC_SLOWDOWN, false)) - yield new Promise(resolve => setTimeout(resolve, 500 + Math.floor(Math.random() * 500))); - bar.set_message(_translations.evYSGDAg || (_translations.evYSGDAg = tr("icon already exists"))); - bar.set_value(100); - icon.upload_state = "uploaded"; - return; - } - console.error(_translations.gJb1dy46 || (_translations.gJb1dy46 = tr("Failed to initialize upload: %o")), error); - bar.set_error(_translations.fYxv3EsZ || (_translations.fYxv3EsZ = tr("failed to initialize upload"))); - icon.upload_state = "error"; - return; - } - bar.set_value(50); - bar.set_message(_translations.kU_0puQM || (_translations.kU_0puQM = tr("uploading"))); - const connection = transfer.spawn_upload_transfer(upload_key); - try { - yield connection.put_data(icon.file); - } - catch (error) { - console.error(_translations.EPY4nTY6 || (_translations.EPY4nTY6 = tr("Icon upload failed for icon %s: %o")), icon.file.name, error); - if (typeof (error) === "string") - bar.set_error((_translations.CqQcLAq4 || (_translations.CqQcLAq4 = tr("upload failed: "))) + error); - else if (typeof (error.message) === "string") - bar.set_error((_translations.NyIZkcuR || (_translations.NyIZkcuR = tr("upload failed: "))) + error.message); - else - bar.set_error(_translations.bt6ItaiX || (_translations.bt6ItaiX = tr("upload failed"))); - icon.upload_state = "error"; - return; - } - const time_end = Date.now(); - if (!settings.static_global(Settings.KEY_DISABLE_COSMETIC_SLOWDOWN, false)) - yield new Promise(resolve => setTimeout(resolve, Math.max(0, 1000 - (time_end - time_begin)))); - bar.set_value(100); - bar.set_message(_translations.x9YWUXAH || (_translations.x9YWUXAH = tr("upload completed"))); - icon.upload_state = "uploaded"; - }); - }; - } - return icon; - } - function spawnIconUpload(client) { - const modal = createModal({ - header: _translations.wn8NJP_6 || (_translations.wn8NJP_6 = tr("Upload Icons")), - footer: undefined, - body: () => $("#tmpl_icon_upload").renderTag(), - closeable: false, - min_width: "20em" - }); - modal.htmlTag.find(".modal-body").addClass("modal-icon-upload"); - const button_upload = modal.htmlTag.find(".button-upload"); - const button_delete = modal.htmlTag.find(".button-remove").prop("disabled", true); - const button_add = modal.htmlTag.find(".button-add"); - const button_upload_abort = modal.htmlTag.find(".button-upload-abort"); - const input_file = modal.htmlTag.find(".input-file-upload"); - const container_icons = modal.htmlTag.find(".container-icons"); - let selected_icon; - let icons = []; - const update_upload_button = () => { - const icon_count = icons.filter(e => e.state === "valid").length; - button_upload.empty(); - tra("Upload icons ({})", icon_count).forEach(e => e.appendTo(button_upload)); - button_upload.prop("disabled", icon_count == 0); - }; - update_upload_button(); - const add_icon = (icon) => { - icons.push(icon); - icon.loader.then(e => { - if (icon.state === "valid") { - const image = icon.image_element(); - const element = $.spawn("div") - .addClass("icon-container") - .append(image); - container_icons.append(icon.html_tag = element); - element.on('click', event => { - container_icons.find(".selected").removeClass("selected"); - element.addClass("selected"); - selected_icon = icon; - button_delete.prop("disabled", false); - }); - update_upload_button(); - } - }); - }; - button_delete.on('click', event => { - if (!selected_icon) - return; - icons = icons.filter(e => e !== selected_icon); - if (selected_icon.html_tag) - selected_icon.html_tag.detach(); - button_delete.prop("disabled", true); - update_upload_button(); - }); - button_add.on('click', event => input_file.click()); - input_file.on('change', event => { - if (input_file[0].files.length > 0) { - for (let index = 0; index < input_file[0].files.length; index++) { - const file = input_file[0].files.item(index); - { - let duplicate = false; - for (const icon of icons) - if (icon.file.name === file.name && icon.file.lastModified === file.lastModified && icon.state !== "error") { - duplicate = true; - break; - } - if (duplicate) - continue; - } - add_icon(handle_icon_upload(file, client)); - } - } - }); - container_icons.on('dragover', ((event) => { - event.stopPropagation(); - event.preventDefault(); - event.dataTransfer.dropEffect = 'copy'; - })); - container_icons.on('drop', ((event) => { - event.stopPropagation(); - event.preventDefault(); - for (let index = 0; index < event.dataTransfer.files.length; index++) { - const file = event.dataTransfer.files.item(index); - { - let duplicate = false; - for (const icon of icons) - if (icon.file === file && icon.state !== "error") { - duplicate = true; - break; - } - if (duplicate) - continue; - } - add_icon(handle_icon_upload(file, client)); - } - })); - /* upload process */ - { - const container_upload = modal.htmlTag.find(".container-upload"); - const container_error = container_upload.find(".container-error"); - const container_success = container_upload.find(".container-success"); - const container_process = container_upload.find(".container-process"); - const container_info = container_upload.find(".container-info"); - const container_statistics = container_upload.find(".uploaded-statistics"); - const show_critical_error = message => { - container_error.find(".error-message").text(message); - container_error.removeClass("hidden"); - }; - const finish_upload = () => { - icons = icons.filter(e => { - if (e.upload_state === "uploaded") { - e.html_tag.detach(); - return false; - } - return true; - }); - update_upload_button(); - button_upload.prop("disabled", false); - button_upload.prop("disabled", false); - container_upload.hide(); - container_error.addClass("hidden"); - container_error.addClass("hidden"); - modal.set_closeable(true); - }; - const execute_upload = () => __awaiter(this, void 0, void 0, function* () { - if (!client || !client.fileManager) { - show_critical_error(_translations.F2IChL3l || (_translations.F2IChL3l = tr("Invalid client handle"))); - return; - } - if (!client.connected) { - show_critical_error(_translations.mO_jmbzr || (_translations.mO_jmbzr = tr("Not connected"))); - return; - } - let invoke_count = 0; - let succeed_count = 0; - let failed_count = 0; - const uploads = icons.filter(e => e.state !== "error"); - const executes = []; - for (const icon of uploads) { - executes.push({ - icon: icon, - task: icon.upload_icon() - }); - if (!icon.upload_html_tag) - continue; /* TODO: error? */ - icon.upload_html_tag.appendTo(container_process); - } - const update_state = () => container_statistics.text(invoke_count + " | " + succeed_count + " | " + failed_count); - for (const execute of executes) { - invoke_count++; - update_state(); - try { - yield execute.task(); - if (execute.icon.upload_state !== "uploaded") - throw "failed"; - succeed_count++; - } - catch (error) { - failed_count++; - } - update_state(); - } - container_info.css({ opacity: 1 }).animate({ opacity: 0 }, 250, () => container_info.css({ opacity: undefined }).hide()); - container_success.find(".message").html("Total icons: " + invoke_count + "
" + - "Succeeded icons: " + succeed_count + "
" + - "Failed icons: " + failed_count); - container_success.removeClass("hidden"); - }); - button_upload.on('click', event => { - modal.set_closeable(false); - button_upload.prop("disabled", true); - button_delete.prop("disabled", true); - button_add.prop("disabled", true); - container_process.empty(); - container_upload.show(); - execute_upload(); - }); - button_upload_abort.on('click', event => finish_upload()); - container_error.addClass("hidden"); - container_success.addClass("hidden"); - container_upload.hide(); - } - modal.open(); - modal.set_closeable(true); - } - Modals.spawnIconUpload = spawnIconUpload; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["c565e1eabe89f658f183c84f4ff888d5c072e3806c50d19008c565d931f36873"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["c565e1eabe89f658f183c84f4ff888d5c072e3806c50d19008c565d931f36873"] = "c565e1eabe89f658f183c84f4ff888d5c072e3806c50d19008c565d931f36873"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "Q26wE6OY", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (7,21)" }, { name: "HvyxPjCN", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (35,40)" }, { name: "KdBchkgj", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (35,54)" }, { name: "JadIc69x", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (57,46)" }, { name: "F3hRLwdH", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (57,80)" }, { name: "lvUbN5p7", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (70,53)" }, { name: "Qkr0VmdR", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (70,119)" }, { name: "OumC_Krz", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (79,46)" }, { name: "tRwKNZyK", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (79,80)" }, { name: "oZn_XbMx", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (127,21)" }, { name: "XAQhUOKN", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (161,32)" }, { name: "s81RoyQO", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (168,36)" }, { name: "WEuJt8JD", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (177,32)" }, { name: "_ZCxkHLa", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (183,39)" }, { name: "CEPpkX2y", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (184,36)" }, { name: "VA2ysnwv", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalIdentity.ts (200,36)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var Modals; -(function (Modals) { - function spawnTeamSpeakIdentityImprove(identity, name) { - let modal; - let elapsed_timer; - modal = createModal({ - header: _translations.Q26wE6OY || (_translations.Q26wE6OY = tr("Improve identity")), - body: () => { - let template = $("#tmpl_settings-teamspeak_improve").renderTag({ - identity_name: name - }); - template = $.spawn("div").append(template); - let active; - const button_start_stop = template.find(".button-start-stop"); - const button_close = template.find(".button-close"); - const input_current_level = template.find(".identity-level input"); - const input_target_level = template.find(".identity-target-level input"); - const input_threads = template.find(".threads input"); - const input_hash_rate = template.find(".hash-rate input"); - const input_elapsed = template.find(".time-elapsed input"); - button_close.on('click', event => { - if (active) - button_start_stop.trigger('click'); - if (modal.shown) - modal.close(); - }); - button_start_stop.on('click', event => { - button_start_stop - .toggleClass('btn-success', active) - .toggleClass('btn-danger', !active) - .text(active ? _translations.HvyxPjCN || (_translations.HvyxPjCN = tr("Start")) : _translations.KdBchkgj || (_translations.KdBchkgj = tr("Stop"))); - input_threads.prop("disabled", !active); - input_target_level.prop("disabled", !active); - if (active) { - input_hash_rate.val(0); - clearInterval(elapsed_timer); - active = false; - return; - } - active = true; - input_hash_rate.val("nan"); - const threads = parseInt(input_threads.val()); - const target_level = parseInt(input_target_level.val()); - if (target_level == 0) { - identity.improve_level(-1, threads, () => active, current_level => { - input_current_level.val(current_level); - }, hash_rate => { - input_hash_rate.val(hash_rate); - }).catch(error => { - console.error(error); - createErrorModal(_translations.JadIc69x || (_translations.JadIc69x = tr("Failed to improve identity")), (_translations.F3hRLwdH || (_translations.F3hRLwdH = tr("Failed to improve identity.
Error:"))) + error).open(); - if (active) - button_start_stop.trigger('click'); - }); - } - else { - identity.improve_level(target_level, threads, () => active, current_level => { - input_current_level.val(current_level); - }, hash_rate => { - input_hash_rate.val(hash_rate); - }).then(success => { - if (success) { - identity.level().then(level => { - input_current_level.val(level); - createInfoModal(_translations.lvUbN5p7 || (_translations.lvUbN5p7 = tr("Identity successfully improved")), MessageHelper.formatMessage(_translations.Qkr0VmdR || (_translations.Qkr0VmdR = tr("Identity successfully improved to level {}")), level)).open(); - }).catch(error => { - input_current_level.val("error: " + error); - }); - } - if (active) - button_start_stop.trigger('click'); - }).catch(error => { - console.error(error); - createErrorModal(_translations.OumC_Krz || (_translations.OumC_Krz = tr("Failed to improve identity")), (_translations.tRwKNZyK || (_translations.tRwKNZyK = tr("Failed to improve identity.
Error:"))) + error).open(); - if (active) - button_start_stop.trigger('click'); - }); - } - const begin = Date.now(); - elapsed_timer = setInterval(() => { - const time = (Date.now() - begin) / 1000; - let seconds = Math.floor(time % 60).toString(); - let minutes = Math.floor(time / 60).toString(); - if (seconds.length < 2) - seconds = "0" + seconds; - if (minutes.length < 2) - minutes = "0" + minutes; - input_elapsed.val(minutes + ":" + seconds); - }, 1000); - }); - template.find(".identity-unique-id input").val(identity.uid()); - identity.level().then(level => { - input_current_level.val(level); - }).catch(error => { - input_current_level.val("error: " + error); - }); - tooltip(template); - return template.children(); - }, - footer: undefined, - width: 750 - }); - modal.htmlTag.find(".modal-body").addClass("modal-identity-improve modal-green"); - modal.close_listener.push(() => modal.htmlTag.find(".button-close").trigger('click')); - modal.open(); - return modal; - } - Modals.spawnTeamSpeakIdentityImprove = spawnTeamSpeakIdentityImprove; - function spawnTeamSpeakIdentityImport(callback) { - let modal; - let selected_type; - let identities = {}; - modal = createModal({ - header: _translations.oZn_XbMx || (_translations.oZn_XbMx = tr("Import identity")), - body: () => { - let template = $("#tmpl_settings-teamspeak_import").renderTag(); - const button_import = template.find(".button-import"); - const button_file_select = template.find(".button-load-file"); - const container_status = template.find(".container-status"); - const input_text = template.find(".input-identity-text"); - const input_file = template.find(".file-selector"); - const set_status = (message, type) => { - container_status.toggleClass("hidden", !message); - if (message) { - container_status.toggleClass("error", type === "error"); - container_status.toggleClass("loading", type === "loading"); - container_status.find("a").text(message); - } - }; - button_file_select.on('click', event => input_file.trigger('click')); - template.find("input[name='type']").on('change', event => { - const type = event.target.value; - button_file_select.prop("disabled", type !== "file"); - input_text.prop("disabled", type !== "text"); - selected_type = type; - button_import.prop("disabled", !identities[type]); - }); - template.find("input[name='type'][value='file']").prop("checked", true).trigger("change"); - const import_identity = (data, ini) => { - set_status(_translations.XAQhUOKN || (_translations.XAQhUOKN = tr("Parsing identity")), "loading"); - profiles.identities.TeaSpeakIdentity.import_ts(data, ini).then(identity => { - identities[selected_type] = identity; - set_status("Identity parsed successfully.", "success"); - button_import.prop("disabled", false); - template.find(".success").show(); - }).catch(error => { - set_status((_translations.s81RoyQO || (_translations.s81RoyQO = tr("Failed to parse identity: "))) + error, "error"); - }); - }; - /* file select button */ - input_file.on('change', event => { - const element = event.target; - const file_reader = new FileReader(); - set_status(_translations.WEuJt8JD || (_translations.WEuJt8JD = tr("Loading file")), "loading"); - file_reader.onload = function () { - import_identity(file_reader.result, true); - }; - file_reader.onerror = ev => { - console.error(_translations._ZCxkHLa || (_translations._ZCxkHLa = tr("Failed to read give identity file: %o")), ev); - set_status(_translations.CEPpkX2y || (_translations.CEPpkX2y = tr("Failed to read the identity file.")), "error"); - return; - }; - if (element.files && element.files.length > 0) - file_reader.readAsText(element.files[0]); - }); - input_text.on('change keyup', event => { - const text = input_text.val(); - if (!text) { - set_status("", "success"); - return; - } - if (text.indexOf('V') == -1) { - set_status(_translations.VA2ysnwv || (_translations.VA2ysnwv = tr("Invalid identity string")), "error"); - return; - } - import_identity(text, false); - }); - button_import.on('click', event => { - modal.close(); - callback(identities[selected_type]); - }); - set_status("", "success"); - button_import.prop("disabled", true); - return template.children(); - }, - footer: undefined, - width: 750 - }); - modal.htmlTag.find(".modal-body").addClass("modal-identity-import modal-green"); - modal.open(); - return modal; - } - Modals.spawnTeamSpeakIdentityImport = spawnTeamSpeakIdentityImport; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["c5513d1c4dddf0d8de54b0178a14b1f259bb4b79f9befed66bd8679198a54bf0"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["c5513d1c4dddf0d8de54b0178a14b1f259bb4b79f9befed66bd8679198a54bf0"] = "c5513d1c4dddf0d8de54b0178a14b1f259bb4b79f9befed66bd8679198a54bf0"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "kBxmDo9P", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalInvite.ts (116,21)" }, { name: "ePBMg_5b", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalInvite.ts (170,35)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - const DefaultGeneratorSettings = { - flag_direct: true, - flag_resolved: false - }; - const build_url = (base, params) => { - if (Object.keys(params).length == 0) - return base; - return base + "?" + Object.keys(params) - .map(e => e + "=" + encodeURIComponent(params[e])) - .join("&"); - }; - //TODO: Server password - const url_generators = { - "tea-web": { - generate: properties => { - const address = properties.resolved_address ? properties.resolved_address : properties.address; - const address_str = address.host + (address.port === 9987 ? "" : address.port); - const parameter = "connect_default=" + (properties.flag_direct ? 1 : 0) + "&connect_address=" + encodeURIComponent(address_str); - let pathbase = ""; - if (document.location.protocol !== 'https:') { - /* - * Seems to be a test environment or the TeaClient for localhost where we dont have to use https. - */ - pathbase = "https://web.teaspeak.de/"; - } - else if (document.location.hostname === "localhost" || document.location.host.startsWith("127.")) { - pathbase = "https://web.teaspeak.de/"; - } - else { - pathbase = document.location.origin + document.location.pathname; - } - return pathbase + "?" + parameter; - }, - setting_available: setting => { - return { - flag_direct: true, - flag_resolved: true - }[setting] || false; - } - }, - "tea-client": { - generate: properties => { - const address = properties.resolved_address ? properties.resolved_address : properties.address; - let parameters = { - connect_default: properties.flag_direct ? 1 : 0 - }; - if (address.port != 9987) - parameters["port"] = address.port; - return build_url("teaclient://" + address.host + "/", parameters); - }, - setting_available: setting => { - return { - flag_direct: true, - flag_resolved: true - }[setting] || false; - } - }, - "teamspeak": { - generate: properties => { - const address = properties.resolved_address ? properties.resolved_address : properties.address; - let parameters = {}; - if (address.port != 9987) - parameters["port"] = address.port; - /* - ts3server://? - port=9987 - nickname=UserNickname - password=serverPassword - channel=MyDefaultChannel - cid=channelID - channelpassword=defaultChannelPassword - token=TokenKey - addbookmark=MyBookMarkLabel - */ - return build_url("ts3server://" + address.host + "/", parameters); - }, - setting_available: setting => { - return { - flag_direct: false, - flag_resolved: true - }[setting] || false; - } - } - }; - function spawnInviteEditor(connection) { - let modal; - modal = createModal({ - header: _translations.kBxmDo9P || (_translations.kBxmDo9P = tr("Invite URL creator")), - body: () => { - let template = $("#tmpl_invite").renderTag(); - template.find(".button-close").on('click', event => modal.close()); - return template; - }, - footer: undefined, - min_width: "20em", - width: "50em" - }); - modal.htmlTag.find(".modal-body").addClass("modal-invite"); - const button_copy = modal.htmlTag.find(".button-copy"); - const input_type = modal.htmlTag.find(".property-type select"); - const label_output = modal.htmlTag.find(".text-output"); - const invite_settings = [ - { - key: "flag_direct", - node: modal.htmlTag.find(".flag-direct-connect input"), - value: node => node.prop('checked'), - set_value: (node, value) => node.prop('checked', value == "1"), - disable: (node, flag) => node.prop('disabled', flag) - .firstParent('.checkbox').toggleClass('disabled', flag) - }, - { - key: "flag_resolved", - node: modal.htmlTag.find(".flag-resolved-address input"), - value: node => node.prop('checked'), - set_value: (node, value) => node.prop('checked', value == "1"), - disable: (node, flag) => node.prop('disabled', flag) - .firstParent('.checkbox').toggleClass('disabled', flag) - } - ]; - const update_buttons = () => { - const generator = url_generators[input_type.val()]; - if (!generator) { - for (const s of invite_settings) - s.disable(s.node, true); - return; - } - for (const s of invite_settings) - s.disable(s.node, !generator.setting_available(s.key)); - }; - const update_link = () => { - const generator = url_generators[input_type.val()]; - if (!generator) { - button_copy.prop('disabled', true); - label_output.text(_translations.ePBMg_5b || (_translations.ePBMg_5b = tr("Missing link generator"))); - return; - } - button_copy.prop('disabled', false); - const properties = { - address: connection.channelTree.server.remote_address, - resolved_address: connection.channelTree.client.serverConnection.remote_address() - }; - for (const s of invite_settings) - properties[s.key] = s.value(s.node); - label_output.text(generator.generate(properties)); - }; - for (const s of invite_settings) { - s.node.on('change keyup', () => { - settings.changeGlobal(Settings.FN_INVITE_LINK_SETTING(s.key), s.value(s.node)); - update_link(); - }); - s.set_value(s.node, settings.global(Settings.FN_INVITE_LINK_SETTING(s.key), DefaultGeneratorSettings[s.key])); - } - input_type.on('change', () => { - settings.changeGlobal(Settings.KEY_LAST_INVITE_LINK_TYPE, input_type.val()); - update_buttons(); - update_link(); - }).val(settings.global(Settings.KEY_LAST_INVITE_LINK_TYPE)); - button_copy.on('click', event => { - label_output.select(); - document.execCommand('copy'); - }); - update_buttons(); - update_link(); - modal.open(); - } - Modals.spawnInviteEditor = spawnInviteEditor; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["8551b0f0a521938dc720e3dfc08a60a6490a3e63ba4351dc91390a4142ec3872"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["8551b0f0a521938dc720e3dfc08a60a6490a3e63ba4351dc91390a4142ec3872"] = "8551b0f0a521938dc720e3dfc08a60a6490a3e63ba4351dc91390a4142ec3872"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "MLOU8bZn", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalKeySelect.ts (4,21)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var Modals; -(function (Modals) { - function spawnKeySelect(callback) { - let modal = createModal({ - header: _translations.MLOU8bZn || (_translations.MLOU8bZn = tr("Select a key")), - body: () => $("#tmpl_key_select").renderTag().children(), - footer: null, - width: "", - closeable: false - }); - const container_key = modal.htmlTag.find(".container-key a"); - const button_save = modal.htmlTag.find(".button-save"); - const button_cancel = modal.htmlTag.find(".button-cancel"); - let current_key_age; - let last_key; - let current_key; - const listener = (event) => { - if (event.type === ppt.EventType.KEY_PRESS) { - //console.log(tr("Key select got key press for %o"), event); - last_key = current_key; - current_key = event; - current_key_age = Date.now(); - container_key.text(ppt.key_description(event)); - button_save.prop("disabled", false); - } - }; - button_save.on('click', () => { - if (!app.is_web()) { - /* Because pressing the close button is also a mouse action */ - if (current_key_age + 1000 > Date.now() && current_key.key_code == "MOUSE2") - current_key = last_key; - } - callback(current_key); - modal.close(); - }).prop("disabled", true); - button_cancel.on('click', () => modal.close()); - ppt.register_key_listener(listener); - modal.close_listener.push(() => ppt.unregister_key_listener(listener)); - modal.htmlTag.find(".modal-body").addClass("modal-keyselect modal-green"); - modal.open(); - } - Modals.spawnKeySelect = spawnKeySelect; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["7565364a2370e4653cf564d50e9bf0c10d91c7b074bec401591fab85bca45080"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["7565364a2370e4653cf564d50e9bf0c10d91c7b074bec401591fab85bca45080"] = "7565364a2370e4653cf564d50e9bf0c10d91c7b074bec401591fab85bca45080"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "Znbysrt7", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (13,24)" }, { name: "kb1s3EbM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (35,28)" }, { name: "sJFl4SFw", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (35,90)" }, { name: "UX9qUFB7", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (41,24)" }, { name: "FR91na9p", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (63,51)" }, { name: "cm5CVSTu", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (84,61)" }, { name: "VAfsInts", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (104,51)" }, { name: "xYJ3MH9A", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (150,57)" }, { name: "oWfb8Ffx", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (169,51)" }, { name: "oxz3fXdx", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (192,51)" }, { name: "YpKG3TzD", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (217,51)" }, { name: "CpejOouC", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (240,51)" }, { name: "xoWTeact", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (270,51)" }, { name: "ypBEEqy0", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (294,51)" }, { name: "KMq5sCKT", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (336,51)" }, { name: "P7lD9A4F", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (367,51)" }, { name: "xlYmaITB", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (558,30)" }, { name: "T0lvDV9H", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (575,46)" }, { name: "c8dSeLZS", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (583,69)" }, { name: "ck4GDnos", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (595,43)" }, { name: "ds03qJjo", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (595,92)" }, { name: "whmoRxKI", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (617,46)" }, { name: "TDfuhMFl", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (640,65)" }, { name: "Wba6WIJI", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (672,43)" }, { name: "KegIP_Oa", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (672,96)" }, { name: "TJs6MrB8", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (743,43)" }, { name: "V8NKF3zP", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (743,110)" }, { name: "NUwpilKf", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (797,43)" }, { name: "WRDVagVX", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (797,109)" }, { name: "q_kBtt47", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (824,40)" }, { name: "gPVZM1r8", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (872,38)" }, { name: "lczFny7X", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (878,34)" }, { name: "Mk7tMQ1m", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (883,57)" }, { name: "uQ1yO6Yi", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (894,43)" }, { name: "DJ1pfloN", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (894,98)" }, { name: "pRpmtFjG", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (906,34)" }, { name: "_jdzYHNZ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (924,46)" }, { name: "q5PwTk4Y", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (933,69)" }, { name: "qokDUQla", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (947,43)" }, { name: "yuB8OE8e", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (947,104)" }, { name: "h2kycEoy", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (975,46)" }, { name: "sTxLZaJY", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1019,43)" }, { name: "WQE2CZa2", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1019,99)" }, { name: "VYtn59Ga", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1073,43)" }, { name: "YUZUVDR4", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1073,99)" }, { name: "xp_ufUbh", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1100,40)" }, { name: "chknDAXh", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1177,46)" }, { name: "n75WL7_X", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1182,46)" }, { name: "ac3ohRnJ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1217,54)" }, { name: "rRXCJPGM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1222,54)" }, { name: "H7Wzuyk5", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1245,42)" }, { name: "Jl44qY0M", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1245,70)" }, { name: "dtLjMQff", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1274,48)" }, { name: "xeMEtAeJ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1300,82)" }, { name: "Q3EsnBCT", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1319,44)" }, { name: "oN5z34tB", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1433,51)" }, { name: "rriL0uvS", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1439,55)" }, { name: "NMxty5e5", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1447,74)" }, { name: "v50TMxti", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1461,46)" }, { name: "bjvee5Ts", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1472,51)" }, { name: "uaoGscii", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1535,87)" }, { name: "qZHZIWWT", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1539,39)" }, { name: "WA9xLJOj", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1598,40)" }, { name: "QrA6IXLw", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1733,51)" }, { name: "vXhgxTE9", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1764,47)" }, { name: "qTOaE8kn", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1774,51)" }, { name: "W6NSppXR", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1782,70)" }, { name: "NRqLeDXD", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1796,47)" }, { name: "IezxIp9G", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1819,42)" }, { name: "TcN1P2qm", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalMusicManage.ts (1858,40)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - function openMusicManage(client, bot) { - const ev_registry = new events.Registry(); - ev_registry.enable_debug("music-manage"); - //dummy_controller(ev_registry); - permission_controller(ev_registry, bot, client); - let modal = createModal({ - header: tr(_translations.Znbysrt7 || (_translations.Znbysrt7 = tr("Playlist Manage"))), - body: () => build_modal(ev_registry), - footer: null, - min_width: "35em", - closeable: true - }); - modal.htmlTag.find(".modal-body").addClass("modal-music-manage"); - /* "controller" */ - { - } - modal.open(); - } - Modals.openMusicManage = openMusicManage; - function permission_controller(event_registry, bot, client) { - const error_msg = error => { - if (error instanceof CommandResult) { - if (error.id === ErrorID.PERMISSION_ERROR) { - const permission = client.permissions.resolveInfo(error.json["failed_permid"]); - return (_translations.kb1s3EbM || (_translations.kb1s3EbM = tr("failed on permission "))) + (permission ? permission.name : _translations.sJFl4SFw || (_translations.sJFl4SFw = tr("unknown"))); - } - return error.extra_message || error.message; - } - else if (typeof error === "string") - return error; - else - return _translations.UX9qUFB7 || (_translations.UX9qUFB7 = tr("command error")); - }; - { - event_registry.on("query_playlist_status", event => { - const playlist_id = bot.properties.client_playlist_id; - client.serverConnection.command_helper.request_playlist_info(playlist_id).then(result => { - event_registry.fire("playlist_status", { - status: "success", - data: { - replay_mode: result.playlist_replay_mode, - finished: result.playlist_flag_finished, - delete_played: result.playlist_flag_delete_played, - notify_song_change: bot.properties.client_flag_notify_song_change, - max_size: result.playlist_max_songs - } - }); - }).catch(error => { - event_registry.fire("playlist_status", { - status: "error", - error_msg: error_msg(error) - }); - log.error(LogCategory.CLIENT, _translations.FR91na9p || (_translations.FR91na9p = tr("Failed to query playlist info for playlist %d: %o")), playlist_id, error); - }); - }); - event_registry.on("set_playlist_status", event => { - const playlist_id = bot.properties.client_playlist_id; - const property_map = { - "replay_mode": "playlist_replay_mode", - "finished": "playlist_flag_finished", - "delete_played": "playlist_flag_delete_played", - "max_size": "playlist_max_songs" - }; - Promise.resolve().then(() => { - if (event.key === "notify_song_change") { - return client.serverConnection.send_command("clientedit", { - clid: bot.clientId(), - client_flag_notify_song_change: event.value - }); - } - else { - const property = property_map[event.key]; - if (!property) - return Promise.reject(_translations.cm5CVSTu || (_translations.cm5CVSTu = tr("unknown property"))); - const data = { - playlist_id: playlist_id - }; - data[property] = event.value; - return client.serverConnection.send_command("playlistedit", data); - } - }).then(() => { - event_registry.fire("set_playlist_status_result", { - status: "success", - key: event.key, - value: event.value - }); - }).catch(error => { - event_registry.fire("set_playlist_status_result", { - status: "error", - key: event.key, - error_msg: error_msg(error) - }); - log.error(LogCategory.CLIENT, _translations.VAfsInts || (_translations.VAfsInts = tr("Failed to change playlist status %s for playlist %d: %o")), event.key, playlist_id, error); - }); - }); - event_registry.on("query_bot_status", event => { - setTimeout(() => { - event_registry.fire("bot_status", { - status: "success", - data: { - channel_commander: bot.properties.client_is_channel_commander, - volume: bot.properties.player_volume, - description: bot.properties.client_description, - default_country_code: (!bot.channelTree ? undefined : - !bot.channelTree.server ? undefined : bot.channelTree.server.properties.virtualserver_country_code) || "DE", - country_code: bot.properties.client_country, - name: bot.properties.client_nickname, - priority_speaker: bot.properties.client_is_priority_speaker, - bot_type: bot.properties.client_bot_type, - client_platform: bot.properties.client_platform, - client_version: bot.properties.client_version, - uptime_mode: bot.properties.client_uptime_mode - } - }); - }, 0); - }); - event_registry.on("set_bot_status", event => { - const property_map = { - "channel_commander": "client_is_channel_commander", - "volume": "player_volume", - "description": "client_description", - "country_code": "client_country", - "name": "client_nickname", - "priority_speaker": "client_is_priority_speaker", - "bot_type": "client_bot_type", - "client_platform": "client_platform", - "client_version": "client_version", - "uptime_mode": "client_uptime_mode" - }; - Promise.resolve().then(() => { - const property = property_map[event.key]; - if (!property) - return Promise.reject(_translations.xYJ3MH9A || (_translations.xYJ3MH9A = tr("unknown property"))); - const data = { - clid: bot.clientId() - }; - data[property] = event.value; - return client.serverConnection.send_command("clientedit", data); - }).then(() => { - event_registry.fire("set_bot_status_result", { - status: "success", - key: event.key, - value: event.value - }); - }).catch(error => { - event_registry.fire("set_bot_status_result", { - status: "error", - key: event.key, - error_msg: error_msg(error) - }); - log.error(LogCategory.CLIENT, _translations.oWfb8Ffx || (_translations.oWfb8Ffx = tr("Failed to change bot setting %s: %o")), event.key, error); - }); - }); - } - /* permissions */ - { - event_registry.on("query_general_permissions", event => { - const playlist_id = bot.properties.client_playlist_id; - client.permissions.requestPlaylistPermissions(playlist_id).then(result => { - const permissions = {}; - for (const permission of result) - if (permission.hasValue()) - permissions[permission.type.name] = permission.value; - event_registry.fire("general_permissions", { - status: "success", - permissions: permissions - }); - }).catch(error => { - event_registry.fire("general_permissions", { - status: "error", - error_msg: error_msg(error) - }); - log.error(LogCategory.CLIENT, _translations.oxz3fXdx || (_translations.oxz3fXdx = tr("Failed to query playlist general permissions for playlist %d: %o")), playlist_id, error); - }); - }); - event_registry.on("set_general_permission", event => { - const playlist_id = bot.properties.client_playlist_id; - client.serverConnection.send_command("playlistaddperm", { - playlist_id: playlist_id, - permsid: event.key, - permvalue: event.value, - permskip: false, - permnegated: false - }).then(() => { - event_registry.fire("set_general_permission_result", { - key: event.key, - status: "success", - value: event.value - }); - }).catch(error => { - event_registry.fire("set_general_permission_result", { - status: "error", - key: event.key, - error_msg: error_msg(error) - }); - log.error(LogCategory.CLIENT, _translations.YpKG3TzD || (_translations.YpKG3TzD = tr("Failed to set playlist general permissions for playlist %d and permission %d: %o")), playlist_id, event.key, error); - }); - }); - event_registry.on("query_client_permissions", event => { - const playlist_id = bot.properties.client_playlist_id; - const client_id = event.client_database_id; - client.permissions.requestPlaylistClientPermissions(playlist_id, client_id).then(result => { - const permissions = {}; - for (const permission of result) - if (permission.hasValue()) - permissions[permission.type.name] = permission.value; - event_registry.fire("client_permissions", { - status: "success", - client_database_id: event.client_database_id, - permissions: permissions - }); - }).catch(error => { - event_registry.fire("client_permissions", { - status: "error", - client_database_id: event.client_database_id, - error_msg: error_msg(error) - }); - log.error(LogCategory.CLIENT, _translations.CpejOouC || (_translations.CpejOouC = tr("Failed to query playlist client permissions for playlist %d and client %d: %o")), playlist_id, client_id, error); - }); - }); - event_registry.on("set_client_permission", event => { - const playlist_id = bot.properties.client_playlist_id; - const client_id = event.client_database_id; - client.serverConnection.send_command("playlistclientaddperm", { - playlist_id: playlist_id, - cldbid: client_id, - permsid: event.key, - permvalue: event.value, - permskip: false, - permnegated: false - }).then(() => { - event_registry.fire("set_client_permission_result", { - key: event.key, - status: "success", - client_database_id: client_id, - value: event.value - }); - }).catch(error => { - event_registry.fire("set_client_permission_result", { - status: "error", - key: event.key, - client_database_id: client_id, - error_msg: error_msg(error) - }); - log.error(LogCategory.CLIENT, _translations.xoWTeact || (_translations.xoWTeact = tr("Failed to set playlist client permissions for playlist %d, permission %d and client id %d: %o")), playlist_id, event.key, client_id, error); - }); - }); - event_registry.on("query_special_clients", event => { - const playlist_id = bot.properties.client_playlist_id; - client.serverConnection.command_helper.request_playlist_client_list(playlist_id).then(clients => { - return client.serverConnection.command_helper.info_from_cldbid(...clients); - }).then(clients => { - event_registry.fire("special_client_list", { - status: "success", - clients: clients.map(e => { - return { - name: e.client_nickname, - unique_id: e.client_unique_id, - database_id: e.client_database_id - }; - }) - }); - }).catch(error => { - event_registry.fire("special_client_list", { - status: "error", - error_msg: error_msg(error) - }); - log.error(LogCategory.CLIENT, _translations.ypBEEqy0 || (_translations.ypBEEqy0 = tr("Failed to query special client list for playlist %d: %o")), playlist_id, error); - }); - }); - event_registry.on("search_client", event => { - if (!event.text) - return; - const text = event.text; - Promise.resolve().then(() => { - let is_uuid = false; - try { - is_uuid = atob(text).length === 32; - } - catch (e) { } - if (is_uuid) { - return client.serverConnection.command_helper.info_from_uid(text); - } - else if (text.match(/^[0-9]{1,7}$/) && !isNaN(parseInt(text))) { - return client.serverConnection.command_helper.info_from_cldbid(parseInt(text)); - } - else { - //TODO: Database name lookup? - return Promise.reject("no results"); - } - }).then(result => { - if (result.length) { - const client = result[0]; - event_registry.fire("search_client_result", { - status: "success", - client: { - name: client.client_nickname, - unique_id: client.client_unique_id, - database_id: client.client_database_id - } - }); - } - else { - event_registry.fire("search_client_result", { - status: "empty" - }); - } - }).catch(error => { - event_registry.fire("search_client_result", { - status: "error", - error_msg: error_msg(error) - }); - log.error(LogCategory.CLIENT, _translations.KMq5sCKT || (_translations.KMq5sCKT = tr("Failed to lookup search text \"%s\": %o")), text, error); - }); - }); - event_registry.on("query_group_permissions", event => { - client.permissions.find_permission(event.permission_name).then(result => { - let groups = []; - for (const e of result) { - if (e.type !== "server_group") - continue; - const group = client.groups.serverGroup(e.group_id); - if (!group) - continue; - groups.push({ - name: group.name, - value: e.value, - id: group.id - }); - } - event_registry.fire("group_permissions", { - status: "success", - groups: groups, - permission_name: event.permission_name - }); - }).catch(error => { - event_registry.fire("group_permissions", { - status: "error", - error_msg: error_msg(error), - permission_name: event.permission_name - }); - log.error(LogCategory.CLIENT, _translations.P7lD9A4F || (_translations.P7lD9A4F = tr("Failed to execute permfind for permission %s: %o")), event.permission_name, error); - }); - }); - } - } - function dummy_controller(event_registry) { - /* settings */ - { - event_registry.on("query_bot_status", event => { - setTimeout(() => { - event_registry.fire("bot_status", { - status: "success", - data: { - name: "Another TeaSpeak bot", - country_code: "DE", - default_country_code: "GB", - channel_commander: false, - description: "Hello World", - priority_speaker: true, - volume: 66, - uptime_mode: 0, - client_version: "Version", - client_platform: "Platform", - bot_type: 0 - } - }); - }); - }); - event_registry.on("query_playlist_status", event => { - setTimeout(() => { - event_registry.fire("playlist_status", { - status: "success", - data: { - max_size: 55, - notify_song_change: true, - delete_played: false, - finished: false, - replay_mode: 2 - } - }); - }); - }); - } - /* permissions */ - { - event_registry.on("query_special_clients", event => { - setTimeout(() => { - event_registry.fire("special_client_list", { - status: "success", - clients: [{ - name: "WolverinDEV", - database_id: 1, - unique_id: "abd" - }, { - name: "WolverinDEV 2", - database_id: 2, - unique_id: "abd1" - }, { - name: "WolverinDEV 3", - database_id: 3, - unique_id: "abd1" - }] - }); - }, 0); - }); - event_registry.on("query_group_permissions", event => { - setTimeout(() => { - event_registry.fire("group_permissions", { - status: "success", - groups: [{ - value: 20, - name: "Server Admin p:20", - id: 0 - }, { - value: 10, - name: "Server Mod p:10", - id: 0 - }], - permission_name: event.permission_name - }); - }, 0); - }); - event_registry.on("query_general_permissions", event => { - setTimeout(() => { - event_registry.fire("general_permissions", { - status: "success", - permissions: { - i_playlist_song_needed_add_power: 77 - } - }); - }, 0); - }); - event_registry.on("set_general_permission", event => { - setTimeout(() => { - event_registry.fire("set_general_permission_result", { - key: event.key, - value: event.value, - status: "success" - }); - }); - }); - event_registry.on("query_client_permissions", event => { - setTimeout(() => { - event_registry.fire("client_permissions", { - client_database_id: event.client_database_id, - status: "success", - permissions: { - i_playlist_song_needed_add_power: 77 - } - }); - }, 500); - }); - event_registry.on("set_client_permission", event => { - setTimeout(() => { - event_registry.fire("set_client_permission_result", { - key: event.key, - client_database_id: event.client_database_id, - status: "success", - value: event.value - }); - }, 500); - }); - } - } - function build_modal(event_registry) { - const tag = $("#tmpl_music_manage").renderTag(); - const container_settings = tag.find(".body > .category-settings"); - build_settings_container(event_registry, container_settings); - const container_permissions = tag.find(".body > .category-permissions"); - build_permission_container(event_registry, container_permissions); - /* general switch */ - { - let shown_container; - const header = tag.find(".header"); - const category_permissions = header.find(".category-permissions"); - event_registry.on("show_container", data => { - category_permissions.toggleClass("selected", data.container === "permissions"); - container_permissions.toggleClass("hidden", data.container !== "permissions"); - }); - category_permissions.on('click', event => { - if (shown_container === "permissions") - return; - event_registry.fire("show_container", { container: "permissions" }); - }); - const category_settings = header.find(".category-settings"); - event_registry.on("show_container", data => { - category_settings.toggleClass("selected", data.container === "settings"); - container_settings.toggleClass("hidden", data.container !== "settings"); - }); - category_settings.on('click', event => { - if (shown_container === "settings") - return; - event_registry.fire("show_container", { container: "settings" }); - }); - event_registry.on("show_container", data => shown_container = data.container); - } - /* input length fix */ - tag.find("input[maxlength]").on("input", event => { - const input = event.target; - const max = parseInt(input.getAttribute("maxlength")); - const text = input.value; - if (!isNaN(max) && text && text.length > max) - //input.value = text.substr(text.length - max); - input.value = text.substr(0, max); - }); - /* initialize */ - event_registry.fire("show_container", { container: "settings" }); - return tag.children(); - } - function build_settings_container(event_registry, tag) { - const show_change_error = (header, message) => { - createErrorModal(_translations.xlYmaITB || (_translations.xlYmaITB = tr("Failed to change value")), header + "
" + message).open(); - }; - /* music bot settings */ - { - const container = tag.find(".settings-bot"); - /* bot name */ - { - const input = container.find(".option-bot-name"); - let last_value = undefined; - event_registry.on("query_bot_status", event => { - last_value = undefined; - input - .prop("disabled", true) - .val(null) - .attr("placeholder", _translations.T0lvDV9H || (_translations.T0lvDV9H = tr("loading..."))); - }); - event_registry.on("bot_status", event => { - if (event.status === "error") - input - .prop("disabled", true) - .val(null) - .attr("placeholder", event.error_msg || (_translations.c8dSeLZS || (_translations.c8dSeLZS = tr("error while loading")))); - else - input - .prop("disabled", false) - .attr("placeholder", null) - .val(last_value = event.data.name); - }); - event_registry.on("set_bot_status_result", event => { - if (event.key !== "name") - return; - if (event.status !== "success") - show_change_error(_translations.ck4GDnos || (_translations.ck4GDnos = tr("Failed to set bot name")), event.error_msg || (_translations.ds03qJjo || (_translations.ds03qJjo = tr("timeout")))); - else - last_value = event.value; - input - .prop("disabled", false) - .attr("placeholder", null) - .val(last_value); - }); - input.on("keyup", event => event.key === "Enter" && input.trigger("focusout")); - input.on("focusout", event => { - const value = input.val(); - if (value === last_value) - return; - if (!value) { - input.val(last_value); - return; - } - input - .prop("disabled", true) - .val(null) - .attr("placeholder", _translations.whmoRxKI || (_translations.whmoRxKI = tr("applying..."))); - event_registry.fire("set_bot_status", { - key: "name", - value: value - }); - }); - } - /* country flag */ - { - const input = container.find(".option-bot-country"); - const flag = container.find(".container-country .country"); - let last_value = undefined, fallback_country = undefined; - const update_country_code = input => { - input = input || fallback_country || "ts"; - flag.each((_, e) => { - for (const [index, klass] of e.classList.entries()) - if (klass.startsWith("flag-")) - e.classList.remove(klass); - }); - flag.addClass("flag-" + input.toLowerCase()); - flag.attr("title", i18n.country_name(input, _translations.TDfuhMFl || (_translations.TDfuhMFl = tr("Unknown country")))); - }; - event_registry.on("query_bot_status", event => { - last_value = undefined; - input - .prop("disabled", true) - .val(null) - .attr("placeholder", "..."); - update_country_code("ts"); - }); - event_registry.on("bot_status", event => { - if (event.status === "error") - input - .prop("disabled", true) - .val(null) - .attr("placeholder", "err"); - else { - input - .prop("disabled", false) - .attr("placeholder", null) - .val(last_value = event.data.country_code); - fallback_country = event.data.default_country_code; - } - update_country_code(last_value); - }); - event_registry.on("set_bot_status_result", event => { - if (event.key !== "country_code") - return; - if (event.status !== "success") - show_change_error(_translations.Wba6WIJI || (_translations.Wba6WIJI = tr("Failed to set bots country")), event.error_msg || (_translations.KegIP_Oa || (_translations.KegIP_Oa = tr("timeout")))); - else - last_value = event.value; - input - .prop("disabled", false) - .attr("placeholder", null) - .val(last_value); - update_country_code(last_value); - }); - input.on("input", () => { - update_country_code(input.val()); - input.firstParent(".input-boxed").removeClass("is-invalid"); - }); - input.on("keyup", event => event.key === "Enter" && input.trigger("focusout")); - input.on("focusout", event => { - const value = input.val(); - if (value === last_value) - return; - if (value && value.length != 2) { - input.firstParent(".input-boxed").addClass("is-invalid"); - return; - } - input - .prop("disabled", true) - .val(null) - .attr("placeholder", "..."); - event_registry.fire("set_bot_status", { - key: "country_code", - value: value - }); - }); - } - /* flag channel commander */ - { - const input = container.find(".option-channel-commander"); - const label = input.parents("label"); - let last_value = undefined; - event_registry.on("query_bot_status", event => { - last_value = undefined; - label.addClass("disabled"); - input - .prop("checked", false) - .prop("disabled", true); - }); - event_registry.on("bot_status", event => { - if (event.status === "error") { - label.addClass("disabled"); - input - .prop("checked", false) - .prop("disabled", true); - } - else { - label.removeClass("disabled"); - input - .prop("checked", last_value = event.data.channel_commander) - .prop("disabled", false); - } - }); - event_registry.on("set_bot_status_result", event => { - if (event.key !== "channel_commander") - return; - if (event.status !== "success") - show_change_error(_translations.TJs6MrB8 || (_translations.TJs6MrB8 = tr("Failed to change channel commander state")), event.error_msg || (_translations.V8NKF3zP || (_translations.V8NKF3zP = tr("timeout")))); - else - last_value = event.value; - label.removeClass("disabled"); - input - .prop("checked", last_value) - .prop("disabled", false); - }); - input.on("change", event => { - label.addClass("disabled"); - input.prop("disabled", true); - event_registry.fire("set_bot_status", { - key: "channel_commander", - value: input.prop("checked") - }); - }); - } - /* flag priority speaker */ - { - const input = container.find(".option-priority-speaker"); - const label = input.parents("label"); - let last_value = undefined; - event_registry.on("query_bot_status", event => { - last_value = undefined; - label.addClass("disabled"); - input - .prop("checked", false) - .prop("disabled", true); - }); - event_registry.on("bot_status", event => { - if (event.status === "error") { - label.addClass("disabled"); - input - .prop("checked", false) - .prop("disabled", true); - } - else { - label.removeClass("disabled"); - input - .prop("checked", last_value = event.data.priority_speaker) - .prop("disabled", false); - } - }); - event_registry.on("set_bot_status_result", event => { - if (event.key !== "priority_speaker") - return; - if (event.status !== "success") - show_change_error(_translations.NUwpilKf || (_translations.NUwpilKf = tr("Failed to change priority speaker state")), event.error_msg || (_translations.WRDVagVX || (_translations.WRDVagVX = tr("timeout")))); - else - last_value = event.value; - label.removeClass("disabled"); - input - .prop("checked", last_value) - .prop("disabled", false); - }); - input.on("change", event => { - label.addClass("disabled"); - input.prop("disabled", true); - event_registry.fire("set_bot_status", { - key: "priority_speaker", - value: input.prop("checked") - }); - }); - } - /* status load timeout */ - { - let timeout; - event_registry.on("query_bot_status", event => { - timeout = setTimeout(() => { - event_registry.fire("bot_status", { - status: "error", - error_msg: _translations.q_kBtt47 || (_translations.q_kBtt47 = tr("load timeout")) - }); - }, 5000); - }); - event_registry.on("bot_status", event => clearTimeout(timeout)); - } - /* set status timeout */ - { - let timeouts = {}; - event_registry.on("set_bot_status", event => { - clearTimeout(timeouts[event.key]); - timeouts[event.key] = setTimeout(() => { - event_registry.fire("set_bot_status_result", { - status: "timeout", - key: event.key, - }); - }, 5000); - }); - event_registry.on("set_bot_status_result", event => { - clearTimeout(timeouts[event.key]); - delete timeouts[event.key]; - }); - } - } - /* music bot settings */ - { - const container = tag.find(".settings-playlist"); - /* playlist replay mode */ - { - const input = container.find(".option-replay-mode"); - let last_value = undefined; - const update_value = text => { - if (text) { - input.prop("disabled", true).addClass("disabled"); - input.val("-1"); - input.find("option[value=-1]").text(text); - } - else if (last_value >= 0 && last_value <= 3) { - input - .prop("disabled", false) - .removeClass("disabled"); - input.val(last_value); - } - else { - update_value(_translations.gPVZM1r8 || (_translations.gPVZM1r8 = tr("invalid value"))); - } - }; - event_registry.on("query_playlist_status", event => { - last_value = undefined; - update_value(_translations.lczFny7X || (_translations.lczFny7X = tr("loading..."))); - }); - event_registry.on("playlist_status", event => { - if (event.status === "error") { - update_value(event.error_msg || (_translations.Mk7tMQ1m || (_translations.Mk7tMQ1m = tr("error while loading")))); - } - else { - last_value = event.data.replay_mode; - update_value(undefined); - } - }); - event_registry.on("set_playlist_status_result", event => { - if (event.key !== "replay_mode") - return; - if (event.status !== "success") - show_change_error(_translations.uQ1yO6Yi || (_translations.uQ1yO6Yi = tr("Failed to change replay mode")), event.error_msg || (_translations.DJ1pfloN || (_translations.DJ1pfloN = tr("timeout")))); - else - last_value = event.value; - update_value(undefined); - }); - input.on("keyup", event => event.key === "Enter" && input.trigger("focusout")); - input.on("change", event => { - const value = parseInt(input.val()); - console.log(value); - if (isNaN(value)) - return; - update_value(_translations.pRpmtFjG || (_translations.pRpmtFjG = tr("applying..."))); - event_registry.fire("set_playlist_status", { - key: "replay_mode", - value: value - }); - }); - } - /* playlist max size */ - { - const input = container.find(".container-max-playlist-size input"); - let last_value = undefined; - event_registry.on("query_playlist_status", event => { - last_value = undefined; - input - .prop("disabled", true) - .val(null) - .attr("placeholder", _translations._jdzYHNZ || (_translations._jdzYHNZ = tr("loading..."))) - .firstParent(".input-boxed").addClass("disabled"); - }); - event_registry.on("playlist_status", event => { - if (event.status === "error") - input - .prop("disabled", true) - .val(null) - .attr("placeholder", event.error_msg || (_translations.q5PwTk4Y || (_translations.q5PwTk4Y = tr("error while loading")))) - .firstParent(".input-boxed").addClass("disabled"); - else - input - .prop("disabled", false) - .attr("placeholder", null) - .val((last_value = event.data.max_size).toString()) - .firstParent(".input-boxed").removeClass("disabled"); - }); - event_registry.on("set_playlist_status_result", event => { - if (event.key !== "max_size") - return; - if (event.status !== "success") - show_change_error(_translations.qokDUQla || (_translations.qokDUQla = tr("Failed to change max playlist size")), event.error_msg || (_translations.yuB8OE8e || (_translations.yuB8OE8e = tr("timeout")))); - else - last_value = event.value; - input - .prop("disabled", false) - .attr("placeholder", null) - .val(last_value) - .firstParent(".input-boxed").removeClass("disabled"); - }); - input.on("input", event => input.parentsUntil(".input-boxed").removeClass("is-invalid")); - input.on("keyup", event => event.key === "Enter" && input.trigger("focusout")); - input.on("focusout", event => { - const value = input.val(); - if (value === last_value) - return; - if (value === "") { - input.val(last_value); - return; - } - if (isNaN(parseInt(value))) { - input.parentsUntil(".input-boxed").addClass("is-invalid"); - return; - } - input - .prop("disabled", true) - .val(null) - .attr("placeholder", _translations.h2kycEoy || (_translations.h2kycEoy = tr("applying..."))) - .firstParent(".input-boxed").addClass("disabled"); - event_registry.fire("set_playlist_status", { - key: "max_size", - value: parseInt(value) - }); - }); - } - /* flag delete played */ - { - const input = container.find(".option-delete-played-songs"); - const label = input.parents("label"); - let last_value = undefined; - event_registry.on("query_playlist_status", event => { - last_value = undefined; - label.addClass("disabled"); - input - .prop("checked", false) - .prop("disabled", true); - }); - event_registry.on("playlist_status", event => { - if (event.status === "error") { - label.addClass("disabled"); - input - .prop("checked", false) - .prop("disabled", true); - } - else { - label.removeClass("disabled"); - input - .prop("checked", last_value = event.data.delete_played) - .prop("disabled", false); - } - }); - event_registry.on("set_playlist_status_result", event => { - if (event.key !== "delete_played") - return; - if (event.status !== "success") - show_change_error(_translations.sTxLZaJY || (_translations.sTxLZaJY = tr("Failed to change delete state")), event.error_msg || (_translations.WQE2CZa2 || (_translations.WQE2CZa2 = tr("timeout")))); - else - last_value = event.value; - label.removeClass("disabled"); - input - .prop("checked", last_value) - .prop("disabled", false); - }); - input.on("change", event => { - label.addClass("disabled"); - input.prop("disabled", true); - event_registry.fire("set_playlist_status", { - key: "delete_played", - value: input.prop("checked") - }); - }); - } - /* flag notify song change */ - { - const input = container.find(".option-notify-songs-change"); - const label = input.parents("label"); - let last_value = undefined; - event_registry.on("query_playlist_status", event => { - last_value = undefined; - label.addClass("disabled"); - input - .prop("checked", false) - .prop("disabled", true); - }); - event_registry.on("playlist_status", event => { - if (event.status === "error") { - label.addClass("disabled"); - input - .prop("checked", false) - .prop("disabled", true); - } - else { - label.removeClass("disabled"); - input - .prop("checked", last_value = event.data.notify_song_change) - .prop("disabled", false); - } - }); - event_registry.on("set_playlist_status_result", event => { - if (event.key !== "notify_song_change") - return; - if (event.status !== "success") - show_change_error(_translations.VYtn59Ga || (_translations.VYtn59Ga = tr("Failed to change notify state")), event.error_msg || (_translations.YUZUVDR4 || (_translations.YUZUVDR4 = tr("timeout")))); - else - last_value = event.value; - label.removeClass("disabled"); - input - .prop("checked", last_value) - .prop("disabled", false); - }); - input.on("change", event => { - label.addClass("disabled"); - input.prop("disabled", true); - event_registry.fire("set_playlist_status", { - key: "notify_song_change", - value: input.prop("checked") - }); - }); - } - /* status load timeout */ - { - let timeout; - event_registry.on("query_playlist_status", event => { - timeout = setTimeout(() => { - event_registry.fire("playlist_status", { - status: "error", - error_msg: _translations.xp_ufUbh || (_translations.xp_ufUbh = tr("load timeout")) - }); - }, 5000); - }); - event_registry.on("playlist_status", event => clearTimeout(timeout)); - } - /* set status timeout */ - { - let timeouts = {}; - event_registry.on("set_playlist_status", event => { - clearTimeout(timeouts[event.key]); - timeouts[event.key] = setTimeout(() => { - event_registry.fire("set_playlist_status_result", { - status: "timeout", - key: event.key, - }); - }, 5000); - }); - event_registry.on("set_playlist_status_result", event => { - clearTimeout(timeouts[event.key]); - delete timeouts[event.key]; - }); - } - } - /* reload button */ - { - const button = tag.find(".button-reload"); - let timeout; - event_registry.on(["query_bot_status", "query_playlist_status"], event => { - button.prop("disabled", true); - clearTimeout(timeout); - timeout = setTimeout(() => { - button.prop("disabled", false); - }, 1000); - }); - button.on("click", event => { - event_registry.fire("query_bot_status"); - event_registry.fire("query_playlist_status"); - }); - } - tooltip(tag); - /* initialize on show */ - { - let initialized = false; - event_registry.on("show_container", event => { - if (event.container !== "settings" || initialized) - return; - initialized = true; - event_registry.fire("query_bot_status"); - event_registry.fire("query_playlist_status"); - }); - } - } - function build_permission_container(event_registry, tag) { - /* client search mechanism */ - { - const container = tag.find(".table-head .column-client-specific .client-select"); - let list_shown = false; - /* search list show/hide */ - { - const button_list_clients = container.find(".button-list-clients"); - button_list_clients.on('click', event => event_registry.fire(list_shown ? "hide_client_list" : "show_client_list")); - event_registry.on("show_client_list", () => { - list_shown = true; - button_list_clients.text(_translations.chknDAXh || (_translations.chknDAXh = tr("Hide clients"))); - }); - event_registry.on("hide_client_list", () => { - list_shown = false; - button_list_clients.text(_translations.n75WL7_X || (_translations.n75WL7_X = tr("List clients"))); - }); - } - /* the search box */ - { - const input_search = container.find(".input-search"); - const button_search = container.find(".button-search"); - let search_timeout; - let last_query; - input_search.on('keyup', event => { - const text = input_search.val(); - if (text === last_query) - return; - if (text) - event_registry.fire("filter_client_list", { filter: text }); - else - event_registry.fire("filter_client_list", { filter: undefined }); - input_search.toggleClass("is-invalid", !list_shown && text === last_query); - if (!list_shown) { - button_search.prop("disabled", !text || !!search_timeout); - } - else { - last_query = text; - } - }); - input_search.on('keydown', event => { - if (event.key === "Enter" && !list_shown && !button_search.prop("disabled")) - button_search.trigger("click"); - }); - event_registry.on("show_client_list", () => { - button_search.prop("disabled", true); - input_search.attr("placeholder", _translations.ac3ohRnJ || (_translations.ac3ohRnJ = tr("Search client list"))); - }); - event_registry.on("hide_client_list", () => { - button_search.prop("disabled", !input_search.val() || !!search_timeout); - input_search.attr("placeholder", _translations.rRXCJPGM || (_translations.rRXCJPGM = tr("Client uid or database id"))); - }); - button_search.on("click", event => { - button_search.prop("disabled", true); - input_search.blur(); - const text = input_search.val(); - last_query = text; - event_registry.fire("search_client", { - text: text - }); - search_timeout = setTimeout(() => event_registry.fire("search_client_result", { - status: "timeout" - }), 5000); - }); - event_registry.on("search_client_result", event => { - clearTimeout(search_timeout); - search_timeout = 0; - button_search.prop("disabled", !input_search.val()); - if (event.status === "timeout") { - createErrorModal(_translations.H7Wzuyk5 || (_translations.H7Wzuyk5 = tr("Client search failed")), _translations.Jl44qY0M || (_translations.Jl44qY0M = tr("Failed to perform client search.
Search resulted in a timeout."))).open(); - return; - } - else if (event.status === "error" || event.status === "empty") { - //TODO: Display the error somehow? - input_search.addClass("is-invalid"); - return; - } - else { - event_registry.fire("special_client_set", { - client: event.client - }); - } - }); - } - /* the client list */ - { - const container = tag.find(".overlay-client-list"); - event_registry.on("show_client_list", () => container.removeClass("hidden")); - event_registry.on("hide_client_list", () => container.addClass("hidden")); - const button_refresh = container.find(".button-clientlist-refresh"); - const container_entries = container.find(".container-client-list"); - event_registry.on("special_client_list", data => { - button_refresh.prop("disabled", false); - container.find(".overlay").addClass("hidden"); - if (data.status === "error-permission") { - const overlay = container.find(".overlay-query-error-permissions"); - overlay.find("a").text(_translations.dtLjMQff || (_translations.dtLjMQff = tr("Insufficient permissions"))); - overlay.removeClass("hidden"); - } - else if (data.status === "success") { - container_entries.find(".client").remove(); /* clear */ - if (!data.clients.length) { - const overlay = container.find(".overlay-empty-list"); - overlay.removeClass("hidden"); - } - else { - for (const client of data.clients) { - const tag = $.spawn("div").addClass("client").append(htmltags.generate_client_object({ - add_braces: false, - client_id: 0, - client_database_id: client.database_id, - client_name: client.name, - client_unique_id: client.unique_id - })); - tag.on('dblclick', event => event_registry.fire("special_client_set", { client: client })); - tag.attr("x-filter", client.database_id + "_" + client.name + "_" + client.unique_id); - container_entries.append(tag); - } - } - } - else { - const overlay = container.find(".overlay-query-error"); - overlay.find("a").text(data.error_msg ? data.error_msg : _translations.xeMEtAeJ || (_translations.xeMEtAeJ = tr("query failed"))); - overlay.removeClass("hidden"); - } - }); - /* refresh button */ - button_refresh.on('click', event => { - button_refresh.prop("disabled", true); - event_registry.fire("query_special_clients"); - }); - /* special client list query timeout handler */ - { - let query_timeout; - event_registry.on("query_special_clients", event => { - query_timeout = setTimeout(() => { - event_registry.fire("special_client_list", { - status: "error", - error_msg: _translations.Q3EsnBCT || (_translations.Q3EsnBCT = tr("Query timeout")) - }); - }, 5000); - }); - event_registry.on("special_client_list", event => clearTimeout(query_timeout)); - } - /* first time client list show */ - { - let shown; - event_registry.on('show_client_list', event => { - if (shown) - return; - shown = true; - event_registry.fire("query_special_clients"); - }); - } - /* the client list filter */ - { - let filter; - const overlay = container.find(".overlay-filter-no-result"); - const update_filter = () => { - let shown = 0, hidden = 0; - container_entries.find(".client").each(function () { - const text = this.getAttribute("x-filter"); - if (!filter || text.toLowerCase().indexOf(filter) != -1) { - this.classList.remove("hidden"); - shown++; - } - else { - this.classList.add("hidden"); - hidden++; - } - }); - if (shown == 0 && hidden == 0) - return; - overlay.toggleClass("hidden", shown != 0); - }; - event_registry.on("special_client_list", event => update_filter()); - event_registry.on("filter_client_list", event => { - filter = (event.filter || "").toLowerCase(); - update_filter(); - }); - } - } - event_registry.on("special_client_set", event => { - container.toggleClass("hidden", !!event.client); - event_registry.fire("hide_client_list"); - }); - } - /* the client info */ - { - const container = tag.find(".table-head .column-client-specific .client-info"); - container.find(".button-client-deselect").on("click", event => { - event_registry.fire("special_client_set", { client: undefined }); - }); - event_registry.on("special_client_set", event => { - container.toggleClass("hidden", !event.client); - const client_container = container.find(".container-selected-client"); - client_container.find(".htmltag-client").remove(); - if (event.client) { - client_container.append(htmltags.generate_client_object({ - client_unique_id: event.client.unique_id, - client_name: event.client.name, - client_id: 0, - client_database_id: event.client.database_id, - add_braces: false - })); - } - }); - } - const power_needed_map = { - i_client_music_rename_power: "i_client_music_needed_rename_power", - i_client_music_modify_power: "i_client_music_needed_modify_power", - i_client_music_delete_power: "i_client_music_needed_delete_power", - i_playlist_view_power: "i_playlist_needed_view_power", - i_playlist_modify_power: "i_playlist_needed_modify_power", - i_playlist_permission_modify_power: "i_playlist_needed_permission_modify_power", - i_playlist_song_add_power: "i_playlist_song_needed_add_power", - i_playlist_song_move_power: "i_playlist_song_needed_move_power", - i_playlist_song_remove_power: "i_playlist_song_needed_remove_power", - b_virtualserver_playlist_permission_list: "b_virtualserver_playlist_permission_list" - }; - const needed_power_map = Object.entries(power_needed_map).reduce((ret, entry) => { - const [key, value] = entry; - ret[value] = key; - return ret; - }, {}); - /* general permissions */ - { - /* permission input functionality */ - { - tag.find(".general-permission").each((_, _e) => { - const elem = $(_e); - const permission_name = elem.attr("x-permission"); - if (!permission_name) - return; - const input = elem.find("input"); - input.attr("maxlength", 6); - let last_sync_value = undefined; - event_registry.on("query_general_permissions", event => { - input.prop("disabled", true).val(null); - input.attr("placeholder", _translations.oN5z34tB || (_translations.oN5z34tB = tr("loading..."))); - }); - event_registry.on("general_permissions", event => { - input.prop("disabled", true).val(null); - if (event.status === "timeout") { - input.attr("placeholder", _translations.rriL0uvS || (_translations.rriL0uvS = tr("load timeout"))); - } - else if (event.status === "success") { - input.prop("disabled", false); //TODO: Check permissions? - input.attr("placeholder", null); - const value = event.permissions ? event.permissions[permission_name] || 0 : 0; - last_sync_value = value; - input.val(value); - } - else { - input.attr("placeholder", event.error_msg || (_translations.NMxty5e5 || (_translations.NMxty5e5 = tr("load error")))); - } - }); - event_registry.on("set_general_permission_result", event => { - if (event.key !== permission_name) - return; - input.prop("disabled", false); //TODO: Check permissions? - input.attr("placeholder", null); - if (event.status === "success") { - input.val(event.value); - last_sync_value = event.value; - } - else if (event.status === "error") { - if (typeof last_sync_value === "number") - input.val(last_sync_value); - createErrorModal(_translations.v50TMxti || (_translations.v50TMxti = tr("Failed to change permission")), tra("Failed to change permission:{:br:}{}", event.error_msg)).open(); - } - }); - input.on("focusout", event => { - if (input.prop("disabled")) - return; - const value = parseInt(input.val()); - if (value === last_sync_value) - return; - input.prop("disabled", true).val(null); - input.attr("placeholder", _translations.bjvee5Ts || (_translations.bjvee5Ts = tr("applying..."))); - event_registry.fire("set_general_permission", { - key: permission_name, - value: value || 0 - }); - }); - input.on("keyup", event => event.key === "Enter" && input.blur()); - }); - } - /* the tooltip functionality */ - { - tag.find(".general-permission").each((_, _e) => { - const elem = $(_e); - const permission_name = elem.attr("x-permission"); - if (!permission_name) - return; - const required_power = needed_power_map[permission_name]; - if (!required_power) - return; - let last_sync_value = undefined; - let current_tag; - let loading = false; - let query_result; - event_registry.on("general_permissions", event => { - if (event.status === "success") - last_sync_value = event.permissions ? event.permissions[permission_name] || 0 : 0; - }); - event_registry.on("set_general_permission_result", event => { - if (event.key !== permission_name) - return; - if (event.status === "success") - last_sync_value = event.value; - }); - event_registry.on("refresh_permissions", event => { - query_result = undefined; /* require for the next time */ - }); - const show_query_result = () => { - if (!current_tag) - return; - const container_groups = current_tag.find(".container-groups"); - container_groups.children().remove(); - current_tag.find(".container-status").addClass("hidden"); - if (loading) { - current_tag.find(".status-loading").removeClass("hidden"); - } - else if (!query_result || query_result.status === "error") { - current_tag - .find(".status-error").removeClass("hidden") - .text((query_result ? query_result.error_msg : "") || (_translations.uaoGscii || (_translations.uaoGscii = tr("failed to query data")))); - } - else if (query_result.status === "timeout") { - current_tag - .find(".status-error").removeClass("hidden") - .text(_translations.qZHZIWWT || (_translations.qZHZIWWT = tr("timeout while loading"))); - } - else { - let count = 0; - for (const group of (query_result.groups || [])) { - if (group.value !== -1 && group.value < last_sync_value) - continue; - count++; - container_groups.append($.spawn("div").addClass("group").text(" - " + group.name + " (" + group.id + ")")); - } - if (count === 0) - current_tag.find(".status-no-groups").removeClass("hidden"); - } - }; - tooltip.initialize(elem, { - on_show(tag) { - current_tag = tag; - if (!query_result && !loading) { - event_registry.fire("query_group_permissions", { - permission_name: required_power - }); - loading = true; - } - show_query_result(); - }, - on_hide(tag) { - current_tag = undefined; - } - }); - event_registry.on("group_permissions", event => { - if (event.permission_name !== required_power) - return; - loading = false; - query_result = event; - show_query_result(); - }); - }); - /* refresh mechanism */ - { - event_registry.on("refresh_permissions", event => event_registry.fire("query_general_permissions")); - } - } - /* permission set timeout */ - { - let permission_timers = {}; - event_registry.on("set_general_permission", event => { - if (permission_timers[event.key]) - clearTimeout(permission_timers[event.key]); - permission_timers[event.key] = setTimeout(() => { - event_registry.fire("set_general_permission_result", { - key: event.key, - status: "error", - error_msg: _translations.WA9xLJOj || (_translations.WA9xLJOj = tr("controller timeout")) - }); - }, 5000); - }); - event_registry.on("set_general_permission_result", event => { - clearTimeout(permission_timers[event.key]); - delete permission_timers[event.key]; - }); - } - /* group query timeout */ - { - let timers = {}; - event_registry.on("query_group_permissions", event => { - if (timers[event.permission_name]) - clearTimeout(timers[event.permission_name]); - timers[event.permission_name] = setTimeout(() => { - event_registry.fire("group_permissions", { - permission_name: event.permission_name, - status: "timeout" - }); - }, 5000); - }); - event_registry.on("group_permissions", event => { - clearTimeout(timers[event.permission_name]); - delete timers[event.permission_name]; - }); - } - /* query timeout */ - { - let query_timeout; - event_registry.on("query_general_permissions", event => { - clearTimeout(query_timeout); - query_timeout = setTimeout(() => { - event_registry.fire("general_permissions", { - status: "timeout" - }); - }, 5000); - }); - event_registry.on("general_permissions", event => clearTimeout(query_timeout)); - } - /* refresh button */ - { - const button = tag.find(".button-permission-refresh"); - let refresh_timer; - let loading_client_permissions = false; - let loading_general_permissions = false; - const update_button = () => button.prop("disabled", refresh_timer || loading_client_permissions || loading_general_permissions); - event_registry.on("query_general_permissions", event => { - loading_general_permissions = true; - update_button(); - }); - event_registry.on("general_permissions", event => { - loading_general_permissions = false; - update_button(); - }); - event_registry.on("query_client_permissions", event => { - loading_client_permissions = true; - update_button(); - }); - event_registry.on("client_permissions", event => { - loading_client_permissions = false; - update_button(); - }); - button.on('click', event => { - event_registry.fire("refresh_permissions"); - /* allow refreshes only every second */ - refresh_timer = setTimeout(() => { - refresh_timer = undefined; - update_button(); - }, 1000); - }); - } - } - /* client specific permissions */ - { - const container = tag.find(".column-client-specific"); - let client_database_id = 0; - let needed_permissions = {}; - /* needed permissions updater */ - { - event_registry.on("general_permissions", event => { - if (event.status !== "success") - return; - needed_permissions = event.permissions; - }); - event_registry.on("set_general_permission_result", event => { - if (event.status !== "success") - return; - needed_permissions[event.key] = event.value; - }); - } - event_registry.on("special_client_set", event => { - client_database_id = event.client ? event.client.database_id : 0; - container.find(".client-permission").toggleClass("hidden", !event.client); - if (client_database_id) - event_registry.fire("query_client_permissions", { client_database_id: client_database_id }); - }); - const enabled_class = "client-apply"; - const disabled_class = "client-delete"; - container.find(".client-permission").each((_, _e) => { - const elem = $(_e); - const input = elem.find("input"); - const status_indicator = elem.find(".icon_em"); - const permission_name = elem.attr("x-permission"); - const permission_needed_name = power_needed_map[permission_name]; - let last_sync_value = undefined; - let hide_indicator = false; - if (typeof permission_needed_name !== "string") { - log.warn(LogCategory.GENERAL, _translations.QrA6IXLw || (_translations.QrA6IXLw = tr("Missing permission needed mapping for %s")), permission_name); - return; - } - const update_indicator = () => { - const value = parseInt(input.val()); - const needed = typeof needed_permissions[permission_needed_name] === "number" ? needed_permissions[permission_needed_name] : 0; - const flag = value == -1 ? true : isNaN(value) || value == 0 ? false : value >= needed; - status_indicator.toggle(!hide_indicator); - status_indicator.toggleClass(enabled_class, flag).toggleClass(disabled_class, !flag); - }; - event_registry.on("special_client_set", event => { - last_sync_value = undefined; - }); - event_registry.on("general_permissions", event => update_indicator()); - event_registry.on("set_general_permission_result", event => { - if (event.key !== permission_needed_name) - return; - if (event.status !== "success") - return; - update_indicator(); - }); - /* loading the permission */ - event_registry.on("query_client_permissions", event => { - if (event.client_database_id !== client_database_id) - return; - last_sync_value = undefined; - hide_indicator = true; - input.prop("disabled", true).val(null); - input.attr("placeholder", _translations.vXhgxTE9 || (_translations.vXhgxTE9 = tr("loading..."))); - update_indicator(); - }); - event_registry.on('client_permissions', event => { - if (event.client_database_id !== client_database_id) - return; - hide_indicator = false; - input.prop("disabled", true).val(null); - if (event.status === "timeout") { - input.attr("placeholder", _translations.qTOaE8kn || (_translations.qTOaE8kn = tr("load timeout"))); - } - else if (event.status === "success") { - input.prop("disabled", false); //TODO: Check permissions? - input.attr("placeholder", null); - const value = event.permissions ? event.permissions[permission_name] || 0 : 0; - last_sync_value = value; - input.val(value); - } - else { - input.attr("placeholder", event.error_msg || (_translations.W6NSppXR || (_translations.W6NSppXR = tr("load error")))); - } - update_indicator(); - }); - /* permission editing */ - input.attr("maxlength", 6); - input.on("focusout", event => { - if (!client_database_id) - return; - const value = parseInt(input.val()); - if (value === last_sync_value) - return; - input.prop("disabled", true).val(null); - input.attr("placeholder", _translations.NRqLeDXD || (_translations.NRqLeDXD = tr("applying..."))); - event_registry.fire("set_client_permission", { - client_database_id: client_database_id, - key: permission_name, - value: value || 0 - }); - hide_indicator = true; - update_indicator(); - }); - input.on("change", () => update_indicator()); - input.on("keyup", event => event.key === "Enter" && input.blur()); - event_registry.on("set_client_permission_result", event => { - if (event.key !== permission_name) - return; - input.prop("disabled", false); //TODO: Check permissions? - input.attr("placeholder", null); - if (event.status === "success") { - input.val(event.value); - last_sync_value = event.value; - } - else if (event.status === "error") { - if (typeof last_sync_value === "number") - input.val(last_sync_value); - createErrorModal(_translations.IezxIp9G || (_translations.IezxIp9G = tr("Failed to change permission")), tra("Failed to change permission:{:br:}{}", event.error_msg)).open(); - } - hide_indicator = false; - update_indicator(); - }); - }); - /* client permission query timeout */ - { - let timeout = {}; - event_registry.on("query_client_permissions", event => { - if (timeout[event.client_database_id]) - clearTimeout(timeout[event.client_database_id]); - timeout[event.client_database_id] = setTimeout(() => { - event_registry.fire("client_permissions", { - status: "timeout", - client_database_id: event.client_database_id - }); - }, 5000); - }); - event_registry.on("client_permissions", event => { - clearTimeout(timeout[event.client_database_id]); - }); - } - /* client permission set timeout */ - { - let timeout = {}; - event_registry.on("set_client_permission", event => { - const key = event.client_database_id + "_" + event.key; - if (timeout[key]) - clearTimeout(timeout[key]); - timeout[key] = setTimeout(() => { - event_registry.fire("set_client_permission_result", { - key: event.key, - status: "error", - client_database_id: event.client_database_id, - error_msg: _translations.TcN1P2qm || (_translations.TcN1P2qm = tr("timeout")) - }); - }, 5000); - }); - event_registry.on("set_client_permission_result", event => { - const key = event.client_database_id + "_" + event.key; - if (timeout[key]) { - clearTimeout(timeout[key]); - delete timeout[key]; - } - }); - } - event_registry.on("refresh_permissions", event => { - if (client_database_id) - event_registry.fire("query_client_permissions", { client_database_id: client_database_id }); - }); - tooltip(container); - } - /* a title attribute for permission column */ - tag.find(".table-body .column-permission a").each(function () { - this.setAttribute("title", this.textContent); - }); - /* initialize on show */ - { - let initialized = false; - event_registry.on("show_container", event => { - if (event.container !== "permissions" || initialized) - return; - initialized = true; - event_registry.fire("special_client_set", { client: undefined }); - event_registry.fire("query_general_permissions", {}); - }); - } - } -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["bb89811e744e5d317f61f537cddef6033b386003838e9d5b5605e65af1c35b7d"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["bb89811e744e5d317f61f537cddef6033b386003838e9d5b5605e65af1c35b7d"] = "bb89811e744e5d317f61f537cddef6033b386003838e9d5b5605e65af1c35b7d"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "bTUbzE93", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalNewcomer.ts (46,35)" }, { name: "eXHtaUUE", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalNewcomer.ts (46,56)" }, { name: "CbxHqsI9", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalNewcomer.ts (96,65)" }, { name: "i_CcdmUJ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalNewcomer.ts (96,83)" }, { name: "MFoo4HUQ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalNewcomer.ts (97,65)" }, { name: "EOvfKbzY", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalNewcomer.ts (97,83)" }, { name: "lLkLuT23", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalNewcomer.ts (386,39)" }, { name: "K0mUVYLm", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalNewcomer.ts (391,65)" }, { name: "Fqmae3Ke", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalNewcomer.ts (399,65)" }, { name: "TWiMcMlr", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalNewcomer.ts (408,65)" }, { name: "dqF7V4bv", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalNewcomer.ts (409,71)" }, { name: "oqlWN8_x", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalNewcomer.ts (415,39)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - const next_step = { - "welcome": "microphone", - //"microphone": app.is_web() ? "identity" : "speaker", /* speaker setup only for the native client! */ - "microphone": "identity", - "speaker": "identity", - "identity": "finish" - }; - const last_step = (() => { - const result = {}; - for (const key of Object.keys(next_step)) - if (!result[next_step[key]]) - result[next_step[key]] = key; - return result; - })(); - function openModalNewcomer() { - let modal = createModal({ - header: tra("Welcome to the {}", app.is_web() ? "TeaSpeak - Web client" : "TeaSpeak - Client"), - body: () => $("#tmpl_newcomer").renderTag({ - is_web: app.is_web() - }).children(), - footer: null, - width: "", - closeable: false - }); - const event_registry = new events.Registry(); - event_registry.enable_debug("newcomer"); - modal.htmlTag.find(".modal-body").addClass("modal-newcomer"); - initializeBasicFunctionality(modal.htmlTag, event_registry); - initializeStepWelcome(modal.htmlTag.find(".container-body .step.step-welcome"), event_registry); - initializeStepIdentity(modal.htmlTag.find(".container-body .step.step-identity"), event_registry); - initializeStepMicrophone(modal.htmlTag.find(".container-body .step.step-microphone"), event_registry, modal); - initializeStepFinish(modal.htmlTag.find(".container-body .step.step-finish"), event_registry); - event_registry.on("exit_guide", event => { - if (event.ask_yesno) - Modals.spawnYesNo(_translations.bTUbzE93 || (_translations.bTUbzE93 = tr("Are you sure?")), _translations.eXHtaUUE || (_translations.eXHtaUUE = tr("Do you really want to skip the basic setup guide?")), result => { - if (result) - event_registry.fire("exit_guide", { ask_yesno: false }); - }); - else - modal.close(); - }); - event_registry.fire("show_step", { step: "welcome" }); - modal.open(); - event_registry.fire_async("modal-shown"); - return modal; - } - Modals.openModalNewcomer = openModalNewcomer; - function initializeBasicFunctionality(tag, event_registry) { - const container_header = tag.find(".container-header"); - const tag_body = tag.find(".container-body .body"); - /* step navigation */ - event_registry.on("show_step", event => { - tag_body.find(".step").addClass("hidden"); - container_header.find(".step").addClass("hidden"); - tag_body.find(".step.step-" + event.step).removeClass("hidden"); - container_header.find(".step.step-" + event.step).removeClass("hidden"); - }); - /* button controller */ - { - const buttons = tag.find(".buttons"); - const button_last_step = buttons.find(".button-last-step"); - const button_next_step = buttons.find(".button-next-step"); - button_last_step.on('click', event => { - if (last_step[current_step]) - event_registry.fire("show_step", { step: last_step[current_step] }); - else - event_registry.fire("exit_guide", { ask_yesno: true }); - }); - let current_step; - button_next_step.on('click', event => { - if (next_step[current_step]) - event_registry.fire("show_step", { step: next_step[current_step] }); - else - event_registry.fire("exit_guide", { ask_yesno: false }); - }); - event_registry.on("show_step", event => { - current_step = event.step; - button_next_step.text(next_step[current_step] ? _translations.CbxHqsI9 || (_translations.CbxHqsI9 = tr("Next step")) : _translations.i_CcdmUJ || (_translations.i_CcdmUJ = tr("Finish guide"))); - button_last_step.text(last_step[current_step] ? _translations.MFoo4HUQ || (_translations.MFoo4HUQ = tr("Last step")) : _translations.EOvfKbzY || (_translations.EOvfKbzY = tr("Skip guide"))); - }); - event_registry.on("show_step", event => button_next_step.prop("disabled", true)); - event_registry.on("show_step", event => button_last_step.prop("disabled", true)); - event_registry.on("step-status", event => button_next_step.prop("disabled", !event.next_button)); - event_registry.on("step-status", event => button_last_step.prop("disabled", !event.previous_button)); - } - } - function initializeStepWelcome(tag, event_registry) { - event_registry.on("show_step", e => { - if (e.step !== "welcome") - return; - event_registry.fire_async("step-status", { next_button: true, previous_button: true }); - }); - } - function initializeStepFinish(tag, event_registry) { - event_registry.on("show_step", e => { - if (e.step !== "finish") - return; - event_registry.fire_async("step-status", { next_button: true, previous_button: true }); - }); - } - function initializeStepIdentity(tag, event_registry) { - const profile_events = new events.Registry(); - profile_events.enable_debug("settings-identity"); - Modals.modal_settings.initialize_identity_profiles_controller(profile_events); - Modals.modal_settings.initialize_identity_profiles_view(tag, profile_events, { forum_setuppable: false }); - let step_shown = false; - let help_animation_done = false; - const profiles_valid = () => profiles.profiles().findIndex(e => e.valid()) !== -1; - const update_step_status = () => { - event_registry.fire_async("step-status", { next_button: help_animation_done && profiles_valid(), previous_button: help_animation_done }); - }; - profile_events.on("query-profile-validity-result", event => step_shown && event.status === "success" && event.valid && update_step_status()); - event_registry.on("show_step", e => { - step_shown = e.step === "identity"; - if (!step_shown) - return; - update_step_status(); - }); - /* the help sequence */ - { - const container = tag.find(".container-settings-identity-profile"); - const container_help_text = tag.find(".container-help-text"); - const container_profile_list = tag.find(".highlight-profile-list"); - const container_profile_settings = tag.find(".highlight-profile-settings"); - const container_identity_settings = tag.find(".highlight-identity-settings"); - let is_first_show = true; - event_registry.on("show_step", event => { - if (!is_first_show || event.step !== "identity") - return; - is_first_show = false; - container.addClass("help-shown"); - const text = tr("After you've successfully set upped your microphone,\n" + - "lets setup some profiles and identities!\n" + - "\n" + - "Connect profiles determine, how your're authenticating yourself with the server.\n" + - "So basically they're your identity.\n" + - "In the following I'll guid you thru the options and GUI elements.\n" + - "\n" + - "To continue click anywhere on the screen."); - set_help_text(text); - $("body").one('mousedown', event => show_profile_list_help()); - }); - const set_help_text = text => { - container_help_text.empty(); - text.split("\n").forEach(e => container_help_text.append(e == "" ? $.spawn("br") : $.spawn("a").text(e))); - }; - const show_profile_list_help = () => { - container.find(".highlighted").removeClass("highlighted"); - container_profile_list.addClass("highlighted"); - const update_position = () => { - const font_size = parseFloat(getComputedStyle(container_help_text[0]).fontSize); - const offset = container_profile_list.offset(); - const abs = container.offset(); - container_help_text.css({ - top: offset.top - abs.top, - left: ((offset.left - abs.left) + container_profile_list.outerWidth() + font_size) + "px", - right: "1em", - bottom: "1em" - }); - }; - update_position(); - container_help_text.off('resize').on('resize', update_position); - const text = tr("You could have as many connect profiles as you want.\n" + - "All created profiles will be listed here.\n" + - "\n" + - "To create a new profile just simply click the blue button \"Create profile\" and enter a profile name.\n" + - "If you want to delete a profile you've to select that profile and click the delete button.\n" + - "\n" + - "By default we're using the \"default\" profile\n" + - "to connect to any server. o change the default profile\n" + - "just select the new profile and press the \"select as default\" button.\n" + - "\n" + - "To continue click anywhere on the screen."); - set_help_text(text); - $("body").one('mousedown', event => show_profile_settings_help()); - }; - const show_profile_settings_help = () => { - container.find(".highlighted").removeClass("highlighted"); - container_profile_settings.addClass("highlighted"); - const update_position = () => { - const font_size = parseFloat(getComputedStyle(container_help_text[0]).fontSize); - const container_settings_offset = container_profile_settings.offset(); - const right = container_profile_settings.outerWidth() + font_size * 2; - container_help_text.css({ - top: container_settings_offset.top - container.offset().top, - left: "1em", - right: right + "px", - bottom: "1em" - }); - }; - set_help_text(tr("In the upper left, you'll find the profile settings for the selected profile.\n" + - "You could give each profile an individual name. You could also specify the default connect nickname here.\n" + - "\n" + - "The last option \"Identity Type\" determines on what your identity is based on.\n" + - "TeaSpeak has two possibilities to identify yourself:\n" + - "1. Identify yourself by your TeaSpeak forum account\n" + - "2. Identify by an own generated cryptographic identity\n" + - "The second methods is also known as a TeamSpeak 3 identity.\n" + - "\n" + - "To continue click anywhere on the screen.")); - update_position(); - container_help_text.off('resize').on('resize', update_position); - $("body").one('mousedown', event => show_identity_settings_help()); - }; - const show_identity_settings_help = () => { - container.find(".highlighted").removeClass("highlighted"); - container_identity_settings.addClass("highlighted"); - const update_position = () => { - const font_size = parseFloat(getComputedStyle(container_help_text[0]).fontSize); - const container_identity_offset = container_identity_settings.offset(); - const right = container_profile_settings.outerWidth() + font_size * 2; - container_help_text.css({ - top: container_identity_offset.top - container.offset().top, - left: "1em", - right: right + "px", - bottom: "1em" - }); - }; - set_help_text(tr("When selecting an identify type, some corresponding will pop up in the highlighted area.\n" + - "\n" + - "But don't worry, we've already generated\n" + - "a cryptographic identity for you!\n" + - "So you don't have to change anything before you start.")); - update_position(); - container_help_text.off('resize').on('resize', update_position); - $("body").one('mousedown', event => hide_help()); - }; - const hide_help = () => { - container.find(".highlighted").removeClass("highlighted"); - container.addClass("hide-help"); - setTimeout(() => container.removeClass("help-shown"), 1000); - container_help_text.off('resize'); - help_animation_done = true; - update_step_status(); - }; - } - } - function initializeStepMicrophone(tag, event_registry, modal) { - const microphone_events = new events.Registry(); - //microphone_events.enable_debug("settings-microphone"); - Modals.modal_settings.initialize_audio_microphone_controller(microphone_events); - Modals.modal_settings.initialize_audio_microphone_view(tag, microphone_events); - modal.close_listener.push(() => microphone_events.fire_async("deinitialize")); - let help_animation_done = false; - const update_step_status = () => event_registry.fire_async("step-status", { next_button: help_animation_done, previous_button: help_animation_done }); - event_registry.on("show_step", e => { - if (e.step !== "microphone") - return; - update_step_status(); - }); - /* the help sequence */ - { - const container = tag.find(".container-settings-audio-microphone"); - const container_help_text = tag.find(".container-help-text"); - const container_profile_list = tag.find(".highlight-microphone-list"); - const container_profile_settings = tag.find(".highlight-microphone-settings"); - let is_first_show = true; - event_registry.on("show_step", event => { - if (!is_first_show || event.step !== "microphone") - return; - is_first_show = false; - container.addClass("help-shown"); - const text = tr("Firstly we need to setup a microphone.\n" + - "Let me guide you thru the basic UI elements.\n" + - "\n" + - "To continue click anywhere on the screen."); - set_help_text(text); - $("body").one('mousedown', event => show_microphone_list_help()); - }); - const set_help_text = text => { - container_help_text.empty(); - text.split("\n").forEach(e => container_help_text.append(e == "" ? $.spawn("br") : $.spawn("a").text(e))); - }; - const show_microphone_list_help = () => { - container.find(".highlighted").removeClass("highlighted"); - container_profile_list.addClass("highlighted"); - const update_position = () => { - const font_size = parseFloat(getComputedStyle(container_help_text[0]).fontSize); - const offset = container_profile_list.offset(); - const abs = container.offset(); - container_help_text.css({ - top: offset.top - abs.top, - left: ((offset.left - abs.left) + container_profile_list.outerWidth() + font_size) + "px", - right: "1em", - bottom: "1em" - }); - }; - update_position(); - container_help_text.off('resize').on('resize', update_position); - const text = tr("All your available microphones are listed within this box.\n" + - "\n" + - "The currently selected microphone\n" + - "is marked with a green checkmark. To change the selected microphone\n" + - "just click on the new one.\n" + - "\n" + - "To continue click anywhere on the screen."); - set_help_text(text); - $("body").one('mousedown', event => show_microphone_settings_help()); - }; - const show_microphone_settings_help = () => { - container.find(".highlighted").removeClass("highlighted"); - container_profile_settings.addClass("highlighted"); - const update_position = () => { - const font_size = parseFloat(getComputedStyle(container_help_text[0]).fontSize); - const container_settings_offset = container_profile_settings.offset(); - const right = container_profile_settings.outerWidth() + font_size * 2; - container_help_text.css({ - top: container_settings_offset.top - container.offset().top, - left: "1em", - right: right + "px", - bottom: "1em" - }); - }; - container_help_text.empty(); - container_help_text.append($.spawn("div").addClass("help-microphone-settings").append($.spawn("a").text(_translations.lLkLuT23 || (_translations.lLkLuT23 = tr("On the right side you'll find all microphone settings."))), $.spawn("br"), $.spawn("a").text("TeaSpeak has three voice activity detection types:"), $.spawn("ol").append($.spawn("li").addClass("vad-type").append($.spawn("a").addClass("title").text(_translations.K0mUVYLm || (_translations.K0mUVYLm = tr("Push to Talk"))), $.spawn("a").addClass("description").html(tr("To transmit audio data you'll have to
" + - "press a key. The key could be selected " + - "via the button right to the radio button."))), $.spawn("li").addClass("vad-type").append($.spawn("a").addClass("title").text(_translations.Fqmae3Ke || (_translations.Fqmae3Ke = tr("Voice activity detection"))), $.spawn("a").addClass("description").html(tr("In this mode, TeaSpeak will continuously analyze your microphone input. " + - "If the audio level is grater than a certain threshold, " + - "the audio will be transmitted. " + - "The threshold is changeable via the \"Sensitivity Settings\" slider."))), $.spawn("li").addClass("vad-type").append($.spawn("a").addClass("title").html(_translations.TWiMcMlr || (_translations.TWiMcMlr = tr("Always active"))), $.spawn("a").addClass("description").text(_translations.dqF7V4bv || (_translations.dqF7V4bv = tr("Continuously transmit any audio data.\n"))))), $.spawn("br"), $.spawn("a").text(_translations.oqlWN8_x || (_translations.oqlWN8_x = tr("Now you're ready to configure your microphone. Just click anywhere on the screen."))))); - update_position(); - container_help_text.off('resize').on('resize', update_position); - $("body").one('mousedown', event => hide_help()); - }; - const hide_help = () => { - container.find(".highlighted").removeClass("highlighted"); - container.addClass("hide-help"); - setTimeout(() => container.removeClass("help-shown"), 1000); - container_help_text.off('resize'); - help_animation_done = true; - update_step_status(); - }; - } - } -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["37e3848da43122a37a986ffe0d4318d9c4892236cfecba4532909138fc47ba58"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["37e3848da43122a37a986ffe0d4318d9c4892236cfecba4532909138fc47ba58"] = "37e3848da43122a37a986ffe0d4318d9c4892236cfecba4532909138fc47ba58"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "J_SnpbWx", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (10,21)" }, { name: "odLgoCTL", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (43,21)" }, { name: "KGo6XEt2", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (73,30)" }, { name: "HDvApYkd", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (73,53)" }, { name: "hLXhQgZZ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (88,21)" }, { name: "LVBcNpNW", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (113,46)" }, { name: "vXw52Eni", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (113,82)" }, { name: "h1C4jc6K", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (135,46)" }, { name: "r6Y8ZEYM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (135,82)" }, { name: "O6_EO880", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (142,36)" }, { name: "UwbofYR1", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (142,57)" }, { name: "WbN1Rawl", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (183,27)" }, { name: "EccIOEia", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (212,50)" }, { name: "tr0bL6Eo", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (212,80)" }, { name: "DleZumwj", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (235,31)" }, { name: "dQbnEzVb", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (253,38)" }, { name: "mpjeWled", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (253,65)" }, { name: "FvJMcfQT", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (357,30)" }, { name: "DIfGV_4h", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistEdit.ts (357,67)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - function spawnPlaylistSongInfo(song) { - let modal; - modal = createModal({ - header: _translations.J_SnpbWx || (_translations.J_SnpbWx = tr("Song info")), - body: () => { - try { - song.metadata = JSON.parse(song.song_metadata); - } - catch (e) { } - let template = $("#tmpl_playlist_edit-song_info").renderTag(song); - template = $.spawn("div").append(template); - const text_area = template.find(".property-metadata-raw textarea"); - template.find(".toggle-metadata").on('click', event => { - if (text_area.is(":visible")) { - template.find(".toggle-metadata").text("show"); - } - else { - template.find(".toggle-metadata").text("hide"); - } - text_area.slideToggle({ duration: 250 }); - }); - text_area.hide(); - return template; - }, - footer: undefined, - width: 750 - }); - modal.open(); - } - Modals.spawnPlaylistSongInfo = spawnPlaylistSongInfo; - function spawnSongAdd(playlist, callback_add) { - let modal; - modal = createModal({ - header: _translations.odLgoCTL || (_translations.odLgoCTL = tr("Add a song")), - body: () => { - let template = $("#tmpl_playlist_edit-song_add").renderTag(); - template = $.spawn("div").append(template); - const url = template.find(".property-url .value"); - const url_loader = template.find(".property-loader .value"); - const button_add = template.find(".container-buttons .button-add"); - const button_cancel = template.find(".container-buttons .button-cancel"); - url.on('change keyup', event => { - button_add.prop("disabled", url.val().toString().length == 0); - }).trigger('change'); - button_cancel.on('click', event => modal.close()); - button_add.on('click', event => { - callback_add(url.val(), url_loader.val()); - modal.close(); - }); - return template; - }, - footer: undefined, - width: 750 - }); - modal.open(); - } - Modals.spawnSongAdd = spawnSongAdd; - function spawnPlaylistEdit(client, playlist) { - { - createErrorModal(_translations.KGo6XEt2 || (_translations.KGo6XEt2 = tr("Not implemented")), _translations.HDvApYkd || (_translations.HDvApYkd = tr("Playlist editing hasn't yet been implemented"))).open(); - return; - } - let modal; - let changed_properties = {}; - let changed_permissions = {}; - let callback_permission_update; - const update_save = () => { - const save_button = modal.htmlTag.find(".buttons .button-save"); - save_button.prop("disabled", (Object.keys(changed_properties).length + Object.keys(changed_permissions).length) == 0); - }; - modal = createModal({ - header: _translations.hLXhQgZZ || (_translations.hLXhQgZZ = tr("Edit playlist")), - body: () => { - let template = $("#tmpl_playlist_edit").renderTag().tabify(); - callback_permission_update = apply_permissions(template, client, playlist, (key, value) => { - console.log("Change permission %o => %o", key, value); - changed_permissions[key] = value; - update_save(); - }); - const callback_song_id = apply_songs(template, client, playlist); - apply_properties(template, client, playlist, (key, value) => { - console.log("Change property %o => %o", key, value); - changed_properties[key] = value; - update_save(); - }, callback_song_id); - template.find(".buttons .button-save").on('click', event => { - if (Object.keys(changed_properties).length != 0) { - changed_properties["playlist_id"] = playlist.playlist_id; - client.serverConnection.send_command("playlistedit", changed_properties).then(() => { - changed_properties = {}; - update_save(); - }).catch(error => { - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.LVBcNpNW || (_translations.LVBcNpNW = tr("Failed to change properties.")), (_translations.vXw52Eni || (_translations.vXw52Eni = tr("Failed to change playlist properties.
Error: "))) + error).open(); - }); - } - if (Object.keys(changed_permissions).length != 0) { - const array = []; - for (const permission_key of Object.keys(changed_permissions)) { - array.push({ - permvalue: changed_permissions[permission_key], - permnegated: false, - permskip: false, - permsid: permission_key - }); - } - array[0]["playlist_id"] = playlist.playlist_id; - client.serverConnection.send_command("playlistaddperm", array).then(() => { - changed_permissions = {}; - update_save(); - }).catch(error => { - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.h1C4jc6K || (_translations.h1C4jc6K = tr("Failed to change permission.")), (_translations.r6Y8ZEYM || (_translations.r6Y8ZEYM = tr("Failed to change playlist permissions.
Error: "))) + error).open(); - }); - } - }); - template.find(".buttons .button-close").on('click', event => { - if ((Object.keys(changed_properties).length + Object.keys(changed_permissions).length) != 0) { - Modals.spawnYesNo(_translations.O6_EO880 || (_translations.O6_EO880 = tr("Are you sure?")), _translations.UwbofYR1 || (_translations.UwbofYR1 = tr("Do you really want to discard all your changes?")), result => { - if (result) - modal.close(); - }); - return; - } - modal.close(); - }); - return template; - }, - footer: undefined, - width: 750 - }); - update_save(); - modal.open(); - return modal; - } - Modals.spawnPlaylistEdit = spawnPlaylistEdit; - function apply_songs(tag, client, playlist) { - const owns_playlist = playlist.playlist_owner_dbid == client.getClient().properties.client_database_id; - const song_tag = tag.find(".container-songs"); - let replaying_song_id = 0; - let selected_song; - const set_song_info = (text) => { - const tag = song_tag.find(".info-message"); - if (text && text.length > 0) { - tag.text(text).show(); - } - else - tag.hide(); - }; - const set_current_song = (id) => { - /* this method shall enforce an update */ - replaying_song_id = id; - update_songs(); - }; - const update_songs = () => { - set_song_info(_translations.WbN1Rawl || (_translations.WbN1Rawl = tr("loading song list"))); - client.serverConnection.command_helper.request_playlist_songs(playlist.playlist_id).then(result => { - const entries_tag = song_tag.find(".song-list-entries"); - const entry_template = $("#tmpl_playlist_edit-song_entry"); - entries_tag.empty(); - for (const song of result) { - const rendered = entry_template.renderTag(song); - rendered.find(".button-info").on('click', event => { - spawnPlaylistSongInfo(song); - }); - const button_delete = rendered.find(".button-delete"); - if (!owns_playlist && !client.permissions.neededPermission(PermissionType.I_PLAYLIST_SONG_REMOVE_POWER).granted(playlist.needed_power_song_remove)) - button_delete.detach(); - else - button_delete.on('click', event => { - client.serverConnection.send_command("playlistsongremove", { - playlist_id: playlist.playlist_id, - song_id: song.song_id - }).then(() => { - rendered.slideToggle({ duration: 250, done(animation, jumpedToEnd) { - rendered.detach(); - } }); - rendered.hide(250); - }).catch(error => { - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.EccIOEia || (_translations.EccIOEia = tr("Failed to remove song.")), (_translations.tr0bL6Eo || (_translations.tr0bL6Eo = tr("Failed to remove song/url from the playlist.
Error: "))) + error).open(); - }); - }); - if (song.song_id == replaying_song_id) - rendered.addClass("playing"); - rendered.on('click', event => { - selected_song = song; - entries_tag.find(".selected").removeClass("selected"); - rendered.addClass("selected"); - }); - entries_tag.append(rendered); - } - const entry_container = song_tag.find(".song-list-entries-container"); - if (entry_container.hasScrollBar()) - entry_container.addClass("scrollbar"); - set_song_info("displaying " + result.length + " songs"); - }).catch(error => { - console.error(error); - set_song_info(_translations.DleZumwj || (_translations.DleZumwj = tr("failed to load song list"))); - //TODO improve error handling! - }); - }; - song_tag.find(".button-refresh").on('click', event => update_songs()); - song_tag.find(".button-song-add").on('click', event => { - spawnSongAdd(playlist, (url, loader) => { - //playlist_id invoker previous url - client.serverConnection.send_command("playlistsongadd", { - playlist_id: playlist.playlist_id, - invoker: loader, - url: url - }).then(() => { - update_songs(); - }).catch(error => { - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.dQbnEzVb || (_translations.dQbnEzVb = tr("Failed to add song.")), (_translations.mpjeWled || (_translations.mpjeWled = tr("Failed to add song/url to the playlist.
Error: "))) + error).open(); - }); - }); - }).prop("disabled", !owns_playlist && !client.permissions.neededPermission(PermissionType.I_PLAYLIST_SONG_ADD_POWER).granted(playlist.needed_power_song_add)); - /* setTimeout(update_songs, 100); */ /* We dont have to call that here because it will get called over set_current_song when we received the current song id */ - return set_current_song; - } - function apply_permissions(tag, client, playlist, change_permission) { - const owns_playlist = playlist.playlist_owner_dbid == client.getClient().properties.client_database_id; - const permission_tag = tag.find(".container-permissions"); - const nopermission_tag = tag.find(".container-no-permissions"); - const update_permissions = () => { - if (!client.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_PLAYLIST_PERMISSION_LIST).granted(1)) { - nopermission_tag.show(); - permission_tag.hide(); - } - else { - nopermission_tag.hide(); - permission_tag.show(); - permission_tag.find(".permission input").prop("disabled", true); - client.permissions.requestPlaylistPermissions(playlist.playlist_id).then(permissions => { - permission_tag.find(".permission input") - .val(0) - .prop("disabled", !owns_playlist && !client.permissions.neededPermission(PermissionType.I_PLAYLIST_PERMISSION_MODIFY_POWER).granted(playlist.needed_power_permission_modify)); - for (const permission of permissions) { - const tag = permission_tag.find(".permission[permission='" + permission.type.name + "']"); - if (permission.value != -2) - tag.find("input").val(permission.value); - } - }); - } - }; - permission_tag.find(".permission").each((index, _element) => { - const element = $(_element); - element.find("input").on('change', event => { - console.log(element.find("input").val()); - change_permission(element.attr("permission"), parseInt(element.find("input").val().toString())); - }); - }); - update_permissions(); - return update_permissions; - } - function apply_properties(tag, client, playlist, change_property, callback_current_song) { - const owns_playlist = playlist.playlist_owner_dbid == client.getClient().properties.client_database_id; - client.serverConnection.command_helper.request_playlist_info(playlist.playlist_id).then(info => { - tag.find(".property-owner input") - .val(info.playlist_owner_name + " (" + info.playlist_owner_dbid + ")"); - tag.find(".property-title input") - .val(info.playlist_title) - .prop("disabled", !owns_playlist && !client.permissions.neededPermission(PermissionType.I_PLAYLIST_MODIFY_POWER).granted(playlist.needed_power_modify)) - .on('change', event => { - change_property("playlist_title", event.target.value); - }); - tag.find(".property-description textarea") - .val(info.playlist_description) - .prop("disabled", !owns_playlist && !client.permissions.neededPermission(PermissionType.I_PLAYLIST_MODIFY_POWER).granted(playlist.needed_power_modify)) - .on('change', event => { - change_property("playlist_description", event.target.value); - }); - tag.find(".property-type select") - .val(info.playlist_type.toString()) - .prop("disabled", !owns_playlist && !client.permissions.neededPermission(PermissionType.I_PLAYLIST_MODIFY_POWER).granted(playlist.needed_power_modify)) - .on('change', event => { - change_property("playlist_description", event.target.selectedIndex.toString()); - }); - tag.find(".property-replay-mode select") - .val(info.playlist_replay_mode.toString()) - .prop("disabled", !owns_playlist && !client.permissions.neededPermission(PermissionType.I_PLAYLIST_MODIFY_POWER).granted(playlist.needed_power_modify)) - .on('change', event => { - change_property("playlist_replay_mode", event.target.selectedIndex.toString()); - }); - tag.find(".property-flag-delete-played input") - .prop("checked", info.playlist_flag_delete_played) - .prop("disabled", !owns_playlist && !client.permissions.neededPermission(PermissionType.I_PLAYLIST_MODIFY_POWER).granted(playlist.needed_power_modify)) - .on('change', event => { - change_property("playlist_flag_delete_played", event.target.checked ? "1" : "0"); - }); - tag.find(".property-current-song input") - .val(info.playlist_current_song_id); - callback_current_song(info.playlist_current_song_id); - tag.find(".property-flag-finished input") - .prop("checked", info.playlist_flag_finished) - .prop("disabled", !owns_playlist && !client.permissions.neededPermission(PermissionType.I_PLAYLIST_MODIFY_POWER).granted(playlist.needed_power_modify)) - .on('change', event => { - change_property("playlist_flag_finished", event.target.checked ? "1" : "0"); - }); - }).catch(error => { - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.FvJMcfQT || (_translations.FvJMcfQT = tr("Failed to query playlist info")), (_translations.DIfGV_4h || (_translations.DIfGV_4h = tr("Failed to query playlist info.
Error:"))) + error).open(); - }); - } -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["bb5acfe72ba10b0aa2a6519edd2b750e4a456190f2d624fe214316fd928e1f66"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["bb5acfe72ba10b0aa2a6519edd2b750e4a456190f2d624fe214316fd928e1f66"] = "bb5acfe72ba10b0aa2a6519edd2b750e4a456190f2d624fe214316fd928e1f66"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "eFc85qtL", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistList.ts (9,30)" }, { name: "kG4iwbMz", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistList.ts (9,53)" }, { name: "o5nuh_LS", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistList.ts (88,21)" }, { name: "aN1mAh7m", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistList.ts (106,44)" }, { name: "WBBTbFHq", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistList.ts (106,79)" }, { name: "xpCch8hN", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistList.ts (127,42)" }, { name: "sTep6Bz5", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistList.ts (127,75)" }, { name: "cq45GpJi", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistList.ts (139,39)" }, { name: "ZOxonC98", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistList.ts (139,60)" }, { name: "Bp3F9rOw", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistList.ts (142,49)" }, { name: "TiqZADIK", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistList.ts (142,84)" }, { name: "_1mprv6P", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistList.ts (150,50)" }, { name: "jNGK8sZ3", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPlaylistList.ts (150,83)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -/// -var Modals; -(function (Modals) { - function spawnPlaylistManage(client) { - { - createErrorModal(_translations.eFc85qtL || (_translations.eFc85qtL = tr("Not implemented")), _translations.kG4iwbMz || (_translations.kG4iwbMz = tr("Playlist management hasn't yet been implemented"))).open(); - return; - } - let modal; - let selected_playlist; - let available_playlists; - let highlight_own = settings.global("playlist-list-highlight-own", true); - const update_selected = () => { - const buttons = modal.htmlTag.find(".header .buttons"); - buttons.find(".button-playlist-edit").prop("disabled", !selected_playlist); - buttons.find(".button-playlist-delete").prop("disabled", !selected_playlist || !( /* not owner or permission */client.permissions.neededPermission(PermissionType.I_PLAYLIST_DELETE_POWER).granted(selected_playlist.needed_power_delete) || /* client has permissions */ - client.getClient().properties.client_database_id == selected_playlist.playlist_owner_dbid /* client is playlist owner */)); - buttons.find(".button-playlist-create").prop("disabled", !client.permissions.neededPermission(PermissionType.B_PLAYLIST_CREATE).granted(1)); - if (selected_playlist) { - buttons.find(".button-playlist-edit").prop("disabled", false); - } - }; - const update_list = () => __awaiter(this, void 0, void 0, function* () { - const info_tag = modal.htmlTag.find(".footer .info a"); - info_tag.text("loading..."); - selected_playlist = undefined; - update_selected(); - try { - available_playlists = yield client.serverConnection.command_helper.request_playlist_list(); - } - catch (error) { - info_tag.text("failed to query playlist list."); - //FIXME error handling? - return; - } - const entries_tag = modal.htmlTag.find(".playlist-list-entries"); - const entry_template = $("#tmpl_playlist_list-list_entry"); - entries_tag.empty(); - const owndbid = client.getClient().properties.client_database_id; - for (const query of available_playlists) { - const tag = entry_template.renderTag(query).on('click', event => { - entries_tag.find(".entry.selected").removeClass("selected"); - $(event.target).parent(".entry").addClass("selected"); - selected_playlist = query; - update_selected(); - }); - if (highlight_own && query.playlist_owner_dbid == owndbid) - tag.addClass("highlighted"); - entries_tag.append(tag); - } - const entry_container = modal.htmlTag.find(".playlist-list-entries-container"); - if (entry_container.hasScrollBar()) - entry_container.addClass("scrollbar"); - info_tag.text("Showing " + available_playlists.length + " entries"); - update_selected(); - }); - modal = createModal({ - header: _translations.o5nuh_LS || (_translations.o5nuh_LS = tr("Manage playlists")), - body: () => { - let template = $("#tmpl_playlist_list").renderTag(); - /* first open the modal */ - setTimeout(() => { - const entry_container = template.find(".playlist-list-entries-container"); - if (entry_container.hasScrollBar()) - entry_container.addClass("scrollbar"); - }, 100); - template.find(".footer .buttons .button-refresh").on('click', update_list); - template.find(".button-playlist-create").on('click', event => { - const single_handler = { - function: command => { - const json = command.arguments; - update_list().then(() => { - Modals.spawnYesNo(_translations.aN1mAh7m || (_translations.aN1mAh7m = tr("Playlist created successful")), _translations.WBBTbFHq || (_translations.WBBTbFHq = tr("The playlist has been successfully created.
Should we open the editor?")), result => { - if (result) { - for (const playlist of available_playlists) { - if (playlist.playlist_id == json[0]["playlist_id"]) { - Modals.spawnPlaylistEdit(client, playlist).close_listener.push(update_list); - return; - } - } - } - }); - }); - return true; - }, - command: "notifyplaylistcreated" - }; - client.serverConnection.command_handler_boss().register_single_handler(single_handler); - client.serverConnection.send_command("playlistcreate").catch(error => { - client.serverConnection.command_handler_boss().remove_single_handler(single_handler); - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.xpCch8hN || (_translations.xpCch8hN = tr("Unable to create playlist")), (_translations.sTep6Bz5 || (_translations.sTep6Bz5 = tr("Failed to create playlist
Message: "))) + error).open(); - }); - }); - template.find(".button-playlist-edit").on('click', event => { - if (!selected_playlist) - return; - Modals.spawnPlaylistEdit(client, selected_playlist).close_listener.push(update_list); - }); - template.find(".button-playlist-delete").on('click', () => { - if (!selected_playlist) - return; - Modals.spawnYesNo(_translations.cq45GpJi || (_translations.cq45GpJi = tr("Are you sure?")), _translations.ZOxonC98 || (_translations.ZOxonC98 = tr("Do you really want to delete this playlist?")), result => { - if (result) { - client.serverConnection.send_command("playlistdelete", { playlist_id: selected_playlist.playlist_id }).then(() => { - createInfoModal(_translations.Bp3F9rOw || (_translations.Bp3F9rOw = tr("Playlist deleted successful")), _translations.TiqZADIK || (_translations.TiqZADIK = tr("This playlist has been deleted successfully."))).open(); - update_list(); - }).catch(error => { - if (error instanceof CommandResult) { - /* TODO extra handling here */ - //if(error.id == ErrorID.PLAYLIST_IS_IN_USE) { } - error = error.extra_message || error.message; - } - createErrorModal(_translations._1mprv6P || (_translations._1mprv6P = tr("Unable to delete playlist")), (_translations.jNGK8sZ3 || (_translations.jNGK8sZ3 = tr("Failed to delete playlist
Message: "))) + error).open(); - }); - } - }); - }); - template.find(".input-search").on('change keyup', () => { - const text = (template.find(".input-search").val() || "").toLowerCase(); - if (text.length == 0) { - template.find(".playlist-list-entries .entry").show(); - } - else { - template.find(".playlist-list-entries .entry").each((_, e) => { - const element = $(e); - if (element.text().toLowerCase().indexOf(text) == -1) - element.hide(); - else - element.show(); - }); - } - }); - template.find(".button-highlight-own").on('change', event => { - const flag = event.target.checked; - settings.changeGlobal("playlist-list-highlight-own", flag); - if (flag) { - const owndbid = client.getClient().properties.client_database_id; - template.find(".playlist-list-entries .entry").each((index, _element) => { - const element = $(_element); - if (parseInt(element.attr("playlist-owner-dbid")) == owndbid) - element.addClass("highlighted"); - }); - } - else { - template.find(".playlist-list-entries .highlighted").removeClass("highlighted"); - } - }).prop("checked", highlight_own); - return template; - }, - footer: undefined, - width: 750 - }); - update_list(); - modal.open(); - } - Modals.spawnPlaylistManage = spawnPlaylistManage; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["e8a999fc7a44ee2d0ddde9773f4d98a7fd17eff7fe5d5988d687dede92d8fb74"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["e8a999fc7a44ee2d0ddde9773f4d98a7fd17eff7fe5d5988d687dede92d8fb74"] = "e8a999fc7a44ee2d0ddde9773f4d98a7fd17eff7fe5d5988d687dede92d8fb74"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "UMNCZlGl", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPoke.ts (19,25)" }, { name: "cfRyWTer", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPoke.ts (61,66)" }, { name: "xYlEtjJv", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalPoke.ts (64,66)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - let global_modal; - class PokeModal { - constructor() { - this.source_map = []; - this._handle = createModal({ - header: _translations.UMNCZlGl || (_translations.UMNCZlGl = tr("You have been poked!")), - body: () => { - let template = $("#tmpl_poke_popup").renderTag(); - template.find(".button-close").on('click', event => this._handle_close()); - return template; - }, - footer: undefined, - width: 750 - }); - this._handle.close_listener.push(() => this._handle_close()); - } - modal() { return this._handle; } - add_poke(source, invoker, message) { - let handler; - for (const entry of this.source_map) - if (entry.source === source) { - handler = entry; - break; - } - if (!handler) { - const html_tag = $.spawn("div").addClass("server"); - const poke_list = $.spawn("div").addClass("poke-list"); - $.spawn("div") - .addClass("server-name") - .text(source && source.channelTree && source.channelTree.server ? source.channelTree.server.properties.virtualserver_name : "unknown") - .appendTo(html_tag); - poke_list.appendTo(html_tag); - this.source_map.push(handler = { - source: source, - add_message: (invoker, message) => { - const container = $.spawn("div").addClass("entry"); - $.spawn("div").addClass("date").text(moment().format("HH:mm:ss") + " - ").appendTo(container); - $.spawn("div").addClass("user").append($(htmltags.generate_client({ - add_braces: true, - client_id: invoker.id, - client_name: invoker.name, - client_unique_id: invoker.unique_id - }))).appendTo(container); - if (message) { - $.spawn("div").addClass("text").text(_translations.cfRyWTer || (_translations.cfRyWTer = tr("pokes you:"))).appendTo(container); - $.spawn("div").addClass("poke-message").append(...MessageHelper.bbcode_chat(message)).appendTo(container); - } - else { - $.spawn("div").addClass("text").text(_translations.xYlEtjJv || (_translations.xYlEtjJv = tr("pokes you."))).appendTo(container); - } - container.appendTo(poke_list); - } - }); - this._handle.htmlTag.find(".container-servers").append(html_tag); - } - handler.add_message(invoker, message); - } - _handle_close() { - this._handle.close(); - global_modal = undefined; - } - } - function spawnPoke(source, invoker, message) { - if (!global_modal) - global_modal = new PokeModal(); - global_modal.add_poke(source, invoker, message); - global_modal.modal().open(); - } - Modals.spawnPoke = spawnPoke; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["8233474cff76a05a8663c0eaec8fe99c0de8bc9b0f1e55e093cf1b4c5c5253d9"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["8233474cff76a05a8663c0eaec8fe99c0de8bc9b0f1e55e093cf1b4c5c5253d9"] = "8233474cff76a05a8663c0eaec8fe99c0de8bc9b0f1e55e093cf1b4c5c5253d9"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "oEF0dbsG", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQuery.ts (9,21)" }, { name: "A709oy8V", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQuery.ts (18,42)" }, { name: "u8gNNCgy", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQuery.ts (18,66)" }, { name: "mgzlpOSP", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQuery.ts (43,42)" }, { name: "gxrVeEls", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQuery.ts (43,74)" }, { name: "YedBLfXN", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQuery.ts (62,36)" }, { name: "nkmR5Lds", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQuery.ts (62,69)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - function spawnQueryCreate(connection, callback_created) { - let modal; - modal = createModal({ - header: _translations.oEF0dbsG || (_translations.oEF0dbsG = tr("Create a server query login")), - body: () => { - let template = $("#tmpl_query_create").renderTag(); - template = $.spawn("div").append(template); - template.find(".button-close").on('click', event => modal.close()); - template.find(".button-create").on('click', event => { - const name = template.find(".input-name").val(); - if (name.length < 3 || name.length > 64) { - createErrorModal(_translations.A709oy8V || (_translations.A709oy8V = tr("Invalid username")), _translations.u8gNNCgy || (_translations.u8gNNCgy = tr("Please enter a valid name!"))).open(); - return; - } - const single_handler = { - function: command => { - const json = command.arguments[0]; - spawnQueryCreated({ - username: name, - password: json.client_login_password - }, true); - if (callback_created) - callback_created(name, json.client_login_password); - return true; - }, - command: "notifyquerycreated" - }; - connection.serverConnection.command_handler_boss().register_single_handler(single_handler); - connection.serverConnection.send_command("querycreate", { - client_login_name: name - }).catch(error => { - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.mgzlpOSP || (_translations.mgzlpOSP = tr("Unable to create account")), (_translations.gxrVeEls || (_translations.gxrVeEls = tr("Failed to create account
Message: "))) + error).open(); - }).then(() => connection.serverConnection.command_handler_boss().remove_single_handler(single_handler)); - modal.close(); - }); - return template; - }, - footer: undefined, - width: 750 - }); - modal.open(); - } - Modals.spawnQueryCreate = spawnQueryCreate; - function spawnQueryCreated(credentials, just_created) { - let modal; - modal = createModal({ - header: just_created ? _translations.YedBLfXN || (_translations.YedBLfXN = tr("Server query credentials")) : _translations.nkmR5Lds || (_translations.nkmR5Lds = tr("New server query credentials")), - body: () => { - let template = $("#tmpl_query_created").renderTag(credentials); - template = $.spawn("div").append(template); - template.find(".button-close").on('click', event => modal.close()); - template.find(".query_name").text(credentials.username); - template.find(".query_password").text(credentials.password); - template.find(".btn_copy_name").on('click', () => { - template.find(".query_name").select(); - document.execCommand("copy"); - }); - template.find(".btn_copy_password").on('click', () => { - template.find(".query_password").select(); - document.execCommand("copy"); - }); - return template; - }, - footer: undefined, - width: 750 - }); - modal.open(); - } - Modals.spawnQueryCreated = spawnQueryCreated; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["3a91b349c2467016f349cf833e9efd82314ecbcfc2ccc49a1b5acf3e418d361b"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["3a91b349c2467016f349cf833e9efd82314ecbcfc2ccc49a1b5acf3e418d361b"] = "3a91b349c2467016f349cf833e9efd82314ecbcfc2ccc49a1b5acf3e418d361b"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "QuHkt6Yk", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (169,21)" }, { name: "i_hVQpk9", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (213,47)" }, { name: "vIqZZZIq", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (224,59)" }, { name: "gk7HleVb", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (256,43)" }, { name: "GUdKOS4n", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (259,59)" }, { name: "yZzadkPz", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (260,39)" }, { name: "clwP2wmM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (264,55)" }, { name: "tSViiNga", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (265,35)" }, { name: "FnZFqOgS", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (285,54)" }, { name: "xp1swftm", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (287,54)" }, { name: "Kp_4nxoB", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (310,51)" }, { name: "iKboGUz6", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (321,41)" }, { name: "cLqUBiXb", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (321,65)" }, { name: "m9MLHYRV", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (331,43)" }, { name: "KIIc2CpG", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (331,64)" }, { name: "Hf32wf2q", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (336,53)" }, { name: "qiRW7EnN", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (336,89)" }, { name: "Q_SsRGIG", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (341,54)" }, { name: "rUve7dTz", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (341,114)" }, { name: "qwlCVdpq", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (350,42)" }, { name: "lFO6F9nu", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (350,69)" }, { name: "NxEf3JtU", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (356,53)" }, { name: "Z2taR5dJ", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (356,89)" }, { name: "g4NSz8jG", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (361,54)" }, { name: "ewpKfvcI", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (361,114)" }, { name: "uMip3QhX", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (370,42)" }, { name: "h4H98bLv", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (370,75)" }, { name: "DoHvT4u4", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (392,54)" }, { name: "wishvA6x", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalQueryManage.ts (392,115)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - /* - export function spawnQueryManage(client: ConnectionHandler) { - let modal: Modal; - let selected_query: QueryListEntry; - - const update_selected = () => { - const buttons = modal.htmlTag.find(".header .buttons"); - - //TODO gray out if no permissions (Server needs to send that... :D) - buttons.find(".button-query-delete").prop("disabled", selected_query === undefined); - buttons.find(".button-query-rename").prop("disabled", selected_query === undefined); - buttons.find(".button-query-change-password").prop("disabled", selected_query === undefined); - }; - - const update_list = () => { - const info_tag = modal.htmlTag.find(".footer .info a"); - info_tag.text("loading..."); - client.serverConnection.command_helper.current_virtual_server_id().then(server_id => { - client.serverConnection.command_helper.request_query_list(server_id).then(result => { - selected_query = undefined; - - const entries_tag = modal.htmlTag.find(".query-list-entries"); - const entry_template = $("#tmpl_query_manager-list_entry"); - entries_tag.empty(); - - for(const query of result.queries || []) { - entries_tag.append(entry_template.renderTag(query).on('click', event => { - entries_tag.find(".entry.selected").removeClass("selected"); - $(event.target).parent(".entry").addClass("selected"); - selected_query = query; - update_selected(); - })); - } - - const entry_container = modal.htmlTag.find(".query-list-entries-container"); - if(entry_container.hasScrollBar()) - entry_container.addClass("scrollbar"); - - if(!result || result.flag_all) { - info_tag.text("Showing all server queries"); - } else { - info_tag.text("Showing your server queries") - } - update_selected(); - }); - }); - //TODO error handling - }; - - modal = createModal({ - header: tr("Manage query accounts"), - body: () => { - let template = $("#tmpl_query_manager").renderTag(); - template = $.spawn("div").append(template); - - /* first open the modal - setTimeout(() => { - const entry_container = template.find(".query-list-entries-container"); - if(entry_container.hasScrollBar()) - entry_container.addClass("scrollbar"); - }, 100); - - template.find(".footer .buttons .button-refresh").on('click', update_list); - template.find(".button-query-create").on('click', () => { - Modals.spawnQueryCreate(client, (user, pass) => update_list()); - }); - template.find(".button-query-rename").on('click', () => { - if(!selected_query) return; - - createInputModal(tr("Change account name"), tr("Enter the new name for the login:
"), text => text.length >= 3, result => { - if(result) { - client.serverConnection.send_command("queryrename", { - client_login_name: selected_query.username, - client_new_login_name: result - }).catch(error => { - if(error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(tr("Unable to rename account"), tr("Failed to rename account
Message: ") + error).open(); - }).then(() => { - createInfoModal(tr("Account successfully renamed"), tr("The query account has been renamed!")).open(); - update_list(); - }); - } - }).open(); - }); - template.find(".button-query-change-password").on('click', () => { - if(!selected_query) return; - - createInputModal(tr("Change account's password"), tr("Enter a new password (leave blank for auto generation):
"), text => true, result => { - if(result !== false) { - const single_handler: connection.SingleCommandHandler = { - command: "notifyquerypasswordchanges", - function: command => { - Modals.spawnQueryCreated({ - username: command.arguments[0]["client_login_name"], - password: command.arguments[0]["client_login_password"] - }, false); - - return true; - } - }; - client.serverConnection.command_handler_boss().register_single_handler(single_handler); - - client.serverConnection.send_command("querychangepassword", { - client_login_name: selected_query.username, - client_login_password: result - }).catch(error => { - client.serverConnection.command_handler_boss().remove_single_handler(single_handler); - if(error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(tr("Unable to change password"), tr("Failed to change password
Message: ") + error).open(); - }); - } - }).open(); - }); - template.find(".button-query-delete").on('click', () => { - if(!selected_query) return; - - Modals.spawnYesNo(tr("Are you sure?"), tr("Do you really want to delete this account?"), result => { - if(result) { - client.serverConnection.send_command("querydelete", { - client_login_name: selected_query.username - }).catch(error => { - if(error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(tr("Unable to delete account"), tr("Failed to delete account
Message: ") + error).open(); - }).then(() => { - createInfoModal(tr("Account successfully deleted"), tr("The query account has been successfully deleted!")).open(); - update_list(); - }); - } - }); - }); - template.find(".input-search").on('change keyup', () => { - const text = (template.find(".input-search").val() as string || "").toLowerCase(); - if(text.length == 0) { - template.find(".query-list-entries .entry").show(); - } else { - template.find(".query-list-entries .entry").each((_, e) => { - const element = $(e); - if(element.text().toLowerCase().indexOf(text) == -1) - element.hide(); - else - element.show(); - }) - } - }); - return template; - }, - footer: undefined, - width: 750 - }); - - update_list(); - modal.open(); - } - */ - //tmpl_query_manager - function spawnQueryManage(client) { - let modal; - modal = createModal({ - header: _translations.QuHkt6Yk || (_translations.QuHkt6Yk = tr("Manage query accounts")), - body: () => { - let template = $("#tmpl_query_manager").renderTag(); - let current_server; - let selected_query; - let filter_callbacks = []; - const container_list = template.find(".container-list .container-entries"); - const container_list_empty = container_list.find(".container-empty"); - const container_list_error = container_list.find(".container-error"); - const detail_name = template.find(".detail.login-name .value"); - const detail_unique_id = template.find(".detail.unique-id .value"); - const detail_bound_server = template.find(".detail.bound-server .value"); - const detail_unique_id_copy = template.find(".detail.unique-id .button-copy"); - const input_filter = template.find(".filter-input"); - const button_create = template.find(".button-create"); - const button_delete = template.find(".button-delete"); - const button_rename = template.find(".button-rename"); - const button_change_password = template.find(".button-change-password"); - const button_update = template.find(".button-update"); - const permission_create = client.permissions.neededPermission(PermissionType.B_CLIENT_QUERY_CREATE).granted(1); - const permission_delete = client.permissions.neededPermission(PermissionType.B_CLIENT_QUERY_DELETE).granted(1); - const permission_delete_own = client.permissions.neededPermission(PermissionType.B_CLIENT_QUERY_DELETE_OWN).granted(1); - const permission_rename = client.permissions.neededPermission(PermissionType.B_CLIENT_QUERY_RENAME).granted(1); - const permission_rename_own = client.permissions.neededPermission(PermissionType.B_CLIENT_QUERY_RENAME_OWN).granted(1); - const permission_password = client.permissions.neededPermission(PermissionType.B_CLIENT_QUERY_CHANGE_PASSWORD).granted(1); - const permission_password_own = client.permissions.neededPermission(PermissionType.B_CLIENT_QUERY_CHANGE_OWN_PASSWORD).granted(1); - const permission_password_global = client.permissions.neededPermission(PermissionType.B_CLIENT_QUERY_CHANGE_PASSWORD_GLOBAL).granted(1); - button_create.prop('disabled', !permission_create); - const set_error = (error) => { - if (typeof (error) === "string") - container_list_error.text(error).show(); - else - container_list_error.hide(); - }; - const update_list = (selected_entry) => { - button_update.prop('disabled', true); - container_list_empty.text(_translations.i_hVQpk9 || (_translations.i_hVQpk9 = tr("loading..."))).show(); - set_error(undefined); - set_selected(undefined, false); - filter_callbacks = []; - container_list.find(".entry").remove(); - client.serverConnection.command_helper.current_virtual_server_id().then(server_id => { - current_server = server_id; - client.serverConnection.command_helper.request_query_list(server_id).then(result => { - if (!result || !result.queries.length) { - container_list_empty.text(_translations.vIqZZZIq || (_translations.vIqZZZIq = tr("No queries available"))); - return; - } - for (const entry of result.queries) { - const tag = $.spawn("div").addClass("entry").text(entry.username + " (" + entry.unique_id + ")"); - tag.on('click', event => { - container_list.find(".selected").removeClass("selected"); - tag.addClass("selected"); - set_selected(entry, false); - }); - container_list.append(tag); - if (entry.username === selected_entry) - tag.trigger('click'); - const text_mesh = (entry.username + " " + entry.unique_id + " " + entry.bounded_server).toLowerCase(); - filter_callbacks.push(text => { - if (typeof (text) === "undefined" || text_mesh.indexOf(text) != -1) { - tag.show(); - return true; - } - else { - tag.hide(); - return false; - } - }); - } - update_filter(); - container_list_empty.hide(); - button_update.prop('disabled', false); - }).catch(error => { - button_update.prop('disabled', false); - if (error instanceof CommandResult && error.id === ErrorID.PERMISSION_ERROR) { - set_error(_translations.gk7HleVb || (_translations.gk7HleVb = tr("No permissions"))); - return; - } - log.error(LogCategory.CLIENT, _translations.GUdKOS4n || (_translations.GUdKOS4n = tr("Failed to request the query list: %o")), error); - set_error(_translations.yZzadkPz || (_translations.yZzadkPz = tr("Failed to request list"))); - }); - }).catch(error => { - button_update.prop('disabled', false); - log.error(LogCategory.CLIENT, _translations.clwP2wmM || (_translations.clwP2wmM = tr("Failed to get own virtual server id: %o")), error); - set_error(_translations.tSViiNga || (_translations.tSViiNga = tr("Failed to query server id"))); - }); - }; - const set_selected = (entry, force) => { - if (entry === selected_query && !force) - return; - selected_query = entry; - if (!selected_query) { - detail_name.text("-"); - detail_unique_id.text("-"); - detail_bound_server.text("-"); - button_delete.prop('disabled', true); - button_rename.prop('disabled', true); - button_change_password.prop('disabled', true); - } - else { - detail_name.text(selected_query.username); - detail_unique_id.text(selected_query.unique_id); - if (selected_query.bounded_server == 0) - detail_bound_server.text(_translations.FnZFqOgS || (_translations.FnZFqOgS = tr("On the instance"))); - else if (selected_query.bounded_server === current_server) - detail_bound_server.text(_translations.xp1swftm || (_translations.xp1swftm = tr("On the current server"))); - else - detail_bound_server.text(selected_query.bounded_server.toString()); - button_delete.prop('disabled', !permission_delete && !(selected_query.unique_id === client.getClient().properties.client_unique_identifier && permission_delete_own)); - button_rename.prop('disabled', !permission_rename && !(selected_query.unique_id === client.getClient().properties.client_unique_identifier && permission_rename_own)); - if (selected_query.bounded_server != 0) { - button_change_password.prop('disabled', !permission_password && !(selected_query.unique_id === client.getClient().properties.client_unique_identifier && permission_password_own)); - } - else { - button_change_password.prop('disabled', !permission_password_global && !(selected_query.unique_id === client.getClient().properties.client_unique_identifier && permission_password_own)); - } - } - }; - const update_filter = () => { - let value = input_filter.val(); - if (!value) - value = undefined; - else - value = value.toLowerCase(); - const shown = filter_callbacks.filter(e => e(value)).length; - if (shown > 0) { - container_list_empty.hide(); - } - else { - container_list_empty.text(_translations.Kp_4nxoB || (_translations.Kp_4nxoB = tr("No accounts found"))).show(); - } - }; - input_filter.on('change keyup', update_filter); - /* all buttons */ - { - detail_unique_id_copy.on('click', event => { - if (!selected_query) - return; - copy_to_clipboard(selected_query.unique_id); - createInfoModal(_translations.iKboGUz6 || (_translations.iKboGUz6 = tr("Unique ID copied")), _translations.cLqUBiXb || (_translations.cLqUBiXb = tr("The unique id has been successfully copied to your clipboard."))).open(); - }); - button_create.on('click', event => { - Modals.spawnQueryCreate(client, (user, pass) => update_list(user)); - }); - button_delete.on('click', event => { - if (!selected_query) - return; - Modals.spawnYesNo(_translations.m9MLHYRV || (_translations.m9MLHYRV = tr("Are you sure?")), _translations.KIIc2CpG || (_translations.KIIc2CpG = tr("Do you really want to delete this account?")), result => { - if (result) { - client.serverConnection.send_command("querydelete", { - client_login_name: selected_query.username - }).then(() => { - createInfoModal(_translations.Hf32wf2q || (_translations.Hf32wf2q = tr("Account successfully deleted")), _translations.qiRW7EnN || (_translations.qiRW7EnN = tr("The query account has been successfully deleted!"))).open(); - update_list(undefined); - }).catch(error => { - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.Q_SsRGIG || (_translations.Q_SsRGIG = tr("Unable to delete account")), MessageHelper.formatMessage(_translations.rUve7dTz || (_translations.rUve7dTz = tr("Failed to delete account{:br:}Message: {}")), error)).open(); - }); - } - }); - }); - button_rename.on('click', () => { - if (!selected_query) - return; - createInputModal(_translations.qwlCVdpq || (_translations.qwlCVdpq = tr("Change account name")), _translations.lFO6F9nu || (_translations.lFO6F9nu = tr("Enter the new name for the login:")), text => text.length >= 3, result => { - if (result) { - client.serverConnection.send_command("queryrename", { - client_login_name: selected_query.username, - client_new_login_name: result - }).then(() => { - createInfoModal(_translations.NxEf3JtU || (_translations.NxEf3JtU = tr("Account successfully renamed")), _translations.Z2taR5dJ || (_translations.Z2taR5dJ = tr("The query account has been renamed!"))).open(); - update_list(result); - }).catch(error => { - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.g4NSz8jG || (_translations.g4NSz8jG = tr("Unable to rename account")), MessageHelper.formatMessage(_translations.ewpKfvcI || (_translations.ewpKfvcI = tr("Failed to rename account{:br:}Message: {}")), error)).open(); - }); - } - }).open(); - }); - button_change_password.on('click', () => { - if (!selected_query) - return; - createInputModal(_translations.uMip3QhX || (_translations.uMip3QhX = tr("Change account's password")), _translations.h4H98bLv || (_translations.h4H98bLv = tr("Enter a new password (leave blank for auto generation):")), text => true, result => { - if (result !== false) { - const single_handler = { - command: "notifyquerypasswordchanges", - function: command => { - Modals.spawnQueryCreated({ - username: command.arguments[0]["client_login_name"], - password: command.arguments[0]["client_login_password"] - }, false); - return true; - } - }; - client.serverConnection.command_handler_boss().register_single_handler(single_handler); - client.serverConnection.send_command("querychangepassword", { - client_login_name: selected_query.username, - client_login_password: result - }).catch(error => { - client.serverConnection.command_handler_boss().remove_single_handler(single_handler); - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.DoHvT4u4 || (_translations.DoHvT4u4 = tr("Unable to change password")), MessageHelper.formatMessage(_translations.wishvA6x || (_translations.wishvA6x = tr("Failed to change password{:br:}Message: {}")), error)).open(); - }); - } - }).open(); - }); - button_update.on('click', event => update_list(selected_query ? selected_query.username : undefined)); - } - modal.close_listener.push(() => filter_callbacks = undefined); - set_selected(undefined, true); - update_list(undefined); - template.dividerfy(); - return template; - }, - footer: null, - min_width: "25em" - }); - modal.htmlTag.find(".modal-body").addClass("modal-query-manage"); - modal.open(); - } - Modals.spawnQueryManage = spawnQueryManage; -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["5331667997b364927974be0ef39bd37bedd8cf94fc7240456ded5de4f6e772d3"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["5331667997b364927974be0ef39bd37bedd8cf94fc7240456ded5de4f6e772d3"] = "5331667997b364927974be0ef39bd37bedd8cf94fc7240456ded5de4f6e772d3"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "YqHx1E4Q", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (7,21)" }, { name: "sR5xH__S", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (27,54)" }, { name: "KYruiqDh", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (30,42)" }, { name: "Jm3uN9QM", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (30,92)" }, { name: "SoMZi5vs", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (98,99)" }, { name: "wRj3c9p5", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (109,96)" }, { name: "OvjaxNtG", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (110,96)" }, { name: "ukxiAAgl", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (112,87)" }, { name: "mPE1EX5O", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (124,21)" }, { name: "_IgsAh3M", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (131,108)" }, { name: "h_Cu5Dka", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (169,28)" }, { name: "SAM5Jdia", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (174,36)" }, { name: "gH3qLXyu", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (176,36)" }, { name: "tGesHS8_", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (183,28)" }, { name: "pZ9amcr9", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (188,36)" }, { name: "pgi8qIo2", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (190,36)" }, { name: "Eqou3mDY", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (199,81)" }, { name: "kVOW_aDn", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (206,32)" }, { name: "awuXKKzF", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (208,32)" }, { name: "Fxejq6JG", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfo.ts (210,32)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var Modals; -(function (Modals) { - function openServerInfo(server) { - let modal; - let update_callbacks = []; - modal = createModal({ - header: (_translations.YqHx1E4Q || (_translations.YqHx1E4Q = tr("Server Information: "))) + server.properties.virtualserver_name, - body: () => { - const template = $("#tmpl_server_info").renderTag(); - const children = template.children(); - const top = template.find(".container-top"); - const update_values = () => { - apply_hostbanner(server, top); - apply_category_1(server, children, update_callbacks); - apply_category_2(server, children, update_callbacks); - apply_category_3(server, children, update_callbacks); - }; - const button_update = template.find(".button-update"); - button_update.on('click', event => { - button_update.prop("disabled", true); - server.updateProperties().then(() => { - update_callbacks = []; - update_values(); - }).catch(error => { - log.warn(LogCategory.CLIENT, _translations.sR5xH__S || (_translations.sR5xH__S = tr("Failed to refresh server properties: %o")), error); - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.KYruiqDh || (_translations.KYruiqDh = tr("Refresh failed")), MessageHelper.formatMessage(_translations.Jm3uN9QM || (_translations.Jm3uN9QM = tr("Failed to refresh server properties.{:br:}Error: {}")), error)).open(); - }).then(() => { - button_update.prop("disabled", false); - }); - }).trigger('click'); - update_values(); - tooltip(template); - return template.children(); - }, - footer: null, - min_width: "25em" - }); - const updater = setInterval(() => { - server.request_connection_info().then(info => update_callbacks.forEach(e => e(Modals.RequestInfoStatus.SUCCESS, info))).catch(error => { - if (error instanceof CommandResult && error.id == ErrorID.PERMISSION_ERROR) { - update_callbacks.forEach(e => e(Modals.RequestInfoStatus.NO_PERMISSION)); - return; - } - update_callbacks.forEach(e => e(Modals.RequestInfoStatus.UNKNOWN)); - }); - }, 1000); - modal.htmlTag.find(".button-close").on('click', event => modal.close()); - modal.htmlTag.find(".button-show-bandwidth").on('click', event => { - const custom_callbacks = []; - const custom_callback_caller = (status, info) => { custom_callbacks.forEach(e => e(status, info)); }; - update_callbacks.push(custom_callback_caller); - Modals.openServerInfoBandwidth(server, custom_callbacks).close_listener.push(() => { - update_callbacks.remove(custom_callback_caller); - }); - }); - modal.htmlTag.find(".modal-body").addClass("modal-server-info"); - modal.open(); - modal.close_listener.push(() => clearInterval(updater)); - } - Modals.openServerInfo = openServerInfo; - function apply_hostbanner(server, tag) { - let container; - tag.empty().append(container = $.spawn("div").addClass("container-hostbanner")).addClass("hidden"); - const htag = Hostbanner.generate_tag(server.properties.virtualserver_hostbanner_gfx_url, server.properties.virtualserver_hostbanner_gfx_interval, server.properties.virtualserver_hostbanner_mode); - htag.then(t => { - if (!t) - return; - tag.removeClass("hidden"); - container.append(t); - }); - } - function apply_category_1(server, tag, update_callbacks) { - /* server name */ - { - const container = tag.find(".server-name"); - container.text(server.properties.virtualserver_name); - } - /* server region */ - { - const container = tag.find(".server-region").empty(); - container.append($.spawn("div").addClass("country flag-" + server.properties.virtualserver_country_code.toLowerCase()), $.spawn("a").text(i18n.country_name(server.properties.virtualserver_country_code, _translations.SoMZi5vs || (_translations.SoMZi5vs = tr("Global"))))); - } - /* slots */ - { - const container = tag.find(".server-slots"); - let text = server.properties.virtualserver_clientsonline + "/" + server.properties.virtualserver_maxclients; - if (server.properties.virtualserver_queryclientsonline) - text += " +" + (server.properties.virtualserver_queryclientsonline > 1 ? - server.properties.virtualserver_queryclientsonline + " " + (_translations.wRj3c9p5 || (_translations.wRj3c9p5 = tr("Queries"))) : - server.properties.virtualserver_queryclientsonline + " " + (_translations.OvjaxNtG || (_translations.OvjaxNtG = tr("Query")))); - if (server.properties.virtualserver_reserved_slots) - text += " (" + server.properties.virtualserver_reserved_slots + " " + (_translations.ukxiAAgl || (_translations.ukxiAAgl = tr("Reserved"))) + ")"; - container.text(text); - } - /* first run */ - { - const container = tag.find(".server-first-run"); - container.text(server.properties.virtualserver_created > 0 ? - moment(server.properties.virtualserver_created * 1000).format('MMMM Do YYYY, h:mm:ss a') : _translations.mPE1EX5O || (_translations.mPE1EX5O = tr("Unknown"))); - } - /* uptime */ - { - const container = tag.find(".server-uptime"); - const update = () => container.text(MessageHelper.format_time(server.calculateUptime() * 1000, _translations._IgsAh3M || (_translations._IgsAh3M = tr("just started")))); - update_callbacks.push(update); - update(); - } - } - function apply_category_2(server, tag, update_callbacks) { - /* ip */ - { - const container = tag.find(".server-ip"); - container.text(server.remote_address.host + (server.remote_address.port == 9987 ? "" : (":" + server.remote_address.port))); - } - /* version */ - { - const container = tag.find(".server-version"); - let timestamp = -1; - const version = (server.properties.virtualserver_version || "unknwon").replace(/ ?\[build: ?([0-9]+)]/gmi, (group, ts) => { - timestamp = parseInt(ts); - return ""; - }); - container.find("a").text(version); - container.find(".container-tooltip").toggle(timestamp > 0).find(".tooltip a").text(moment(timestamp * 1000).format('[Build timestamp:] YYYY-MM-DD HH:mm Z')); - } - /* platform */ - { - const container = tag.find(".server-platform"); - container.text(server.properties.virtualserver_platform); - } - /* ping */ - { - const container = tag.find(".server-ping"); - container.text(_translations.h_Cu5Dka || (_translations.h_Cu5Dka = tr("calculating..."))); - update_callbacks.push((status, data) => { - if (status === Modals.RequestInfoStatus.SUCCESS) - container.text(data.connection_ping.toFixed(0) + " " + "ms"); - else if (status === Modals.RequestInfoStatus.NO_PERMISSION) - container.text(_translations.SAM5Jdia || (_translations.SAM5Jdia = tr("No Permissions"))); - else - container.text(_translations.gH3qLXyu || (_translations.gH3qLXyu = tr("receiving..."))); - }); - } - /* packet loss */ - { - const container = tag.find(".server-packet-loss"); - container.text(_translations.tGesHS8_ || (_translations.tGesHS8_ = tr("receiving..."))); - update_callbacks.push((status, data) => { - if (status === Modals.RequestInfoStatus.SUCCESS) - container.text(data.connection_packetloss_total.toFixed(2) + "%"); - else if (status === Modals.RequestInfoStatus.NO_PERMISSION) - container.text(_translations.pZ9amcr9 || (_translations.pZ9amcr9 = tr("No Permissions"))); - else - container.text(_translations.pgi8qIo2 || (_translations.pgi8qIo2 = tr("receiving..."))); - }); - } - } - function apply_category_3(server, tag, update_callbacks) { - /* unique id */ - { - const container = tag.find(".server-unique-id"); - container.text(server.properties.virtualserver_unique_identifier || (_translations.Eqou3mDY || (_translations.Eqou3mDY = tr("Unknown")))); - } - /* voice encryption */ - { - const container = tag.find(".server-voice-encryption"); - if (server.properties.virtualserver_codec_encryption_mode == 0) - container.text(_translations.kVOW_aDn || (_translations.kVOW_aDn = tr("Globally off"))); - else if (server.properties.virtualserver_codec_encryption_mode == 1) - container.text(_translations.awuXKKzF || (_translations.awuXKKzF = tr("Individually configured per channel"))); - else - container.text(_translations.Fxejq6JG || (_translations.Fxejq6JG = tr("Globally on"))); - } - /* channel count */ - { - const container = tag.find(".server-channel-count"); - container.text(server.properties.virtualserver_channelsonline); - } - /* minimal security level */ - { - const container = tag.find(".server-min-security-level"); - container.text(server.properties.virtualserver_needed_identity_security_level); - } - /* complains */ - { - const container = tag.find(".server-complains"); - container.text(server.properties.virtualserver_complain_autoban_count); - } - } -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["96c184c097607021ac37903e53735d6fda33133b10545b2f6996c468c42fb041"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["96c184c097607021ac37903e53735d6fda33133b10545b2f6996c468c42fb041"] = "96c184c097607021ac37903e53735d6fda33133b10545b2f6996c468c42fb041"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "fEMH56K2", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfoBandwidth.ts (14,21)" }, { name: "E1HApHoa", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfoBandwidth.ts (58,101)" }, { name: "Zw6Mw8Ek", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfoBandwidth.ts (58,123)" }, { name: "UZm_3vp7", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfoBandwidth.ts (153,26)" }, { name: "yZmlolTK", path: "D:/TeaSpeak/web/shared/js/ui/modal/ModalServerInfoBandwidth.ts (155,26)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var Modals; -(function (Modals) { - let RequestInfoStatus; - (function (RequestInfoStatus) { - RequestInfoStatus[RequestInfoStatus["SUCCESS"] = 0] = "SUCCESS"; - RequestInfoStatus[RequestInfoStatus["UNKNOWN"] = 1] = "UNKNOWN"; - RequestInfoStatus[RequestInfoStatus["NO_PERMISSION"] = 2] = "NO_PERMISSION"; - })(RequestInfoStatus = Modals.RequestInfoStatus || (Modals.RequestInfoStatus = {})); - function openServerInfoBandwidth(server, update_callbacks) { - let modal; - let own_callbacks = !update_callbacks; - update_callbacks = update_callbacks || []; - modal = createModal({ - header: _translations.fEMH56K2 || (_translations.fEMH56K2 = tr("Server bandwidth data")), - body: () => { - const template = $("#tmpl_server_info_bandwidth").renderTag(); - const children = template.children(); - initialize_current_bandwidth(modal, children.find(".statistic-bandwidth"), update_callbacks); - initialize_ft_bandwidth(modal, children.find(".statistic-ft-bandwidth"), update_callbacks); - initialize_general(template.find(".top"), update_callbacks); - tooltip(template); - return template.children(); - }, - footer: null, - min_width: "25em" - }); - if (own_callbacks) { - const updater = setInterval(() => { - server.request_connection_info().then(info => update_callbacks.forEach(e => e(RequestInfoStatus.SUCCESS, info))).catch(error => { - if (error instanceof CommandResult && error.id == ErrorID.PERMISSION_ERROR) { - update_callbacks.forEach(e => e(RequestInfoStatus.NO_PERMISSION)); - return; - } - update_callbacks.forEach(e => e(RequestInfoStatus.UNKNOWN)); - }); - }, 1000); - modal.close_listener.push(() => clearInterval(updater)); - } - modal.htmlTag.find(".button-close").on('click', event => modal.close()); - modal.htmlTag.find(".modal-body").addClass("modal-server-info-bandwidth"); - modal.open(); - return modal; - } - Modals.openServerInfoBandwidth = openServerInfoBandwidth; - function initialize_graph(modal, tag, callbacks, fields) { - const canvas = tag.find("canvas")[0]; - const label_upload = tag.find(".upload"); - const label_download = tag.find(".download"); - let last_info; - let custom_info = false; - const show_info = (upload, download) => { - let fallback_text = last_info && last_info.status === RequestInfoStatus.NO_PERMISSION ? _translations.E1HApHoa || (_translations.E1HApHoa = tr("No permission")) : _translations.Zw6Mw8Ek || (_translations.Zw6Mw8Ek = tr("receiving...")); - if (typeof upload !== "number") - upload = last_info ? last_info[fields.uplaod] : undefined; - if (typeof download !== "number") - download = last_info ? last_info[fields.download] : undefined; - if (typeof upload !== "number") - label_upload.text(fallback_text); - else - label_upload.text(MessageHelper.network.format_bytes(upload, { unit: "Bytes", time: "s", exact: false })); - if (typeof download !== "number") - label_download.text(fallback_text); - else - label_download.text(MessageHelper.network.format_bytes(download, { unit: "Bytes", time: "s", exact: false })); - }; - show_info(undefined, undefined); - const graph = new net.graph.Graph(canvas); - graph.insert_entry({ timestamp: Date.now(), upload: undefined, download: undefined }); - callbacks.push((status, values) => { - last_info = { status: status, info: values }; - if (!values) { - graph.insert_entry({ timestamp: Date.now(), upload: undefined, download: undefined }); - } - else { - graph.insert_entry({ - timestamp: Date.now(), - download: values[fields.download], - upload: values[fields.uplaod], - }); - } - /* set set that we want to show the entry within one second */ - graph._time_span.origin = Object.assign(graph.calculate_time_span(), { time: Date.now() }); - graph._time_span.target = { - begin: Date.now() - 120 * 1000, - end: Date.now(), - time: Date.now() + 200 - }; - graph.cleanup(); - if (!custom_info) { - show_info(undefined, undefined); - graph.resize(); /* just to ensure (we have to rethink this maybe; cause it causes a recalculates the style */ - } - }); - graph.max_gap_size(0); - graph.initialize(); - graph.callback_detailed_hide = () => { - custom_info = false; - show_info(undefined, undefined); - }; - graph.callback_detailed_info = (upload, download, timestamp, event) => { - custom_info = true; - show_info(upload, download); - }; - modal.close_listener.push(() => graph.terminate()); - modal.open_listener.push(() => graph.resize()); - tag.addClass("window-resize-listener").on('resize', event => graph.resize()); - } - function initialize_current_bandwidth(modal, tag, callbacks) { - initialize_graph(modal, tag, callbacks, { - uplaod: "connection_bandwidth_sent_last_second_total", - download: "connection_bandwidth_received_last_second_total" - }); - } - function initialize_ft_bandwidth(modal, tag, callbacks) { - initialize_graph(modal, tag, callbacks, { - uplaod: "connection_filetransfer_bandwidth_sent", - download: "connection_filetransfer_bandwidth_received" - }); - } - function initialize_general(tag, callbacks) { - const tag_packets_upload = tag.find(".statistic-packets .upload"); - const tag_packets_download = tag.find(".statistic-packets .download"); - const tag_bytes_upload = tag.find(".statistic-bytes .upload"); - const tag_bytes_download = tag.find(".statistic-bytes .download"); - const tag_ft_bytes_upload = tag.find(".statistic-ft-bytes .upload"); - const tag_ft_bytes_download = tag.find(".statistic-ft-bytes .download"); - const update = (tag, value) => { - if (typeof value === "undefined") - tag.text(_translations.UZm_3vp7 || (_translations.UZm_3vp7 = tr("receiving..."))); - else if (value === null) - tag.text(_translations.yZmlolTK || (_translations.yZmlolTK = tr("no permissions"))); - else - tag.text(MessageHelper.network.format_bytes(value, { unit: "Bytes", exact: false })); - }; - const props = [ - { tag: tag_packets_download, property: "connection_packets_received_total" }, - { tag: tag_packets_upload, property: "connection_packets_sent_total" }, - { tag: tag_bytes_download, property: "connection_bytes_received_total" }, - { tag: tag_bytes_upload, property: "connection_bytes_sent_total" }, - { tag: tag_ft_bytes_upload, property: "connection_filetransfer_bytes_received_total" }, - { tag: tag_ft_bytes_download, property: "connection_filetransfer_bytes_sent_total" }, - ]; - callbacks.push((status, info) => { - if (status === RequestInfoStatus.SUCCESS) { - for (const entry of props) - update(entry.tag, info[entry.property]); - } - else if (status === RequestInfoStatus.NO_PERMISSION) { - for (const entry of props) - update(entry.tag, null); - } - else { - for (const entry of props) - update(entry.tag, undefined); - } - }); - } -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["f08e46c4af644ceb3228f5583f0b483d9ab6d5f4699e3aa67659a9474d21ffab"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["f08e46c4af644ceb3228f5583f0b483d9ab6d5f4699e3aa67659a9474d21ffab"] = "f08e46c4af644ceb3228f5583f0b483d9ab6d5f4699e3aa67659a9474d21ffab"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "jgvFVcHz", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (94,24)" }, { name: "dcBTd0ku", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (270,63)" }, { name: "JpVF5Mzm", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (281,63)" }, { name: "ViyQ3FC3", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (296,63)" }, { name: "t7rGoAdc", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (313,63)" }, { name: "eKiUcJRA", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (433,63)" }, { name: "gNpxBbWx", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (443,63)" }, { name: "Oldifku2", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (457,63)" }, { name: "JAIS9OGe", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (473,63)" }, { name: "tDmnoexV", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (575,63)" }, { name: "xDRYefpc", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (590,63)" }, { name: "cYgmPzVb", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (604,63)" }, { name: "MyTOVvJi", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (625,63)" }, { name: "eH6peQwT", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (689,63)" }, { name: "PSWt_oAu", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (703,63)" }, { name: "Z5NC2zLF", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (717,63)" }, { name: "hdpOwMqg", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (737,63)" }, { name: "uyiLQc3y", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (808,35)" }, { name: "nuh4sliq", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (814,35)" }, { name: "zyTnu_qn", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (820,35)" }, { name: "qlgoozon", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (825,35)" }, { name: "Sp05Q7cm", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (850,27)" }, { name: "BDKgOv3v", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (881,41)" }, { name: "asEzKP4X", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (881,62)" }, { name: "ZmlrpljU", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (884,38)" }, { name: "zGFSOJO8", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (888,42)" }, { name: "ZxKo1R5a", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (888,100)" }, { name: "K7C5wnF2", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (897,34)" }, { name: "q1LAQS2V", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (897,54)" }, { name: "l_zRubf8", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (904,41)" }, { name: "jZWebIbu", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (904,62)" }, { name: "wKyPu_a7", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (907,38)" }, { name: "EOkDrLst", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (911,42)" }, { name: "wJbuc7yI", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (911,100)" }, { name: "aUVlGWcp", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (917,34)" }, { name: "KsmwzQ7d", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (917,61)" }, { name: "ABUF6IGq", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (924,28)" }, { name: "y2KLYSW7", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (924,77)" }, { name: "vTy1M6TK", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (932,41)" }, { name: "LzPrH7f2", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (932,62)" }, { name: "ExJ0DQQB", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (935,38)" }, { name: "pFsB8a2X", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (939,42)" }, { name: "PIpmf1Jv", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (939,100)" }, { name: "ZKRKRFdZ", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1011,35)" }, { name: "tz_xB0DK", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1017,35)" }, { name: "shQXAD3I", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1023,35)" }, { name: "N5puAby8", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1028,35)" }, { name: "wvb9mJQm", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1055,27)" }, { name: "BNdJT1cT", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1085,41)" }, { name: "PzBumF3C", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1085,62)" }, { name: "sNlSiT7C", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1088,38)" }, { name: "usfuFq3a", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1092,42)" }, { name: "XGuZ4MEv", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1092,100)" }, { name: "u4Fvc7m6", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1101,34)" }, { name: "ORzt406c", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1101,54)" }, { name: "sGFYk3BV", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1108,41)" }, { name: "Z6K53vUj", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1108,62)" }, { name: "Nvr1sNU1", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1111,38)" }, { name: "gZuGhFeW", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1115,42)" }, { name: "RAahtMoY", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1115,100)" }, { name: "JFTntZDs", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1121,34)" }, { name: "XSwWUXyj", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1121,61)" }, { name: "BtRlLNMi", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1128,28)" }, { name: "DjQ0gUq3", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1128,77)" }, { name: "Skc29nKb", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1136,41)" }, { name: "e9uYZsgU", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1136,62)" }, { name: "p5NZb93F", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1139,38)" }, { name: "Xe4iGn25", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1143,42)" }, { name: "QzcGXAWO", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1143,100)" }, { name: "rvTpLnM3", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1175,63)" }, { name: "lNfsBK1q", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1190,63)" }, { name: "l3qUWBQ2", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1204,63)" }, { name: "mH6z0xG8", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1225,63)" }, { name: "VSkQ3V09", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1310,39)" }, { name: "z40xhzvX", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1315,39)" }, { name: "RnTroWBE", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1320,39)" }, { name: "JrlJsqem", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1330,34)" }, { name: "QYvEqWFo", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1346,33)" }, { name: "w_grwuKP", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1349,38)" }, { name: "Xqg78pAj", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1349,69)" }, { name: "vp8oLTFs", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1354,34)" }, { name: "bqhbv6gi", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1354,68)" }, { name: "IaBow48n", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1376,41)" }, { name: "qXfwiEGs", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1379,46)" }, { name: "xvC5Mz5O", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1379,102)" }, { name: "RTOwbHRq", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1384,37)" }, { name: "Fqjboqd3", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1385,42)" }, { name: "E8Wmhi8B", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1385,70)" }, { name: "kwFlKJU2", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1396,37)" }, { name: "iBC3dxeB", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1399,42)" }, { name: "HHOHRQs8", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1411,27)" }, { name: "XhSxnxAW", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1445,46)" }, { name: "SJnJGsYd", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1445,76)" }, { name: "nztvRGaW", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1446,38)" }, { name: "ouOjBgEH", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1446,68)" }, { name: "Ombfpy2D", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/ModalPermissionEdit.ts (1454,21)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -/// -/// -var Modals; -(function (Modals) { - let PermissionEditorMode; - (function (PermissionEditorMode) { - PermissionEditorMode[PermissionEditorMode["VISIBLE"] = 0] = "VISIBLE"; - PermissionEditorMode[PermissionEditorMode["NO_PERMISSION"] = 1] = "NO_PERMISSION"; - PermissionEditorMode[PermissionEditorMode["UNSET"] = 2] = "UNSET"; - })(PermissionEditorMode = Modals.PermissionEditorMode || (Modals.PermissionEditorMode = {})); - class AbstractPermissionEditor { - constructor() { - this._listener_change = () => Promise.resolve(); - } - set_listener(listener) { - this._listener_change = listener || (() => Promise.resolve()); - } - set_listener_update(listener) { this._listener_update = listener; } - trigger_update() { - if (this._listener_update) - this._listener_update(); - } - } - Modals.AbstractPermissionEditor = AbstractPermissionEditor; - function _space() { - const now = Date.now(); - while (now + 100 > Date.now()) - ; - } - Modals._space = _space; - function spawnPermissionEdit(connection, selected_tab, options) { - options = options || {}; - const modal = createModal({ - header: function () { - return _translations.jgvFVcHz || (_translations.jgvFVcHz = tr("Server Permissions")); - }, - body: function () { - let properties = {}; - let tag = $("#tmpl_server_permissions").renderTag(properties); - /* build the permission editor */ - const permission_editor = (() => { - const editor = new pe.HTMLPermissionEditor(); - editor.initialize(connection.permissions.groupedPermissions()); - editor.icon_resolver = id => connection.fileManager.icons.resolve_icon(id).then((icon) => __awaiter(this, void 0, void 0, function* () { - if (!icon) - return undefined; - const tag = document.createElement("img"); - yield new Promise((resolve, reject) => { - tag.onerror = reject; - tag.onload = resolve; - tag.src = icon.url; - }); - return tag; - })); - editor.icon_selector = current_icon => new Promise(resolve => { - Modals.spawnIconSelect(connection, id => resolve(new Int32Array([id])[0]), current_icon); - }); - if (editor instanceof pe.CanvasPermissionEditor) - setTimeout(() => editor.update_ui(), 500); - return editor; - })(); - const container_tab_list = tag.find(".right > .header"); - { - const label_current = tag.find(".left .container-selected"); - const create_tab = (tab_entry, container_name, hidden_permissions) => { - const target_container = tag.find(".body .container." + container_name); - tab_entry.on('click', () => { - /* Using a timeout here prevents unnecessary style calculations required by other click event handlers */ - setTimeout(() => { - container_tab_list.find(".selected").removeClass("selected"); - tab_entry.addClass("selected"); - label_current.text(tab_entry.find("a").text()); - /* dont use show() here because it causes a style recalculation */ - for (const element of tag.find(".body .container")) - element.style.display = "none"; - permission_editor.set_hidden_permissions(settings.static_global(Settings.KEY_PERMISSIONS_SHOW_ALL) ? undefined : hidden_permissions); - permission_editor.html_tag()[0].remove(); - target_container.find(".permission-editor").trigger('show'); - target_container.find(".permission-editor").append(permission_editor.html_tag()); - for (const element of target_container) - element.style.display = null; - }, 0); - }); - }; - create_tab(container_tab_list.find(".sg"), "container-view-server-groups", permissions.senseless_server_group_permissions); - create_tab(container_tab_list.find(".cg"), "container-view-channel-groups", permissions.senseless_channel_group_permissions); - create_tab(container_tab_list.find(".chp"), "container-view-channel-permissions", permissions.senseless_channel_permissions); - create_tab(container_tab_list.find(".clp"), "container-view-client-permissions", permissions.senseless_client_permissions); - create_tab(container_tab_list.find(".clchp"), "container-view-client-channel-permissions", permissions.senseless_client_channel_permissions); - } - apply_server_groups(connection, permission_editor, tag.find(".left .container-view-server-groups"), tag.find(".right .container-view-server-groups")); - apply_channel_groups(connection, permission_editor, tag.find(".left .container-view-channel-groups"), tag.find(".right .container-view-channel-groups")); - apply_channel_permission(connection, permission_editor, tag.find(".left .container-view-channel-permissions"), tag.find(".right .container-view-channel-permissions")); - apply_client_permission(connection, permission_editor, tag.find(".left .container-view-client-permissions"), tag.find(".right .container-view-client-permissions"), selected_tab == "clp" ? options : {}); - apply_client_channel_permission(connection, permission_editor, tag.find(".left .container-view-client-channel-permissions"), tag.find(".right .container-view-client-channel-permissions"), selected_tab == "clchp" ? options : {}); - setTimeout(() => container_tab_list.find("." + (selected_tab || "sg")).trigger('click'), 0); - return tag.dividerfy(); - }, - footer: undefined, - min_width: "30em", - height: "80%", - trigger_tab: false, - full_size: true - }); - const tag = modal.htmlTag; - tag.find(".modal-body").addClass("modal-permission-editor"); - if (selected_tab) - setTimeout(() => tag.find(".tab-header .entry[x-id=" + selected_tab + "]").first().trigger("click"), 1); - tag.find(".btn_close").on('click', () => { - modal.close(); - }); - return modal; - } - Modals.spawnPermissionEdit = spawnPermissionEdit; - function build_channel_tree(connection, channel_list, selected_channel, select_callback) { - const root = connection.channelTree.get_first_channel(); - if (!root) - return; - const build_channel = (channel, level) => { - let tag = $.spawn("div").addClass("channel").css("padding-left", "calc(0.25em + " + (level * 16) + "px)").attr("channel-id", channel.channelId); - let icon_tag = connection.fileManager.icons.generateTag(channel.properties.channel_icon_id); - icon_tag.appendTo(tag); - const _update_icon = icon_id => icon_tag.replaceWith(icon_tag = connection.fileManager.icons.generateTag(icon_id)); - { - let name = $.spawn("a").text(channel.channelName() + " (" + channel.channelId + ")").addClass("name"); - name.appendTo(tag); - } - tag.on('click', event => { - channel_list.find(".selected").removeClass("selected"); - tag.addClass("selected"); - select_callback(channel, _update_icon); - }); - return tag; - }; - const build_channels = (root, level) => { - build_channel(root, level).appendTo(channel_list); - const child_head = root.children(false).find(e => e.channel_previous === undefined); - if (child_head) - build_channels(child_head, level + 1); - if (root.channel_next) - build_channels(root.channel_next, level); - }; - build_channels(root, 0); - let selected_channel_tag = channel_list.find(".channel[channel-id=" + selected_channel + "]"); - if (!selected_channel_tag || selected_channel_tag.length < 1) - selected_channel_tag = channel_list.find('.channel').first(); - setTimeout(() => selected_channel_tag.trigger('click'), 0); - } - function apply_client_channel_permission(connection, editor, tab_left, tab_right, options) { - let current_cldbid = 0; - let current_channel; - /* the editor */ - { - const pe_client = tab_right.find(".permission-editor"); - tab_right.on('show', event => { - editor.set_toggle_button(undefined, undefined); - pe_client.append(editor.html_tag()); - if (connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_CLIENT_PERMISSION_LIST).granted(1)) { - if (current_cldbid && current_channel) - editor.set_mode(PermissionEditorMode.VISIBLE); - else - editor.set_mode(PermissionEditorMode.UNSET); - } - else { - editor.set_mode(PermissionEditorMode.NO_PERMISSION); - return; - } - editor.set_listener_update(() => { - if (!current_cldbid || !current_channel) - return; - connection.permissions.requestClientChannelPermissions(current_cldbid, current_channel.channelId).then(result => { - editor.set_permissions(result); - editor.set_mode(PermissionEditorMode.VISIBLE); - }).catch(error => { - console.log(error); //TODO handling? - }); - }); - /* TODO: Error handling? */ - editor.set_listener((permission, value) => __awaiter(this, void 0, void 0, function* () { - if (!current_cldbid) - throw "unset client"; - if (!current_channel) - throw "unset channel"; - if (value.remove) { - /* remove the permission */ - if (typeof (value.value) !== "undefined") { - log.info(LogCategory.PERMISSIONS, _translations.dcBTd0ku || (_translations.dcBTd0ku = tr("Removing client channel permission %s. permission.id: %o")), permission.name, permission.id); - yield connection.serverConnection.send_command("channelclientdelperm", { - cldbid: current_cldbid, - cid: current_channel.channelId, - permid: permission.id, - }); - } - else { - log.info(LogCategory.PERMISSIONS, _translations.JpVF5Mzm || (_translations.JpVF5Mzm = tr("Removing client channel grant permission %s. permission.id: %o")), permission.name, permission.id_grant(), value.granted); - yield connection.serverConnection.send_command("channelclientdelperm", { - cldbid: current_cldbid, - cid: current_channel.channelId, - permid: permission.id_grant(), - }); - } - } - else { - /* add the permission */ - if (typeof (value.value) !== "undefined") { - log.info(LogCategory.PERMISSIONS, _translations.ViyQ3FC3 || (_translations.ViyQ3FC3 = tr("Adding or updating client channel permission %s. permission.{id: %o, value: %o, flag_skip: %o, flag_negate: %o}")), permission.name, permission.id, value.value, value.flag_skip, value.flag_negate); - yield connection.serverConnection.send_command("channelclientaddperm", { - cldbid: current_cldbid, - cid: current_channel.channelId, - permid: permission.id, - permvalue: value.value, - permskip: value.flag_skip, - permnegated: value.flag_negate - }); - } - else { - log.info(LogCategory.PERMISSIONS, _translations.t7rGoAdc || (_translations.t7rGoAdc = tr("Adding or updating client channel grant permission %s. permission.{id: %o, value: %o}")), permission.name, permission.id_grant(), value.granted); - yield connection.serverConnection.send_command("channelclientaddperm", { - cldbid: current_cldbid, - cid: current_channel.channelId, - permid: permission.id_grant(), - permvalue: value.granted, - permskip: false, - permnegated: false - }); - } - } - })); - /* FIXME: Use cached permissions */ - editor.trigger_update(); - }); - } - build_channel_tree(connection, tab_left.find(".list-channel .entries"), options.channel_id || 0, channel => { - if (current_channel == channel) - return; - current_channel = channel; - /* TODO: Test for visibility */ - editor.trigger_update(); - }); - { - const tag_select = tab_left.find(".client-select"); - const tag_select_uid = tag_select.find("input"); - const tag_select_error = tag_select.find(".invalid-feedback"); - const tag_client_name = tab_left.find(".client-name"); - const tag_client_uid = tab_left.find(".client-uid"); - const tag_client_dbid = tab_left.find(".client-dbid"); - const resolve_client = () => { - let client_uid = tag_select_uid.val(); - connection.serverConnection.command_helper.info_from_uid(client_uid).then(result => { - if (!result || result.length == 0) - return Promise.reject("invalid data"); - tag_select.removeClass('is-invalid'); - tag_client_name.val(result[0].client_nickname); - tag_client_uid.val(result[0].client_unique_id); - tag_client_dbid.val(result[0].client_database_id); - current_cldbid = result[0].client_database_id; - editor.trigger_update(); - }).catch(error => { - console.log(error); - if (error instanceof CommandResult) { - if (error.id == ErrorID.EMPTY_RESULT) - error = "unknown client"; - else - error = error.extra_message || error.message; - } - tag_client_name.val(""); - tag_client_uid.val(""); - tag_client_dbid.val(""); - tag_select_error.text(error); - tag_select.addClass('is-invalid'); - editor.set_mode(PermissionEditorMode.UNSET); - }); - }; - tag_select_uid.on('change', event => resolve_client()); - if (options.unique_id) { - tag_select_uid.val(options.unique_id); - setTimeout(() => resolve_client()); - } - } - } - function apply_client_permission(connection, editor, tab_left, tab_right, options) { - let current_cldbid = 0; - /* the editor */ - { - const pe_client = tab_right.find("permission-editor.client"); - tab_right.on('show', event => { - editor.set_toggle_button(undefined, undefined); - pe_client.append(editor.html_tag()); - if (connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_CLIENT_PERMISSION_LIST).granted(1)) { - if (current_cldbid) - editor.set_mode(PermissionEditorMode.VISIBLE); - else - editor.set_mode(PermissionEditorMode.UNSET); - } - else { - editor.set_mode(PermissionEditorMode.NO_PERMISSION); - return; - } - editor.set_listener_update(() => { - if (!current_cldbid) - return; - connection.permissions.requestClientPermissions(current_cldbid).then(result => { - editor.set_permissions(result); - editor.set_mode(PermissionEditorMode.VISIBLE); - }).catch(error => { - console.log(error); //TODO handling? - }); - }); - /* TODO: Error handling? */ - editor.set_listener((permission, value) => __awaiter(this, void 0, void 0, function* () { - if (!current_cldbid) - throw "unset client"; - if (value.remove) { - /* remove the permission */ - if (typeof (value.value) !== "undefined") { - log.info(LogCategory.PERMISSIONS, _translations.eKiUcJRA || (_translations.eKiUcJRA = tr("Removing client permission %s. permission.id: %o")), permission.name, permission.id); - yield connection.serverConnection.send_command("clientdelperm", { - cldbid: current_cldbid, - permid: permission.id, - }); - } - else { - log.info(LogCategory.PERMISSIONS, _translations.gNpxBbWx || (_translations.gNpxBbWx = tr("Removing client grant permission %s. permission.id: %o")), permission.name, permission.id_grant(), value.granted); - yield connection.serverConnection.send_command("clientdelperm", { - cldbid: current_cldbid, - permid: permission.id_grant(), - }); - } - } - else { - /* add the permission */ - if (typeof (value.value) !== "undefined") { - log.info(LogCategory.PERMISSIONS, _translations.Oldifku2 || (_translations.Oldifku2 = tr("Adding or updating client permission %s. permission.{id: %o, value: %o, flag_skip: %o, flag_negate: %o}")), permission.name, permission.id, value.value, value.flag_skip, value.flag_negate); - yield connection.serverConnection.send_command("clientaddperm", { - cldbid: current_cldbid, - permid: permission.id, - permvalue: value.value, - permskip: value.flag_skip, - permnegated: value.flag_negate - }); - } - else { - log.info(LogCategory.PERMISSIONS, _translations.JAIS9OGe || (_translations.JAIS9OGe = tr("Adding or updating client grant permission %s. permission.{id: %o, value: %o}")), permission.name, permission.id_grant(), value.granted); - yield connection.serverConnection.send_command("clientaddperm", { - cldbid: current_cldbid, - permid: permission.id_grant(), - permvalue: value.granted, - permskip: false, - permnegated: false - }); - } - } - })); - /* FIXME: Use cached permissions */ - editor.trigger_update(); - }); - } - const tag_select = tab_left.find(".client-select"); - const tag_select_uid = tag_select.find("input"); - const tag_select_error = tag_select.find(".invalid-feedback"); - const tag_client_name = tab_left.find(".client-name"); - const tag_client_uid = tab_left.find(".client-uid"); - const tag_client_dbid = tab_left.find(".client-dbid"); - const resolve_client = () => { - let client_uid = tag_select_uid.val(); - connection.serverConnection.command_helper.info_from_uid(client_uid).then(result => { - if (!result || result.length == 0) - return Promise.reject("invalid data"); - tag_select.removeClass("is-invalid"); - tag_client_name.val(result[0].client_nickname); - tag_client_uid.val(result[0].client_unique_id); - tag_client_dbid.val(result[0].client_database_id); - current_cldbid = result[0].client_database_id; - editor.trigger_update(); - }).catch(error => { - console.log(error); - if (error instanceof CommandResult) { - if (error.id == ErrorID.EMPTY_RESULT) - error = "unknown client"; - else - error = error.extra_message || error.message; - } - tag_client_name.val(""); - tag_client_uid.val(""); - tag_client_dbid.val(""); - tag_select_error.text(error); - tag_select.addClass("is-invalid"); - editor.set_mode(PermissionEditorMode.UNSET); - }); - }; - tag_select_uid.on('change', event => resolve_client()); - if (options.unique_id) { - tag_select_uid.val(options.unique_id); - setTimeout(() => resolve_client()); - } - } - function apply_channel_permission(connection, editor, tab_left, tab_right) { - let current_channel; - let update_channel_icon; - /* the editor */ - { - const pe_channel = tab_right.find(".permission-editor"); - tab_right.on('show', event => { - editor.set_toggle_button(undefined, undefined); - pe_channel.append(editor.html_tag()); - if (connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_CHANNEL_PERMISSION_LIST).granted(1)) - editor.set_mode(PermissionEditorMode.VISIBLE); - else { - editor.set_mode(PermissionEditorMode.NO_PERMISSION); - return; - } - editor.set_listener_update(() => { - if (!current_channel) - return; - connection.permissions.requestChannelPermissions(current_channel.channelId).then(result => editor.set_permissions(result)).catch(error => { - editor.set_permissions([]); - console.log(error); //TODO handling? - }); - }); - editor.set_listener((permission, value) => __awaiter(this, void 0, void 0, function* () { - if (!current_channel) - throw "unset channel"; - if (value.remove) { - /* remove the permission */ - if (typeof (value.value) !== "undefined") { - log.info(LogCategory.PERMISSIONS, _translations.tDmnoexV || (_translations.tDmnoexV = tr("Removing channel permission %s. permission.id: %o")), permission.name, permission.id); - yield connection.serverConnection.send_command("channeldelperm", { - cid: current_channel.channelId, - permid: permission.id, - }).then(e => { - if (permission.name === "i_icon_id" && update_channel_icon) - update_channel_icon(undefined); - return e; - }); - } - else { - /* TODO Remove this because its totally useless. Remove this from the UI as well */ - log.info(LogCategory.PERMISSIONS, _translations.xDRYefpc || (_translations.xDRYefpc = tr("Removing channel grant permission %s. permission.id: %o")), permission.name, permission.id_grant(), value.granted); - yield connection.serverConnection.send_command("channeldelperm", { - cid: current_channel.channelId, - permid: permission.id_grant(), - }); - } - } - else { - /* add the permission */ - if (typeof (value.value) !== "undefined") { - log.info(LogCategory.PERMISSIONS, _translations.cYgmPzVb || (_translations.cYgmPzVb = tr("Adding or updating channel permission %s. permission.{id: %o, value: %o, flag_skip: %o, flag_negate: %o}")), permission.name, permission.id, value.value, value.flag_skip, value.flag_negate); - yield connection.serverConnection.send_command("channeladdperm", { - cid: current_channel.channelId, - permid: permission.id, - permvalue: value.value, - permskip: value.flag_skip, - permnegated: value.flag_negate - }).then(e => { - if (permission.name === "i_icon_id" && update_channel_icon) - update_channel_icon(value.value); - return e; - }); - } - else { - /* TODO Remove this because its totally useless. Remove this from the UI as well */ - log.info(LogCategory.PERMISSIONS, _translations.MyTOVvJi || (_translations.MyTOVvJi = tr("Adding or updating channel grant permission %s. permission.{id: %o, value: %o}")), permission.name, permission.id_grant(), value.granted); - yield connection.serverConnection.send_command("channeladdperm", { - cid: current_channel.channelId, - permid: permission.id_grant(), - permvalue: value.granted, - permskip: false, - permnegated: false - }); - } - } - })); - /* FIXME: Use cached permissions */ - editor.trigger_update(); - }); - } - let channel_list = tab_left.find(".list-channel .entries"); - build_channel_tree(connection, channel_list, 0, (channel, update) => { - current_channel = channel; - update_channel_icon = update; - editor.trigger_update(); - }); - } - function apply_channel_groups(connection, editor, tab_left, tab_right) { - let current_group; - let update_group_icon; - let update_groups; - let update_buttons; - /* the editor */ - { - const pe_server = tab_right.find(".permission-editor"); - tab_right.on('show', event => { - editor.set_toggle_button(undefined, undefined); - pe_server.append(editor.html_tag()); - if (connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_CHANNELGROUP_PERMISSION_LIST).granted(1)) - editor.set_mode(PermissionEditorMode.VISIBLE); - else { - editor.set_mode(PermissionEditorMode.NO_PERMISSION); - return; - } - editor.set_listener_update(() => { - if (!current_group) - return; - connection.groups.request_permissions(current_group).then(result => editor.set_permissions(result)).catch(error => { - console.log(error); //TODO handling? - }); - }); - editor.set_listener((permission, value) => __awaiter(this, void 0, void 0, function* () { - if (!current_group) - throw "unset channel group"; - if (value.remove) { - /* remove the permission */ - if (typeof (value.value) !== "undefined") { - log.info(LogCategory.PERMISSIONS, _translations.eH6peQwT || (_translations.eH6peQwT = tr("Removing channel group permission %s. permission.id: %o")), permission.name, permission.id); - yield connection.serverConnection.send_command("channelgroupdelperm", { - cgid: current_group.id, - permid: permission.id, - }).then(e => { - if (permission.name === "i_icon_id" && update_group_icon) - update_group_icon(undefined); - return e; - }); - } - else { - log.info(LogCategory.PERMISSIONS, _translations.PSWt_oAu || (_translations.PSWt_oAu = tr("Removing channel group grant permission %s. permission.id: %o")), permission.name, permission.id_grant(), value.granted); - yield connection.serverConnection.send_command("channelgroupdelperm", { - cgid: current_group.id, - permid: permission.id_grant(), - }); - } - } - else { - /* add the permission */ - if (typeof (value.value) !== "undefined") { - log.info(LogCategory.PERMISSIONS, _translations.Z5NC2zLF || (_translations.Z5NC2zLF = tr("Adding or updating channel group permission %s. permission.{id: %o, value: %o, flag_skip: %o, flag_negate: %o}")), permission.name, permission.id, value.value, value.flag_skip, value.flag_negate); - yield connection.serverConnection.send_command("channelgroupaddperm", { - cgid: current_group.id, - permid: permission.id, - permvalue: value.value, - permskip: value.flag_skip, - permnegated: value.flag_negate - }).then(e => { - if (permission.name === "i_icon_id" && update_group_icon) - update_group_icon(value.value); - return e; - }); - } - else { - log.info(LogCategory.PERMISSIONS, _translations.hdpOwMqg || (_translations.hdpOwMqg = tr("Adding or updating channel group grant permission %s. permission.{id: %o, value: %o}")), permission.name, permission.id_grant(), value.granted); - yield connection.serverConnection.send_command("channelgroupaddperm", { - cgid: current_group.id, - permid: permission.id_grant(), - permvalue: value.granted, - permskip: false, - permnegated: false - }); - } - } - })); - /* FIXME: Use cached permissions */ - editor.trigger_update(); - }); - } - /* list all channel groups */ - { - let group_list = tab_left.find(".list-groups .entries"); - update_groups = (selected_group) => { - group_list.children().remove(); - const allow_query_groups = connection.permissions.neededPermission(PermissionType.B_SERVERINSTANCE_MODIFY_QUERYGROUP).granted(1); - const allow_template_groups = connection.permissions.neededPermission(PermissionType.B_SERVERINSTANCE_MODIFY_TEMPLATES).granted(1); - for (let group of connection.groups.channelGroups.sort(GroupManager.sorter())) { - if (group.type == GroupType.QUERY) { - if (!allow_query_groups) - continue; - } - else if (group.type == GroupType.TEMPLATE) { - if (!allow_template_groups) - continue; - } - let tag = $.spawn("div").addClass("group").attr("group-id", group.id); - let icon_tag = connection.fileManager.icons.generateTag(group.properties.iconid); - icon_tag.appendTo(tag); - const _update_icon = icon_id => icon_tag.replaceWith(icon_tag = connection.fileManager.icons.generateTag(icon_id)); - { - let name = $.spawn("a").text(group.name + " (" + group.id + ")").addClass("name"); - if (group.properties.savedb) - name.addClass("savedb"); - if (connection.channelTree.server.properties.virtualserver_default_channel_group == group.id) - name.addClass("default"); - name.appendTo(tag); - } - tag.appendTo(group_list); - tag.on('click', event => { - current_group = group; - update_group_icon = _update_icon; - group_list.find(".selected").removeClass("selected"); - tag.addClass("selected"); - update_buttons(); - //TODO trigger only if the editor is in channel group mode! - editor.trigger_update(); - }); - tag.on('contextmenu', event => { - if (event.isDefaultPrevented()) - return; - contextmenu.spawn_context_menu(event.pageX, event.pageY, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.uyiLQc3y || (_translations.uyiLQc3y = tr("Create a channel group")), - icon_class: 'client-add', - invalidPermission: !connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_CHANNELGROUP_CREATE).granted(1), - callback: () => tab_left.find(".button-add").trigger('click') - }, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.nuh4sliq || (_translations.nuh4sliq = tr("Rename channel group")), - icon_class: 'client-edit', - invalidPermission: !connection.permissions.neededPermission(PermissionType.I_CHANNEL_GROUP_MODIFY_POWER).granted(current_group.requiredModifyPower), - callback: () => tab_left.find(".button-rename").trigger('click') - }, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.zyTnu_qn || (_translations.zyTnu_qn = tr("Duplicate channel group")), - icon_class: 'client-copy', - callback: () => tab_left.find(".button-duplicate").trigger('click') - }, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.qlgoozon || (_translations.qlgoozon = tr("Delete channel group")), - icon_class: 'client-delete', - invalidPermission: !connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_CHANNELGROUP_DELETE).granted(1), - callback: () => tab_left.find(".button-delete").trigger('click') - }); - event.preventDefault(); - }); - if (group.id === selected_group) { - setTimeout(() => tag.trigger('click'), 0); - selected_group = undefined; - } - } - /* because the server menu is the first which will be shown */ - if (typeof (selected_group) !== "undefined") { - setTimeout(() => group_list.find('.group').first().trigger('click'), 0); - } - }; - tab_left.find(".list-groups").on('contextmenu', event => { - if (event.isDefaultPrevented()) - return; - contextmenu.spawn_context_menu(event.pageX, event.pageY, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.Sp05Q7cm || (_translations.Sp05Q7cm = tr("Create a channel group")), - icon_class: 'client-add', - callback: () => tab_left.find(".button-add").trigger('click') - }); - event.preventDefault(); - }); - } - { - const container_buttons = tab_left.find(".container-buttons"); - const button_add = container_buttons.find(".button-add"); - const button_rename = container_buttons.find(".button-rename"); - const button_duplicate = container_buttons.find(".button-duplicate"); - const button_delete = container_buttons.find(".button-delete"); - button_add.prop("disabled", !connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_CHANNELGROUP_CREATE).granted(1)); - button_delete.prop("disabled", !connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_CHANNELGROUP_CREATE).granted(1)); - update_buttons = () => { - const permission_modify = current_group && connection.permissions.neededPermission(PermissionType.I_CHANNEL_GROUP_MODIFY_POWER).granted(current_group.requiredModifyPower); - button_rename.prop("disabled", !permission_modify); - button_duplicate.prop("disabled", !connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_CHANNELGROUP_CREATE).granted(1)); - }; - button_add.on('click', () => { - spawnGroupAdd(false, connection.permissions, (name, type) => name.length > 0 && !connection.groups.channelGroups.find(e => e.target == GroupTarget.CHANNEL && e.name.toLowerCase() === name.toLowerCase() && e.type == type), (name, type) => { - console.log("Creating channel group: %o, %o", name, type); - connection.serverConnection.send_command('channelgroupadd', { - name: name, - type: type - }).then(() => { - createInfoModal(_translations.BDKgOv3v || (_translations.BDKgOv3v = tr("Group created")), _translations.asEzKP4X || (_translations.asEzKP4X = tr("The channel group has been created."))).open(); - update_groups(0); //TODO: May get the created group? - }).catch(error => { - console.warn(_translations.ZmlrpljU || (_translations.ZmlrpljU = tr("Failed to create channel group: %o")), error); - if (error instanceof CommandResult) { - error = error.extra_message || error.message; - } - createErrorModal(_translations.zGFSOJO8 || (_translations.zGFSOJO8 = tr("Failed to create group")), MessageHelper.formatMessage(_translations.ZxKo1R5a || (_translations.ZxKo1R5a = tr("Failed to create group:{:br:}")), error)).open(); - }); - }); - }); - button_rename.on('click', () => { - if (!current_group) - return; - createInputModal(_translations.K7C5wnF2 || (_translations.K7C5wnF2 = tr("Rename group")), _translations.q1LAQS2V || (_translations.q1LAQS2V = tr("Enter the new group name")), name => name.length > 0 && !connection.groups.channelGroups.find(e => e.target == GroupTarget.CHANNEL && e.name.toLowerCase() === name.toLowerCase() && e.type == current_group.type), result => { - if (typeof (result) !== "string" || !result) - return; - connection.serverConnection.send_command('channelgrouprename', { - cgid: current_group.id, - name: result - }).then(() => { - createInfoModal(_translations.l_zRubf8 || (_translations.l_zRubf8 = tr("Group renamed")), _translations.jZWebIbu || (_translations.jZWebIbu = tr("The channel group has been renamed."))).open(); - update_groups(current_group.id); - }).catch(error => { - console.warn(_translations.wKyPu_a7 || (_translations.wKyPu_a7 = tr("Failed to rename channel group: %o")), error); - if (error instanceof CommandResult) { - error = error.extra_message || error.message; - } - createErrorModal(_translations.EOkDrLst || (_translations.EOkDrLst = tr("Failed to rename group")), MessageHelper.formatMessage(_translations.wJbuc7yI || (_translations.wJbuc7yI = tr("Failed to rename group:{:br:}")), error)).open(); - }); - }).open(); - }); - button_duplicate.on('click', () => { - createErrorModal(_translations.aUVlGWcp || (_translations.aUVlGWcp = tr("Not implemented yet")), _translations.KsmwzQ7d || (_translations.KsmwzQ7d = tr("This function hasn't been implemented yet!"))).open(); - }); - button_delete.on('click', () => { - if (!current_group) - return; - Modals.spawnYesNo(_translations.ABUF6IGq || (_translations.ABUF6IGq = tr("Are you sure?")), MessageHelper.formatMessage(_translations.y2KLYSW7 || (_translations.y2KLYSW7 = tr("Do you really want to delete the group {}?")), current_group.name), result => { - if (result !== true) - return; - connection.serverConnection.send_command("channelgroupdel", { - cgid: current_group.id, - force: true - }).then(() => { - createInfoModal(_translations.vTy1M6TK || (_translations.vTy1M6TK = tr("Group deleted")), _translations.LzPrH7f2 || (_translations.LzPrH7f2 = tr("The channel group has been deleted."))).open(); - update_groups(0); - }).catch(error => { - console.warn(_translations.ExJ0DQQB || (_translations.ExJ0DQQB = tr("Failed to delete channel group: %o")), error); - if (error instanceof CommandResult) { - error = error.extra_message || error.message; - } - createErrorModal(_translations.pFsB8a2X || (_translations.pFsB8a2X = tr("Failed to delete group")), MessageHelper.formatMessage(_translations.PIpmf1Jv || (_translations.PIpmf1Jv = tr("Failed to delete group:{:br:}")), error)).open(); - }); - }); - }); - } - update_groups(0); - } - function apply_server_groups(connection, editor, tab_left, tab_right) { - let current_group; - let current_group_changed = []; - let update_buttons; - /* list all groups */ - let update_icon = []; - let update_groups; - { - let group_list = tab_left.find(".container-group-list .list-groups .entries"); - let group_list_update_icon; - update_icon.push(i => group_list_update_icon(i)); - update_groups = (selected_group) => { - group_list.children().remove(); - const allow_query_groups = connection.permissions.neededPermission(PermissionType.B_SERVERINSTANCE_MODIFY_QUERYGROUP).granted(1); - const allow_template_groups = connection.permissions.neededPermission(PermissionType.B_SERVERINSTANCE_MODIFY_TEMPLATES).granted(1); - for (const group of connection.groups.serverGroups.sort(GroupManager.sorter())) { - if (group.type == GroupType.QUERY) { - if (!allow_query_groups) - continue; - } - else if (group.type == GroupType.TEMPLATE) { - if (!allow_template_groups) - continue; - } - let tag = $.spawn("div").addClass("group").attr("group-id", group.id); - let icon_tag = connection.fileManager.icons.generateTag(group.properties.iconid); - icon_tag.appendTo(tag); - const _update_icon = icon_id => icon_tag.replaceWith(icon_tag = connection.fileManager.icons.generateTag(icon_id)); - { - let name = $.spawn("div").text(group.name + " (" + group.id + ")").addClass("name"); - if (group.properties.savedb) - name.addClass("savedb"); - if (connection.channelTree.server.properties.virtualserver_default_server_group == group.id) - name.addClass("default"); - name.appendTo(tag); - } - tag.appendTo(group_list); - tag.on('click', event => { - if (current_group === group) - return; - current_group = group; - group_list_update_icon = _update_icon; - if (update_buttons) - update_buttons(); - for (const entry of current_group_changed) - entry(); - group_list.find(".selected").removeClass("selected"); - tag.addClass("selected"); - editor.trigger_update(); - }); - tag.on('contextmenu', event => { - if (event.isDefaultPrevented()) - return; - contextmenu.spawn_context_menu(event.pageX, event.pageY, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.ZKRKRFdZ || (_translations.ZKRKRFdZ = tr("Create a server group")), - icon_class: 'client-add', - invalidPermission: !connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_SERVERGROUP_CREATE).granted(1), - callback: () => tab_left.find(".button-add").trigger('click') - }, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.tz_xB0DK || (_translations.tz_xB0DK = tr("Rename server group")), - icon_class: 'client-edit', - invalidPermission: !connection.permissions.neededPermission(PermissionType.I_SERVER_GROUP_MODIFY_POWER).granted(current_group.requiredModifyPower), - callback: () => tab_left.find(".button-rename").trigger('click') - }, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.shQXAD3I || (_translations.shQXAD3I = tr("Duplicate server group")), - icon_class: 'client-copy', - callback: () => tab_left.find(".button-duplicate").trigger('click') - }, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.N5puAby8 || (_translations.N5puAby8 = tr("Delete server group")), - icon_class: 'client-delete', - invalidPermission: !connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_SERVERGROUP_DELETE).granted(1), - callback: () => tab_left.find(".button-delete").trigger('click') - }); - event.preventDefault(); - }); - if (group.id === selected_group) { - setTimeout(() => tag.trigger('click'), 0); - selected_group = undefined; - } - } - /* because the server menu is the first which will be shown */ - if (typeof (selected_group) !== "undefined") { - setTimeout(() => group_list.find('.group').first().trigger('click'), 0); - } - }; - tab_left.find(".list-groups").on('contextmenu', event => { - if (event.isDefaultPrevented()) - return; - contextmenu.spawn_context_menu(event.pageX, event.pageY, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.wvb9mJQm || (_translations.wvb9mJQm = tr("Create a server group")), - icon_class: 'client-add', - callback: () => tab_left.find(".button-add").trigger('click') - }); - event.preventDefault(); - }); - } - { - const container_buttons = tab_left.find(".container-group-list .container-buttons"); - const button_add = container_buttons.find(".button-add"); - const button_rename = container_buttons.find(".button-rename"); - const button_duplicate = container_buttons.find(".button-duplicate"); - const button_delete = container_buttons.find(".button-delete"); - button_add.prop("disabled", !connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_SERVERGROUP_CREATE).granted(1)); - button_delete.prop("disabled", !connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_SERVERGROUP_DELETE).granted(1)); - update_buttons = () => { - const permission_modify = current_group && connection.permissions.neededPermission(PermissionType.I_SERVER_GROUP_MODIFY_POWER).granted(current_group.requiredModifyPower); - button_rename.prop("disabled", !permission_modify); - button_duplicate.prop("disabled", !connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_SERVERGROUP_CREATE).granted(1)); - }; - button_add.on('click', () => { - spawnGroupAdd(true, connection.permissions, (name, type) => name.length > 0 && !connection.groups.serverGroups.find(e => e.target == GroupTarget.SERVER && e.name.toLowerCase() === name.toLowerCase() && e.type == type), (name, type) => { - console.log("Creating group: %o, %o", name, type); - connection.serverConnection.send_command('servergroupadd', { - name: name, - type: type - }).then(() => { - createInfoModal(_translations.BNdJT1cT || (_translations.BNdJT1cT = tr("Group created")), _translations.PzBumF3C || (_translations.PzBumF3C = tr("The server group has been created."))).open(); - update_groups(0); //TODO: May get the created group? - }).catch(error => { - console.warn(_translations.sNlSiT7C || (_translations.sNlSiT7C = tr("Failed to create server group: %o")), error); - if (error instanceof CommandResult) { - error = error.extra_message || error.message; - } - createErrorModal(_translations.usfuFq3a || (_translations.usfuFq3a = tr("Failed to create group")), MessageHelper.formatMessage(_translations.XGuZ4MEv || (_translations.XGuZ4MEv = tr("Failed to create group:{:br:}")), error)).open(); - }); - }); - }); - button_rename.on('click', () => { - if (!current_group) - return; - createInputModal(_translations.u4Fvc7m6 || (_translations.u4Fvc7m6 = tr("Rename group")), _translations.ORzt406c || (_translations.ORzt406c = tr("Enter the new group name")), name => name.length > 0 && !connection.groups.serverGroups.find(e => e.target == GroupTarget.SERVER && e.name.toLowerCase() === name.toLowerCase() && e.type == current_group.type), result => { - if (typeof (result) !== "string" || !result) - return; - connection.serverConnection.send_command('servergrouprename', { - sgid: current_group.id, - name: result - }).then(() => { - createInfoModal(_translations.sGFYk3BV || (_translations.sGFYk3BV = tr("Group renamed")), _translations.Z6K53vUj || (_translations.Z6K53vUj = tr("The server group has been renamed."))).open(); - update_groups(current_group.id); - }).catch(error => { - console.warn(_translations.Nvr1sNU1 || (_translations.Nvr1sNU1 = tr("Failed to rename server group: %o")), error); - if (error instanceof CommandResult) { - error = error.extra_message || error.message; - } - createErrorModal(_translations.gZuGhFeW || (_translations.gZuGhFeW = tr("Failed to rename group")), MessageHelper.formatMessage(_translations.RAahtMoY || (_translations.RAahtMoY = tr("Failed to rename group:{:br:}")), error)).open(); - }); - }).open(); - }); - button_duplicate.on('click', () => { - createErrorModal(_translations.JFTntZDs || (_translations.JFTntZDs = tr("Not implemented yet")), _translations.XSwWUXyj || (_translations.XSwWUXyj = tr("This function hasn't been implemented yet!"))).open(); - }); - button_delete.on('click', () => { - if (!current_group) - return; - Modals.spawnYesNo(_translations.BtRlLNMi || (_translations.BtRlLNMi = tr("Are you sure?")), MessageHelper.formatMessage(_translations.DjQ0gUq3 || (_translations.DjQ0gUq3 = tr("Do you really want to delete the group {}?")), current_group.name), result => { - if (result !== true) - return; - connection.serverConnection.send_command("servergroupdel", { - sgid: current_group.id, - force: true - }).then(() => { - createInfoModal(_translations.Skc29nKb || (_translations.Skc29nKb = tr("Group deleted")), _translations.e9uYZsgU || (_translations.e9uYZsgU = tr("The server group has been deleted."))).open(); - update_groups(0); - }).catch(error => { - console.warn(_translations.p5NZb93F || (_translations.p5NZb93F = tr("Failed to delete server group: %o")), error); - if (error instanceof CommandResult) { - error = error.extra_message || error.message; - } - createErrorModal(_translations.Xe4iGn25 || (_translations.Xe4iGn25 = tr("Failed to delete group")), MessageHelper.formatMessage(_translations.QzcGXAWO || (_translations.QzcGXAWO = tr("Failed to delete group:{:br:}")), error)).open(); - }); - }); - }); - } - update_groups(0); - /* the editor */ - { - const pe_server = tab_right.find(".permission-editor"); - tab_right.on('show', event => { - pe_server.append(editor.html_tag()); - if (connection.permissions.neededPermission(PermissionType.B_VIRTUALSERVER_SERVERGROUP_PERMISSION_LIST).granted(1)) - editor.set_mode(PermissionEditorMode.VISIBLE); - else { - editor.set_mode(PermissionEditorMode.NO_PERMISSION); - return; - } - editor.set_listener_update(() => { - console.log("Updating permissions"); - connection.groups.request_permissions(current_group).then(result => editor.set_permissions(result)).catch(error => { - console.log(error); //TODO handling? - }); - }); - editor.set_listener((permission, value) => __awaiter(this, void 0, void 0, function* () { - if (!current_group) - throw "unset server group"; - if (value.remove) { - /* remove the permission */ - if (typeof (value.value) !== "undefined") { - log.info(LogCategory.PERMISSIONS, _translations.rvTpLnM3 || (_translations.rvTpLnM3 = tr("Removing server group permission %s. permission.id: %o")), permission.name, permission.id); - yield connection.serverConnection.send_command("servergroupdelperm", { - sgid: current_group.id, - permid: permission.id, - }).then(e => { - if (permission.name === "i_icon_id") - for (const c of update_icon) - c(0); - return e; - }); - } - else { - log.info(LogCategory.PERMISSIONS, _translations.lNfsBK1q || (_translations.lNfsBK1q = tr("Removing server group grant permission %s. permission.id: %o")), permission.name, permission.id_grant(), value.granted); - yield connection.serverConnection.send_command("servergroupdelperm", { - sgid: current_group.id, - permid: permission.id_grant(), - }); - } - } - else { - /* add the permission */ - if (typeof (value.value) !== "undefined") { - log.info(LogCategory.PERMISSIONS, _translations.l3qUWBQ2 || (_translations.l3qUWBQ2 = tr("Adding or updating server group permission %s. permission.{id: %o, value: %o, flag_skip: %o, flag_negate: %o}")), permission.name, permission.id, value.value, value.flag_skip, value.flag_negate); - yield connection.serverConnection.send_command("servergroupaddperm", { - sgid: current_group.id, - permid: permission.id, - permvalue: value.value, - permskip: value.flag_skip, - permnegated: value.flag_negate - }).then(e => { - if (permission.name === "i_icon_id") - for (const c of update_icon) - c(value.value); - return e; - }); - } - else { - log.info(LogCategory.PERMISSIONS, _translations.mH6z0xG8 || (_translations.mH6z0xG8 = tr("Adding or updating server group grant permission %s. permission.{id: %o, value: %o}")), permission.name, permission.id_grant(), value.granted); - yield connection.serverConnection.send_command("servergroupaddperm", { - sgid: current_group.id, - permid: permission.id_grant(), - permvalue: value.granted, - permskip: false, - permnegated: false - }); - } - } - })); - editor.trigger_update(); - }); - } - /* client list */ - { - //container-client-list container-group-list - let clients_visible = false; - let selected_client; - const container_client_list = tab_left.find(".container-client-list").addClass("hidden"); - const container_group_list = tab_left.find(".container-group-list"); - const container_selected_group = container_client_list.find(".container-current-group"); - const container_clients = container_client_list.find(".list-clients .entries"); - const input_filter = container_client_list.find(".filter-client-list"); - const button_add = container_client_list.find(".button-add"); - const button_delete = container_client_list.find(".button-delete"); - const update_filter = () => { - const filter_text = (input_filter.val() || "").toString().toLowerCase(); - if (!filter_text) { - container_clients.find(".entry").css('display', 'block'); - } - else { - const entries = container_clients.find(".entry"); - for (const _entry of entries) { - const entry = $(_entry); - if (entry.attr("search-string").toLowerCase().indexOf(filter_text) !== -1) - entry.css('display', 'block'); - else - entry.css('display', 'none'); - } - } - }; - const update_client_list = () => { - container_clients.empty(); - button_delete.prop('disabled', true); - connection.serverConnection.command_helper.request_clients_by_server_group(current_group.id).then(clients => { - for (const client of clients) { - const tag = $.spawn("div").addClass("client").text(client.client_nickname); - tag.attr("search-string", client.client_nickname + "-" + client.client_unique_identifier + "-" + client.client_database_id); - container_clients.append(tag); - tag.on('click contextmenu', event => { - container_clients.find(".selected").removeClass("selected"); - tag.addClass("selected"); - selected_client = { - tag: tag, - dbid: client.client_database_id - }; - button_delete.prop('disabled', false); - }); - tag.on('contextmenu', event => { - if (event.isDefaultPrevented()) - return; - event.preventDefault(); - contextmenu.spawn_context_menu(event.pageX, event.pageY, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.VSkQ3V09 || (_translations.VSkQ3V09 = tr("Add client")), - icon_class: 'client-add', - callback: () => button_add.trigger('click') - }, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.z40xhzvX || (_translations.z40xhzvX = tr("Remove client")), - icon_class: 'client-delete', - callback: () => button_delete.trigger('click') - }, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.RnTroWBE || (_translations.RnTroWBE = tr("Copy unique id")), - icon_class: 'client-copy', - callback: () => copy_to_clipboard(client.client_unique_identifier) - }); - }); - } - update_filter(); - }).catch(error => { - if (error instanceof CommandResult && error.id === ErrorID.PERMISSION_ERROR) - return; - console.warn(_translations.JrlJsqem || (_translations.JrlJsqem = tr("Failed to receive server group clients for group %d: %o")), current_group.id, error); - }); - }; - current_group_changed.push(update_client_list); - button_delete.on('click', event => { - const client = selected_client; - if (!client) - return; - connection.serverConnection.send_command("servergroupdelclient", { - sgid: current_group.id, - cldbid: client.dbid - }).then(() => { - selected_client.tag.detach(); - button_delete.prop('disabled', true); /* nothing is selected */ - }).catch(error => { - console.log(_translations.QYvEqWFo || (_translations.QYvEqWFo = tr("Failed to delete client %o from server group %o: %o")), client.dbid, current_group.id, error); - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.w_grwuKP || (_translations.w_grwuKP = tr("Failed to remove client")), _translations.Xqg78pAj || (_translations.Xqg78pAj = tr("Failed to remove client from server group"))).open(); - }); - }); - button_add.on('click', event => { - createInputModal(_translations.vp8oLTFs || (_translations.vp8oLTFs = tr("Add client to server group")), _translations.bqhbv6gi || (_translations.bqhbv6gi = tr("Enter the client unique id or database id")), text => { - if (!text) - return false; - if (!!text.match(/^[0-9]+$/)) - return true; - try { - return atob(text).length >= 20; - } - catch (error) { - return false; - } - }, (text) => __awaiter(this, void 0, void 0, function* () { - if (typeof (text) !== "string") - return; - let dbid; - if (!!text.match(/^[0-9]+$/)) { - dbid = parseInt(text); - debugger; - } - else { - try { - const data = yield connection.serverConnection.command_helper.info_from_uid(text.trim()); - dbid = data[0].client_database_id; - } - catch (error) { - console.log(_translations.IaBow48n || (_translations.IaBow48n = tr("Failed to resolve client database id from unique id (%s): %o")), text, error); - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.qXfwiEGs || (_translations.qXfwiEGs = tr("Failed to add client")), MessageHelper.formatMessage(_translations.xvC5Mz5O || (_translations.xvC5Mz5O = tr("Failed to add client to server group\nFailed to resolve database id: {}.")), error)).open(); - return; - } - } - if (!dbid) { - console.log(_translations.RTOwbHRq || (_translations.RTOwbHRq = tr("Failed to resolve client database id from unique id (%s): Client not found"))); - createErrorModal(_translations.Fqjboqd3 || (_translations.Fqjboqd3 = tr("Failed to add client")), _translations.E8Wmhi8B || (_translations.E8Wmhi8B = tr("Failed to add client to server group\nClient database id not found"))).open(); - return; - } - connection.serverConnection.send_command("servergroupaddclient", { - sgid: current_group.id, - cldbid: dbid - }).then(() => { - update_client_list(); - }).catch(error => { - console.log(_translations.kwFlKJU2 || (_translations.kwFlKJU2 = tr("Failed to add client %o to server group %o: %o")), dbid, current_group.id, error); - if (error instanceof CommandResult) - error = error.extra_message || error.message; - createErrorModal(_translations.iBC3dxeB || (_translations.iBC3dxeB = tr("Failed to add client")), tr("Failed to add client to server group\n" + error)).open(); - }); - })).open(); - }); - container_client_list.on('contextmenu', event => { - if (event.isDefaultPrevented()) - return; - event.preventDefault(); - contextmenu.spawn_context_menu(event.pageX, event.pageY, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.HHOHRQs8 || (_translations.HHOHRQs8 = tr("Add client")), - icon_class: 'client-add', - callback: () => button_add.trigger('click') - }); - }); - /* icon handler and current group display */ - { - let update_icon_callback; - update_icon.push(i => update_icon_callback(i)); - input_filter.on('change keyup', event => update_filter()); - current_group_changed.push(() => { - container_selected_group.empty(); - if (!current_group) - return; - let icon_container = $.spawn("div").addClass("icon-container").appendTo(container_selected_group); - connection.fileManager.icons.generateTag(current_group.properties.iconid).appendTo(icon_container); - update_icon_callback = icon => { - icon_container.empty(); - connection.fileManager.icons.generateTag(icon).appendTo(icon_container); - }; - $.spawn("div").addClass("name").text(current_group.name + " (" + current_group.id + ")").appendTo(container_selected_group); - }); - } - tab_right.on('show', event => { - editor.set_toggle_button(() => { - clients_visible = !clients_visible; - container_client_list.toggleClass("hidden", !clients_visible); - container_group_list.toggleClass("hidden", clients_visible); - return clients_visible ? _translations.XhSxnxAW || (_translations.XhSxnxAW = tr("Hide clients in group")) : _translations.SJnJGsYd || (_translations.SJnJGsYd = tr("Show clients in group")); - }, clients_visible ? _translations.nztvRGaW || (_translations.nztvRGaW = tr("Hide clients in group")) : _translations.ouOjBgEH || (_translations.ouOjBgEH = tr("Show clients in group"))); - }); - } - } - function spawnGroupAdd(server_group, permissions, valid_name, callback) { - let modal; - modal = createModal({ - header: _translations.Ombfpy2D || (_translations.Ombfpy2D = tr("Create a new group")), - body: () => { - let tag = $("#tmpl_group_add").renderTag({ - server_group: server_group - }); - tag.find(".group-type-template").prop("disabled", !permissions.neededPermission(PermissionType.B_SERVERINSTANCE_MODIFY_TEMPLATES).granted(1)); - tag.find(".group-type-query").prop("disabled", !permissions.neededPermission(PermissionType.B_SERVERINSTANCE_MODIFY_QUERYGROUP).granted(1)); - const container_name = tag.find(".group-name"); - const button_create = tag.find(".button-create"); - const group_type = () => tag.find(".group-type")[0].selectedIndex; - container_name.on('keyup change', (event) => { - if (event.type === 'keyup') { - const kevent = event; - if (!kevent.shiftKey && kevent.key == 'Enter') { - button_create.trigger('click'); - return; - } - } - const valid = valid_name(container_name.val(), group_type()); - button_create.prop("disabled", !valid); - container_name.parent().toggleClass("is-invalid", !valid); - }).trigger('change'); - tag.find(".group-type").on('change', () => container_name.trigger('change')); - button_create.on('click', event => { - if (button_create.prop("disabled")) - return; - button_create.prop("disabled", true); /* disable double clicking */ - modal.close(); - callback(container_name.val(), group_type()); - }); - return tag; - }, - footer: null, - width: 600 - }); - modal.htmlTag.find(".modal-body").addClass("modal-group-add"); - modal.open_listener.push(() => { - modal.htmlTag.find(".group-name").focus(); - }); - modal.open(); - } -})(Modals || (Modals = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["34cd71225ad5db2a75a5d24e2b7d106cb2fb951faf9aeb6d5fcbd8cfcef9103a"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["34cd71225ad5db2a75a5d24e2b7d106cb2fb951faf9aeb6d5fcbd8cfcef9103a"] = "34cd71225ad5db2a75a5d24e2b7d106cb2fb951faf9aeb6d5fcbd8cfcef9103a"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "SNMslQQQ", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (781,46)" }, { name: "zfS9XdO_", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (1406,31)" }, { name: "Tcfl6mLz", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (1410,31)" }, { name: "mP58mGgk", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (1448,46)" }, { name: "lZSZQS43", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (1497,35)" }, { name: "Q9AfhdTW", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (1503,35)" }, { name: "vFdcnsOq", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (1514,35)" }, { name: "uE7PRt7i", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (1520,35)" }, { name: "EPXyKw8w", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (1530,31)" }, { name: "yaxyk7HH", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (1535,31)" }, { name: "hwphI7MO", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (1541,31)" }, { name: "pyMqO5eg", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (1544,33)" }, { name: "GOZJ1o5q", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (1545,33)" }, { name: "oJrVKMx7", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (1551,31)" }, { name: "cBq9P5L9", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/CanvasPermissionEditor.ts (1588,42)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// /* first needs the AbstractPermissionEdit */ -/* Canvas Permission Editor */ -var pe; -(function (pe) { - let ui; - (function (ui) { - let RepaintMode; - (function (RepaintMode) { - RepaintMode[RepaintMode["NONE"] = 0] = "NONE"; - RepaintMode[RepaintMode["REPAINT"] = 1] = "REPAINT"; - RepaintMode[RepaintMode["REPAINT_OBJECT_FULL"] = 2] = "REPAINT_OBJECT_FULL"; - RepaintMode[RepaintMode["REPAINT_FULL"] = 3] = "REPAINT_FULL"; - })(RepaintMode = ui.RepaintMode || (ui.RepaintMode = {})); - let ClickEventType; - (function (ClickEventType) { - ClickEventType[ClickEventType["SIGNLE"] = 0] = "SIGNLE"; - ClickEventType[ClickEventType["DOUBLE"] = 1] = "DOUBLE"; - ClickEventType[ClickEventType["CONTEXT_MENU"] = 2] = "CONTEXT_MENU"; - })(ClickEventType = ui.ClickEventType || (ui.ClickEventType = {})); - class DrawableObject { - constructor() { - this._object_full_draw = false; - this._width = 0; - this._transforms = []; - this.colors = {}; - } - set_width(value) { - this._width = value; - } - request_full_draw() { - this._object_full_draw = true; - } - pop_full_draw() { - const result = this._object_full_draw; - this._object_full_draw = false; - return result; - } - width() { - return this._width; - } - push_transform(context) { - this._transforms.push(context.getTransform()); - } - pop_transform(context) { - const transform = this._transforms.pop(); - context.setTransform(transform.a, transform.b, transform.c, transform.d, transform.e, transform.f); - } - original_x(context, x) { - return context.getTransform().e + x; - } - original_y(context, y) { - return context.getTransform().f + y; - } - set_color_scheme(scheme) { - this.colors = scheme; - } - set_manager(manager) { - this.manager = manager; - } - } - class PermissionGroup extends DrawableObject { - constructor(group) { - super(); - this._sub_elements = []; - this.collapsed = false; - this.group = group; - this._element_permissions = new PermissionList(this.group.permissions); - for (const sub of this.group.children) - this._sub_elements.push(new PermissionGroup(sub)); - } - draw(context, full) { - const _full = this.pop_full_draw() || full; - this.push_transform(context); - context.translate(PermissionGroup.ARROW_SIZE + 20, PermissionGroup.HEIGHT); - let sum_height = 0; - /* let first draw the elements, because if the sum height is zero then we could hide ourselves */ - if (!this.collapsed) { /* draw the next groups */ - for (const group of this._sub_elements) { - group.draw(context, full); - const height = group.height(); - sum_height += height; - context.translate(0, height); - } - this._element_permissions.draw(context, full); - if (sum_height == 0) - sum_height += this._element_permissions.height(); - } - else { - const process_group = (group) => { - for (const g of group._sub_elements) - process_group(g); - group._element_permissions.handle_hide(); - if (sum_height == 0 && group._element_permissions.height() > 0) { - sum_height = 1; - } - }; - process_group(this); - } - this.pop_transform(context); - if (_full && sum_height > 0) { - const arrow_stretch = 2 / 3; - if (!full) { - context.clearRect(0, 0, this.width(), PermissionGroup.HEIGHT); - } - context.fillStyle = this.colors.group.name; - /* arrow */ - { - const x1 = this.collapsed ? PermissionGroup.ARROW_SIZE * arrow_stretch / 2 : 0; - const y1 = (PermissionGroup.HEIGHT - PermissionGroup.ARROW_SIZE) / 2 + (this.collapsed ? 0 : PermissionGroup.ARROW_SIZE * arrow_stretch / 2); /* center arrow */ - const x2 = this.collapsed ? x1 + PermissionGroup.ARROW_SIZE * arrow_stretch : x1 + PermissionGroup.ARROW_SIZE / 2; - const y2 = this.collapsed ? y1 + PermissionGroup.ARROW_SIZE / 2 : y1 + PermissionGroup.ARROW_SIZE * arrow_stretch; - const x3 = this.collapsed ? x1 : x1 + PermissionGroup.ARROW_SIZE; - const y3 = this.collapsed ? y1 + PermissionGroup.ARROW_SIZE : y1; - context.beginPath(); - context.moveTo(x1, y1); - context.lineTo(x2, y2); - context.lineTo(x3, y3); - context.moveTo(x2, y2); - context.lineTo(x3, y3); - context.fill(); - this._listener_colaps.region.x = this.original_x(context, 0); - this._listener_colaps.region.y = this.original_y(context, y1); - } - /* text */ - { - context.font = this.colors.group.name_font; - context.textBaseline = "middle"; - context.textAlign = "start"; - context.fillText(this.group.group.name, PermissionGroup.ARROW_SIZE + 5, PermissionGroup.HEIGHT / 2); - } - } - } - set_width(value) { - super.set_width(value); - for (const element of this._sub_elements) - element.set_width(value - PermissionGroup.ARROW_SIZE - 20); - this._element_permissions.set_width(value - PermissionGroup.ARROW_SIZE - 20); - } - set_color_scheme(scheme) { - super.set_color_scheme(scheme); - for (const child of this._sub_elements) - child.set_color_scheme(scheme); - this._element_permissions.set_color_scheme(scheme); - } - set_manager(manager) { - super.set_manager(manager); - for (const child of this._sub_elements) - child.set_manager(manager); - this._element_permissions.set_manager(manager); - } - height() { - let result = 0; - if (!this.collapsed) { - for (const element of this._sub_elements) - result += element.height(); - result += this._element_permissions.height(); - } - else { - //We've to figure out if we have permissions - const process_group = (group) => { - if (result == 0 && group._element_permissions.height() > 0) { - result = 1; - } - else { - for (const g of group._sub_elements) - process_group(g); - } - }; - process_group(this); - if (result > 0) - return PermissionGroup.HEIGHT; - return 0; - } - if (result > 0) { - result += PermissionGroup.HEIGHT; - return result; - } - else { - return 0; - } - } - initialize() { - for (const child of this._sub_elements) - child.initialize(); - this._element_permissions.initialize(); - this._listener_colaps = { - region: { - x: 0, - y: 0, - height: PermissionGroup.ARROW_SIZE, - width: PermissionGroup.ARROW_SIZE - }, - region_weight: 10, - /* - on_mouse_enter: () => { - this.collapsed_hovered = true; - return RepaintMode.REPAINT_OBJECT_FULL; - }, - on_mouse_leave: () => { - this.collapsed_hovered = false; - return RepaintMode.REPAINT_OBJECT_FULL; - }, - */ - on_click: () => { - this.collapsed = !this.collapsed; - return RepaintMode.REPAINT_FULL; - }, - set_full_draw: () => this.request_full_draw(), - mouse_cursor: "pointer" - }; - this.manager.intercept_manager().register_listener(this._listener_colaps); - } - finalize() { - for (const child of this._sub_elements) - child.finalize(); - this._element_permissions.finalize(); - } - collapse_group() { - for (const child of this._sub_elements) - child.collapse_group(); - this.collapsed = true; - } - expend_group() { - for (const child of this._sub_elements) - child.expend_group(); - this.collapsed = false; - } - } - PermissionGroup.HEIGHT = parseFloat(getComputedStyle(document.documentElement).fontSize) * (3 / 2); /* 24 */ - PermissionGroup.ARROW_SIZE = 10; /* 12 */ - class PermissionList extends DrawableObject { - constructor(permissions) { - super(); - this.permissions = []; - for (const permission of permissions) - this.permissions.push(new PermissionEntry(permission)); - } - set_width(value) { - super.set_width(value); - for (const entry of this.permissions) - entry.set_width(value); - } - draw(context, full) { - this.push_transform(context); - for (const permission of this.permissions) { - permission.draw(context, full); - context.translate(0, permission.height()); - } - this.pop_transform(context); - } - height() { - let height = 0; - for (const permission of this.permissions) - height += permission.height(); - return height; - } - set_color_scheme(scheme) { - super.set_color_scheme(scheme); - for (const entry of this.permissions) - entry.set_color_scheme(scheme); - } - set_manager(manager) { - super.set_manager(manager); - for (const entry of this.permissions) - entry.set_manager(manager); - } - initialize() { - for (const entry of this.permissions) - entry.initialize(); - } - finalize() { - for (const entry of this.permissions) - entry.finalize(); - } - handle_hide() { - for (const entry of this.permissions) - entry.handle_hide(); - } - } - class PermissionEntry extends DrawableObject { - constructor(permission) { - super(); - this.granted = 22; - this.flag_skip = true; - this._prev_selected = false; - this.flag_skip_hovered = false; - this.flag_negate_hovered = false; - this.flag_value_hovered = false; - this.flag_grant_hovered = false; - this._permission = permission; - } - set_icon_id_image(image) { - if (this._icon_image === image) - return; - this._icon_image = image; - if (image) { - image.height = 16; - image.width = 16; - } - } - permission() { - return this._permission; - } - draw(ctx, full) { - if (!this.pop_full_draw() && !full) { /* Note: do not change this order! */ - /* test for update! */ - return; - } - if (this.hidden) { - this.handle_hide(); - return; - } - ctx.lineWidth = 1; - /* debug box */ - if (false) { - ctx.fillStyle = "#FF0000"; - ctx.fillRect(0, 0, this.width(), PermissionEntry.HEIGHT); - ctx.fillStyle = "#000000"; - ctx.strokeRect(0, 0, this.width(), PermissionEntry.HEIGHT); - } - if (!full) { - const off = this.selected || this._prev_selected ? ctx.getTransform().e : 0; - ctx.clearRect(-off, 0, this.width() + off, PermissionEntry.HEIGHT); - } - if (this.selected) - ctx.fillStyle = this.colors.permission.background_selected; - else - ctx.fillStyle = this.colors.permission.background; - const off = this.selected ? ctx.getTransform().e : 0; - ctx.fillRect(-off, 0, this.width() + off, PermissionEntry.HEIGHT); - this._prev_selected = this.selected; - /* permission name */ - { - ctx.fillStyle = typeof (this.value) !== "undefined" ? this.colors.permission.name : this.colors.permission.name_unset; - ctx.textBaseline = "middle"; - ctx.textAlign = "start"; - ctx.font = this.colors.permission.name_font; - ctx.fillText(this._permission.name, 0, PermissionEntry.HALF_HEIGHT); - } - const original_y = this.original_y(ctx, 0); - const original_x = this.original_x(ctx, 0); - const width = this.width(); - /* draw granted */ - let w = width - PermissionEntry.COLUMN_GRANTED; - if (typeof (this.granted) === "number") { - this._listener_grant.region.x = original_x + w; - this._listener_grant.region.y = original_y; - this._draw_number_field(ctx, this.colors.permission.granted, w, 0, PermissionEntry.COLUMN_VALUE, this.granted, this.flag_grant_hovered); - } - else { - this._listener_grant.region.y = original_y; - this._listener_grant.region.x = - original_x - + width - - PermissionEntry.COLUMN_GRANTED; - } - /* draw value and the skip stuff */ - if (typeof (this.value) === "number") { - w -= PermissionEntry.COLUMN_SKIP + PermissionEntry.COLUMN_PADDING; - { - const x = w + (PermissionEntry.COLUMN_SKIP - PermissionEntry.CHECKBOX_HEIGHT) / 2; - const y = 1; - this._listener_checkbox_skip.region.x = original_x + x; - this._listener_checkbox_skip.region.y = original_y + y; - this._draw_checkbox_field(ctx, this.colors.permission.skip, x, y, PermissionEntry.CHECKBOX_HEIGHT, this.flag_skip, this.flag_skip_hovered); - } - w -= PermissionEntry.COLUMN_NEGATE + PermissionEntry.COLUMN_PADDING; - { - const x = w + (PermissionEntry.COLUMN_NEGATE - PermissionEntry.CHECKBOX_HEIGHT) / 2; - const y = 1; - this._listener_checkbox_negate.region.x = original_x + x; - this._listener_checkbox_negate.region.y = original_y + y; - this._draw_checkbox_field(ctx, this.colors.permission.negate, x, y, PermissionEntry.CHECKBOX_HEIGHT, this.flag_negate, this.flag_negate_hovered); - } - w -= PermissionEntry.COLUMN_VALUE + PermissionEntry.COLUMN_PADDING; - if (this._permission.is_boolean()) { - const x = w + PermissionEntry.COLUMN_VALUE - PermissionEntry.CHECKBOX_HEIGHT; - const y = 1; - this._listener_value.region.width = PermissionEntry.CHECKBOX_HEIGHT; - this._listener_value.region.x = original_x + x; - this._listener_value.region.y = original_y + y; - this._draw_checkbox_field(ctx, this.colors.permission.value_b, x, y, PermissionEntry.CHECKBOX_HEIGHT, this.value > 0, this.flag_value_hovered); - } - else if (this._permission.name === "i_icon_id" && this._icon_image) { - this._listener_value.region.x = original_x + w; - this._listener_value.region.y = original_y; - this._listener_value.region.width = PermissionEntry.CHECKBOX_HEIGHT; - this._draw_icon_field(ctx, this.colors.permission.value_b, w, 0, PermissionEntry.COLUMN_VALUE, this.flag_value_hovered, this._icon_image); - } - else { - this._listener_value.region.width = PermissionEntry.COLUMN_VALUE; - this._listener_value.region.x = original_x + w; - this._listener_value.region.y = original_y; - this._draw_number_field(ctx, this.colors.permission.value, w, 0, PermissionEntry.COLUMN_VALUE, this.value, this.flag_value_hovered); - } - this._listener_value.disabled = false; - } - else { - this._listener_checkbox_skip.region.y = -1e8; - this._listener_checkbox_negate.region.y = -1e8; - this._listener_value.region.y = original_y; - this._listener_value.region.x = - original_x - + width - - PermissionEntry.COLUMN_GRANTED - - PermissionEntry.COLUMN_NEGATE - - PermissionEntry.COLUMN_VALUE - - PermissionEntry.COLUMN_PADDING * 4; - this._listener_value.disabled = true; - } - this._listener_general.region.y = original_y; - this._listener_general.region.x = original_x; - } - handle_hide() { - /* so the listener wound get triggered */ - this._listener_value.region.x = -1e8; - this._listener_grant.region.x = -1e8; - this._listener_checkbox_negate.region.x = -1e8; - this._listener_checkbox_skip.region.x = -1e8; - this._listener_general.region.x = -1e8; - } - _draw_icon_field(ctx, scheme, x, y, width, hovered, image) { - const line = ctx.lineWidth; - ctx.lineWidth = 2; - ctx.fillStyle = scheme.border; - ctx.strokeRect(x + 1, y + 1, PermissionEntry.HEIGHT - 2, PermissionEntry.HEIGHT - 2); - ctx.lineWidth = line; - ctx.fillStyle = hovered ? scheme.background_hovered : scheme.background; - ctx.fillRect(x + 1, y + 1, PermissionEntry.HEIGHT - 2, PermissionEntry.HEIGHT - 2); - const center_y = y + PermissionEntry.HEIGHT / 2; - const center_x = x + PermissionEntry.HEIGHT / 2; - ctx.drawImage(image, center_x - image.width / 2, center_y - image.height / 2); - } - _draw_number_field(ctx, scheme, x, y, width, value, hovered) { - ctx.fillStyle = hovered ? scheme.background_hovered : scheme.background; - ctx.fillRect(x, y, width, PermissionEntry.HEIGHT); - ctx.fillStyle = scheme.color; - ctx.font = scheme.font; //Math.floor(2/3 * PermissionEntry.HEIGHT) + "px Arial"; - ctx.textAlign = "start"; - ctx.fillText(value + "", x, y + PermissionEntry.HALF_HEIGHT, width); - ctx.strokeStyle = "#6e6e6e"; - const line = ctx.lineWidth; - ctx.lineWidth = 2; - ctx.beginPath(); - ctx.moveTo(x, y + PermissionEntry.HEIGHT - 2); - ctx.lineTo(x + width, y + PermissionEntry.HEIGHT - 2); - ctx.stroke(); - ctx.lineWidth = line; - } - _draw_checkbox_field(ctx, scheme, x, y, height, checked, hovered) { - ctx.fillStyle = scheme.border; - ctx.strokeRect(x, y, height, height); - ctx.fillStyle = checked ? - (hovered ? scheme.background_checked_hovered : scheme.background_checked) : - (hovered ? scheme.background_hovered : scheme.background); - ctx.fillRect(x + 1, y + 1, height - 2, height - 2); - if (checked) { - ctx.textAlign = "center"; - ctx.textBaseline = "middle"; - ctx.fillStyle = scheme.checkmark; - ctx.font = scheme.checkmark_font; //Math.floor((5/4) * PermissionEntry.HEIGHT) + "px Arial"; - ctx.fillText("✓", x + height / 2, y + height / 2); - } - } - height() { - return this.hidden ? 0 : PermissionEntry.HEIGHT; - } - set_width(value) { - super.set_width(value); - this._listener_general.region.width = value; - } - initialize() { - this._listener_checkbox_skip = { - region: { - x: -1e8, - y: -1e8, - height: PermissionEntry.CHECKBOX_HEIGHT, - width: PermissionEntry.CHECKBOX_HEIGHT - }, - region_weight: 10, - on_mouse_enter: () => { - this.flag_skip_hovered = true; - return RepaintMode.REPAINT_OBJECT_FULL; - }, - on_mouse_leave: () => { - this.flag_skip_hovered = false; - return RepaintMode.REPAINT_OBJECT_FULL; - }, - on_click: () => { - this.flag_skip = !this.flag_skip; - if (this.on_change) - this.on_change(); - return RepaintMode.REPAINT_OBJECT_FULL; - }, - set_full_draw: () => this.request_full_draw(), - mouse_cursor: "pointer" - }; - this._listener_checkbox_negate = { - region: { - x: -1e8, - y: -1e8, - height: PermissionEntry.CHECKBOX_HEIGHT, - width: PermissionEntry.CHECKBOX_HEIGHT - }, - region_weight: 10, - on_mouse_enter: () => { - this.flag_negate_hovered = true; - return RepaintMode.REPAINT_OBJECT_FULL; - }, - on_mouse_leave: () => { - this.flag_negate_hovered = false; - return RepaintMode.REPAINT_OBJECT_FULL; - }, - on_click: () => { - this.flag_negate = !this.flag_negate; - if (this.on_change) - this.on_change(); - return RepaintMode.REPAINT_OBJECT_FULL; - }, - set_full_draw: () => this.request_full_draw(), - mouse_cursor: "pointer" - }; - this._listener_value = { - region: { - x: -1e8, - y: -1e8, - height: this._permission.is_boolean() ? PermissionEntry.CHECKBOX_HEIGHT : PermissionEntry.HEIGHT, - width: this._permission.is_boolean() ? PermissionEntry.CHECKBOX_HEIGHT : PermissionEntry.COLUMN_VALUE - }, - region_weight: 10, - on_mouse_enter: () => { - this.flag_value_hovered = true; - return RepaintMode.REPAINT_OBJECT_FULL; - }, - on_mouse_leave: () => { - this.flag_value_hovered = false; - return RepaintMode.REPAINT_OBJECT_FULL; - }, - on_click: () => { - if (this._permission.is_boolean()) { - this.value = this.value > 0 ? 0 : 1; - if (this.on_change) - this.on_change(); - return RepaintMode.REPAINT_OBJECT_FULL; - } - else if (this._permission.name === "i_icon_id") { - this.on_icon_select(this.value).then(value => { - this.value = value; - if (this.on_change) - this.on_change(); - }).catch(error => { - console.warn(_translations.SNMslQQQ || (_translations.SNMslQQQ = tr("Failed to select icon: %o")), error); - }); - } - else { - this._spawn_number_edit(this._listener_value.region.x, this._listener_value.region.y, this._listener_value.region.width, this._listener_value.region.height, this.colors.permission.value, this.value || 0, value => { - if (typeof (value) === "number") { - this.value = value; - this.request_full_draw(); - this.manager.request_draw(false); - if (this.on_change) - this.on_change(); - } - }); - } - return RepaintMode.REPAINT_OBJECT_FULL; - }, - set_full_draw: () => this.request_full_draw(), - mouse_cursor: "pointer" - }; - this._listener_grant = { - region: { - x: -1e8, - y: -1e8, - height: PermissionEntry.HEIGHT, - width: PermissionEntry.COLUMN_VALUE - }, - region_weight: 10, - on_mouse_enter: () => { - this.flag_grant_hovered = true; - return RepaintMode.REPAINT_OBJECT_FULL; - }, - on_mouse_leave: () => { - this.flag_grant_hovered = false; - return RepaintMode.REPAINT_OBJECT_FULL; - }, - on_click: () => { - this._spawn_number_edit(this._listener_grant.region.x, this._listener_grant.region.y, this._listener_grant.region.width, this._listener_grant.region.height, this.colors.permission.granted, this.granted || 0, //TODO use max assignable value? - //TODO use max assignable value? - //TODO use max assignable value? - value => { - if (typeof (value) === "number") { - this.granted = value; - this.request_full_draw(); - this.manager.request_draw(false); - if (this.on_grant_change) - this.on_grant_change(); - } - }); - return RepaintMode.REPAINT_OBJECT_FULL; - }, - set_full_draw: () => this.request_full_draw(), - mouse_cursor: "pointer" - }; - this._listener_general = { - region: { - x: -1e8, - y: -1e8, - height: PermissionEntry.HEIGHT, - width: 0 - }, - region_weight: 0, - /* - on_mouse_enter: () => { - return RepaintMode.REPAINT_OBJECT_FULL; - }, - on_mouse_leave: () => { - return RepaintMode.REPAINT_OBJECT_FULL; - }, - */ - on_click: (event) => { - this.manager.set_selected_entry(this); - if (event.type == ClickEventType.DOUBLE && typeof (this.value) === "undefined") - return this._listener_value.on_click(event); - else if (event.type == ClickEventType.CONTEXT_MENU) { - const mouse = this.manager.mouse; - if (this.on_context_menu) { - this.on_context_menu(mouse.x, mouse.y); - event.consumed = true; - } - } - return RepaintMode.NONE; - }, - set_full_draw: () => this.request_full_draw(), - }; - this.manager.intercept_manager().register_listener(this._listener_checkbox_negate); - this.manager.intercept_manager().register_listener(this._listener_checkbox_skip); - this.manager.intercept_manager().register_listener(this._listener_value); - this.manager.intercept_manager().register_listener(this._listener_grant); - this.manager.intercept_manager().register_listener(this._listener_general); - } - finalize() { - } - _spawn_number_edit(x, y, width, height, color, value, callback) { - const element = $.spawn("div"); - element.prop("contentEditable", true); - element - .css("pointer-events", "none") - .css("background", color.background) - .css("display", "block") - .css("position", "absolute") - .css("top", y) - .css("left", x) - .css("width", width) - .css("height", height) - .css("z-index", 1e6); - element.text(value); - element.appendTo(this.manager.canvas_container); - element.focus(); - element.on('focusout', event => { - console.log("permission changed to " + element.text()); - if (!isNaN(parseInt(element.text()))) { - callback(parseInt(element.text())); - } - else { - callback(undefined); - } - element.remove(); - }); - element.on('keypress', event => { - if (event.which == KeyCode.KEY_RETURN) - element.trigger('focusout'); - const text = String.fromCharCode(event.which); - if (isNaN(parseInt(text)) && text != "-") - event.preventDefault(); - if (element.text().length > 7) - event.preventDefault(); - }); - if (window.getSelection) { - const selection = window.getSelection(); - const range = document.createRange(); - range.selectNodeContents(element[0]); - selection.removeAllRanges(); - selection.addRange(range); - } - } - trigger_value_assign() { - this._listener_value.on_click(undefined); - } - trigger_grant_assign() { - this._listener_grant.on_click(undefined); - } - } - PermissionEntry.HEIGHT = PermissionGroup.HEIGHT; /* 24 */ - PermissionEntry.HALF_HEIGHT = PermissionEntry.HEIGHT / 2; - PermissionEntry.CHECKBOX_HEIGHT = PermissionEntry.HEIGHT - 2; - PermissionEntry.COLUMN_PADDING = 2; - PermissionEntry.COLUMN_VALUE = 75; - PermissionEntry.COLUMN_GRANTED = 75; - //public static readonly COLUMN_NEGATE = 25; - //public static readonly COLUMN_SKIP = 25; - PermissionEntry.COLUMN_NEGATE = 75; - PermissionEntry.COLUMN_SKIP = 75; - class InteractionManager { - constructor() { - this._listeners = []; - this._entered_listeners = []; - } - register_listener(listener) { - this._listeners.push(listener); - } - remove_listener(listener) { - this._listeners.remove(listener); - } - process_mouse_move(new_x, new_y) { - let _entered_listeners = []; - for (const listener of this._listeners) { - const aabb = listener.region; - if (listener.disabled) - continue; - if (new_x < aabb.x || new_x > aabb.x + aabb.width) - continue; - if (new_y < aabb.y || new_y > aabb.y + aabb.height) - continue; - _entered_listeners.push(listener); - } - let repaint = RepaintMode.NONE; - _entered_listeners.sort((a, b) => (a.region_weight || 0) - (b.region_weight || 0)); - for (const listener of this._entered_listeners) { - if (listener.on_mouse_leave && _entered_listeners.indexOf(listener) == -1) { - let mode = listener.on_mouse_leave(); - if (mode == RepaintMode.REPAINT_OBJECT_FULL) { - mode = RepaintMode.REPAINT; - if (listener.set_full_draw) - listener.set_full_draw(); - } - if (mode > repaint) - repaint = mode; - } - } - for (const listener of _entered_listeners) { - if (listener.on_mouse_enter && this._entered_listeners.indexOf(listener) == -1) { - let mode = listener.on_mouse_enter(); - if (mode == RepaintMode.REPAINT_OBJECT_FULL) { - mode = RepaintMode.REPAINT; - if (listener.set_full_draw) - listener.set_full_draw(); - } - if (mode > repaint) - repaint = mode; - } - } - this._entered_listeners = _entered_listeners; - let cursor; - for (const listener of _entered_listeners) - if (typeof (listener.mouse_cursor) === "string") { - cursor = listener.mouse_cursor; - } - return { - repaint: repaint, - cursor: cursor - }; - } - process_click_event(x, y, event) { - const move_result = this.process_mouse_move(x, y); - let repaint = move_result.repaint; - for (const listener of this._entered_listeners) - if (listener.on_click) { - let mode = listener.on_click(event); - if (mode == RepaintMode.REPAINT_OBJECT_FULL) { - mode = RepaintMode.REPAINT; - if (listener.set_full_draw) - listener.set_full_draw(); - } - if (mode > repaint) - repaint = mode; - } - return repaint; - } - process_click(x, y) { - const event = { - consumed: false, - type: ClickEventType.SIGNLE, - offset_x: x, - offset_y: y - }; - return this.process_click_event(x, y, event); - } - process_dblclick(x, y) { - const event = { - consumed: false, - type: ClickEventType.DOUBLE, - offset_x: x, - offset_y: y - }; - return this.process_click_event(x, y, event); - } - process_context_menu(js_event, x, y) { - const event = { - consumed: js_event.defaultPrevented, - type: ClickEventType.CONTEXT_MENU, - offset_x: x, - offset_y: y - }; - const result = this.process_click_event(x, y, event); - if (event.consumed) - js_event.preventDefault(); - return result; - } - } - ui.InteractionManager = InteractionManager; - class PermissionEditor { - constructor(permissions) { - this._max_height = 0; - this._permission_count = 0; - this._permission_group_count = 0; - this._draw_requested = false; - this._draw_requested_full = false; - this._elements = []; - this._permission_entry_map = {}; - this.mouse = { - x: 0, - y: 0 - }; - this.grouped_permissions = permissions; - this.canvas_container = $.spawn("div") - .addClass("window-resize-listener") /* we want to handle resized */ - .css("min-width", "750px") - .css("position", "relative") - .css("user-select", "none")[0]; - this.canvas = $.spawn("canvas")[0]; - this.canvas_container.appendChild(this.canvas); - this._intersect_manager = new InteractionManager(); - this.canvas_container.onmousemove = event => { - this.mouse.x = event.pageX; - this.mouse.y = event.pageY; - const draw = this._intersect_manager.process_mouse_move(event.offsetX, event.offsetY); - this.canvas_container.style.cursor = draw.cursor || ""; - this._handle_repaint(draw.repaint); - }; - this.canvas_container.onclick = event => { - this._handle_repaint(this._intersect_manager.process_click(event.offsetX, event.offsetY)); - }; - this.canvas_container.ondblclick = event => { - this._handle_repaint(this._intersect_manager.process_dblclick(event.offsetX, event.offsetY)); - }; - this.canvas_container.oncontextmenu = (event) => { - this._handle_repaint(this._intersect_manager.process_context_menu(event, event.offsetX, event.offsetY)); - }; - this.canvas_container.onresize = () => this.request_draw(true); - this.initialize(); - } - _handle_repaint(mode) { - if (mode == RepaintMode.REPAINT || mode == RepaintMode.REPAINT_FULL) - this.request_draw(mode == RepaintMode.REPAINT_FULL); - } - request_draw(full) { - this._draw_requested_full = this._draw_requested_full || full; - if (this._draw_requested) - return; - this._draw_requested = true; - requestAnimationFrame(() => { - this.draw(this._draw_requested_full); - }); - } - draw(full) { - this._draw_requested = false; - this._draw_requested_full = false; - /* clear max height */ - this.canvas_container.style.overflowY = "shown"; - this.canvas_container.style.height = undefined; - const max_height = this._max_height; - const max_width = this.canvas_container.clientWidth; - const update_width = this.canvas.width != max_width; - const full_draw = typeof (full) !== "boolean" || full || update_width; - if (update_width) { - this.canvas.width = max_width; - for (const element of this._elements) - element.set_width(max_width); - } - console.log("Drawing%s on %dx%d", full_draw ? " full" : "", max_width, max_height); - if (full_draw) - this.canvas.height = max_height; - const ctx = this._canvas_context; - ctx.resetTransform(); - if (full_draw) - ctx.clearRect(0, 0, max_width, max_height); - let sum_height = 0; - for (const element of this._elements) { - element.draw(ctx, full_draw); - const height = element.height(); - sum_height += height; - ctx.translate(0, height); - } - this.canvas_container.style.overflowY = "hidden"; - this.canvas_container.style.height = sum_height + "px"; - } - initialize() { - /* setup the canvas */ - { - const apply_group = (group) => { - for (const g of group.children || []) - apply_group(g); - this._permission_group_count++; - this._permission_count += group.permissions.length; - }; - for (const group of this.grouped_permissions) - apply_group(group); - this._max_height = this._permission_count * PermissionEditor.PERMISSION_HEIGHT + this._permission_group_count * PermissionEditor.PERMISSION_GROUP_HEIGHT; - console.log("%d permissions and %d groups required %d height", this._permission_count, this._permission_group_count, this._max_height); - this.canvas.style.width = "100%"; - this.canvas.style.flexShrink = "0"; - this.canvas_container.style.flexShrink = "0"; - this._canvas_context = this.canvas.getContext("2d"); - } - const font = Math.floor(2 / 3 * PermissionEntry.HEIGHT) + "px Arial"; - const font_checkmark = Math.floor((5 / 4) * PermissionEntry.HEIGHT) + "px Arial"; - const checkbox = { - background: "#303036", - background_hovered: "#CCCCCC", - background_checked: "#0000AA", - background_checked_hovered: "#0000AA77", - border: "#000000", - checkmark: "#303036", - checkmark_font: font_checkmark - }; - const input = { - color: "#000000", - font: font, - background_hovered: "#CCCCCCCC", - background: "#30303600" - }; - const color_scheme = { - group: { - name: "#808080", - name_font: font - }, - //#28282c - permission: { - name: "#808080", - name_unset: "#1a1a1a", - name_font: font, - background: "#303036", - background_selected: "#00007788", - value: input, - value_b: checkbox, - granted: input, - negate: checkbox, - skip: checkbox - } - }; - window.scheme = color_scheme; - /* setup elements to draw */ - { - const process_group = (group) => { - for (const permission of group._element_permissions.permissions) - this._permission_entry_map[permission.permission().id] = permission; - for (const g of group._sub_elements) - process_group(g); - }; - for (const group of this.grouped_permissions) { - const element = new PermissionGroup(group); - element.set_color_scheme(color_scheme); - element.set_manager(this); - process_group(element); - this._elements.push(element); - } - for (const element of this._elements) { - element.initialize(); - } - } - } - intercept_manager() { - return this._intersect_manager; - } - set_selected_entry(entry) { - if (this._selected_entry === entry) - return; - if (this._selected_entry) { - this._selected_entry.selected = false; - this._selected_entry.request_full_draw(); - } - this._selected_entry = entry; - if (this._selected_entry) { - this._selected_entry.selected = true; - this._selected_entry.request_full_draw(); - } - this.request_draw(false); - } - permission_entries() { - return Object.keys(this._permission_entry_map).map(e => this._permission_entry_map[e]); - } - collapse_all() { - for (const group of this._elements) - group.collapse_group(); - this.request_draw(true); - } - expend_all() { - for (const group of this._elements) - group.expend_group(); - this.request_draw(true); - } - } - PermissionEditor.PERMISSION_HEIGHT = PermissionEntry.HEIGHT; - PermissionEditor.PERMISSION_GROUP_HEIGHT = PermissionGroup.HEIGHT; - ui.PermissionEditor = PermissionEditor; - })(ui || (ui = {})); - class CanvasPermissionEditor extends Modals.AbstractPermissionEditor { - constructor() { - super(); - /* references within the container tag */ - this.permission_value_map = {}; - } - initialize(permissions) { - this._permissions = permissions; - this.entry_editor = new ui.PermissionEditor(permissions); - this.build_tag(); - } - html_tag() { return this.container; } - build_tag() { - this.container = $("#tmpl_permission_editor_canvas").renderTag(); - /* search for that as long we've not that much nodes */ - this.mode_container_permissions = this.container.find(".container-mode-permissions"); - this.mode_container_error_permission = this.container.find(".container-mode-no-permissions"); - this.mode_container_unset = this.container.find(".container-mode-unset"); - this.set_mode(Modals.PermissionEditorMode.UNSET); - /* the filter */ - { - const tag_filter_input = this.container.find(".filter-input"); - const tag_filter_granted = this.container.find(".filter-granted"); - tag_filter_granted.on('change', event => tag_filter_input.trigger('change')); - tag_filter_input.on('keyup change', event => { - let filter_mask = tag_filter_input.val(); - let req_granted = tag_filter_granted.prop("checked"); - for (const entry of this.entry_editor.permission_entries()) { - const permission = entry.permission(); - let shown = filter_mask.length == 0 || permission.name.indexOf(filter_mask) != -1; - if (shown && req_granted) { - const value = this.permission_value_map[permission.id]; - shown = value && (value.hasValue() || value.hasGrant()); - } - entry.hidden = !shown; - } - this.entry_editor.request_draw(true); - }); - } - /* update button */ - { - this.container.find(".button-update").on('click', this.trigger_update.bind(this)); - } - /* global context menu listener */ - { - this.container.on('contextmenu', event => { - if (event.isDefaultPrevented()) - return; - event.preventDefault(); - /* TODO allow collapse and expend all */ - }); - } - { - const tag_container = this.container.find(".entry-editor-container"); - tag_container.append(this.entry_editor.canvas_container); - tag_container.parent().on('contextmenu', event => { - if (event.isDefaultPrevented()) - return; - event.preventDefault(); - contextmenu.spawn_context_menu(event.pageX, event.pageY, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.zfS9XdO_ || (_translations.zfS9XdO_ = tr("Expend all")), - callback: () => this.entry_editor.expend_all() - }, { - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.Tcfl6mLz || (_translations.Tcfl6mLz = tr("Collapse all")), - callback: () => this.entry_editor.collapse_all() - }); - }); - } - /* setup the permissions */ - for (const entry of this.entry_editor.permission_entries()) { - const permission = entry.permission(); - entry.on_change = () => { - const flag_remove = typeof (entry.value) !== "number"; - this._listener_change(permission, { - remove: flag_remove, - flag_negate: entry.flag_negate, - flag_skip: entry.flag_skip, - value: flag_remove ? -2 : entry.value - }).then(() => { - if (flag_remove) { - const element = this.permission_value_map[permission.id]; - if (!element) - return; /* This should never happen, if so how are we displaying this permission?! */ - element.value = undefined; - element.flag_negate = false; - element.flag_skip = false; - } - else { - const element = this.permission_value_map[permission.id] || (this.permission_value_map[permission.id] = new PermissionValue(permission)); - element.value = entry.value; - element.flag_skip = entry.flag_skip; - element.flag_negate = entry.flag_negate; - } - if (permission.name === "i_icon_id") { - this.icon_resolver(entry.value).then(e => { - entry.set_icon_id_image(e); - entry.request_full_draw(); - this.entry_editor.request_draw(false); - }).catch(error => { - console.warn(_translations.mP58mGgk || (_translations.mP58mGgk = tr("Failed to load icon for permission editor: %o")), error); - }); - } - entry.request_full_draw(); - this.entry_editor.request_draw(false); - }).catch(() => { - const element = this.permission_value_map[permission.id]; - entry.value = element && element.hasValue() ? element.value : undefined; - entry.flag_skip = element && element.flag_skip; - entry.flag_negate = element && element.flag_negate; - entry.request_full_draw(); - this.entry_editor.request_draw(false); - }); - }; - entry.on_grant_change = () => { - const flag_remove = typeof (entry.granted) !== "number"; - this._listener_change(permission, { - remove: flag_remove, - granted: flag_remove ? -2 : entry.granted, - }).then(() => { - if (flag_remove) { - const element = this.permission_value_map[permission.id]; - if (!element) - return; /* This should never happen, if so how are we displaying this permission?! */ - element.granted_value = undefined; - } - else { - const element = this.permission_value_map[permission.id] || (this.permission_value_map[permission.id] = new PermissionValue(permission)); - element.granted_value = entry.granted; - } - entry.request_full_draw(); - this.entry_editor.request_draw(false); - }).catch(() => { - const element = this.permission_value_map[permission.id]; - entry.granted = element && element.hasGrant() ? element.granted_value : undefined; - entry.request_full_draw(); - this.entry_editor.request_draw(false); - }); - }; - entry.on_context_menu = (x, y) => { - let entries = []; - if (typeof (entry.value) === "undefined") { - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.lZSZQS43 || (_translations.lZSZQS43 = tr("Add permission")), - callback: () => entry.trigger_value_assign() - }); - } - else { - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.Q9AfhdTW || (_translations.Q9AfhdTW = tr("Remove permission")), - callback: () => { - entry.value = undefined; - entry.on_change(); - } - }); - } - if (typeof (entry.granted) === "undefined") { - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.vFdcnsOq || (_translations.vFdcnsOq = tr("Add grant permission")), - callback: () => entry.trigger_grant_assign() - }); - } - else { - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.uE7PRt7i || (_translations.uE7PRt7i = tr("Remove grant permission")), - callback: () => { - entry.granted = undefined; - entry.on_grant_change(); - } - }); - } - entries.push(contextmenu.Entry.HR()); - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.EPXyKw8w || (_translations.EPXyKw8w = tr("Expend all")), - callback: () => this.entry_editor.expend_all() - }); - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.yaxyk7HH || (_translations.yaxyk7HH = tr("Collapse all")), - callback: () => this.entry_editor.collapse_all() - }); - entries.push(contextmenu.Entry.HR()); - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.hwphI7MO || (_translations.hwphI7MO = tr("Show permission description")), - callback: () => { - createInfoModal(_translations.pyMqO5eg || (_translations.pyMqO5eg = tr("Permission description")), (_translations.GOZJ1o5q || (_translations.GOZJ1o5q = tr("Permission description for permission "))) + permission.name + ":
" + permission.description).open(); - } - }); - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.oJrVKMx7 || (_translations.oJrVKMx7 = tr("Copy permission name")), - callback: () => { - copy_to_clipboard(permission.name); - } - }); - contextmenu.spawn_context_menu(x, y, ...entries); - }; - } - } - set_permissions(permissions) { - permissions = permissions || []; - this.permission_value_map = {}; - for (const permission of permissions) - this.permission_value_map[permission.type.id] = permission; - for (const entry of this.entry_editor.permission_entries()) { - const permission = entry.permission(); - const value = this.permission_value_map[permission.id]; - if (permission.name === "i_icon_id") { - entry.set_icon_id_image(undefined); - entry.on_icon_select = this.icon_selector; - } - if (value && value.hasValue()) { - entry.value = value.value; - entry.flag_skip = value.flag_skip; - entry.flag_negate = value.flag_negate; - if (permission.name === "i_icon_id") { - this.icon_resolver(value.value).then(e => { - entry.set_icon_id_image(e); - entry.request_full_draw(); - this.entry_editor.request_draw(false); - }).catch(error => { - console.warn(_translations.cBq9P5L9 || (_translations.cBq9P5L9 = tr("Failed to load icon for permission editor: %o")), error); - }); - } - } - else { - entry.value = undefined; - entry.flag_skip = false; - entry.flag_negate = false; - } - if (value && value.hasGrant()) { - entry.granted = value.granted_value; - } - else { - entry.granted = undefined; - } - } - this.entry_editor.request_draw(true); - } - set_mode(mode) { - this.mode_container_permissions.css('display', mode == Modals.PermissionEditorMode.VISIBLE ? 'flex' : 'none'); - this.mode_container_error_permission.css('display', mode == Modals.PermissionEditorMode.NO_PERMISSION ? 'flex' : 'none'); - this.mode_container_unset.css('display', mode == Modals.PermissionEditorMode.UNSET ? 'block' : 'none'); - if (mode == Modals.PermissionEditorMode.VISIBLE) - this.entry_editor.draw(true); - } - update_ui() { - this.entry_editor.draw(true); - } - set_toggle_button(callback, initial) { - throw "not implemented"; - } - set_hidden_permissions(permissions) { - //TODO: Stuff here - } - } - pe.CanvasPermissionEditor = CanvasPermissionEditor; -})(pe || (pe = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["ff9f1f09e95203c4b91e242665e830b617f2f879056e6b6bb92b91154deb8387"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["ff9f1f09e95203c4b91e242665e830b617f2f879056e6b6bb92b91154deb8387"] = "ff9f1f09e95203c4b91e242665e830b617f2f879056e6b6bb92b91154deb8387"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "mNnKmhXi", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (127,39)" }, { name: "eIdiXluN", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (209,38)" }, { name: "pXafuMz0", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (243,35)" }, { name: "CymMMUWf", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (249,35)" }, { name: "CNnWyAfz", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (266,35)" }, { name: "h2seh3NA", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (272,35)" }, { name: "z39HymaK", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (289,35)" }, { name: "V3A7waSE", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (295,35)" }, { name: "uEA6K1Gr", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (300,31)" }, { name: "okoskUbi", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (305,31)" }, { name: "VJROSIto", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (311,31)" }, { name: "bex2YiQD", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (314,33)" }, { name: "dcxxYR_b", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (315,33)" }, { name: "n3RjiSxp", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (321,31)" }, { name: "gI5Pynkj", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (517,31)" }, { name: "dr8vqd7I", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (523,31)" }, { name: "GXXzvrDW", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (530,27)" }, { name: "q5n25a7q", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (535,27)" }, { name: "dO3GqXlP", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (703,56)" }, { name: "uqljZhQI", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (813,68)" }, { name: "DC0OXrYd", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (818,67)" }, { name: "QbNs0KSO", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (821,63)" }, { name: "bjKH7Da6", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (824,60)" }, { name: "jVdioG3L", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (837,63)" }, { name: "ZcA_dMgB", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (840,59)" }, { name: "w9vA7Svd", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (853,27)" }, { name: "ArHoLzcP", path: "D:/TeaSpeak/web/shared/js/ui/modal/permission/HTMLPermissionEditor.ts (858,27)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// /* first needs the AbstractPermissionEdit */ -var pe; -(function (pe) { - class HTMLPermission { - constructor(handle, group, permission, index) { - /* the "actual" values */ - this._mask = 0; /* fourth bit: hidden by filer | third bit: value type | second bit: grant shown | first bit: value shown */ - this.handle = handle; - this.permission = permission; - this.index = index; - this.group = group; - this.build_tag(); - } - static build_checkbox() { - let tag, input; - tag = $.spawn("label").addClass("switch").append([ - input = $.spawn("input").attr("type", "checkbox"), - $.spawn("span").addClass("slider").append($.spawn("div").addClass("dot")) - ]); - return { tag: tag, input: input }; - } - build_tag() { - this.tag = $.spawn("div").addClass("entry permission").css('padding-left', this.index + "em").append([ - this.tag_name = $.spawn("div").addClass("column-name").text(this.permission.name), - this.tag_container_value = $.spawn("div").addClass("column-value"), - this.tag_container_skip = $.spawn("div").addClass("column-skip"), - this.tag_container_negate = $.spawn("div").addClass("column-negate"), - this.tag_container_granted = $.spawn("div").addClass("column-granted") - ]); - if (this.permission.is_boolean()) { - let value = HTMLPermission.build_checkbox(); - this._tag_value = value.tag; - this._tag_value_input = value.input; - this._tag_value_input.on('change', event => { - const value = this._tag_value_input.prop('checked') ? 1 : 0; - this.handle.trigger_change(this.permission, { - remove: false, - value: value, - flag_skip: (this.flags & 0x01) > 0, - flag_negate: (this.flags & 0x02) > 0 - }).then(() => { - this._value = value; - }).catch(error => { - this._reset_value(); - }); - }); - this._mask |= 0x04; - } - else { - this._tag_value = $.spawn("input").addClass("number"); - this._tag_value_input = this._tag_value; - this._tag_value_input.on('keydown', HTMLPermission.number_filter); - this._tag_value_input.on('change', event => { - const str_value = this._tag_value_input.val(); - const value = parseInt(str_value); - if (!HTMLPermission.number_filter_re.test(str_value) || value == NaN) { - console.warn(_translations.mNnKmhXi || (_translations.mNnKmhXi = tr("Failed to parse given permission value string: %s")), this._tag_value_input.val()); - this._reset_value(); - return; - } - this.handle.trigger_change(this.permission, { - remove: false, - value: value, - flag_skip: (this.flags & 0x01) > 0, - flag_negate: (this.flags & 0x02) > 0 - }).then(() => { - this._value = value; - this._update_active_class(); - }).catch(error => { - this._reset_value(); - }); - }); - } - { - let skip = HTMLPermission.build_checkbox(); - this._tag_skip = skip.tag; - this._tag_skip_input = skip.input; - this._tag_skip_input.on('change', event => { - const value = this._tag_skip_input.prop('checked'); - this.handle.trigger_change(this.permission, { - remove: false, - value: this._value, - flag_skip: value, - flag_negate: (this.flags & 0x02) > 0 - }).then(() => { - if (value) - this.flags |= 0x01; - else - this.flags &= ~0x1; - this._update_active_class(); - }).catch(error => { - this._reset_value(); - }); - }); - } - { - let negate = HTMLPermission.build_checkbox(); - this._tag_negate = negate.tag; - this._tag_negate_input = negate.input; - this._tag_negate_input.on('change', event => { - const value = this._tag_negate_input.prop('checked'); - console.log("Negate value: %o", value); - this.handle.trigger_change(this.permission, { - remove: false, - value: this._value, - flag_skip: (this.flags & 0x01) > 0, - flag_negate: value - }).then(() => { - if (value) - this.flags |= 0x02; - else - this.flags &= ~0x2; - this._update_active_class(); - }).catch(error => { - this._reset_value(); - }); - }); - } - { - this._tag_granted = $.spawn("input").addClass("number"); - this._tag_granted_input = this._tag_granted; - this._tag_granted_input.on('keydown', HTMLPermission.number_filter); - this._tag_granted_input.on('change', event => { - const str_value = this._tag_granted_input.val(); - const value = parseInt(str_value); - if (!HTMLPermission.number_filter_re.test(str_value) || Number.isNaN(value)) { - console.warn(_translations.eIdiXluN || (_translations.eIdiXluN = tr("Failed to parse given permission granted value string: %s")), this._tag_granted_input.val()); - this._reset_value(); - return; - } - this.handle.trigger_change(this.permission, { - remove: false, - granted: value - }).then(() => { - this._grant = value; - this._update_active_class(); - }).catch(error => { - this._reset_grant(); - }); - }); - } - /* double click handler */ - { - this.tag.on('dblclick', event => this._trigger_value_assign()); - } - /* context menu */ - { - this.tag.on('contextmenu', event => { - if (event.isDefaultPrevented()) - return; - event.preventDefault(); - let entries = []; - if (typeof (this._value) === "undefined") { - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.pXafuMz0 || (_translations.pXafuMz0 = tr("Add permission")), - callback: () => this._trigger_value_assign() - }); - } - else { - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.CymMMUWf || (_translations.CymMMUWf = tr("Remove permission")), - callback: () => { - this.handle.trigger_change(this.permission, { - remove: true, - value: 0 - }).then(() => { - this.value(undefined); - }).catch(error => { - //We have to do nothing - }); - } - }); - } - if (typeof (this._grant) === "undefined") { - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.CNnWyAfz || (_translations.CNnWyAfz = tr("Add grant permission")), - callback: () => this._trigger_grant_assign() - }); - } - else { - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.h2seh3NA || (_translations.h2seh3NA = tr("Remove grant permission")), - callback: () => { - this.handle.trigger_change(this.permission, { - remove: true, - granted: 0 - }).then(() => { - this.granted(undefined); - }).catch(error => { - //We have to do nothing - }); - } - }); - } - entries.push(contextmenu.Entry.HR()); - if (this.group.collapsed) - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.z39HymaK || (_translations.z39HymaK = tr("Expend group")), - callback: () => this.group.expend() - }); - else - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.V3A7waSE || (_translations.V3A7waSE = tr("Collapse group")), - callback: () => this.group.collapse() - }); - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.uEA6K1Gr || (_translations.uEA6K1Gr = tr("Expend all")), - callback: () => this.handle.expend_all() - }); - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.okoskUbi || (_translations.okoskUbi = tr("Collapse all")), - callback: () => this.handle.collapse_all() - }); - entries.push(contextmenu.Entry.HR()); - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.VJROSIto || (_translations.VJROSIto = tr("Show permission description")), - callback: () => { - createInfoModal(_translations.bex2YiQD || (_translations.bex2YiQD = tr("Permission description")), (_translations.dcxxYR_b || (_translations.dcxxYR_b = tr("Permission description for permission "))) + this.permission.name + ":
" + this.permission.description).open(); - } - }); - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.n3RjiSxp || (_translations.n3RjiSxp = tr("Copy permission name")), - callback: () => { - copy_to_clipboard(this.permission.name); - } - }); - contextmenu.spawn_context_menu(event.pageX, event.pageY, ...entries); - }); - } - } - _trigger_value_assign() { - if (typeof (this._value) === "undefined") - this.value(this._grant || 1, false, false); //TODO: Use max granted value? - this._tag_value_input.focus(); - if (this.permission.is_boolean()) - this._tag_value_input.trigger('change'); - } - _trigger_grant_assign() { - this.granted(1); //TODO: Use max granted value? - this._tag_granted_input.focus(); - } - hide() { - this._mask &= ~0x08; - for (const element of this.tag) - element.style.display = 'none'; - } - show() { - this._mask |= 0x08; - for (const element of this.tag) - element.style.display = 'flex'; - } - is_filtered() { - return (this._mask & 0x10) > 0; - } - set_filtered(flag) { - if (flag) - this._mask |= 0x10; - else - this._mask &= ~0x10; - } - is_set() { - return (this._mask & 0x03) > 0; - } - get_value() { return this._value; } - value(value, skip, negate) { - if (typeof value === "undefined") { - this._tag_value.detach(); - this._tag_negate.detach(); - this._tag_skip.detach(); - this._value = undefined; - this.flags = 0; - this._update_active_class(); - this._mask &= ~0x1; - return; - } - if ((this._mask & 0x1) == 0) { - this._tag_value.appendTo(this.tag_container_value); - this._tag_negate.appendTo(this.tag_container_negate); - this._tag_skip.appendTo(this.tag_container_skip); - this._update_active_class(); - this._mask |= 0x01; - } - if ((this._mask & 0x04) > 0) - this._tag_value_input.prop('checked', !!value); - else - this._tag_value_input.val(value); - this._tag_skip_input.prop('checked', !!skip); - this._tag_negate_input.prop('checked', !!negate); - this._value = value; - this.flags = (!!skip ? 0x01 : 0) | (!!negate ? 0x2 : 0); - } - granted(value) { - if (typeof value === "undefined") { - this._tag_granted.detach(); - this._update_active_class(); - this._grant = undefined; - this._mask &= ~0x2; - return; - } - if ((this._mask & 0x2) == 0) { - this._mask |= 0x02; - this._tag_granted.appendTo(this.tag_container_granted); - this._update_active_class(); - } - this._tag_granted_input.val(value); - this._grant = value; - } - reset() { - this._mask &= ~0x03; - this._tag_value.detach(); - this._tag_negate.detach(); - this._tag_skip.detach(); - this._tag_granted.detach(); - this._value = undefined; - this._grant = undefined; - this.flags = 0; - const tag = this.tag[0]; - tag.classList.remove("active"); - } - _reset_value() { - if (typeof (this._value) === "undefined") { - if ((this._mask & 0x1) != 0) - this.value(undefined); - } - else { - this.value(this._value, (this.flags & 0x1) > 1, (this.flags & 0x2) > 1); - } - } - _reset_grant() { - if (typeof (this._grant) === "undefined") { - if ((this._mask & 0x2) != 0) - this.granted(undefined); - } - else { - this.granted(this._grant); - } - } - _update_active_class() { - const value = typeof (this._value) !== "undefined" || typeof (this._grant) !== "undefined"; - const tag = this.tag[0]; - if (value) - tag.classList.add("active"); - else - tag.classList.remove("active"); - } - } - HTMLPermission.number_filter_re = /^[-+]?([0-9]{0,9})$/; - HTMLPermission.number_filter = (event) => { - if (event.ctrlKey) - return; - const target = event.target; - if (event.key === "Enter") { - target.blur(); - return; - } - if ('keyCode' in event) { - /* everything under 46 is a control key except 32 its space */ - if (event.keyCode < 46 && event.keyCode != 32) - return; - if (!HTMLPermission.number_filter_re.test(target.value + String.fromCharCode(event.keyCode))) { - event.preventDefault(); - return; - } - } - else { - const e = event; /* for some reason typescript deducts the event type to "never" */ - if (!HTMLPermission.number_filter_re.test(e.key)) { - e.preventDefault(); - return; - } - } - }; - class HTMLPermissionGroup { - constructor(handle, group, index) { - this.permissions = []; - this.children = []; - this.handle = handle; - this.group = group; - this.index = index; - this._build_tag(); - } - _build_tag() { - this.tag = $.spawn("div").addClass("entry group").css('padding-left', this.index + "em").append([ - $.spawn("div").addClass("column-name").append([ - this._tag_arrow = $.spawn("div").addClass("arrow down"), - $.spawn("div").addClass("group-name").text(this.group.name) - ]), - $.spawn("div").addClass("column-value"), - $.spawn("div").addClass("column-skip"), - $.spawn("div").addClass("column-negate"), - $.spawn("div").addClass("column-granted") - ]); - this.tag.on('contextmenu', event => { - if (event.isDefaultPrevented()) - return; - event.preventDefault(); - const entries = []; - if (this.collapsed) - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.gI5Pynkj || (_translations.gI5Pynkj = tr("Expend group")), - callback: () => this.expend(), - }); - else - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.dr8vqd7I || (_translations.dr8vqd7I = tr("Collapse group")), - callback: () => this.collapse(), - }); - entries.push(contextmenu.Entry.HR()); - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.GXXzvrDW || (_translations.GXXzvrDW = tr("Expend all")), - callback: () => this.handle.expend_all() - }); - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.q5n25a7q || (_translations.q5n25a7q = tr("Collapse all")), - callback: () => this.handle.collapse_all() - }); - contextmenu.spawn_context_menu(event.pageX, event.pageY, ...entries); - }); - this._tag_arrow.on('click', event => { - if (this.collapsed) - this.expend(); - else - this.collapse(); - }); - } - update_visibility() { - let flag = false; - if (!flag) { - for (const group of this.children) { - if (group.visible) { - flag = true; - break; - } - } - } - if (!flag) { - for (const permission of this.permissions) { - if (!permission.is_filtered()) { - flag = true; - break; - } - } - } - this.visible = flag; - flag = flag && !this.parent_collapsed; - for (const element of this.tag) - element.style.display = flag ? 'flex' : 'none'; - const arrow_node = this._tag_arrow[0]; - arrow_node.classList.remove(this.collapsed ? "down" : "right"); - arrow_node.classList.add(!this.collapsed ? "down" : "right"); - } - collapse() { - this.collapsed = true; - const children = [...this.children]; - while (true) { - const child = children.pop(); - if (!child) - break; - child.parent_collapsed = true; - children.push(...child.children); - } - this.handle.update_view(); - } - expend() { - this.collapsed = false; - if (this.parent_collapsed) - return; - const children = [...this.children]; - while (true) { - const child = children.pop(); - if (!child) - break; - child.parent_collapsed = false; - if (!child.collapsed) - children.push(...child.children); - } - this.handle.update_view(); - } - } - class HTMLPermissionEditor extends Modals.AbstractPermissionEditor { - constructor() { - super(); - } - initialize(permissions) { - this._permissions = permissions; - this.build_tag(); - } - set_hidden_permissions(permissions) { - this.hidden_permissions = permissions; - this.update_filter(); - } - update_filter() { - const value = this.filter_input.val().toLowerCase(); - const grant = !!this.filter_grant.prop('checked'); - const _filter = (permission) => { - if (value && permission.permission.name.indexOf(value) == -1) - return false; - if (grant && !permission.is_set()) - return false; - if (this.hidden_permissions && this.hidden_permissions.find(e => e && e.toLocaleLowerCase() == permission.permission.name.toLowerCase())) - return false; - return true; - }; - for (let id = 1; id < this.permission_map.length; id++) { - const permission = this.permission_map[id]; - let flag = _filter(permission); - permission.set_filtered(!flag); - flag = flag && !permission.group.collapsed && !permission.group.parent_collapsed; /* hide when parent is filtered */ - if (flag) - permission.show(); - else - permission.hide(); - } - /* run in both directions, to update the parent visibility and the actiual visibility */ - for (const group of this.permission_groups) - group.update_visibility(); - for (const group of this.permission_groups.slice().reverse()) - group.update_visibility(); - let index = 0; - for (const entry of this.even_list) { - if (!entry.visible()) - continue; - entry.set_even((index++ & 0x1) == 0); - } - } - update_icon() { - const permission = this.icon_shown ? this.permission_map.find(e => e && e.permission.name === "i_icon_id") : undefined; - const icon_id = permission ? permission.get_value() : 0; - const icon_node = this.container.find(".container-icon-select .icon-preview"); - icon_node.children().remove(); - let resolve; - if (icon_id >= 0 && icon_id <= 1000) - resolve = Promise.resolve(IconManager.generate_tag({ id: icon_id, url: "" })); - else - resolve = this.icon_resolver(permission ? permission.get_value() : 0).then(e => $(e)); - resolve.then(tag => tag.appendTo(icon_node)) - .catch(error => { - log.error(LogCategory.PERMISSIONS, _translations.dO3GqXlP || (_translations.dO3GqXlP = tr("Failed to generate empty icon preview: %o")), error); - }); - } - build_tag() { - this.container = $("#tmpl_permission_editor_html").renderTag(); - this.container.find("input").on('change', event => { - $(event.target).parents(".form-group").toggleClass('is-filled', !!event.target.value); - }); - /* search for that as long we've not that much nodes */ - this.mode_container_permissions = this.container.find(".container-mode-permissions"); - this.mode_container_error_permission = this.container.find(".container-mode-no-permissions"); - this.mode_container_unset = this.container.find(".container-mode-unset"); - this.filter_input = this.container.find(".filter-input"); - this.filter_input.on('change keyup', event => this.update_filter()); - this.filter_grant = this.container.find(".filter-granted"); - this.filter_grant.on('change', event => this.update_filter()); - this.button_toggle = this.container.find(".button-toggle-clients"); - this.button_toggle.on('click', () => { - if (this._toggle_callback) - this.button_toggle.text(this._toggle_callback()); - }); - this.container.find(".button-update").on('click', event => this.trigger_update()); - /* allocate array space */ - { - let max_index = 0; - let tmp = []; - while (true) { - const entry = tmp.pop(); - if (!entry) - break; - for (const permission of entry.permissions) - if (permission.id > max_index) - max_index = permission.id; - tmp.push(...entry.children); - } - this.permission_map = new Array(max_index + 1); - } - this.permission_groups = []; - this.even_list = []; - { - const container_permission = this.mode_container_permissions.find(".container-permission-list .body"); - const build_group = (pgroup, group, index) => { - const hgroup = new HTMLPermissionGroup(this, group.group, index); - hgroup.tag.appendTo(container_permission); - this.even_list.push({ - set_even(flag) { - if (flag) - hgroup.tag[0].classList.add('even'); - else - hgroup.tag[0].classList.remove('even'); - }, - visible() { - return !hgroup.parent_collapsed && hgroup.visible; - } - }); - if (pgroup) - pgroup.children.push(hgroup); - this.permission_groups.push(hgroup); - index++; - for (const child of group.children) - build_group(hgroup, child, index); - for (const permission of group.permissions) { - const perm = new HTMLPermission(this, hgroup, permission, index); - this.permission_map[perm.permission.id] = perm; - perm.tag.appendTo(container_permission); - hgroup.permissions.push(perm); - this.even_list.push({ - set_even(flag) { - if (flag) - perm.tag[0].classList.add('even'); - else - perm.tag[0].classList.remove('even'); - }, - visible() { - return !perm.is_filtered() && !perm.group.collapsed && !perm.group.parent_collapsed; - } - }); - } - }; - for (const group of this._permissions) - build_group(undefined, group, 0); - } - { - const container = this.container.find(".container-icon-select"); - container.find(".button-select-icon").on('click', event => { - const permission = this.permission_map.find(e => e && e.permission.name === "i_icon_id"); - this.icon_selector(permission ? permission.get_value() : 0).then(id => { - const permission = this.permission_map.find(e => e && e.permission.name === "i_icon_id"); - if (permission) { - this.trigger_change(permission.permission, { - remove: false, - value: id, - flag_skip: false, - flag_negate: false - }, false).then(() => { - log.debug(LogCategory.PERMISSIONS, _translations.uqljZhQI || (_translations.uqljZhQI = tr("Selected new icon %s")), id); - permission.value(id, false, false); - this.update_icon(); - }).catch(error => { - log.warn(LogCategory.PERMISSIONS, _translations.DC0OXrYd || (_translations.DC0OXrYd = tr("Failed to set icon permission within permission editor: %o")), error); - }); - } - else { - log.warn(LogCategory.PERMISSIONS, _translations.QbNs0KSO || (_translations.QbNs0KSO = tr("Failed to find icon permissions within permission editor"))); - } - }).catch(error => { - log.error(LogCategory.PERMISSIONS, _translations.bjKH7Da6 || (_translations.bjKH7Da6 = tr("Failed to select an icon for the icon permission: %o")), error); - }); - }); - container.find(".button-icon-remove").on('click', event => { - const permission = this.permission_map.find(e => e && e.permission.name === "i_icon_id"); - if (permission) { - this.trigger_change(permission.permission, { - remove: true, - }, false).then(() => { - permission.value(undefined); - this.update_icon(); - }).catch(error => { - log.warn(LogCategory.PERMISSIONS, _translations.jVdioG3L || (_translations.jVdioG3L = tr("Failed to remove icon permission within permission editor: %o")), error); - }); - } - else { - log.warn(LogCategory.PERMISSIONS, _translations.ZcA_dMgB || (_translations.ZcA_dMgB = tr("Failed to find icon permission within permission editor"))); - } - }); - } - this.mode_container_permissions.on('contextmenu', event => { - if (event.isDefaultPrevented()) - return; - event.preventDefault(); - const entries = []; - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.w9vA7Svd || (_translations.w9vA7Svd = tr("Expend all")), - callback: () => this.expend_all() - }); - entries.push({ - type: contextmenu.MenuEntryType.ENTRY, - name: _translations.ArHoLzcP || (_translations.ArHoLzcP = tr("Collapse all")), - callback: () => this.collapse_all() - }); - contextmenu.spawn_context_menu(event.pageX, event.pageY, ...entries); - }); - this.set_mode(Modals.PermissionEditorMode.UNSET); - } - html_tag() { - return this.container; - } - set_permissions(u_permissions) { - const permissions = new Array(this.permission_map.length); - /* initialize update array, boundary checks are already made by js */ - for (const perm of u_permissions) - permissions[perm.type.id] = perm; - /* there is no permission with id 0 */ - for (let id = 1; id < permissions.length; id++) { - const new_permission = permissions[id]; - const permission_handle = this.permission_map[id]; - if (!new_permission) { - permission_handle.reset(); - continue; - } - permission_handle.value(new_permission.value, new_permission.flag_skip, new_permission.flag_negate); - permission_handle.granted(new_permission.granted_value); - } - this.update_icon(); - this.update_filter(); - } - set_mode(mode) { - this.mode_container_permissions.css('display', mode == Modals.PermissionEditorMode.VISIBLE ? 'flex' : 'none'); - this.mode_container_error_permission.css('display', mode == Modals.PermissionEditorMode.NO_PERMISSION ? 'flex' : 'none'); - this.mode_container_unset.css('display', mode == Modals.PermissionEditorMode.UNSET ? 'block' : 'none'); - if (this.icon_shown != (mode == Modals.PermissionEditorMode.VISIBLE)) { - this.icon_shown = mode == Modals.PermissionEditorMode.VISIBLE; - this.update_icon(); - } - } - trigger_change(permission, value, update_icon) { - if (this._listener_change) { - if ((typeof (update_icon) !== "boolean" || update_icon) && permission && permission.name === "i_icon_id") - return this._listener_change(permission, value).then(e => { - setTimeout(() => this.update_icon(), 0); /* we need to fully handle the response and then only we're able to update the icon */ - return e; - }); - else - return this._listener_change(permission, value); - } - return Promise.reject(); - } - collapse_all() { - for (const group of this.permission_groups) { - group.collapsed = true; - for (const child of group.children) - child.parent_collapsed = true; - } - this.update_filter(); /* update display state of all entries */ - } - expend_all() { - for (const group of this.permission_groups) { - group.collapsed = false; - group.parent_collapsed = false; - } - this.update_filter(); /* update display state of all entries */ - } - update_view() { return this.update_filter(); } - set_toggle_button(callback, initial) { - this._toggle_callback = callback; - if (this._toggle_callback) { - this.button_toggle.text(initial); - this.button_toggle.show(); - } - else { - this.button_toggle.hide(); - } - } - } - pe.HTMLPermissionEditor = HTMLPermissionEditor; -})(pe || (pe = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["c3f77abe415be432cfd830b2810233936c398e3aacff06ea939745caaa7b782e"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["c3f77abe415be432cfd830b2810233936c398e3aacff06ea939745caaa7b782e"] = "c3f77abe415be432cfd830b2810233936c398e3aacff06ea939745caaa7b782e"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -/// -var permissions; -(function (permissions) { - permissions.senseless_server_group_permissions = [ - PermissionType.B_CHANNEL_GROUP_INHERITANCE_END - ]; - const filter = (text, ignore_type) => Object.keys(PermissionType) - .filter(e => e.toLowerCase().substr(ignore_type ? 1 : 0).startsWith(text)).map(e => PermissionType[e]); - permissions.senseless_channel_group_permissions = [ - //Not sensefull to assign serverinstance permission to channel groups - ...Object.keys(PermissionType).filter(e => e.toLowerCase().startsWith("b_serverinstance_")).map(e => PermissionType[e]), - PermissionType.B_SERVERQUERY_LOGIN, - //Not sensefull to assign virtual server permission to channel groups - ...Object.keys(PermissionType).filter(e => e.toLowerCase().startsWith("b_virtualserver") && e.toLowerCase() === "b_virtualserver_channel_permission_list").map(e => PermissionType[e]), - //Not sensefull to require some playlist permissions - ...Object.keys(PermissionType).filter(e => e.toLowerCase().startsWith("i_playlist")).map(e => PermissionType[e]), - PermissionType.B_PLAYLIST_CREATE, - //Not sensefull to require some playlist permissions - ...Object.keys(PermissionType).filter(e => e.toLowerCase().startsWith("i_client_music")).map(e => PermissionType[e]), - ...Object.keys(PermissionType).filter(e => e.toLowerCase().startsWith("b_client_music")).map(e => PermissionType[e]), - ...Object.keys(PermissionType).filter(e => e.toLowerCase().startsWith("i_server_group")).map(e => PermissionType[e]), - PermissionType.I_MAX_ICON_FILESIZE, - PermissionType.I_MAX_PLAYLIST_SIZE, - PermissionType.I_MAX_PLAYLISTS, - PermissionType.I_CLIENT_KICK_FROM_SERVER_POWER, - PermissionType.I_CLIENT_NEEDED_KICK_FROM_SERVER_POWER, - PermissionType.I_CLIENT_BAN_POWER, - PermissionType.I_CLIENT_NEEDED_BAN_POWER, - ...Object.keys(PermissionType).filter(e => e.toLowerCase().startsWith("b_client_complain")).map(e => PermissionType[e]), - ...Object.keys(PermissionType).filter(e => e.toLowerCase().startsWith("b_client_ban")).map(e => PermissionType[e]), - PermissionType.I_CLIENT_BAN_MAX_BANTIME, - PermissionType.B_CLIENT_SERVER_TEXTMESSAGE_SEND, - ...Object.keys(PermissionType).filter(e => e.toLowerCase().startsWith("b_client_query")).map(e => PermissionType[e]), - PermissionType.B_CLIENT_CREATE_MODIFY_SERVERQUERY_LOGIN, - PermissionType.B_CLIENT_DELETE_DBPROPERTIES, - PermissionType.B_CLIENT_MODIFY_DBPROPERTIES - ]; - permissions.senseless_channel_permissions = [ - ...permissions.senseless_channel_group_permissions, - ...filter("_channel_create", true), - ...filter("_client", true), - ...filter("_channel_group", true), - ...filter("_group", true), - ...filter("b_channel_", false), - ...Object.keys(PermissionType).filter(e => { - e = e.toLowerCase(); - return e.indexOf("_power") > 0 && e.indexOf("_needed_") == -1; - }).map(e => PermissionType[e]), - PermissionType.B_ICON_MANAGE, - PermissionType.B_CLIENT_USE_PRIORITY_SPEAKER, - PermissionType.B_CLIENT_USE_PRIORITY_SPEAKER, - PermissionType.B_CHANNEL_IGNORE_DESCRIPTION_VIEW_POWER - ]; - permissions.senseless_client_permissions = []; - permissions.senseless_client_channel_permissions = []; -})(permissions || (permissions = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["27c1036c60874525f05c5900623d88fc60a288957a6b0b374d296c90f747c966"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["27c1036c60874525f05c5900623d88fc60a288957a6b0b374d296c90f747c966"] = "27c1036c60874525f05c5900623d88fc60a288957a6b0b374d296c90f747c966"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of []) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -var audio; -(function (audio) { - let recorder; - (function (recorder) { - let InputConsumerType; - (function (InputConsumerType) { - InputConsumerType[InputConsumerType["CALLBACK"] = 0] = "CALLBACK"; - InputConsumerType[InputConsumerType["NODE"] = 1] = "NODE"; - InputConsumerType[InputConsumerType["NATIVE"] = 2] = "NATIVE"; - })(InputConsumerType = recorder.InputConsumerType || (recorder.InputConsumerType = {})); - let filter; - (function (filter) { - let Type; - (function (Type) { - Type[Type["THRESHOLD"] = 0] = "THRESHOLD"; - Type[Type["VOICE_LEVEL"] = 1] = "VOICE_LEVEL"; - Type[Type["STATE"] = 2] = "STATE"; - })(Type = filter.Type || (filter.Type = {})); - })(filter = recorder.filter || (recorder.filter = {})); - let InputState; - (function (InputState) { - InputState[InputState["PAUSED"] = 0] = "PAUSED"; - InputState[InputState["INITIALIZING"] = 1] = "INITIALIZING"; - InputState[InputState["RECORDING"] = 2] = "RECORDING"; - InputState[InputState["DRY"] = 3] = "DRY"; - })(InputState = recorder.InputState || (recorder.InputState = {})); - let InputStartResult; - (function (InputStartResult) { - InputStartResult["EOK"] = "eok"; - InputStartResult["EUNKNOWN"] = "eunknown"; - InputStartResult["EBUSY"] = "ebusy"; - InputStartResult["ENOTALLOWED"] = "enotallowed"; - InputStartResult["ENOTSUPPORTED"] = "enotsupported"; - })(InputStartResult = recorder.InputStartResult || (recorder.InputStartResult = {})); - })(recorder = audio.recorder || (audio.recorder = {})); -})(audio || (audio = {})); -typeof _translations !== "undefined" || (_translations = {}); -_translations["declared"] = _translations["declared"] || (_translations["declared"] = {}); -_translations["declared_files"] = _translations["declared_files"] || (_translations["declared_files"] = {}); -unique_translation_check: { - if (_translations["declared_files"]["40c0a0ccf3b451cbca3133f589b3c49ad1383cc1a1064fb3e33f50b1892dfdfc"] !== undefined) { - console.warn("This file has already been loaded!\nAre you executing scripts twice?"); - break unique_translation_check; - } - else - _translations["declared_files"]["40c0a0ccf3b451cbca3133f589b3c49ad1383cc1a1064fb3e33f50b1892dfdfc"] = "40c0a0ccf3b451cbca3133f589b3c49ad1383cc1a1064fb3e33f50b1892dfdfc"; - /*Auto generated helper for testing if the translation keys are unique*/ - for (var { name: _i, path: _a } of [{ name: "A6UWPV3j", path: "D:/TeaSpeak/web/shared/js/voice/RecorderProfile.ts (134,41)" }, { name: "oKaNjzJq", path: "D:/TeaSpeak/web/shared/js/voice/RecorderProfile.ts (138,46)" }, { name: "WZgGQyvw", path: "D:/TeaSpeak/web/shared/js/voice/RecorderProfile.ts (189,45)" }]) { - if (_translations["declared"][_i] !== undefined) - throw "Translation with generated name \"" + _i + "\" already exists!\nIt has been already defined here: " + _translations["declared"][_i] + "\nAttempted to redefine here: " + _a + "\nRegenerate and/or fix your program!"; - else - _translations["declared"][_i] = _a; - } -} -let default_recorder; /* needs initialize */ -class RecorderProfile { - constructor(name, volatile) { - this.name = name; - this.volatile = typeof (volatile) === "boolean" ? volatile : false; - this._ppt_hook = { - callback_release: () => { - if (this._ppt_timeout) - clearTimeout(this._ppt_timeout); - this._ppt_timeout = setTimeout(() => { - const filter = this.input.get_filter(audio.recorder.filter.Type.STATE); - if (filter) - filter.set_state(true); - }, Math.min(this.config.vad_push_to_talk.delay, 0)); - }, - callback_press: () => { - if (this._ppt_timeout) - clearTimeout(this._ppt_timeout); - const filter = this.input.get_filter(audio.recorder.filter.Type.STATE); - if (filter) - filter.set_state(false); - }, - cancel: false - }; - this._ppt_hook_registered = false; - this.record_supported = true; - } - initialize() { - return __awaiter(this, void 0, void 0, function* () { - audio.player.on_ready(() => __awaiter(this, void 0, void 0, function* () { - this.initialize_input(); - yield this.load(); - yield this.reinitialize_filter(); - })); - }); - } - initialize_input() { - this.input = audio.recorder.create_input(); - this.input.callback_begin = () => { - log.debug(LogCategory.VOICE, "Voice start"); - if (this.callback_start) - this.callback_start(); - }; - this.input.callback_end = () => { - log.debug(LogCategory.VOICE, "Voice end"); - if (this.callback_stop) - this.callback_stop(); - }; - } - load() { - return __awaiter(this, void 0, void 0, function* () { - const config = settings.static_global(Settings.FN_PROFILE_RECORD(this.name), {}); - /* default values */ - this.config = { - version: 1, - device_id: undefined, - volume: 100, - vad_threshold: { - threshold: 50 - }, - vad_type: "threshold", - vad_push_to_talk: { - delay: 300, - key_alt: false, - key_ctrl: false, - key_shift: false, - key_windows: false, - key_code: 't' - } - }; - Object.assign(this.config, config || {}); - this.input.set_volume(this.config.volume / 100); - { - const all_devices = audio.recorder.devices(); - const devices = all_devices.filter(e => e.default_input || e.unique_id === this.config.device_id); - const device = devices.find(e => e.unique_id === this.config.device_id) || devices[0]; - log.info(LogCategory.VOICE, _translations.A6UWPV3j || (_translations.A6UWPV3j = tr("Loaded record profile device %s | %o (%o)")), this.config.device_id, device, all_devices); - try { - yield this.input.set_device(device); - } - catch (error) { - log.error(LogCategory.VOICE, _translations.oKaNjzJq || (_translations.oKaNjzJq = tr("Failed to set input device (%o)")), error); - } - } - }); - } - save(enforce) { - if (enforce || !this.volatile) - settings.changeGlobal(Settings.FN_PROFILE_RECORD(this.name), this.config); - } - reinitialize_filter() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.input) - return; - this.input.clear_filter(); - if (this._ppt_hook_registered) { - ppt.unregister_key_hook(this._ppt_hook); - this._ppt_hook_registered = false; - } - if (this.config.vad_type === "threshold") { - const filter = this.input.get_filter(audio.recorder.filter.Type.THRESHOLD); - yield filter.set_threshold(this.config.vad_threshold.threshold); - yield filter.set_margin_frames(10); /* 500ms */ - /* legacy client support */ - if ('set_attack_smooth' in filter) - filter.set_attack_smooth(.25); - if ('set_release_smooth' in filter) - filter.set_release_smooth(.9); - this.input.enable_filter(audio.recorder.filter.Type.THRESHOLD); - } - else if (this.config.vad_type === "push_to_talk") { - const filter = this.input.get_filter(audio.recorder.filter.Type.STATE); - yield filter.set_state(true); - for (const key of ["key_alt", "key_ctrl", "key_shift", "key_windows", "key_code"]) - this._ppt_hook[key] = this.config.vad_push_to_talk[key]; - ppt.register_key_hook(this._ppt_hook); - this._ppt_hook_registered = true; - this.input.enable_filter(audio.recorder.filter.Type.STATE); - } - else if (this.config.vad_type === "active") { } - }); - } - unmount() { - return __awaiter(this, void 0, void 0, function* () { - if (this.callback_unmount) - this.callback_unmount(); - if (this.input) { - try { - yield this.input.set_consumer(undefined); - } - catch (error) { - log.warn(LogCategory.VOICE, _translations.WZgGQyvw || (_translations.WZgGQyvw = tr("Failed to unmount input consumer for profile (%o)")), error); - } - } - this.callback_start = undefined; - this.callback_stop = undefined; - this.callback_unmount = undefined; - this.current_handler = undefined; - }); - } - get_vad_type() { return this.config.vad_type; } - set_vad_type(type) { - if (this.config.vad_type === type) - return true; - if (["push_to_talk", "threshold", "active"].findIndex(e => e === type) == -1) - return false; - this.config.vad_type = type; - this.reinitialize_filter(); - this.save(); - return true; - } - get_vad_threshold() { return parseInt(this.config.vad_threshold.threshold); } /* for some reason it might be a string... */ - set_vad_threshold(value) { - if (this.config.vad_threshold.threshold === value) - return; - this.config.vad_threshold.threshold = value; - this.reinitialize_filter(); - this.save(); - } - get_vad_ppt_key() { return this.config.vad_push_to_talk; } - set_vad_ppt_key(key) { - for (const _key of ["key_alt", "key_ctrl", "key_shift", "key_windows", "key_code"]) - this.config.vad_push_to_talk[_key] = key[_key]; - this.reinitialize_filter(); - this.save(); - } - get_vad_ppt_delay() { return this.config.vad_push_to_talk.delay; } - set_vad_ppt_delay(value) { - if (this.config.vad_push_to_talk.delay === value) - return; - this.config.vad_push_to_talk.delay = value; - this.reinitialize_filter(); - this.save(); - } - current_device() { return this.input.current_device(); } - set_device(device) { - this.config.device_id = device ? device.unique_id : undefined; - this.save(); - return this.input.set_device(device); - } - get_volume() { return this.input ? (this.input.get_volume() * 100) : this.config.volume; } - set_volume(volume) { - if (this.config.volume === volume) - return; - this.config.volume = volume; - this.input && this.input.set_volume(volume / 100); - this.save(); - } -} -//# sourceMappingURL=shared.js.map -//# sourceMappingURL=client.js.map \ No newline at end of file diff --git a/client/generated/client.js.map b/client/generated/client.js.map deleted file mode 100644 index 8cfde89f..00000000 --- a/client/generated/client.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"client.js","sourceRoot":"","sources":["../../shared/generated/shared.js"],"names":[],"mappings":"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AAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAA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EAAE,UAAU,EAAE,IAAI,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kDAAkD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kDAAkD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kDAAkD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kDAAkD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kDAAkD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kDAAkD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kDAAkD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kDAAkD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kDAAkD,EAAE,EAAE,EAAE,IAAI,EAAE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EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+CAA+C,EAAE,CAAC,EAAE;QACt6D,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;YAC3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,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAA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,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oEAAoE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAA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AAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,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AAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,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AE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,0DAA0D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,0DAA0D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,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UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC9C,UAAU,EAAE,U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AAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yDAAyD,EAA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,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,CAAC,EAAE;QAClmI,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,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,CAAC,EAAE;QAClmG,IAAI,aAAa,C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E,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+DAA+D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,E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E,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,CAAC,EAAE;QAC34H,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;YAC3C,MAAM,oCAAoC,GAAG,EAAE,GAAG,wDAAwD,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,gCAAgC,GAAG,EAAE,GAAG,uCAAuC,CAAC;;YAE7N,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;KACzC;CACJ;AACD,mDAAmD;AACnD,mDAAmD;AACnD,uCAAuC;AACvC,IAAI,MAAM,CAAC;AACX,CAAC,UAAU,MAAM;IACb,SAAS,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa;QACzD,aAAa,GAAG,aAAa,IAAI,CAAC,CAAC;QACnC,IAAI,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChG,MAAM,KAAK,GAAG,WAAW,CAAC;YACtB,MAAM,EAAE,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;YACxE,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,GAAG,EAAE;gBACP,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,SAAS,CAAC;oBACpC,aAAa,EAAE,CAAC,CAAC,aAAa;oBAC9B,aAAa,EAAE,YAAY;oBAC3B,aAAa,EAAE,YAAY;iBAC9B,CAAC,CAAC;YACP,CAAC;YACD,SAAS,EAAE,MAAM;SACpB,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClF,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,CAAC;QAC3F,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1E,MAAM,wBAAwB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,IAAI,EAAE,CAAC;QACxF,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;QACtE,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC1E,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/D,MAAM,sBAAsB,GAAG,eAAe,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC/E,MAAM,qBAAqB,GAAG,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC7E,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,EAAE;YACjC,qBAAqB,CAAC,KAAK,EAAE,CAAC;YAC9B,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE;gBACzB,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;gBAC/G,IAAI,aAAa,EAAE;oBACf,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;wBACpB,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;wBAC1D,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;wBACzB,kBAAkB,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;wBAC/C,aAAa,GAAG,OAAO,CAAC;wBACxB,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;oBAC1C,CAAC,CAAC,CAAC;oBACH,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;wBACvB,aAAa,CAAC,OAAO,CAAC,CAAC;wBACvB,KAAK,CAAC,KAAK,EAAE,CAAC;oBAClB,CAAC,CAAC,CAAC;oBACH,IAAI,OAAO,IAAI,aAAa;wBACxB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;iBAC5B;gBACD,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;aACvC;QACL,CAAC,CAAC;QACF,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC7B,wBAAwB,CAAC,IAAI,EAAE,CAAC;YAChC,eAAe,CAAC,IAAI,EAAE,CAAC;YACvB,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACzB,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,EAAE;gBACnC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;oBAC7B,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnD,eAAe,CAAC,IAAI,EAAE,CAAC;iBAC1B;qBACI;oBACD,eAAe,CAAC,IAAI,EAAE,CAAC;iBAC1B;YACL,CAAC,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACtD,MAAM,6BAA6B,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC;gBACtE,sBAAsB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;gBACxC,MAAM,UAAU,GAAG,EAAE,CAAC;gBACtB,MAAM,WAAW,GAAG,EAAE,CAAC;gBACvB,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,OAAO,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE;oBACzB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC;oBACzD,KAAK,IAAI,UAAU,CAAC;iBACvB;gBACD,MAAM,kBAAkB,GAAG,GAAG,EAAE;oBAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;oBACtC,IAAI,CAAC,KAAK;wBACN,OAAO;oBACX,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;wBACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;wBAC3D,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;4BACvB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,mDAAmD,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;4BAClJ,SAAS;yBACZ;wBACD,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;wBAC/G,IAAI,aAAa,IAAI,YAAY,EAAE;4BAC/B,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;gCACpB,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gCAC1D,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gCACzB,kBAAkB,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;gCAC/C,aAAa,GAAG,OAAO,CAAC;gCACxB,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gCACtC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,CAAC;4BAClD,CAAC,CAAC,CAAC;4BACH,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;gCACvB,IAAI,CAAC,aAAa;oCACd,OAAO;gCACX,aAAa,CAAC,OAAO,CAAC,CAAC;gCACvB,KAAK,CAAC,KAAK,EAAE,CAAC;4BAClB,CAAC,CAAC,CAAC;4BACH,IAAI,OAAO,IAAI,aAAa;gCACxB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;yBAC5B;wBACD,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;qBACxC;oBACD,UAAU,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;gBACxC,CAAC,CAAC;gBACF,kBAAkB,EAAE,CAAC;gBACrB,6BAA6B,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;gBAC7D,eAAe,CAAC,IAAI,EAAE,CAAC;gBACvB,iBAAiB,CAAC,IAAI,EAAE,CAAC;gBACzB,wBAAwB,CAAC,IAAI,EAAE,CAAC;YACpC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACb,IAAI,KAAK,YAAY,aAAa,IAAI,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC,gBAAgB,EAAE;oBACxE,wBAAwB,CAAC,IAAI,EAAE,CAAC;iBACnC;qBACI;oBACD,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,sCAAsC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBACvI,oBAAoB,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;iBAC9G;gBACD,iBAAiB,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QACF,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,aAAa;gBACd,OAAO;YACX,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjD,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,qDAAqD,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAClJ,IAAI,aAAa,GAAG,IAAI;gBACpB,OAAO,CAAC,gCAAgC;YAC5C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC1D,QAAQ,CAAC,MAAM,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACb,IAAI,KAAK,YAAY,aAAa,IAAI,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC,gBAAgB;oBACtE,OAAO;gBACX,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,8BAA8B,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;gBAC5H,KAAK,GAAG,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;gBACtF,gBAAgB,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,uBAAuB,CAAC,CAAC,EAAE,GAAG,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/J,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5D,kBAAkB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC9C,mBAAmB,EAAE,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAC9E,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAClD,IAAI,aAAa;gBACb,aAAa,CAAC,aAAa,CAAC,CAAC;YACjC,KAAK,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC1D,IAAI,aAAa;gBACb,aAAa,CAAC,CAAC,CAAC,CAAC;YACrB,KAAK,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IACD,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,SAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM;QACpC,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,MAAM,YAAY,GAAG,GAAG,EAAE;YACtB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,0CAA0C,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9H,gBAAgB,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,yDAAyD,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAClL,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACzB,CAAC,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE;YAC/B,YAAY,EAAE,CAAC;SAClB;aACI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;YAC3B,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,mEAAmE,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACvJ,gBAAgB,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,wEAAwE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjM,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;YACrB,OAAO;SACV;aACI;YACD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC;gBAC1D,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAChC,IAAI;oBACA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAClC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC;wBACxB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;wBACxB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;oBAC/B,CAAC,CAAC,CAAC;iBACN;gBACD,OAAO,KAAK,EAAE;oBACV,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;oBAChD,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,8CAA8C,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClI,gBAAgB,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,mDAAmD,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC5K,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;oBACrB,OAAO;iBACV;gBACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC7B,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE;oBAC9B,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,4DAA4D,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACxJ,gBAAgB,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,4DAA4D,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACrL,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;oBACrB,OAAO;iBACV;gBACD,uBAAuB;gBACvB;oBACI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;wBACnC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,sDAAsD,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;wBAClJ,gBAAgB,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,mDAAmD,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBAC5K,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;wBACrB,OAAO;qBACV;oBACD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBACxC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,yBAAyB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACtG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;wBAChD,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,2DAA2D,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;wBACxK,gBAAgB,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,8DAA8D,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBACvL,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;wBACrB,OAAO;qBACV;oBACD,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;oBACxB,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvD,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;iBACjC;gBACD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAI;oBACA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAClC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;wBACvB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;wBACvB,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC;oBACvB,CAAC,CAAC,CAAC;iBACN;gBACD,OAAO,KAAK,EAAE;oBACV,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;oBAChD,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,8CAA8C,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClI,gBAAgB,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,qDAAqD,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC9K,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;iBACxB;gBACD,MAAM,WAAW,GAAG,OAAO,CAAC,EAAE;oBAC1B,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,4CAA4C,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBACzI,gBAAgB,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,wDAAwD,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC1L,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;gBACzB,CAAC,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;oBAC1C,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE,IAAI,KAAK,CAAC,aAAa,GAAG,EAAE,EAAE;wBACrD,WAAW,CAAC,sCAAsC,GAAG,KAAK,CAAC,YAAY,GAAG,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;wBACrG,OAAO;qBACV;oBACD,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE,EAAE;wBACzB,WAAW,CAAC,kBAAkB,CAAC,CAAC;wBAChC,OAAO;qBACV;oBACD,IAAI,KAAK,CAAC,aAAa,GAAG,EAAE,EAAE;wBAC1B,WAAW,CAAC,mBAAmB,CAAC,CAAC;wBACjC,OAAO;qBACV;iBACJ;gBACD,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC/G,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE;oBACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBAC5C,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC;oBACnB,OAAO,KAAK,CAAC;gBACjB,CAAC,CAAC;gBACF,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;YACzB,CAAC,CAAC,CAAC,EAAE,CAAC;YACN,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE;gBACpB,MAAM,mBAAmB,GAAG,GAAG,EAAE;oBAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBACjD,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,oEAAoE,CAAC,CAAC;oBAChH,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;oBAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE;wBACtB,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;wBACjE,IAAI,KAAK,KAAK,GAAG;4BACb,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,4CAA4C,CAAC,EAAE,GAAG,CAAC,CAAC;oBACnG,CAAC,CAAC;oBACF,OAAO;wBACH,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;wBAChD,SAAS,EAAE,SAAS;wBACpB,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;wBACrC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;4BACf,IAAI,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;4BACjC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;4BAC3D,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;4BAC3B,SAAS,CAAC,GAAG,CAAC,CAAC;4BACf,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;wBAC9D,CAAC;qBACJ,CAAC;gBACN,CAAC,CAAC;gBACF,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBAClE,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAC;gBAClC,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE;oBACxB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;gBACpG,CAAC,CAAC;gBACF,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;qBAC1B,QAAQ,CAAC,cAAc,CAAC;qBACxB,MAAM,CAAC,eAAe,CAAC;qBACvB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC1B,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;gBAChC,IAAI,UAAU,GAAG,KAAK,CAAC;gBACvB,IAAI,IAAI,CAAC,aAAa,EAAE;oBACpB,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;oBAC7C,UAAU,GAAG,IAAI,CAAC;iBACrB;gBACD,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjB,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAClF,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC;oBAClD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;wBAC1B,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;wBACtG,MAAM,IAAI,CAAC,MAAM,CAAC;wBAClB,wEAAwE;wBACxE,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE;4BACxB,SAAS,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;4BAC9F,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;4BAC5B,OAAO;yBACV;qBACJ;yBACI,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE;wBAC7B,SAAS,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;wBAC7F,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;wBAC5B,OAAO;qBACV;oBACD,IAAI,CAAC,UAAU;wBACX,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;oBACjD,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBAClB,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oBACzF,IAAI,UAAU,CAAC;oBACf,IAAI;wBACA,UAAU,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC;4BAC9C,OAAO,EAAE,SAAS;4BAClB,gBAAgB,EAAE,SAAS;4BAC3B,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC,OAAO;4BAC7B,SAAS,EAAE,KAAK;4BAChB,IAAI,EAAE,EAAE;4BACR,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;yBACvB,CAAC,CAAC;qBACN;oBACD,OAAO,KAAK,EAAE;wBACV,IAAI,KAAK,YAAY,aAAa,IAAI,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC,mBAAmB,EAAE;4BAC3E,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,6BAA6B,EAAE,KAAK,CAAC;gCACtE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;4BAC7F,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;4BAChG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4BACnB,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;4BAC/B,OAAO;yBACV;wBACD,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,iCAAiC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;wBACjH,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC;wBACtG,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;wBAC5B,OAAO;qBACV;oBACD,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBAClB,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBACtF,MAAM,UAAU,GAAG,QAAQ,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;oBAC9D,IAAI;wBACA,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACxC;oBACD,OAAO,KAAK,EAAE;wBACV,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,oCAAoC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBACpI,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ;4BAC3B,GAAG,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;6BACnG,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,QAAQ;4BACxC,GAAG,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;;4BAE5G,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;wBAC5F,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;wBAC5B,OAAO;qBACV;oBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC5B,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,6BAA6B,EAAE,KAAK,CAAC;wBACtE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;oBAC7F,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;gBACnC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;SACL;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,SAAS,eAAe,CAAC,MAAM;QAC3B,MAAM,KAAK,GAAG,WAAW,CAAC;YACtB,MAAM,EAAE,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;YAC/E,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,SAAS,EAAE;YAC9C,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,MAAM;SACpB,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClF,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrD,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/D,IAAI,aAAa,CAAC;QAClB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,MAAM,oBAAoB,GAAG,GAAG,EAAE;YAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;YACjE,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,GAAG,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;YAC7E,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC;QACF,oBAAoB,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;YACtB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBACjB,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE;oBACxB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnC,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;yBACzB,QAAQ,CAAC,gBAAgB,CAAC;yBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;oBACnB,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;oBAChD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;wBACxB,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;wBAC1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;wBAC7B,aAAa,GAAG,IAAI,CAAC;wBACrB,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;oBAC1C,CAAC,CAAC,CAAC;oBACH,oBAAoB,EAAE,CAAC;iBAC1B;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QACF,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,aAAa;gBACd,OAAO;YACX,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC;YAC/C,IAAI,aAAa,CAAC,QAAQ;gBACtB,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACrC,oBAAoB,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;YAC5B,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAC7D,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC7C;wBACI,IAAI,SAAS,GAAG,KAAK,CAAC;wBACtB,KAAK,MAAM,IAAI,IAAI,KAAK;4BACpB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE;gCACxG,SAAS,GAAG,IAAI,CAAC;gCACjB,MAAM;6BACT;wBACL,IAAI,SAAS;4BACT,SAAS;qBAChB;oBACD,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;iBAC9C;aACJ;QACL,CAAC,CAAC,CAAC;QACH,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;YACtC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;QAC3C,CAAC,CAAC,CAAC,CAAC;QACJ,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;YAClC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAClE,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClD;oBACI,IAAI,SAAS,GAAG,KAAK,CAAC;oBACtB,KAAK,MAAM,IAAI,IAAI,KAAK;wBACpB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE;4BAC9C,SAAS,GAAG,IAAI,CAAC;4BACjB,MAAM;yBACT;oBACL,IAAI,SAAS;wBACT,SAAS;iBAChB;gBACD,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;aAC9C;QACL,CAAC,CAAC,CAAC,CAAC;QACJ,oBAAoB;QACpB;YACI,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACjE,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAClE,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACtE,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACtE,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAChE,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC3E,MAAM,mBAAmB,GAAG,OAAO,CAAC,EAAE;gBAClC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrD,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC,CAAC;YACF,MAAM,aAAa,GAAG,GAAG,EAAE;gBACvB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;oBACrB,IAAI,CAAC,CAAC,YAAY,KAAK,UAAU,EAAE;wBAC/B,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACpB,OAAO,KAAK,CAAC;qBAChB;oBACD,OAAO,IAAI,CAAC;gBAChB,CAAC,CAAC,CAAC;gBACH,oBAAoB,EAAE,CAAC;gBACvB,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBACtC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBACtC,gBAAgB,CAAC,IAAI,EAAE,CAAC;gBACxB,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC,CAAC;YACF,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC;gBAClE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;oBAChC,mBAAmB,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;oBACtG,OAAO;iBACV;gBACD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;oBACnB,mBAAmB,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;oBAC9F,OAAO;iBACV;gBACD,IAAI,YAAY,GAAG,CAAC,CAAC;gBACrB,IAAI,aAAa,GAAG,CAAC,CAAC;gBACtB,IAAI,YAAY,GAAG,CAAC,CAAC;gBACrB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;gBACvD,MAAM,QAAQ,GAAG,EAAE,CAAC;gBACpB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;oBACxB,QAAQ,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,IAAI;wBACV,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;qBAC3B,CAAC,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,eAAe;wBACrB,SAAS,CAAC,kBAAkB;oBAChC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;iBACpD;gBACD,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,GAAG,aAAa,GAAG,KAAK,GAAG,YAAY,CAAC,CAAC;gBAClH,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;oBAC5B,YAAY,EAAE,CAAC;oBACf,YAAY,EAAE,CAAC;oBACf,IAAI;wBACA,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;wBACrB,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,KAAK,UAAU;4BACxC,MAAM,QAAQ,CAAC;wBACnB,aAAa,EAAE,CAAC;qBACnB;oBACD,OAAO,KAAK,EAAE;wBACV,YAAY,EAAE,CAAC;qBAClB;oBACD,YAAY,EAAE,CAAC;iBAClB;gBACD,cAAc,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzH,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,YAAY,GAAG,MAAM;oBAC3E,mBAAmB,GAAG,aAAa,GAAG,MAAM;oBAC5C,gBAAgB,GAAG,YAAY,CAAC,CAAC;gBACrC,iBAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;gBAC9B,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3B,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACrC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACrC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAClC,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBAC1B,gBAAgB,CAAC,IAAI,EAAE,CAAC;gBACxB,cAAc,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;YACH,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;YAC1D,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrC,gBAAgB,CAAC,IAAI,EAAE,CAAC;SAC3B;QACD,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;AAC7C,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5B,OAAO,aAAa,KAAK,WAAW,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,CAAA;AAC5D,aAAa,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;AACzF,aAAa,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAA;AAC3G,wBAAwB,EAAE;IACtB,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC,kEAAkE,CAAC,KAAK,SAAS,EAAE;QACnH,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;QACpF,MAAM,wBAAwB,CAAC;KAClC;;QAEG,aAAa,CAAC,gBAAgB,CAAC,CAAC,kEAAkE,CAAC,GAAG,kEAAkE,CAAA;IAC5K,wEAAwE;IACxE,KAAK,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,8DAA8D,EAAE,CAAC,EAAE;QACx9C,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;YAC3C,MAAM,oCAAoC,GAAG,EAAE,GAAG,wDAAwD,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,gCAAgC,GAAG,EAAE,GAAG,uCAAuC,CAAC;;YAE7N,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;KACzC;CACJ;AACD,IAAI,MAAM,CAAC;AACX,CAAC,UAAU,MAAM;IACb,SAAS,6BAA6B,CAAC,QAAQ,EAAE,IAAI;QACjD,IAAI,KAAK,CAAC;QACV,IAAI,aAAa,CAAC;QAClB,KAAK,GAAG,WAAW,CAAC;YAChB,MAAM,EAAE,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC;YACnF,IAAI,EAAE,GAAG,EAAE;gBACP,IAAI,QAAQ,GAAG,CAAC,CAAC,kCAAkC,CAAC,CAAC,SAAS,CAAC;oBAC3D,aAAa,EAAE,IAAI;iBACtB,CAAC,CAAC;gBACH,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,MAAM,CAAC;gBACX,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAC9D,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACpD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBACnE,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;gBACzE,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACtD,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC1D,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAC3D,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;oBAC7B,IAAI,MAAM;wBACN,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBACvC,IAAI,KAAK,CAAC,KAAK;wBACX,KAAK,CAAC,KAAK,EAAE,CAAC;gBACtB,CAAC,CAAC,CAAC;gBACH,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;oBAClC,iBAAiB;yBACZ,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC;yBAClC,WAAW,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC;yBAClC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACvJ,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC;oBACxC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC;oBAC7C,IAAI,MAAM,EAAE;wBACR,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACvB,aAAa,CAAC,aAAa,CAAC,CAAC;wBAC7B,MAAM,GAAG,KAAK,CAAC;wBACf,OAAO;qBACV;oBACD,MAAM,GAAG,IAAI,CAAC;oBACd,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC9C,MAAM,YAAY,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;oBACxD,IAAI,YAAY,IAAI,CAAC,EAAE;wBACnB,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE;4BAC9D,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;wBAC3C,CAAC,EAAE,SAAS,CAAC,EAAE;4BACX,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBACnC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;4BACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BACrB,gBAAgB,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,uCAAuC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;4BAC3N,IAAI,MAAM;gCACN,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC3C,CAAC,CAAC,CAAC;qBACN;yBACI;wBACD,QAAQ,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE;4BACxE,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;wBAC3C,CAAC,EAAE,SAAS,CAAC,EAAE;4BACX,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBACnC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;4BACd,IAAI,OAAO,EAAE;gCACT,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oCAC1B,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oCAC/B,eAAe,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,gCAAgC,CAAC,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,4CAA4C,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gCACjQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oCACb,mBAAmB,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;gCAC/C,CAAC,CAAC,CAAC;6BACN;4BACD,IAAI,MAAM;gCACN,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC3C,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;4BACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BACrB,gBAAgB,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,uCAAuC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;4BAC3N,IAAI,MAAM;gCACN,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC3C,CAAC,CAAC,CAAC;qBACN;oBACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACzB,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;wBAC7B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;wBACzC,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;wBAC/C,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;wBAC/C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;4BAClB,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC;wBAC5B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;4BAClB,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC;wBAC5B,aAAa,CAAC,GAAG,CAAC,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC;oBAC/C,CAAC,EAAE,IAAI,CAAC,CAAC;gBACb,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC/D,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBAC1B,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBACb,mBAAmB,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAClB,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC/B,CAAC;YACD,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,GAAG;SACb,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC,CAAC;QACjF,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACtF,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,CAAC,6BAA6B,GAAG,6BAA6B,CAAC;IACrE,SAAS,4BAA4B,CAAC,QAAQ;QAC1C,IAAI,KAAK,CAAC;QACV,IAAI,aAAa,CAAC;QAClB,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,KAAK,GAAG,WAAW,CAAC;YAChB,MAAM,EAAE,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC;YAClF,IAAI,EAAE,GAAG,EAAE;gBACP,IAAI,QAAQ,GAAG,CAAC,CAAC,iCAAiC,CAAC,CAAC,SAAS,EAAE,CAAC;gBAChE,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACtD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAC9D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAC5D,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACzD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACnD,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;oBACjC,gBAAgB,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;oBACjD,IAAI,OAAO,EAAE;wBACT,gBAAgB,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;wBACxD,gBAAgB,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC;wBAC5D,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBAC5C;gBACL,CAAC,CAAC;gBACF,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;gBACrE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;oBACrD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;oBAChC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC;oBACrD,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC;oBAC7C,aAAa,GAAG,IAAI,CAAC;oBACrB,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC1F,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;oBAClC,UAAU,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;oBACnG,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;wBACtE,UAAU,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;wBACrC,UAAU,CAAC,+BAA+B,EAAE,SAAS,CAAC,CAAC;wBACvD,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;wBACtC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;oBACrC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;wBACb,UAAU,CAAC,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC;oBACzH,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC;gBACF,wBAAwB;gBACxB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;oBAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;oBAC7B,MAAM,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC;oBACrC,UAAU,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;oBAC/F,WAAW,CAAC,MAAM,GAAG;wBACjB,eAAe,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAC9C,CAAC,CAAC;oBACF,WAAW,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE;wBACvB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,uCAAuC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACpH,UAAU,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,mCAAmC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;wBAClH,OAAO;oBACX,CAAC,CAAC;oBACF,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;wBACzC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;gBACH,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE;oBAClC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;oBAC9B,IAAI,CAAC,IAAI,EAAE;wBACP,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;wBAC1B,OAAO;qBACV;oBACD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;wBACzB,UAAU,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,yBAAyB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;wBACxG,OAAO;qBACV;oBACD,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;gBACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;oBAC9B,KAAK,CAAC,KAAK,EAAE,CAAC;oBACd,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;gBACxC,CAAC,CAAC,CAAC;gBACH,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBAC1B,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACrC,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC/B,CAAC;YACD,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,GAAG;SACb,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC;QAChF,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,CAAC,4BAA4B,GAAG,4BAA4B,CAAC;AACvE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5B,OAAO,aAAa,KAAK,WAAW,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,CAAA;AAC5D,aAAa,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;AACzF,aAAa,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAA;AAC3G,wBAAwB,EAAE;IACtB,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC,kEAAkE,CAAC,KAAK,SAAS,EAAE;QACnH,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;QACpF,MAAM,wBAAwB,CAAC;KAClC;;QAEG,aAAa,CAAC,gBAAgB,CAAC,CAAC,kEAAkE,CAAC,GAAG,kEAAkE,CAAA;IAC5K,wEAAwE;IACxE,KAAK,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4DAA4D,EAAE,CAAC,EAAE;QACrN,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;YAC3C,MAAM,oCAAoC,GAAG,EAAE,GAAG,wDAAwD,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,gCAAgC,GAAG,EAAE,GAAG,uCAAuC,CAAC;;YAE7N,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;KACzC;CACJ;AACD,mDAAmD;AACnD,mDAAmD;AACnD,uCAAuC;AACvC,IAAI,MAAM,CAAC;AACX,CAAC,UAAU,MAAM;IACb,MAAM,wBAAwB,GAAG;QAC7B,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,KAAK;KACvB,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC;YAC/B,OAAO,IAAI,CAAC;QAChB,OAAO,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aACjD,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC,CAAC;IACF,uBAAuB;IACvB,MAAM,cAAc,GAAG;QACnB,SAAS,EAAE;YACP,QAAQ,EAAE,UAAU,CAAC,EAAE;gBACnB,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC/F,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC/E,MAAM,SAAS,GAAG,kBAAkB,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,mBAAmB,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBAChI,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE;oBACzC;;uBAEG;oBACH,QAAQ,GAAG,0BAA0B,CAAC;iBACzC;qBACI,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;oBAC9F,QAAQ,GAAG,0BAA0B,CAAC;iBACzC;qBACI;oBACD,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;iBACpE;gBACD,OAAO,QAAQ,GAAG,GAAG,GAAG,SAAS,CAAC;YACtC,CAAC;YACD,iBAAiB,EAAE,OAAO,CAAC,EAAE;gBACzB,OAAO;oBACH,WAAW,EAAE,IAAI;oBACjB,aAAa,EAAE,IAAI;iBACtB,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;YACxB,CAAC;SACJ;QACD,YAAY,EAAE;YACV,QAAQ,EAAE,UAAU,CAAC,EAAE;gBACnB,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC/F,IAAI,UAAU,GAAG;oBACb,eAAe,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAClD,CAAC;gBACF,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI;oBACpB,UAAU,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;gBACtC,OAAO,SAAS,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,UAAU,CAAC,CAAC;YACtE,CAAC;YACD,iBAAiB,EAAE,OAAO,CAAC,EAAE;gBACzB,OAAO;oBACH,WAAW,EAAE,IAAI;oBACjB,aAAa,EAAE,IAAI;iBACtB,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;YACxB,CAAC;SACJ;QACD,WAAW,EAAE;YACT,QAAQ,EAAE,UAAU,CAAC,EAAE;gBACnB,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC/F,IAAI,UAAU,GAAG,EAAE,CAAC;gBACpB,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI;oBACpB,UAAU,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;gBACtC;;;;;;;;;;kBAUE;gBACF,OAAO,SAAS,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,UAAU,CAAC,CAAC;YACtE,CAAC;YACD,iBAAiB,EAAE,OAAO,CAAC,EAAE;gBACzB,OAAO;oBACH,WAAW,EAAE,KAAK;oBAClB,aAAa,EAAE,IAAI;iBACtB,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;YACxB,CAAC;SACJ;KACJ,CAAC;IACF,SAAS,iBAAiB,CAAC,UAAU;QACjC,IAAI,KAAK,CAAC;QACV,KAAK,GAAG,WAAW,CAAC;YAChB,MAAM,EAAE,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC;YACrF,IAAI,EAAE,GAAG,EAAE;gBACP,IAAI,QAAQ,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC7C,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBACnE,OAAO,QAAQ,CAAC;YACpB,CAAC;YACD,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,MAAM;YACjB,KAAK,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxD,MAAM,eAAe,GAAG;YACpB;gBACI,GAAG,EAAE,aAAa;gBAClB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC;gBACtD,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnC,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,GAAG,CAAC;gBAC9D,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;qBAC/C,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC;aAC9D;YACD;gBACI,GAAG,EAAE,eAAe;gBACpB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC;gBACxD,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnC,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,GAAG,CAAC;gBAC9D,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;qBAC/C,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC;aAC9D;SACJ,CAAC;QACF,MAAM,cAAc,GAAG,GAAG,EAAE;YACxB,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,SAAS,EAAE;gBACZ,KAAK,MAAM,CAAC,IAAI,eAAe;oBAC3B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC5B,OAAO;aACV;YACD,KAAK,MAAM,CAAC,IAAI,eAAe;gBAC3B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,GAAG,EAAE;YACrB,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,SAAS,EAAE;gBACZ,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACnC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBACrG,OAAO;aACV;YACD,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACpC,MAAM,UAAU,GAAG;gBACf,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc;gBACrD,gBAAgB,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE;aACpF,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,eAAe;gBAC3B,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE;YAC7B,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;gBAC3B,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/E,WAAW,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACjH;QACD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACzB,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,yBAAyB,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5E,cAAc,EAAE,CAAC;YACjB,WAAW,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAC5D,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YAC5B,YAAY,CAAC,MAAM,EAAE,CAAC;YACtB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,cAAc,EAAE,CAAC;QACjB,WAAW,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IACD,MAAM,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;AACjD,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5B,OAAO,aAAa,KAAK,WAAW,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,CAAA;AAC5D,aAAa,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;AACzF,aAAa,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAA;AAC3G,wBAAwB,EAAE;IACtB,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC,kEAAkE,CAAC,KAAK,SAAS,EAAE;QACnH,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;QACpF,MAAM,wBAAwB,CAAC;KAClC;;QAEG,aAAa,CAAC,gBAAgB,CAAC,CAAC,kEAAkE,CAAC,GAAG,kEAAkE,CAAA;IAC5K,wEAAwE;IACxE,KAAK,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,6DAA6D,EAAE,CAAC,EAAE;QAC5H,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;YAC3C,MAAM,oCAAoC,GAAG,EAAE,GAAG,wDAAwD,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,gCAAgC,GAAG,EAAE,GAAG,uCAAuC,CAAC;;YAE7N,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;KACzC;CACJ;AACD,IAAI,MAAM,CAAC;AACX,CAAC,UAAU,MAAM;IACb,SAAS,cAAc,CAAC,QAAQ;QAC5B,IAAI,KAAK,GAAG,WAAW,CAAC;YACpB,MAAM,EAAE,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;YAC/E,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;YACxD,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,KAAK;SACnB,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3D,IAAI,eAAe,CAAC;QACpB,IAAI,QAAQ,CAAC;QACb,IAAI,WAAW,CAAC;QAChB,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE;gBACxC,4DAA4D;gBAC5D,QAAQ,GAAG,WAAW,CAAC;gBACvB,WAAW,GAAG,KAAK,CAAC;gBACpB,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7B,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/C,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;aACvC;QACL,CAAC,CAAC;QACF,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACzB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE;gBACf,8DAA8D;gBAC9D,IAAI,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,WAAW,CAAC,QAAQ,IAAI,QAAQ;oBACvE,WAAW,GAAG,QAAQ,CAAC;aAC9B;YACD,QAAQ,CAAC,WAAW,CAAC,CAAC;YACtB,KAAK,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC1B,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/C,GAAG,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACpC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;QAC1E,KAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IACD,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;AAC3C,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5B,OAAO,aAAa,KAAK,WAAW,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,CAAA;AAC5D,aAAa,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;AACzF,aAAa,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAA;AAC3G,wBAAwB,EAAE;IACtB,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC,kEAAkE,CAAC,KAAK,SAAS,EAAE;QACnH,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;QACpF,MAAM,wBAAwB,CAAC;KAClC;;QAEG,aAAa,CAAC,gBAAgB,CAAC,CAAC,kEAAkE,CAAC,GAAG,kEAAkE,CAAA;IAC5K,wEAAwE;IACxE,KAAK,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gEAAgE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iEAAiE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kEAAkE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,I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,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,+EAA+E,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iFAAiF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iFAAiF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iFAAiF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gFAAgF,EAAE,EAAE,EAAE,IAAI,E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"} \ No newline at end of file diff --git a/shared/.gitignore b/shared/.gitignore index c10f3cbd..d7816132 100644 --- a/shared/.gitignore +++ b/shared/.gitignore @@ -7,6 +7,8 @@ css/static/**/*.css.map js/**/*.js js/**/*.js.map +js/**/*.css +js/**/*.css.map loader/**/*.css loader/**/*.css.map diff --git a/shared/js/ui/frames/control-bar/button.css b/shared/js/ui/frames/control-bar/button.css deleted file mode 100644 index da909883..00000000 --- a/shared/js/ui/frames/control-bar/button.css +++ /dev/null @@ -1,188 +0,0 @@ -/* Some general browser helpers */ -/* border etc */ -.button, .dropdownArrow { - text-align: center; - border: 0.05em solid rgba(0, 0, 0, 0); - border-radius: 0.1em; - background-color: #454545; - -moz-transition: background-color 0.25s ease-in-out, border-color 0.25s ease-in-out; - -o-transition: background-color 0.25s ease-in-out, border-color 0.25s ease-in-out; - -webkit-transition: background-color 0.25s ease-in-out, border-color 0.25s ease-in-out; - transition: background-color 0.25s ease-in-out, border-color 0.25s ease-in-out; -} -.button:hover, .dropdownArrow:hover { - background-color: #393c43; - border-color: #4a4c55; - /*box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);*/ -} -.button.activated, .dropdownArrow.activated { - background-color: #2f3841; - border-color: #005fa1; -} -.button.activated:hover, .dropdownArrow.activated:hover { - background-color: #263340; - border-color: #005fa1; -} -.button.activated.theme-red, .dropdownArrow.activated.theme-red { - background-color: #412f2f; - border-color: #a10000; -} -.button.activated.theme-red:hover, .dropdownArrow.activated.theme-red:hover { - background-color: #402626; - border-color: #a10000; -} -.button :global(.icon_em), .dropdownArrow :global(.icon_em) { - font-size: 1.5em; -} - -.button { - display: flex; - flex-direction: row; - justify-content: center; - height: 2em; - width: 2em; - cursor: pointer; - align-items: center; - margin-right: 5px; - margin-left: 5px; -} -.button.buttonHostbutton { - overflow: hidden; - padding: 0.25em; -} -.button.buttonHostbutton img { - min-width: 1.5em; - max-width: 1.5em; - height: 1.5em; - width: 1.5em; -} - -.buttonDropdown { - height: 100%; - position: relative; -} -.buttonDropdown .buttons { - height: 2em; - align-items: center; - display: flex; - flex-direction: row; -} -.buttonDropdown .buttons .dropdownArrow { - height: 2em; - display: inline-flex; - justify-content: space-around; - width: 1.5em; - cursor: pointer; - border-radius: 0 0.1em 0.1em 0; - align-items: center; - border-left: 0; -} -.buttonDropdown .buttons .button { - margin-right: 0; -} -.buttonDropdown .buttons:hover .button, .buttonDropdown .buttons:hover .dropdownArrow { - background-color: #393c43; - border-color: #4a4c55; -} -.buttonDropdown .buttons:hover .button { - border-right-color: transparent; - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.buttonDropdown .dropdown { - display: none; - position: absolute; - margin-left: 5px; - color: #c4c5c5; - background-color: #2d3032; - align-items: center; - border: 0.05em solid #2c2525; - border-radius: 0 0.15em 0.15em 0.15em; - width: 15em; - /* fallback */ - width: max-content; - max-width: 25em; - z-index: 1000; - /*box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);*/ -} -.buttonDropdown .dropdown:global(.right) { - right: 0; -} -.buttonDropdown .dropdown :global .icon, .buttonDropdown .dropdown :global .icon-container, .buttonDropdown .dropdown :global .icon_em { - vertical-align: middle; - margin-right: 5px; -} -.buttonDropdown .dropdown :global .icon-empty, .buttonDropdown .dropdown :global .icon_empty { - flex-shrink: 0; - flex-grow: 0; - height: 16px; - width: 16px; -} -.buttonDropdown .dropdown .dropdownEntry { - position: relative; - display: flex; - flex-direction: row; - cursor: pointer; - padding: 1px 2px 1px 4px; - align-items: center; - justify-content: stretch; -} -.buttonDropdown .dropdown .dropdownEntry .entryName { - flex-grow: 1; - flex-shrink: 1; - vertical-align: text-top; - margin-right: 0.5em; -} -.buttonDropdown .dropdown .dropdownEntry .icon, .buttonDropdown .dropdown .dropdownEntry .arrow { - flex-grow: 0; - flex-shrink: 0; -} -.buttonDropdown .dropdown .dropdownEntry .arrow { - margin-right: 0.5em; -} -.buttonDropdown .dropdown .dropdownEntry:first-of-type { - border-radius: 0.1em 0.1em 0 0; -} -.buttonDropdown .dropdown .dropdownEntry:last-of-type { - border-radius: 0 0 0.1em 0.1em; -} -.buttonDropdown .dropdown .dropdownEntry > .dropdown { - margin-left: 0; -} -.buttonDropdown .dropdown .dropdownEntry:hover { - background-color: #252729; -} -.buttonDropdown .dropdown .dropdownEntry:hover > .dropdown { - display: block; - margin-left: 0; - left: 100%; - top: 0; -} -.buttonDropdown .dropdown.displayLeft { - margin-left: -179px; - border-radius: 0.15em 0 0.15em 0.15em; -} -.buttonDropdown.dropdownDisplayed > .dropdown { - display: block; -} -.buttonDropdown.dropdownDisplayed .button, .buttonDropdown.dropdownDisplayed .dropdown-arrow { - background-color: #393c43; - border-color: #4a4c55; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.buttonDropdown.dropdownDisplayed .button { - border-right-color: transparent; - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.buttonDropdown hr { - margin-top: 5px; - margin-bottom: 5px; -} - -.buttonBookmarks .dropdown { - width: 300px; -} - -/*# sourceMappingURL=button.css.map */ diff --git a/shared/js/ui/frames/control-bar/button.css.map b/shared/js/ui/frames/control-bar/button.css.map deleted file mode 100644 index e17ef925..00000000 --- a/shared/js/ui/frames/control-bar/button.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["../../../../css/static/mixin.scss","button.scss","../../../../css/static/properties.scss"],"names":[],"mappings":"AAAA;ACKA;AACA;EACI;EAEA;EACA,eCLkB;EDOlB;EDTH,iBCqCG;EDpCH,eCoCG;EDnCH,oBCmCG;EDlCH,YCkCG;;AA1BA;EACI;EACA;AACA;;AAGJ;EACI;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;;AAEA;EACI;EACA;;AAOZ;EACI;;;AAIR;EACI;EACA;EACA;EAEA;EACA;EAEA;EACA;EAEA;EACA;;AAEA;EASI;EACA;;AATA;EACI;EACA;EAEA;EACA;;;AAQZ;EACI;EACA;;AAEA;EACI;EAEA;EAEA;EACA;;AAEA;EACI;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;;AAGJ;EACI;;AAIA;EACI;EACA;;AAGJ;EACI;EAEA;EACA;;AAKZ;EACI;EACA;EACA;EAEA;EAEA;EACA;EACA;EACA;EAEA;AAAa;EACb;EAEA;EAEA;AACA;;AAEA;EACI;;AAIA;EACI;EACA;;AAGJ;EACI;EACA;EAEA;EACA;;AAIR;EACI;EAEA;EACA;EACA;EACA;EAEA;EACA;;AAEA;EACI;EACA;EAEA;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAEA;EACI;EACA;EAEA;EACA;;AAMZ;EACI;EACA;;AAKJ;EACI;;AAGJ;EACI;EACA;EAEA;EACA;;AAGJ;EACI;EAEA;EACA;;AAKR;EACI;EACA;;;AAKJ;EACI","file":"button.css"} \ No newline at end of file diff --git a/shared/js/ui/frames/control-bar/index.css b/shared/js/ui/frames/control-bar/index.css deleted file mode 100644 index 31221504..00000000 --- a/shared/js/ui/frames/control-bar/index.css +++ /dev/null @@ -1,28 +0,0 @@ -/* Some general browser helpers */ -/* max height is 2em */ -.controlBar { - display: flex; - flex-direction: row; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - height: 100%; - align-items: center; - /* tmp fix for ultra small devices */ - overflow-y: visible; -} -.controlBar .divider { - flex-grow: 0; - flex-shrink: 0; - border-left: 2px solid #393838; - height: calc(100% - 3px); - margin: 3px; -} -.controlBar .spacer { - flex-grow: 1; - flex-shrink: 1; - min-width: 0; -} - -/*# sourceMappingURL=index.css.map */ diff --git a/shared/js/ui/frames/control-bar/index.css.map b/shared/js/ui/frames/control-bar/index.css.map deleted file mode 100644 index beb7b39d..00000000 --- a/shared/js/ui/frames/control-bar/index.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["../../../../css/static/mixin.scss","index.scss"],"names":[],"mappings":"AAAA;ACGA;AACA;EACI;EACA;EDwDH,qBCtDwB;EDuDxB,kBCvDwB;EDwDxB,iBCxDwB;EDyDxB,aCzDwB;EAErB;EACA;AAEA;EACA;;AAEA;EACI;EACA;EAEA;EACA;EACA;;AAGJ;EACI;EACA;EAEA","file":"index.css"} \ No newline at end of file