Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/im/v2/lib/layout/dist/ |
Upload File : |
{"version":3,"file":"layout.bundle.js","sources":["../src/layout.js"],"sourcesContent":["import { Extension } from 'main.core';\nimport { EventEmitter, BaseEvent } from 'main.core.events';\n\nimport { Core } from 'im.v2.application.core';\nimport { Analytics } from 'im.v2.lib.analytics';\nimport { LocalStorageManager } from 'im.v2.lib.local-storage';\nimport { ChatType, EventType, Layout, LocalStorageKey, ErrorCode } from 'im.v2.const';\nimport { Logger } from 'im.v2.lib.logger';\nimport { ChannelManager } from 'im.v2.lib.channel';\nimport { AccessManager } from 'im.v2.lib.access';\nimport { FeatureManager } from 'im.v2.lib.feature';\nimport { BulkActionsManager } from 'im.v2.lib.bulk-actions';\n\nimport type { SettingsCollection } from 'main.core.collections';\nimport type { ImModelLayout, ImModelChat } from 'im.v2.model';\n\ntype EntityId = string;\n\nconst TypesWithoutContext: Set<string> = new Set([ChatType.comment]);\nconst LayoutsWithoutLastOpenedElement: Set<string> = new Set([Layout.channel.name, Layout.market.name]);\n\nexport class LayoutManager\n{\n\tstatic #instance: LayoutManager;\n\n\t#lastOpenedElement: { [layoutName: string]: EntityId } = {};\n\n\tstatic getInstance(): LayoutManager\n\t{\n\t\tif (!this.#instance)\n\t\t{\n\t\t\tthis.#instance = new this();\n\t\t}\n\n\t\treturn this.#instance;\n\t}\n\n\tstatic init(): void\n\t{\n\t\tLayoutManager.getInstance();\n\t}\n\n\tconstructor()\n\t{\n\t\tEventEmitter.subscribe(EventType.dialog.goToMessageContext, this.#onGoToMessageContext.bind(this));\n\t\tEventEmitter.subscribe(EventType.desktop.onReload, this.#onDesktopReload.bind(this));\n\t}\n\n\tasync setLayout(config: ImModelLayout): Promise\n\t{\n\t\tif (config.contextId)\n\t\t{\n\t\t\tconst hasAccess = await this.#handleContextAccess(config);\n\t\t\tif (!hasAccess)\n\t\t\t{\n\t\t\t\treturn Promise.resolve();\n\t\t\t}\n\t\t}\n\n\t\tif (config.entityId)\n\t\t{\n\t\t\tthis.setLastOpenedElement(config.name, config.entityId);\n\t\t}\n\n\t\tif (this.#isSameChat(config))\n\t\t{\n\t\t\tthis.#handleSameChatReopen(config);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.#handleLayoutChange();\n\t\t}\n\n\t\tthis.#sendAnalytics(config);\n\n\t\treturn Core.getStore().dispatch('application/setLayout', config);\n\t}\n\n\tgetLayout(): ImModelLayout\n\t{\n\t\treturn Core.getStore().getters['application/getLayout'];\n\t}\n\n\tsaveCurrentLayout(): void\n\t{\n\t\tconst currentLayout = this.getLayout();\n\n\t\tLocalStorageManager.getInstance().set(LocalStorageKey.layoutConfig, {\n\t\t\tname: currentLayout.name,\n\t\t\tentityId: currentLayout.entityId,\n\t\t});\n\t}\n\n\tprepareInitialLayout(): Promise\n\t{\n\t\tconst layoutConfig = LocalStorageManager.getInstance().get(LocalStorageKey.layoutConfig);\n\t\tif (!layoutConfig)\n\t\t{\n\t\t\treturn this.setLayout({ name: Layout.chat.name });\n\t\t}\n\n\t\tLogger.warn('LayoutManager: last layout was restored', layoutConfig);\n\n\t\tLocalStorageManager.getInstance().remove(LocalStorageKey.layoutConfig);\n\n\t\treturn this.setLayout(layoutConfig);\n\t}\n\n\tgetLastOpenedElement(layoutName: string): null | string\n\t{\n\t\treturn this.#lastOpenedElement[layoutName] ?? null;\n\t}\n\n\tsetLastOpenedElement(layoutName: string, entityId: string): void\n\t{\n\t\tif (LayoutsWithoutLastOpenedElement.has(layoutName))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#lastOpenedElement[layoutName] = entityId;\n\t}\n\n\tclearCurrentLayoutEntityId(): void\n\t{\n\t\tconst currentLayoutName = this.getLayout().name;\n\t\tvoid this.setLayout({ name: currentLayoutName });\n\t\tvoid this.deleteLastOpenedElement(currentLayoutName);\n\t}\n\n\tisChatContextAvailable(dialogId: string): boolean\n\t{\n\t\tif (!this.getLayout().contextId)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tconst { type }: ImModelChat = this.#getChat(dialogId);\n\n\t\treturn !TypesWithoutContext.has(type);\n\t}\n\n\tdestroy(): void\n\t{\n\t\tEventEmitter.unsubscribe(EventType.dialog.goToMessageContext, this.#onGoToMessageContext);\n\t\tEventEmitter.unsubscribe(EventType.desktop.onReload, this.#onDesktopReload.bind(this));\n\t}\n\n\tdeleteLastOpenedElement(layoutName: string): void\n\t{\n\t\tif (LayoutsWithoutLastOpenedElement.has(layoutName))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tdelete this.#lastOpenedElement[layoutName];\n\t}\n\n\tdeleteLastOpenedElementById(entityId: string): void\n\t{\n\t\tObject.entries(this.#lastOpenedElement).forEach(([layoutName, lastOpenedId]) => {\n\t\t\tif (lastOpenedId === entityId)\n\t\t\t{\n\t\t\t\tdelete this.#lastOpenedElement[layoutName];\n\t\t\t}\n\t\t});\n\t}\n\n\tisEmbeddedMode(): boolean\n\t{\n\t\treturn this.isAirDesignEnabled() && this.isQuickAccessHidden();\n\t}\n\n\tisAirDesignEnabled(): boolean\n\t{\n\t\tconst settings: SettingsCollection = Extension.getSettings('im.v2.lib.layout');\n\n\t\treturn settings.get('isAirDesignEnabled', true);\n\t}\n\n\tisQuickAccessHidden(): boolean\n\t{\n\t\tconst settings: SettingsCollection = Extension.getSettings('im.v2.lib.layout');\n\n\t\treturn settings.get('isQuickAccessHidden', false);\n\t}\n\n\tasync #onGoToMessageContext(event: BaseEvent<{dialogId: string, messageId: number}>): void\n\t{\n\t\tconst { dialogId, messageId } = event.getData();\n\t\tif (this.getLayout().entityId === dialogId)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst { type }: ImModelChat = this.#getChat(dialogId);\n\t\tif (TypesWithoutContext.has(type))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tvoid this.setLayout({\n\t\t\tname: Layout.chat.name,\n\t\t\tentityId: dialogId,\n\t\t\tcontextId: messageId,\n\t\t});\n\t}\n\n\t#onDesktopReload()\n\t{\n\t\tthis.saveCurrentLayout();\n\t}\n\n\t#sendAnalytics(config: ImModelLayout)\n\t{\n\t\tconst currentLayout = this.getLayout();\n\t\tif (currentLayout.name === config.name)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (config.name === Layout.copilot.name)\n\t\t{\n\t\t\tAnalytics.getInstance().copilot.onOpenTab();\n\t\t}\n\n\t\tAnalytics.getInstance().onOpenTab(config.name);\n\t}\n\n\t#isSameChat(config: ImModelLayout): boolean\n\t{\n\t\tconst { name, entityId } = this.getLayout();\n\t\tconst sameLayout = name === config.name;\n\t\tconst sameEntityId = entityId && entityId === config.entityId;\n\n\t\treturn sameLayout && sameEntityId;\n\t}\n\n\t#handleLayoutChange()\n\t{\n\t\tthis.#closeChannelComments();\n\t\tthis.#handleChatChange();\n\t}\n\n\t#handleChatChange()\n\t{\n\t\tconst { name, entityId } = this.getLayout();\n\t\tconst CHAT_LAYOUTS = new Set([\n\t\t\tLayout.chat.name,\n\t\t\tLayout.channel.name,\n\t\t\tLayout.copilot.name,\n\t\t\tLayout.openlines.name,\n\t\t\tLayout.openlinesV2.name,\n\t\t\tLayout.collab.name,\n\t\t]);\n\n\t\tif (CHAT_LAYOUTS.has(name) && entityId)\n\t\t{\n\t\t\tthis.#clearBulkActionsCollection();\n\t\t}\n\t}\n\n\t#handleSameChatReopen(config: ImModelLayout): void\n\t{\n\t\tconst { entityId: dialogId, contextId } = config;\n\n\t\tthis.#closeChannelComments();\n\n\t\tif (contextId)\n\t\t{\n\t\t\tEventEmitter.emit(EventType.dialog.goToMessageContext, {\n\t\t\t\tmessageId: contextId,\n\t\t\t\tdialogId,\n\t\t\t});\n\t\t}\n\t}\n\n\t#clearBulkActionsCollection()\n\t{\n\t\tBulkActionsManager.getInstance().clearCollection();\n\t}\n\n\t#closeChannelComments()\n\t{\n\t\tconst { entityId: dialogId = '' } = this.getLayout();\n\t\tconst isChannelOpened = ChannelManager.isChannel(dialogId);\n\t\tif (isChannelOpened)\n\t\t{\n\t\t\tEventEmitter.emit(EventType.dialog.closeComments);\n\t\t}\n\t}\n\n\tasync #handleContextAccess(config: ImModelLayout): Promise<boolean>\n\t{\n\t\tconst { contextId: messageId, entityId: dialogId } = config;\n\t\tif (!messageId)\n\t\t{\n\t\t\treturn Promise.resolve(true);\n\t\t}\n\n\t\tconst { hasAccess, errorCode } = await AccessManager.checkMessageAccess(messageId);\n\t\tif (!hasAccess && errorCode === ErrorCode.message.accessDeniedByTariff)\n\t\t{\n\t\t\tAnalytics.getInstance().historyLimit.onGoToContextLimitExceeded({ dialogId });\n\t\t\tFeatureManager.chatHistory.openFeatureSlider();\n\n\t\t\treturn Promise.resolve(false);\n\t\t}\n\n\t\treturn Promise.resolve(true);\n\t}\n\n\t#getChat(dialogId: string): ImModelChat\n\t{\n\t\treturn Core.getStore().getters['chats/get'](dialogId, true);\n\t}\n}\n"],"names":["TypesWithoutContext","Set","ChatType","comment","LayoutsWithoutLastOpenedElement","Layout","channel","name","market","LayoutManager","getInstance","init","constructor","EventEmitter","subscribe","EventType","dialog","goToMessageContext","bind","desktop","onReload","setLayout","config","contextId","hasAccess","Promise","resolve","entityId","setLastOpenedElement","Core","getStore","dispatch","getLayout","getters","saveCurrentLayout","currentLayout","LocalStorageManager","set","LocalStorageKey","layoutConfig","prepareInitialLayout","get","chat","Logger","warn","remove","getLastOpenedElement","layoutName","has","clearCurrentLayoutEntityId","currentLayoutName","deleteLastOpenedElement","isChatContextAvailable","dialogId","type","destroy","unsubscribe","deleteLastOpenedElementById","Object","entries","forEach","lastOpenedId","isEmbeddedMode","isAirDesignEnabled","isQuickAccessHidden","settings","Extension","getSettings","event","messageId","getData","copilot","Analytics","onOpenTab","sameLayout","sameEntityId","CHAT_LAYOUTS","openlines","openlinesV2","collab","emit","BulkActionsManager","clearCollection","isChannelOpened","ChannelManager","isChannel","closeComments","errorCode","AccessManager","checkMessageAccess","ErrorCode","message","accessDeniedByTariff","historyLimit","onGoToContextLimitExceeded","FeatureManager","chatHistory","openFeatureSlider"],"mappings":"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"}