{ "version": 3, "sources": ["../../../node_modules/@rails/actioncable/app/assets/javascripts/action_cable.js", "../../javascript/channels/consumer.js", "../../javascript/packs/telegram_notifications.js"], "sourcesContent": ["(function(global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActionCable = {});\n})(this, function(exports) {\n \"use strict\";\n var adapters = {\n logger: self.console,\n WebSocket: self.WebSocket\n };\n var logger = {\n log: function log() {\n if (this.enabled) {\n var _adapters$logger;\n for (var _len = arguments.length, messages = Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n messages.push(Date.now());\n (_adapters$logger = adapters.logger).log.apply(_adapters$logger, [ \"[ActionCable]\" ].concat(messages));\n }\n }\n };\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n var classCallCheck = function(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n var createClass = function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n var now = function now() {\n return new Date().getTime();\n };\n var secondsSince = function secondsSince(time) {\n return (now() - time) / 1e3;\n };\n var clamp = function clamp(number, min, max) {\n return Math.max(min, Math.min(max, number));\n };\n var ConnectionMonitor = function() {\n function ConnectionMonitor(connection) {\n classCallCheck(this, ConnectionMonitor);\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n ConnectionMonitor.prototype.start = function start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor started. pollInterval = \" + this.getPollInterval() + \" ms\");\n }\n };\n ConnectionMonitor.prototype.stop = function stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n };\n ConnectionMonitor.prototype.isRunning = function isRunning() {\n return this.startedAt && !this.stoppedAt;\n };\n ConnectionMonitor.prototype.recordPing = function recordPing() {\n this.pingedAt = now();\n };\n ConnectionMonitor.prototype.recordConnect = function recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n };\n ConnectionMonitor.prototype.recordDisconnect = function recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n };\n ConnectionMonitor.prototype.startPolling = function startPolling() {\n this.stopPolling();\n this.poll();\n };\n ConnectionMonitor.prototype.stopPolling = function stopPolling() {\n clearTimeout(this.pollTimeout);\n };\n ConnectionMonitor.prototype.poll = function poll() {\n var _this = this;\n this.pollTimeout = setTimeout(function() {\n _this.reconnectIfStale();\n _this.poll();\n }, this.getPollInterval());\n };\n ConnectionMonitor.prototype.getPollInterval = function getPollInterval() {\n var _constructor$pollInte = this.constructor.pollInterval, min = _constructor$pollInte.min, max = _constructor$pollInte.max, multiplier = _constructor$pollInte.multiplier;\n var interval = multiplier * Math.log(this.reconnectAttempts + 1);\n return Math.round(clamp(interval, min, max) * 1e3);\n };\n ConnectionMonitor.prototype.reconnectIfStale = function reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \" + this.reconnectAttempts + \", pollInterval = \" + this.getPollInterval() + \" ms, time disconnected = \" + secondsSince(this.disconnectedAt) + \" s, stale threshold = \" + this.constructor.staleThreshold + \" s\");\n this.reconnectAttempts++;\n if (this.disconnectedRecently()) {\n logger.log(\"ConnectionMonitor skipping reopening recent disconnect\");\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n };\n ConnectionMonitor.prototype.connectionIsStale = function connectionIsStale() {\n return secondsSince(this.pingedAt ? this.pingedAt : this.startedAt) > this.constructor.staleThreshold;\n };\n ConnectionMonitor.prototype.disconnectedRecently = function disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n };\n ConnectionMonitor.prototype.visibilityDidChange = function visibilityDidChange() {\n var _this2 = this;\n if (document.visibilityState === \"visible\") {\n setTimeout(function() {\n if (_this2.connectionIsStale() || !_this2.connection.isOpen()) {\n logger.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = \" + document.visibilityState);\n _this2.connection.reopen();\n }\n }, 200);\n }\n };\n return ConnectionMonitor;\n }();\n ConnectionMonitor.pollInterval = {\n min: 3,\n max: 30,\n multiplier: 5\n };\n ConnectionMonitor.staleThreshold = 6;\n var INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\"\n },\n default_mount_path: \"/cable\",\n protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n };\n var message_types = INTERNAL.message_types, protocols = INTERNAL.protocols;\n var supportedProtocols = protocols.slice(0, protocols.length - 1);\n var indexOf = [].indexOf;\n var Connection = function() {\n function Connection(consumer) {\n classCallCheck(this, Connection);\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n Connection.prototype.send = function send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n };\n Connection.prototype.open = function open() {\n if (this.isActive()) {\n logger.log(\"Attempted to open WebSocket, but existing socket is \" + this.getState());\n return false;\n } else {\n logger.log(\"Opening WebSocket, current state is \" + this.getState() + \", subprotocols: \" + protocols);\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n };\n Connection.prototype.close = function close() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n allowReconnect: true\n }, allowReconnect = _ref.allowReconnect;\n if (!allowReconnect) {\n this.monitor.stop();\n }\n if (this.isActive()) {\n return this.webSocket.close();\n }\n };\n Connection.prototype.reopen = function reopen() {\n logger.log(\"Reopening WebSocket, current state is \" + this.getState());\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(\"Reopening WebSocket in \" + this.constructor.reopenDelay + \"ms\");\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n };\n Connection.prototype.getProtocol = function getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n };\n Connection.prototype.isOpen = function isOpen() {\n return this.isState(\"open\");\n };\n Connection.prototype.isActive = function isActive() {\n return this.isState(\"open\", \"connecting\");\n };\n Connection.prototype.isProtocolSupported = function isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n };\n Connection.prototype.isState = function isState() {\n for (var _len = arguments.length, states = Array(_len), _key = 0; _key < _len; _key++) {\n states[_key] = arguments[_key];\n }\n return indexOf.call(states, this.getState()) >= 0;\n };\n Connection.prototype.getState = function getState() {\n if (this.webSocket) {\n for (var state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n return null;\n };\n Connection.prototype.installEventHandlers = function installEventHandlers() {\n for (var eventName in this.events) {\n var handler = this.events[eventName].bind(this);\n this.webSocket[\"on\" + eventName] = handler;\n }\n };\n Connection.prototype.uninstallEventHandlers = function uninstallEventHandlers() {\n for (var eventName in this.events) {\n this.webSocket[\"on\" + eventName] = function() {};\n }\n };\n return Connection;\n }();\n Connection.reopenDelay = 500;\n Connection.prototype.events = {\n message: function message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n var _JSON$parse = JSON.parse(event.data), identifier = _JSON$parse.identifier, message = _JSON$parse.message, reason = _JSON$parse.reason, reconnect = _JSON$parse.reconnect, type = _JSON$parse.type;\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(\"Disconnecting. Reason: \" + reason);\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n return this.subscriptions.notify(identifier, \"connected\");\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open: function open() {\n logger.log(\"WebSocket onopen event, using '\" + this.getProtocol() + \"' subprotocol\");\n this.disconnected = false;\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close: function close(event) {\n logger.log(\"WebSocket onclose event\");\n if (this.disconnected) {\n return;\n }\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error: function error() {\n logger.log(\"WebSocket onerror event\");\n }\n };\n var extend = function extend(object, properties) {\n if (properties != null) {\n for (var key in properties) {\n var value = properties[key];\n object[key] = value;\n }\n }\n return object;\n };\n var Subscription = function() {\n function Subscription(consumer) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mixin = arguments[2];\n classCallCheck(this, Subscription);\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n Subscription.prototype.perform = function perform(action) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n data.action = action;\n return this.send(data);\n };\n Subscription.prototype.send = function send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n };\n Subscription.prototype.unsubscribe = function unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n };\n return Subscription;\n }();\n var Subscriptions = function() {\n function Subscriptions(consumer) {\n classCallCheck(this, Subscriptions);\n this.consumer = consumer;\n this.subscriptions = [];\n }\n Subscriptions.prototype.create = function create(channelName, mixin) {\n var channel = channelName;\n var params = (typeof channel === \"undefined\" ? \"undefined\" : _typeof(channel)) === \"object\" ? channel : {\n channel: channel\n };\n var subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n };\n Subscriptions.prototype.add = function add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.sendCommand(subscription, \"subscribe\");\n return subscription;\n };\n Subscriptions.prototype.remove = function remove(subscription) {\n this.forget(subscription);\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n return subscription;\n };\n Subscriptions.prototype.reject = function reject(identifier) {\n var _this = this;\n return this.findAll(identifier).map(function(subscription) {\n _this.forget(subscription);\n _this.notify(subscription, \"rejected\");\n return subscription;\n });\n };\n Subscriptions.prototype.forget = function forget(subscription) {\n this.subscriptions = this.subscriptions.filter(function(s) {\n return s !== subscription;\n });\n return subscription;\n };\n Subscriptions.prototype.findAll = function findAll(identifier) {\n return this.subscriptions.filter(function(s) {\n return s.identifier === identifier;\n });\n };\n Subscriptions.prototype.reload = function reload() {\n var _this2 = this;\n return this.subscriptions.map(function(subscription) {\n return _this2.sendCommand(subscription, \"subscribe\");\n });\n };\n Subscriptions.prototype.notifyAll = function notifyAll(callbackName) {\n var _this3 = this;\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return this.subscriptions.map(function(subscription) {\n return _this3.notify.apply(_this3, [ subscription, callbackName ].concat(args));\n });\n };\n Subscriptions.prototype.notify = function notify(subscription, callbackName) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n var subscriptions = void 0;\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [ subscription ];\n }\n return subscriptions.map(function(subscription) {\n return typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : undefined;\n });\n };\n Subscriptions.prototype.sendCommand = function sendCommand(subscription, command) {\n var identifier = subscription.identifier;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n };\n return Subscriptions;\n }();\n var Consumer = function() {\n function Consumer(url) {\n classCallCheck(this, Consumer);\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n }\n Consumer.prototype.send = function send(data) {\n return this.connection.send(data);\n };\n Consumer.prototype.connect = function connect() {\n return this.connection.open();\n };\n Consumer.prototype.disconnect = function disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n };\n Consumer.prototype.ensureActiveConnection = function ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n };\n createClass(Consumer, [ {\n key: \"url\",\n get: function get$$1() {\n return createWebSocketURL(this._url);\n }\n } ]);\n return Consumer;\n }();\n function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n if (url && !/^wss?:/i.test(url)) {\n var a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n }\n function createConsumer() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getConfig(\"url\") || INTERNAL.default_mount_path;\n return new Consumer(url);\n }\n function getConfig(name) {\n var element = document.head.querySelector(\"meta[name='action-cable-\" + name + \"']\");\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n exports.Connection = Connection;\n exports.ConnectionMonitor = ConnectionMonitor;\n exports.Consumer = Consumer;\n exports.INTERNAL = INTERNAL;\n exports.Subscription = Subscription;\n exports.Subscriptions = Subscriptions;\n exports.adapters = adapters;\n exports.createWebSocketURL = createWebSocketURL;\n exports.logger = logger;\n exports.createConsumer = createConsumer;\n exports.getConfig = getConfig;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});\n", "// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `rails generate channel` command.\n\nimport { createConsumer } from \"@rails/actioncable\"\n\nexport default createConsumer()\n", "import consumer from \"../channels/consumer\";\n\n// \u26A0 24.09.2026. \u0412\u0456\u043A\u043D\u043E \u0447\u0430\u0442\u0443 \u2014 inline-\u0441\u043A\u0440\u0438\u043F\u0442 \u0443 \u0440\u043E\u0437\u043C\u0456\u0442\u0446\u0456, \u043C\u043E\u0434\u0443\u043B\u0456\u0432 \u043F\u0430\u043A\u0430 \u043D\u0435 \u0431\u0430\u0447\u0438\u0442\u044C.\n// \u0412\u0456\u0434\u0434\u0430\u0454\u043C\u043E \u0439\u043E\u043C\u0443 \u0442\u043E\u0439 \u0441\u0430\u043C\u0438\u0439 consumer, \u0449\u043E\u0431 \u0431\u0435\u0441\u0456\u0434\u0430 \u0436\u0438\u043B\u0430 \u043F\u043E ActionCable, \u0430 \u043D\u0435 \u043E\u043F\u0438\u0442\u0443\u0432\u0430\u043D\u043D\u044F\u043C.\nwindow.gCable = consumer;\n\nfunction navBadgeUserKey() {\n const body = document.body;\n const raw = body && body.dataset && body.dataset.currentUserId;\n return (raw && raw.length > 0) ? raw : 'guest';\n}\n\nfunction navBadgeStorageKey(prefix, key) {\n return `${prefix}:${key}:${navBadgeUserKey()}`;\n}\n\nfunction navBadgeLoadValue(prefix, key) {\n try {\n const raw = window.localStorage.getItem(navBadgeStorageKey(prefix, key));\n return raw ? parseInt(raw, 10) || 0 : 0;\n } catch (error) {\n return 0;\n }\n}\n\nfunction navBadgeSaveValue(prefix, key, value) {\n try {\n window.localStorage.setItem(navBadgeStorageKey(prefix, key), String(value || 0));\n } catch (error) {\n // ignore storage issues\n }\n}\n\nconst NavBadges = (() => {\n const counts = {};\n const totals = {};\n const seenPrefix = 'navBadgeSeen';\n const pendingPrefix = 'navBadgePending';\n const loadedPending = {};\n\n const getElements = (key) => {\n return document.querySelectorAll(`.nav-badge[data-nav-badge=\"${key}\"]`);\n };\n\n const renderBadge = (badge, value) => {\n const numeric = parseInt(value, 10) || 0;\n if (numeric > 0) {\n badge.classList.remove('nav-badge--hidden');\n badge.textContent = numeric > 99 ? '99+' : numeric;\n } else {\n badge.classList.add('nav-badge--hidden');\n badge.textContent = '';\n }\n };\n\n const renderAll = (key) => {\n getElements(key).forEach((badge) => renderBadge(badge, counts[key] || 0));\n };\n\n const loadSeen = (key) => navBadgeLoadValue(seenPrefix, key);\n const saveSeen = (key, value) => navBadgeSaveValue(seenPrefix, key, value);\n const loadPending = (key) => navBadgeLoadValue(pendingPrefix, key);\n const savePending = (key, value) => navBadgeSaveValue(pendingPrefix, key, value);\n\n const updateValue = (key, nextValue) => {\n counts[key] = nextValue;\n if (typeof totals[key] !== 'number') {\n savePending(key, nextValue);\n }\n renderAll(key);\n };\n\n return {\n scan() {\n document.querySelectorAll('.nav-badge[data-nav-badge]').forEach((badge) => {\n const key = badge.dataset.navBadge;\n if (typeof counts[key] !== 'number') {\n counts[key] = 0;\n }\n if (badge.dataset.navBadgeTotal !== undefined) {\n const total = parseInt(badge.dataset.navBadgeTotal, 10);\n if (!Number.isNaN(total)) {\n totals[key] = total;\n const seen = loadSeen(key);\n counts[key] = Math.max(0, total - seen);\n }\n } else if (!loadedPending[key]) {\n counts[key] = loadPending(key);\n loadedPending[key] = true;\n }\n renderBadge(badge, counts[key] || 0);\n });\n },\n increment(key, delta) {\n if (typeof counts[key] !== 'number') {\n counts[key] = 0;\n }\n const nextValue = Math.max(0, (counts[key] || 0) + (delta || 0));\n updateValue(key, nextValue);\n },\n set(key, value) {\n if (typeof counts[key] !== 'number') {\n counts[key] = 0;\n }\n const nextValue = Math.max(0, parseInt(value, 10) || 0);\n updateValue(key, nextValue);\n },\n value(key) {\n if (typeof counts[key] !== 'number') {\n return 0;\n }\n return counts[key] || 0;\n },\n reset(key) {\n if (typeof counts[key] !== 'number') {\n counts[key] = 0;\n }\n updateValue(key, 0);\n },\n acknowledge(key) {\n if (typeof totals[key] === 'number') {\n saveSeen(key, totals[key]);\n } else {\n savePending(key, 0);\n }\n this.reset(key);\n }\n };\n})();\n\nwindow.navBadges = NavBadges;\n\nconst TelegramBadgeTracker = (() => {\n const storagePrefix = 'navBadgePendingConversations';\n let pendingSet = null;\n\n const storageKey = () => navBadgeStorageKey(storagePrefix, 'telegram');\n\n const ensureLoaded = () => {\n if (pendingSet !== null) return;\n pendingSet = loadFromStorage();\n };\n\n const loadFromStorage = () => {\n try {\n const raw = window.localStorage.getItem(storageKey());\n if (!raw) return new Set();\n const parsed = JSON.parse(raw);\n if (!Array.isArray(parsed)) return new Set();\n const cleaned = parsed\n .map((value) => parseInt(value, 10))\n .filter((value) => !Number.isNaN(value));\n return new Set(cleaned);\n } catch (error) {\n return new Set();\n }\n };\n\n const persist = () => {\n try {\n if (!pendingSet || pendingSet.size === 0) {\n window.localStorage.removeItem(storageKey());\n } else {\n window.localStorage.setItem(storageKey(), JSON.stringify(Array.from(pendingSet)));\n }\n } catch (error) {\n // ignore storage issues\n }\n };\n\n const syncBadge = () => {\n if (window.navBadges && typeof window.navBadges.set === 'function' && pendingSet) {\n window.navBadges.set('telegram', pendingSet.size);\n }\n };\n\n return {\n init() {\n ensureLoaded();\n syncBadge();\n },\n add(ids) {\n if (!ids) return;\n ensureLoaded();\n const iterable = Array.isArray(ids) ? ids : Array.from(ids);\n let changed = false;\n iterable.forEach((value) => {\n const numeric = parseInt(value, 10);\n if (Number.isNaN(numeric)) return;\n if (!pendingSet.has(numeric)) {\n pendingSet.add(numeric);\n changed = true;\n }\n });\n if (changed) {\n persist();\n syncBadge();\n }\n },\n clear() {\n ensureLoaded();\n if (!pendingSet || pendingSet.size === 0) return;\n pendingSet.clear();\n persist();\n syncBadge();\n }\n };\n})();\n\nwindow.telegramBadgeTracker = TelegramBadgeTracker;\n\nfunction playBeep() {\n try {\n const ctx = new (window.AudioContext || window.webkitAudioContext)();\n const o = ctx.createOscillator();\n const g = ctx.createGain();\n o.connect(g); g.connect(ctx.destination);\n o.type = 'sine'; o.frequency.value = 880;\n g.gain.value = 0.05;\n o.start(0);\n setTimeout(() => { o.stop(0); ctx.close(); }, 180);\n } catch (e) { /* ignore */ }\n}\n\nfunction pulseOn() {\n const btn = document.querySelector('.tg-fab');\n if (btn) btn.classList.add('pulse');\n navBlinkOn();\n}\n\nfunction pulseOff() {\n const btn = document.querySelector('.tg-fab');\n if (btn) btn.classList.remove('pulse');\n navBlinkOff();\n}\n\nfunction navBlinkOn() {\n document.querySelectorAll('.telegram-nav-link').forEach(link => {\n link.classList.add('blink_me', 'telegram-nav-link--alert');\n });\n}\n\nfunction navBlinkOff() {\n document.querySelectorAll('.telegram-nav-link').forEach(link => {\n link.classList.remove('blink_me', 'telegram-nav-link--alert');\n });\n}\n\nfunction setupClick() {\n const btn = document.querySelector('.tg-fab');\n if (btn) btn.addEventListener('click', () => { pulseOff(); });\n document.querySelectorAll('.telegram-nav-link').forEach(link => {\n link.addEventListener('click', () => { pulseOff(); });\n });\n bindNavBadgeTargets();\n}\n\nfunction bindNavBadgeTargets() {\n document.querySelectorAll('[data-nav-badge-target]').forEach((element) => {\n if (element.dataset.navBadgeBound === 'true') return;\n element.dataset.navBadgeBound = 'true';\n element.addEventListener('click', () => {\n if (!window.navBadges) return;\n const key = element.dataset.navBadgeTarget;\n if (!key) return;\n if (element.dataset.navBadgeReset === 'ack') {\n window.navBadges.acknowledge(key);\n } else {\n window.navBadges.reset(key);\n }\n if (key === 'telegram' && window.telegramBadgeTracker) {\n window.telegramBadgeTracker.clear();\n }\n });\n });\n}\n\nfunction pollPing() {\n const btn = document.querySelector('.tg-fab');\n if (!btn) return; // feature disabled for user\n\n let last = Date.now();\n const tick = () => {\n const url = `/telegram/conversations/ping.json?since=${last/1000.0}`;\n fetch(url, { headers: { 'Accept': 'application/json' } })\n .then(r => r.ok ? r.json() : Promise.reject())\n .then(j => {\n last = Date.now();\n const ev = (j && j.events) || {};\n const collectedIds = new Set();\n (ev.new_conversation_ids || []).forEach((id) => {\n const numeric = parseInt(id, 10);\n if (!Number.isNaN(numeric)) {\n collectedIds.add(numeric);\n }\n });\n (ev.new_message_conversation_ids || []).forEach((id) => {\n const numeric = parseInt(id, 10);\n if (!Number.isNaN(numeric)) {\n collectedIds.add(numeric);\n }\n });\n (ev.assigned_conversation_ids || []).forEach((id) => {\n const numeric = parseInt(id, 10);\n if (!Number.isNaN(numeric)) {\n collectedIds.add(numeric);\n }\n });\n if (collectedIds.size > 0 && window.telegramBadgeTracker) {\n window.telegramBadgeTracker.add(Array.from(collectedIds));\n }\n\n const total = (ev.new_conversations || 0) + (ev.new_messages || 0) + (ev.assigned || 0);\n if (total > 0) {\n playBeep(); pulseOn();\n try {\n if (window.location.pathname.match(/^\\/telegram\\/conversations(\\/)?$/)) {\n // \u0430\u0432\u0442\u043E\u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0441\u043F\u0438\u0441\u043A\u0430 \u0431\u0435\u0441\u0435\u0434\n window.location.reload();\n }\n } catch (e) { /* ignore */ }\n }\n })\n .catch(() => { /* ignore */ })\n .finally(() => setTimeout(tick, 15000));\n };\n setTimeout(tick, 5000);\n}\n\nlet previewClickHandler = null;\nfunction initPreviewToggles() {\n const table = document.querySelector('table.conv');\n if (!table) return;\n\n if (previewClickHandler) {\n document.removeEventListener('click', previewClickHandler);\n previewClickHandler = null;\n }\n\n previewClickHandler = (event) => {\n const closeBtn = event.target.closest('[data-preview-close]');\n if (closeBtn) {\n event.preventDefault();\n const row = closeBtn.closest('tr');\n restorePreviewRow(row);\n return;\n }\n const button = event.target.closest('.js-toggle-preview');\n if (!button || !table.contains(button)) return;\n event.preventDefault();\n togglePreviewRow(button);\n };\n\n document.addEventListener('click', previewClickHandler, true);\n}\n\nfunction restorePreviewRow(row) {\n if (!row || !row.classList.contains('preview-mode')) return;\n const original = row.dataset.originalHtml;\n if (original) {\n const wrapper = row.querySelector('.preview-wrapper');\n if (wrapper) {\n wrapper.classList.remove('ready');\n setTimeout(() => {\n row.innerHTML = original;\n row.classList.remove('preview-mode');\n delete row.dataset.originalHtml;\n reinitializeConversationRow(row);\n }, 220);\n return;\n }\n row.innerHTML = original;\n reinitializeConversationRow(row);\n }\n row.classList.remove('preview-mode');\n delete row.dataset.originalHtml;\n}\n\nfunction closeAllPreviewRows() {\n document.querySelectorAll('tr.preview-mode').forEach((row) => restorePreviewRow(row));\n}\n\nfunction togglePreviewRow(button) {\n console.log('[PREVIEW] toggle clicked', button);\n closeConversationActionsPanels();\n const conversationId = button.dataset.conversationId;\n const row = button.closest('tr');\n if (!conversationId || !row) {\n console.warn('[PREVIEW] missing id or row');\n return;\n }\n\n if (row.classList.contains('preview-mode')) {\n restorePreviewRow(row);\n return;\n }\n\n closeAllPreviewRows();\n row.dataset.originalHtml = row.innerHTML;\n row.classList.add('preview-mode');\n const colSpan = row.children.length || row.dataset.originalColspan || 1;\n row.innerHTML = `\n
\n
${button.dataset.loadingText || '\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430...'}
\n
\n `;\n requestAnimationFrame(() => row.querySelector('.preview-wrapper')?.classList.add('ready'));\n\n const url = button.dataset.previewUrl;\n console.log('[PREVIEW] fetch', url);\n fetch(url, { headers: { 'X-Requested-With': 'XMLHttpRequest' } })\n .then((resp) => {\n console.log('[PREVIEW] response status', resp.status);\n if (!resp.ok) throw new Error('preview_failed');\n return resp.text();\n })\n .then((html) => {\n console.log('[PREVIEW] render html length', html.length);\n row.innerHTML = `\n
${html}
\n `;\n requestAnimationFrame(() => row.querySelector('.preview-wrapper')?.classList.add('ready'));\n })\n .catch((err) => {\n console.warn('[PREVIEW] fetch failed', err);\n row.innerHTML = `\n
${button.dataset.errorText || '\u041E\u0448\u0438\u0431\u043A\u0430'}
\n `;\n requestAnimationFrame(() => row.querySelector('.preview-wrapper')?.classList.add('ready'));\n });\n}\n\nlet activeActionsDropdown = null;\n\nfunction closeConversationActionsPanels() {\n document.querySelectorAll('.js-conversation-actions.open').forEach((menu) => {\n menu.classList.remove('open');\n const toggle = menu.querySelector('.js-conversation-actions-toggle');\n if (toggle) {\n toggle.setAttribute('aria-expanded', 'false');\n }\n });\n activeActionsDropdown = null;\n}\n\nfunction initConversationActionsDropdowns() {\n const containers = document.querySelectorAll('.js-conversation-actions');\n containers.forEach((container) => {\n const toggle = container.querySelector('.js-conversation-actions-toggle');\n if (!toggle || toggle.dataset.dropdownBound === 'true') return;\n toggle.dataset.dropdownBound = 'true';\n toggle.addEventListener('click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n const isOpen = container.classList.contains('open');\n closeConversationActionsPanels();\n if (!isOpen) {\n container.classList.add('open');\n activeActionsDropdown = container;\n toggle.setAttribute('aria-expanded', 'true');\n }\n });\n });\n\n if (!window.tgConversationActionsDocHandler) {\n window.tgConversationActionsDocHandler = (event) => {\n if (!activeActionsDropdown) return;\n if (event.target.closest('.js-conversation-actions') === activeActionsDropdown) return;\n closeConversationActionsPanels();\n };\n document.addEventListener('click', window.tgConversationActionsDocHandler);\n }\n}\n\nfunction initConversationSelects(scope) {\n if (!window.M || !M.FormSelect) return;\n const selects = (scope || document).querySelectorAll('select');\n selects.forEach((select) => {\n if (select.dataset.formSelectBound === 'true') return;\n M.FormSelect.init(select);\n select.dataset.formSelectBound = 'true';\n });\n}\n\nfunction resetDatasetFlag(elements, attr) {\n if (!elements) return;\n const dataAttr = `data-${attr.replace(/([A-Z])/g, '-$1').toLowerCase()}`;\n elements.forEach((el) => {\n if (!el) return;\n if (el.dataset && Object.prototype.hasOwnProperty.call(el.dataset, attr)) {\n delete el.dataset[attr];\n }\n if (el.hasAttribute(dataAttr)) {\n el.removeAttribute(dataAttr);\n }\n });\n}\n\nfunction reinitializeConversationRow(row) {\n if (!row) return;\n resetDatasetFlag(row.querySelectorAll('.js-conversation-actions-toggle'), 'dropdownBound');\n resetDatasetFlag(row.querySelectorAll('form.js-conversation-action-form'), 'remoteBound');\n resetDatasetFlag(row.querySelectorAll('select'), 'formSelectBound');\n initConversationActionsDropdowns();\n initConversationRemoteActions();\n initConversationSelects(row);\n}\n\nfunction initConversationToggleHandlers() {\n if (window.tgConversationToggleHandler) return;\n window.tgConversationToggleHandler = (event) => {\n const replyBtn = event.target.closest('.js-toggle-reply');\n if (replyBtn) {\n event.preventDefault();\n closeConversationActionsPanels();\n togglePanelVisibility(replyBtn.dataset.target);\n return;\n }\n const assignBtn = event.target.closest('.js-toggle-assign');\n if (assignBtn) {\n event.preventDefault();\n togglePanelVisibility(assignBtn.dataset.target, true);\n }\n };\n document.addEventListener('click', window.tgConversationToggleHandler);\n}\n\nfunction togglePanelVisibility(targetId, initSelect = false) {\n if (!targetId) return;\n const el = document.getElementById(targetId);\n if (!el) return;\n const shouldShow = el.style.display === 'none' || el.style.display === '';\n el.style.display = shouldShow ? 'block' : 'none';\n if (shouldShow && initSelect) {\n initConversationSelects(el);\n }\n}\n\nfunction initConversationRemoteActions() {\n const forms = document.querySelectorAll('form.js-conversation-action-form');\n if (!forms.length) return;\n forms.forEach((form) => {\n if (form.dataset.remoteBound === 'true') return;\n form.dataset.remoteBound = 'true';\n form.addEventListener('submit', (event) => {\n if (form.dataset.remoteDisabled === 'true') return;\n event.preventDefault();\n submitConversationAction(form);\n });\n });\n}\n\nfunction submitConversationAction(form) {\n closeConversationActionsPanels();\n if (form.dataset.remoteProcessing === 'true') return;\n const confirmMessage = form.dataset.confirmMessage;\n if (confirmMessage && !window.confirm(confirmMessage)) {\n return;\n }\n form.dataset.remoteProcessing = 'true';\n const button = form.querySelector('button[type=\"submit\"], input[type=\"submit\"]');\n if (button) {\n button.disabled = true;\n }\n const formData = new FormData(form);\n const method = (form.getAttribute('method') || 'post').toUpperCase();\n fetch(form.action, {\n method: method,\n body: formData,\n credentials: 'same-origin',\n headers: {\n 'Accept': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest'\n }\n })\n .then((response) => {\n if (!response.ok) {\n return response.json().catch(() => ({})).then((body) => {\n const error = body && body.error ? body.error : '\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435';\n throw new Error(error);\n });\n }\n return response.json().catch(() => ({}));\n })\n .then((payload) => {\n const row = form.closest('tr');\n if (row) {\n fadeOutConversationRow(row);\n }\n const message = payload && (payload.message || payload.notice);\n if (message) {\n showConversationToast(message, false);\n }\n })\n .catch((error) => {\n console.warn('[TG] remote action failed', error);\n showConversationToast(error && error.message ? error.message : '\u041E\u0448\u0438\u0431\u043A\u0430 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F', true);\n })\n .finally(() => {\n form.dataset.remoteProcessing = 'false';\n if (button) {\n button.disabled = false;\n }\n });\n}\n\nfunction fadeOutConversationRow(row) {\n row.classList.add('conversation-removing');\n setTimeout(() => {\n row.remove();\n }, 280);\n}\n\nfunction showConversationToast(message, isError) {\n if (!message) return;\n if (window.M && M.toast) {\n const classes = isError ? 'red darken-2' : 'green darken-2';\n M.toast({ html: message, classes: classes });\n } else if (isError) {\n alert(message);\n } else {\n console.log(message);\n }\n}\n\ndocument.addEventListener('turbolinks:load', function () {\n if (window.navBadges) {\n window.navBadges.scan();\n }\n if (window.telegramBadgeTracker) {\n window.telegramBadgeTracker.init();\n }\n setupClick();\n pollPing();\n if (window.location.pathname.match(/^\\/telegram\\/conversations/)) {\n pulseOff();\n if (window.navBadges) {\n window.navBadges.reset('telegram');\n }\n if (window.telegramBadgeTracker) {\n window.telegramBadgeTracker.clear();\n }\n initPreviewToggles();\n initConversationRemoteActions();\n initConversationActionsDropdowns();\n initConversationToggleHandlers();\n initConversationSelects(document);\n }\n\n if (window.navBadges && window.location.pathname.match(/^\\/part_prices(\\/shop)?/)) {\n window.navBadges.acknowledge('store');\n }\n\n // Optional: ActionCable notifications (works if cable token configured)\n try {\n consumer.subscriptions.create({ channel: 'Telegram::NotificationsChannel' }, {\n received(data) {\n if (!data) return;\n if (['conversation.created', 'message.new', 'conversation.assigned'].includes(data.type)) {\n playBeep(); pulseOn();\n }\n }\n });\n } catch (e) { /* ignore cable errors */ }\n});\n"], "mappings": "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", "names": ["exports", "now", "secondsSince", "clamp", "ConnectionMonitor", "Connection", "message", "extend", "Subscription", "Subscriptions", "subscription", "Consumer", "createConsumer"] }