R: Refactor feature dependencies
This commit is contained in:
parent
be2ea32674
commit
ba11c1f82b
|
@ -1,4 +1,5 @@
|
|||
import { useAuthSuspense, useLogout } from '@/features/auth';
|
||||
import { useAuthSuspense } from '@/features/auth';
|
||||
import { useLogout } from '@/features/auth/backend/useLogout';
|
||||
|
||||
import { Dropdown, DropdownButton } from '@/components/Dropdown';
|
||||
import {
|
||||
|
|
|
@ -1,125 +0,0 @@
|
|||
import { LocationHead } from '@/features/library/models/library';
|
||||
import { ExpressionStatus } from '@/features/rsform/models/rsform';
|
||||
import { CstMatchMode, DependencyMode } from '@/features/rsform/stores/cstSearch';
|
||||
|
||||
import {
|
||||
IconAlias,
|
||||
IconBusiness,
|
||||
IconFilter,
|
||||
IconFormula,
|
||||
IconGraphCollapse,
|
||||
IconGraphExpand,
|
||||
IconGraphInputs,
|
||||
IconGraphOutputs,
|
||||
IconHide,
|
||||
IconMoveDown,
|
||||
IconMoveUp,
|
||||
type IconProps,
|
||||
IconPublic,
|
||||
IconSettings,
|
||||
IconShow,
|
||||
IconStatusError,
|
||||
IconStatusIncalculable,
|
||||
IconStatusOK,
|
||||
IconStatusUnknown,
|
||||
IconSubfolders,
|
||||
IconTemplates,
|
||||
IconTerm,
|
||||
IconText,
|
||||
IconUser
|
||||
} from './Icons';
|
||||
|
||||
export interface DomIconProps<RequestData> extends IconProps {
|
||||
value: RequestData;
|
||||
}
|
||||
|
||||
/** Icon for visibility. */
|
||||
export function VisibilityIcon({ value, size = '1.25rem', className }: DomIconProps<boolean>) {
|
||||
if (value) {
|
||||
return <IconShow size={size} className={className ?? 'text-ok-600'} />;
|
||||
} else {
|
||||
return <IconHide size={size} className={className ?? 'text-warn-600'} />;
|
||||
}
|
||||
}
|
||||
|
||||
/** Icon for subfolders. */
|
||||
export function SubfoldersIcon({ value, size = '1.25rem', className }: DomIconProps<boolean>) {
|
||||
if (value) {
|
||||
return <IconSubfolders size={size} className={className ?? 'text-ok-600'} />;
|
||||
} else {
|
||||
return <IconSubfolders size={size} className={className ?? 'text-sec-600'} />;
|
||||
}
|
||||
}
|
||||
|
||||
/** Icon for location. */
|
||||
export function LocationIcon({ value, size = '1.25rem', className }: DomIconProps<string>) {
|
||||
switch (value.substring(0, 2) as LocationHead) {
|
||||
case LocationHead.COMMON:
|
||||
return <IconPublic size={size} className={className ?? 'text-sec-600'} />;
|
||||
case LocationHead.LIBRARY:
|
||||
return <IconTemplates size={size} className={className ?? 'text-warn-600'} />;
|
||||
case LocationHead.PROJECTS:
|
||||
return <IconBusiness size={size} className={className ?? 'text-sec-600'} />;
|
||||
case LocationHead.USER:
|
||||
return <IconUser size={size} className={className ?? 'text-ok-600'} />;
|
||||
}
|
||||
}
|
||||
|
||||
/** Icon for term graph dependency mode. */
|
||||
export function DependencyIcon({ value, size = '1.25rem', className }: DomIconProps<DependencyMode>) {
|
||||
switch (value) {
|
||||
case DependencyMode.ALL:
|
||||
return <IconSettings size={size} className={className} />;
|
||||
case DependencyMode.OUTPUTS:
|
||||
return <IconGraphOutputs size={size} className={className ?? 'text-sec-600'} />;
|
||||
case DependencyMode.INPUTS:
|
||||
return <IconGraphInputs size={size} className={className ?? 'text-sec-600'} />;
|
||||
case DependencyMode.EXPAND_OUTPUTS:
|
||||
return <IconGraphExpand size={size} className={className ?? 'text-sec-600'} />;
|
||||
case DependencyMode.EXPAND_INPUTS:
|
||||
return <IconGraphCollapse size={size} className={className ?? 'text-sec-600'} />;
|
||||
}
|
||||
}
|
||||
|
||||
/** Icon for constituenta match mode. */
|
||||
export function MatchModeIcon({ value, size = '1.25rem', className }: DomIconProps<CstMatchMode>) {
|
||||
switch (value) {
|
||||
case CstMatchMode.ALL:
|
||||
return <IconFilter size={size} className={className} />;
|
||||
case CstMatchMode.TEXT:
|
||||
return <IconText size={size} className={className ?? 'text-sec-600'} />;
|
||||
case CstMatchMode.EXPR:
|
||||
return <IconFormula size={size} className={className ?? 'text-sec-600'} />;
|
||||
case CstMatchMode.TERM:
|
||||
return <IconTerm size={size} className={className ?? 'text-sec-600'} />;
|
||||
case CstMatchMode.NAME:
|
||||
return <IconAlias size={size} className={className ?? 'text-sec-600'} />;
|
||||
}
|
||||
}
|
||||
|
||||
/** Icon for expression status. */
|
||||
export function StatusIcon({ value, size = '1.25rem', className }: DomIconProps<ExpressionStatus>) {
|
||||
switch (value) {
|
||||
case ExpressionStatus.VERIFIED:
|
||||
case ExpressionStatus.PROPERTY:
|
||||
return <IconStatusOK size={size} className={className} />;
|
||||
|
||||
case ExpressionStatus.UNKNOWN:
|
||||
return <IconStatusUnknown size={size} className={className} />;
|
||||
case ExpressionStatus.INCALCULABLE:
|
||||
return <IconStatusIncalculable size={size} className={className} />;
|
||||
|
||||
case ExpressionStatus.INCORRECT:
|
||||
case ExpressionStatus.UNDEFINED:
|
||||
return <IconStatusError size={size} className={className} />;
|
||||
}
|
||||
}
|
||||
|
||||
/** Icon for relocation direction. */
|
||||
export function RelocateUpIcon({ value, size = '1.25rem', className }: DomIconProps<boolean>) {
|
||||
if (value) {
|
||||
return <IconMoveUp size={size} className={className ?? 'text-sec-600'} />;
|
||||
} else {
|
||||
return <IconMoveDown size={size} className={className ?? 'text-sec-600'} />;
|
||||
}
|
||||
}
|
|
@ -155,6 +155,10 @@ export { LuCircleDashed as IconAnimation } from 'react-icons/lu';
|
|||
export { LuCircle as IconAnimationOff } from 'react-icons/lu';
|
||||
|
||||
// ===== Custom elements ======
|
||||
export interface DomIconProps<RequestData> extends IconProps {
|
||||
value: RequestData;
|
||||
}
|
||||
|
||||
interface IconSVGProps {
|
||||
viewBox: string;
|
||||
size?: string;
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
|
||||
import clsx from 'clsx';
|
||||
|
||||
import { BadgeHelp, type HelpTopic } from '@/features/help';
|
||||
import { type HelpTopic } from '@/features/help';
|
||||
import { BadgeHelp } from '@/features/help/components';
|
||||
|
||||
import { useEscapeKey } from '@/hooks/useEscapeKey';
|
||||
import { useDialogsStore } from '@/stores/dialogs';
|
||||
|
@ -130,7 +131,7 @@ export function ModalForm({
|
|||
{children}
|
||||
</div>
|
||||
|
||||
<div className='z-modalControls my-2 flex gap-12 justify-center text-sm'>
|
||||
<div className='z-modal-controls my-2 flex gap-12 justify-center text-sm'>
|
||||
<SubmitButton
|
||||
autoFocus
|
||||
text={submitText}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import clsx from 'clsx';
|
||||
|
||||
import { BadgeHelp } from '@/features/help';
|
||||
import { BadgeHelp } from '@/features/help/components';
|
||||
|
||||
import { useEscapeKey } from '@/hooks/useEscapeKey';
|
||||
import { useDialogsStore } from '@/stores/dialogs';
|
||||
|
@ -75,7 +75,7 @@ export function ModalView({
|
|||
{children}
|
||||
</div>
|
||||
|
||||
<div className='z-modalControls my-2 flex gap-12 justify-center text-sm'>
|
||||
<div className='z-modal-controls my-2 flex gap-12 justify-center text-sm'>
|
||||
<Button text='Закрыть' className='min-w-[7rem]' onClick={hideDialog} />
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
export { ExpectedAnonymous } from './ExpectedAnonymous';
|
||||
export { RequireAuth } from './RequireAuth';
|
|
@ -1,5 +1,2 @@
|
|||
export * from './backend/types';
|
||||
export { useAuthSuspense } from './backend/useAuth';
|
||||
export { useChangePassword } from './backend/useChangePassword';
|
||||
export { useLogout } from './backend/useLogout';
|
||||
export { ExpectedAnonymous } from './components/ExpectedAnonymous';
|
||||
export { RequireAuth } from './components/RequireAuth';
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import clsx from 'clsx';
|
||||
|
||||
import { CstClass } from '@/features/rsform';
|
||||
import { colorBgCstClass } from '@/features/rsform/colors';
|
||||
import { describeCstClass, labelCstClass } from '@/features/rsform/labels';
|
||||
import { CstClass } from '@/features/rsform/models/rsform';
|
||||
|
||||
import { prefixes } from '@/utils/constants';
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import clsx from 'clsx';
|
||||
|
||||
import { ExpressionStatus } from '@/features/rsform';
|
||||
import { colorBgCstStatus } from '@/features/rsform/colors';
|
||||
import { describeExpressionStatus, labelExpressionStatus } from '@/features/rsform/labels';
|
||||
import { ExpressionStatus } from '@/features/rsform/models/rsform';
|
||||
|
||||
import { prefixes } from '@/utils/constants';
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
export { BadgeHelp } from './BadgeHelp';
|
|
@ -1,2 +1 @@
|
|||
export { BadgeHelp } from './components/BadgeHelp';
|
||||
export { HelpTopic } from './models/helpTopic';
|
||||
|
|
|
@ -5,7 +5,7 @@ import {
|
|||
type IVersionCreatedResponse,
|
||||
schemaRSForm,
|
||||
schemaVersionCreatedResponse
|
||||
} from '@/features/rsform/backend/types';
|
||||
} from '@/features/rsform';
|
||||
|
||||
import { axiosDelete, axiosGet, axiosPatch, axiosPost } from '@/backend/apiTransport';
|
||||
import { DELAYS, KEYS } from '@/backend/configuration';
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { type IOperationSchemaDTO } from '@/features/oss/backend/types';
|
||||
import { type IRSFormDTO } from '@/features/rsform/backend/types';
|
||||
import { type IOperationSchemaDTO } from '@/features/oss';
|
||||
import { type IRSFormDTO } from '@/features/rsform';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { type IOperationSchemaDTO } from '@/features/oss/backend/types';
|
||||
import { type IRSFormDTO } from '@/features/rsform/backend/types';
|
||||
import { type IOperationSchemaDTO } from '@/features/oss';
|
||||
import { type IRSFormDTO } from '@/features/rsform';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { type IOperationSchemaDTO } from '@/features/oss/backend/types';
|
||||
import { type IRSFormDTO } from '@/features/rsform/backend/types';
|
||||
import { type IOperationSchemaDTO } from '@/features/oss';
|
||||
import { type IRSFormDTO } from '@/features/rsform';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { type IOperationSchemaDTO } from '@/features/oss/backend/types';
|
||||
import { type IRSFormDTO } from '@/features/rsform/backend/types';
|
||||
import { type IOperationSchemaDTO } from '@/features/oss';
|
||||
import { type IRSFormDTO } from '@/features/rsform';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { type IOperationSchemaDTO } from '@/features/oss/backend/types';
|
||||
import { type IRSFormDTO } from '@/features/rsform/backend/types';
|
||||
import { type IOperationSchemaDTO } from '@/features/oss';
|
||||
import { type IRSFormDTO } from '@/features/rsform';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { type IRSFormDTO } from '@/features/rsform/backend/types';
|
||||
import { type IRSFormDTO } from '@/features/rsform';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { type IRSFormDTO } from '@/features/rsform/backend/types';
|
||||
import { type IRSFormDTO } from '@/features/rsform';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { LocationIcon } from '@/components/DomainIcons';
|
||||
import { globalIDs } from '@/utils/constants';
|
||||
|
||||
import { IconLocationHead } from './IconLocationHead';
|
||||
|
||||
interface BadgeLocationProps {
|
||||
/** Location to display. */
|
||||
location: string;
|
||||
|
@ -12,7 +13,7 @@ interface BadgeLocationProps {
|
|||
export function BadgeLocation({ location }: BadgeLocationProps) {
|
||||
return (
|
||||
<div className='pl-2' data-tooltip-id={globalIDs.tooltip} data-tooltip-content={location}>
|
||||
<LocationIcon value={location} size='1.25rem' />
|
||||
<IconLocationHead value={location} size='1.25rem' />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -2,7 +2,8 @@ import { Suspense } from 'react';
|
|||
import { useIntl } from 'react-intl';
|
||||
|
||||
import { urls, useConceptNavigation } from '@/app';
|
||||
import { InfoUsers, SelectUser, useLabelUser, useRoleStore, UserRole } from '@/features/users';
|
||||
import { useLabelUser, useRoleStore, UserRole } from '@/features/users';
|
||||
import { InfoUsers, SelectUser } from '@/features/users/components';
|
||||
|
||||
import { Overlay, Tooltip } from '@/components/Container';
|
||||
import { MiniButton } from '@/components/Control';
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
import { type DomIconProps, IconPrivate, IconProtected, IconPublic } from '@/components/Icons';
|
||||
|
||||
import { AccessPolicy } from '../backend/types';
|
||||
|
||||
/** Icon for access policy. */
|
||||
export function IconAccessPolicy({ value, size = '1.25rem', className }: DomIconProps<AccessPolicy>) {
|
||||
switch (value) {
|
||||
case AccessPolicy.PRIVATE:
|
||||
return <IconPrivate size={size} className={className ?? 'text-warn-600'} />;
|
||||
case AccessPolicy.PROTECTED:
|
||||
return <IconProtected size={size} className={className ?? 'text-sec-600'} />;
|
||||
case AccessPolicy.PUBLIC:
|
||||
return <IconPublic size={size} className={className ?? 'text-ok-600'} />;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
import { type DomIconProps, IconHide, IconShow } from '@/components/Icons';
|
||||
|
||||
/** Icon for visibility. */
|
||||
export function IconItemVisibility({ value, size = '1.25rem', className }: DomIconProps<boolean>) {
|
||||
if (value) {
|
||||
return <IconShow size={size} className={className ?? 'text-ok-600'} />;
|
||||
} else {
|
||||
return <IconHide size={size} className={className ?? 'text-warn-600'} />;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
import { type DomIconProps, IconOSS, IconRSForm } from '@/components/Icons';
|
||||
|
||||
import { LibraryItemType } from '../backend/types';
|
||||
|
||||
/** Icon for library item type. */
|
||||
export function IconLibraryItemType({ value, size = '1.25rem', className }: DomIconProps<LibraryItemType>) {
|
||||
switch (value) {
|
||||
case LibraryItemType.RSFORM:
|
||||
return <IconRSForm size={size} className={className ?? 'text-sec-600'} />;
|
||||
case LibraryItemType.OSS:
|
||||
return <IconOSS size={size} className={className ?? 'text-ok-600'} />;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
import { type DomIconProps, IconBusiness, IconPublic, IconTemplates, IconUser } from '@/components/Icons';
|
||||
|
||||
import { LocationHead } from '../models/library';
|
||||
|
||||
/** Icon for location. */
|
||||
export function IconLocationHead({ value, size = '1.25rem', className }: DomIconProps<string>) {
|
||||
switch (value.substring(0, 2) as LocationHead) {
|
||||
case LocationHead.COMMON:
|
||||
return <IconPublic size={size} className={className ?? 'text-sec-600'} />;
|
||||
case LocationHead.LIBRARY:
|
||||
return <IconTemplates size={size} className={className ?? 'text-warn-600'} />;
|
||||
case LocationHead.PROJECTS:
|
||||
return <IconBusiness size={size} className={className ?? 'text-sec-600'} />;
|
||||
case LocationHead.USER:
|
||||
return <IconUser size={size} className={className ?? 'text-ok-600'} />;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
import { type DomIconProps, IconSubfolders } from '@/components/Icons';
|
||||
|
||||
/** Icon for subfolders. */
|
||||
export function IconShowSubfolders({ value, size = '1.25rem', className }: DomIconProps<boolean>) {
|
||||
if (value) {
|
||||
return <IconSubfolders size={size} className={className ?? 'text-ok-600'} />;
|
||||
} else {
|
||||
return <IconSubfolders size={size} className={className ?? 'text-sec-600'} />;
|
||||
}
|
||||
}
|
|
@ -1,15 +1,15 @@
|
|||
'use client';
|
||||
|
||||
import { MiniButton } from '@/components/Control';
|
||||
import { type DomIconProps } from '@/components/DomainIcons';
|
||||
import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown';
|
||||
import { IconPrivate, IconProtected, IconPublic } from '@/components/Icons';
|
||||
import { type Styling } from '@/components/props';
|
||||
import { prefixes } from '@/utils/constants';
|
||||
|
||||
import { AccessPolicy } from '../backend/types';
|
||||
import { describeAccessPolicy, labelAccessPolicy } from '../labels';
|
||||
|
||||
import { IconAccessPolicy } from './IconAccessPolicy';
|
||||
|
||||
interface SelectAccessPolicyProps extends Styling {
|
||||
value: AccessPolicy;
|
||||
onChange: (value: AccessPolicy) => void;
|
||||
|
@ -34,7 +34,7 @@ export function SelectAccessPolicy({ value, disabled, stretchLeft, onChange, ...
|
|||
title={`Доступ: ${labelAccessPolicy(value)}`}
|
||||
hideTitle={menu.isOpen}
|
||||
className='h-full'
|
||||
icon={<PolicyIcon value={value} size='1.25rem' />}
|
||||
icon={<IconAccessPolicy value={value} size='1.25rem' />}
|
||||
onClick={menu.toggle}
|
||||
disabled={disabled}
|
||||
/>
|
||||
|
@ -44,7 +44,7 @@ export function SelectAccessPolicy({ value, disabled, stretchLeft, onChange, ...
|
|||
key={`${prefixes.policy_list}${index}`}
|
||||
text={labelAccessPolicy(item)}
|
||||
title={describeAccessPolicy(item)}
|
||||
icon={<PolicyIcon value={item} size='1rem' />}
|
||||
icon={<IconAccessPolicy value={item} size='1rem' />}
|
||||
onClick={() => handleChange(item)}
|
||||
/>
|
||||
))}
|
||||
|
@ -52,15 +52,3 @@ export function SelectAccessPolicy({ value, disabled, stretchLeft, onChange, ...
|
|||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
/** Icon for access policy. */
|
||||
function PolicyIcon({ value, size = '1.25rem', className }: DomIconProps<AccessPolicy>) {
|
||||
switch (value) {
|
||||
case AccessPolicy.PRIVATE:
|
||||
return <IconPrivate size={size} className={className ?? 'text-warn-600'} />;
|
||||
case AccessPolicy.PROTECTED:
|
||||
return <IconProtected size={size} className={className ?? 'text-sec-600'} />;
|
||||
case AccessPolicy.PUBLIC:
|
||||
return <IconPublic size={size} className={className ?? 'text-ok-600'} />;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
'use client';
|
||||
|
||||
import { SelectorButton } from '@/components/Control';
|
||||
import { type DomIconProps } from '@/components/DomainIcons';
|
||||
import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown';
|
||||
import { IconOSS, IconRSForm } from '@/components/Icons';
|
||||
import { type Styling } from '@/components/props';
|
||||
import { prefixes } from '@/utils/constants';
|
||||
|
||||
import { LibraryItemType } from '../backend/types';
|
||||
import { describeLibraryItemType, labelLibraryItemType } from '../labels';
|
||||
|
||||
import { IconLibraryItemType } from './IconLibraryItemType';
|
||||
|
||||
interface SelectItemTypeProps extends Styling {
|
||||
value: LibraryItemType;
|
||||
onChange: (value: LibraryItemType) => void;
|
||||
|
@ -34,7 +34,7 @@ export function SelectItemType({ value, disabled, stretchLeft, onChange, ...rest
|
|||
title={describeLibraryItemType(value)}
|
||||
hideTitle={menu.isOpen}
|
||||
className='h-full px-2 py-1 rounded-lg'
|
||||
icon={<ItemTypeIcon value={value} size='1.25rem' />}
|
||||
icon={<IconLibraryItemType value={value} size='1.25rem' />}
|
||||
text={labelLibraryItemType(value)}
|
||||
onClick={menu.toggle}
|
||||
disabled={disabled}
|
||||
|
@ -45,7 +45,7 @@ export function SelectItemType({ value, disabled, stretchLeft, onChange, ...rest
|
|||
key={`${prefixes.policy_list}${index}`}
|
||||
text={labelLibraryItemType(item)}
|
||||
title={describeLibraryItemType(item)}
|
||||
icon={<ItemTypeIcon value={item} size='1rem' />}
|
||||
icon={<IconLibraryItemType value={item} size='1rem' />}
|
||||
onClick={() => handleChange(item)}
|
||||
/>
|
||||
))}
|
||||
|
@ -53,13 +53,3 @@ export function SelectItemType({ value, disabled, stretchLeft, onChange, ...rest
|
|||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
/** Icon for library item type. */
|
||||
function ItemTypeIcon({ value, size = '1.25rem', className }: DomIconProps<LibraryItemType>) {
|
||||
switch (value) {
|
||||
case LibraryItemType.RSFORM:
|
||||
return <IconRSForm size={size} className={className ?? 'text-sec-600'} />;
|
||||
case LibraryItemType.OSS:
|
||||
return <IconOSS size={size} className={className ?? 'text-ok-600'} />;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
import clsx from 'clsx';
|
||||
|
||||
import { SelectorButton } from '@/components/Control';
|
||||
import { LocationIcon } from '@/components/DomainIcons';
|
||||
import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown';
|
||||
import { type Styling } from '@/components/props';
|
||||
import { prefixes } from '@/utils/constants';
|
||||
|
@ -11,6 +10,8 @@ import { prefixes } from '@/utils/constants';
|
|||
import { describeLocationHead, labelLocationHead } from '../labels';
|
||||
import { LocationHead } from '../models/library';
|
||||
|
||||
import { IconLocationHead } from './IconLocationHead';
|
||||
|
||||
interface SelectLocationHeadProps extends Styling {
|
||||
value: LocationHead;
|
||||
onChange: (newValue: LocationHead) => void;
|
||||
|
@ -39,7 +40,7 @@ export function SelectLocationHead({
|
|||
title={describeLocationHead(value)}
|
||||
hideTitle={menu.isOpen}
|
||||
className='h-full'
|
||||
icon={<LocationIcon value={value} size='1rem' />}
|
||||
icon={<IconLocationHead value={value} size='1rem' />}
|
||||
text={labelLocationHead(value)}
|
||||
onClick={menu.toggle}
|
||||
/>
|
||||
|
@ -56,7 +57,7 @@ export function SelectLocationHead({
|
|||
title={describeLocationHead(head)}
|
||||
>
|
||||
<div className='inline-flex items-center gap-3'>
|
||||
<LocationIcon value={head} size='1rem' />
|
||||
<IconLocationHead value={head} size='1rem' />
|
||||
{labelLocationHead(head)}
|
||||
</div>
|
||||
</DropdownButton>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import { BadgeHelp, HelpTopic } from '@/features/help';
|
||||
import { HelpTopic } from '@/features/help';
|
||||
import { BadgeHelp } from '@/features/help/components';
|
||||
import { useRoleStore, UserRole } from '@/features/users';
|
||||
|
||||
import { Overlay } from '@/components/Container';
|
||||
import { MiniButton } from '@/components/Control';
|
||||
import { VisibilityIcon } from '@/components/DomainIcons';
|
||||
import { IconImmutable, IconMutable } from '@/components/Icons';
|
||||
import { Label } from '@/components/Input';
|
||||
import { PARAMETER } from '@/utils/constants';
|
||||
|
@ -12,6 +12,7 @@ import { type AccessPolicy, type ILibraryItem } from '../backend/types';
|
|||
import { useMutatingLibrary } from '../backend/useMutatingLibrary';
|
||||
import { useSetAccessPolicy } from '../backend/useSetAccessPolicy';
|
||||
|
||||
import { IconItemVisibility } from './IconItemVisibility';
|
||||
import { SelectAccessPolicy } from './SelectAccessPolicy';
|
||||
|
||||
interface ToolbarItemAccessProps {
|
||||
|
@ -52,7 +53,7 @@ export function ToolbarItemAccess({
|
|||
|
||||
<MiniButton
|
||||
title={visible ? 'Библиотека: отображать' : 'Библиотека: скрывать'}
|
||||
icon={<VisibilityIcon value={visible} />}
|
||||
icon={<IconItemVisibility value={visible} />}
|
||||
onClick={toggleVisible}
|
||||
disabled={role === UserRole.READER || isProcessing}
|
||||
/>
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
export { EditorLibraryItem } from './EditorLibraryItem';
|
||||
export { MenuRole } from './MenuRole';
|
||||
export { MiniSelectorOSS } from './MiniSelectorOSS';
|
||||
export { PickSchema } from './PickSchema';
|
||||
export { SelectLibraryItem } from './SelectLibraryItem';
|
||||
export { SelectVersion } from './SelectVersion';
|
||||
export { ToolbarItemAccess } from './ToolbarItemAccess';
|
|
@ -8,13 +8,13 @@ import { urls, useConceptNavigation } from '@/app';
|
|||
import { useAuthSuspense } from '@/features/auth';
|
||||
|
||||
import { MiniButton } from '@/components/Control';
|
||||
import { VisibilityIcon } from '@/components/DomainIcons';
|
||||
import { Checkbox, Label, TextArea, TextInput } from '@/components/Input';
|
||||
import { ModalForm } from '@/components/Modal';
|
||||
import { useDialogsStore } from '@/stores/dialogs';
|
||||
|
||||
import { AccessPolicy, type ICloneLibraryItemDTO, type ILibraryItem, schemaCloneLibraryItem } from '../backend/types';
|
||||
import { useCloneItem } from '../backend/useCloneItem';
|
||||
import { IconItemVisibility } from '../components/IconItemVisibility';
|
||||
import { SelectAccessPolicy } from '../components/SelectAccessPolicy';
|
||||
import { SelectLocationContext } from '../components/SelectLocationContext';
|
||||
import { SelectLocationHead } from '../components/SelectLocationHead';
|
||||
|
@ -105,7 +105,7 @@ export function DlgCloneLibraryItem() {
|
|||
render={({ field }) => (
|
||||
<MiniButton
|
||||
title={field.value ? 'Библиотека: отображать' : 'Библиотека: скрывать'}
|
||||
icon={<VisibilityIcon value={field.value} />}
|
||||
icon={<IconItemVisibility value={field.value} />}
|
||||
onClick={() => field.onChange(!field.value)}
|
||||
/>
|
||||
)}
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
import { useState } from 'react';
|
||||
import clsx from 'clsx';
|
||||
|
||||
import { SelectUser, TableUsers, useUsers } from '@/features/users';
|
||||
import { useUsers } from '@/features/users';
|
||||
import { SelectUser, TableUsers } from '@/features/users/components';
|
||||
|
||||
import { MiniButton } from '@/components/Control';
|
||||
import { IconRemove } from '@/components/Icons';
|
||||
|
|
|
@ -5,7 +5,7 @@ import { useMemo } from 'react';
|
|||
import { useForm, useWatch } from 'react-hook-form';
|
||||
import { zodResolver } from '@hookform/resolvers/zod';
|
||||
|
||||
import { useRSFormSuspense } from '@/features/rsform';
|
||||
import { useRSFormSuspense } from '@/features/rsform/backend/useRSForm';
|
||||
|
||||
import { MiniButton } from '@/components/Control';
|
||||
import { IconReset, IconSave } from '@/components/Icons';
|
||||
|
|
|
@ -1,17 +1,13 @@
|
|||
export { AccessPolicy, type ILibraryItem, type IVersionInfo, LibraryItemType } from './backend/types';
|
||||
export { useDeleteItem } from './backend/useDeleteItem';
|
||||
export { useLibrary, useLibrarySuspense } from './backend/useLibrary';
|
||||
export { useMutatingLibrary } from './backend/useMutatingLibrary';
|
||||
export { useTemplatesSuspense } from './backend/useTemplates';
|
||||
export { useUpdateItem } from './backend/useUpdateItem';
|
||||
export { useUpdateTimestamp } from './backend/useUpdateTimestamp';
|
||||
export { useVersionRestore } from './backend/useVersionRestore';
|
||||
export { EditorLibraryItem } from './components/EditorLibraryItem';
|
||||
export { MenuRole } from './components/MenuRole';
|
||||
export { MiniSelectorOSS } from './components/MiniSelectorOSS';
|
||||
export { PickSchema } from './components/PickSchema';
|
||||
export { SelectLibraryItem } from './components/SelectLibraryItem';
|
||||
export { SelectVersion } from './components/SelectVersion';
|
||||
export { ToolbarItemAccess } from './components/ToolbarItemAccess';
|
||||
export { type ILibraryItemReference } from './models/library';
|
||||
export {
|
||||
AccessPolicy,
|
||||
type ILibraryItem,
|
||||
type ILibraryItemData,
|
||||
type IUpdateLibraryItemDTO,
|
||||
type IVersionInfo,
|
||||
LibraryItemType,
|
||||
schemaLibraryItem,
|
||||
schemaUpdateLibraryItem,
|
||||
schemaVersionInfo
|
||||
} from './backend/types';
|
||||
export { BASIC_SCHEMAS, type CurrentVersion, type ILibraryItemReference, LocationHead } from './models/library';
|
||||
export { useLibrarySearchStore } from './stores/librarySearch';
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { RequireAuth } from '@/features/auth';
|
||||
import { RequireAuth } from '@/features/auth/components';
|
||||
|
||||
import { FormCreateItem } from './FormCreateItem';
|
||||
|
||||
|
|
|
@ -10,7 +10,6 @@ import { useAuthSuspense } from '@/features/auth';
|
|||
|
||||
import { Overlay } from '@/components/Container';
|
||||
import { Button, MiniButton, SubmitButton } from '@/components/Control';
|
||||
import { VisibilityIcon } from '@/components/DomainIcons';
|
||||
import { IconDownload } from '@/components/Icons';
|
||||
import { InfoError } from '@/components/InfoError';
|
||||
import { Label, TextArea, TextInput } from '@/components/Input';
|
||||
|
@ -23,6 +22,7 @@ import {
|
|||
schemaCreateLibraryItem
|
||||
} from '../../backend/types';
|
||||
import { useCreateItem } from '../../backend/useCreateItem';
|
||||
import { IconItemVisibility } from '../../components/IconItemVisibility';
|
||||
import { SelectAccessPolicy } from '../../components/SelectAccessPolicy';
|
||||
import { SelectItemType } from '../../components/SelectItemType';
|
||||
import { SelectLocationContext } from '../../components/SelectLocationContext';
|
||||
|
@ -188,7 +188,7 @@ export function FormCreateItem() {
|
|||
render={({ field }) => (
|
||||
<MiniButton
|
||||
title={field.value ? 'Библиотека: отображать' : 'Библиотека: скрывать'}
|
||||
icon={<VisibilityIcon value={field.value} />}
|
||||
icon={<IconItemVisibility value={field.value} />}
|
||||
onClick={() => field.onChange(!field.value)}
|
||||
/>
|
||||
)}
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
|
||||
import clsx from 'clsx';
|
||||
|
||||
import { SelectUser } from '@/features/users';
|
||||
import { SelectUser } from '@/features/users/components';
|
||||
|
||||
import { MiniButton, SelectorButton } from '@/components/Control';
|
||||
import { LocationIcon, VisibilityIcon } from '@/components/DomainIcons';
|
||||
import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown';
|
||||
import {
|
||||
IconEditor,
|
||||
|
@ -20,6 +19,8 @@ import { SearchBar } from '@/components/Input';
|
|||
import { prefixes } from '@/utils/constants';
|
||||
import { tripleToggleColor } from '@/utils/utils';
|
||||
|
||||
import { IconItemVisibility } from '../../components/IconItemVisibility';
|
||||
import { IconLocationHead } from '../../components/IconLocationHead';
|
||||
import { describeLocationHead, labelLocationHead } from '../../labels';
|
||||
import { LocationHead } from '../../models/library';
|
||||
import { useHasCustomFilter, useLibrarySearchStore } from '../../stores/librarySearch';
|
||||
|
@ -98,7 +99,7 @@ export function ToolbarSearch({ total, filtered }: ToolbarSearchProps) {
|
|||
<div className='cc-icons'>
|
||||
<MiniButton
|
||||
title='Видимость'
|
||||
icon={<VisibilityIcon value={true} className={tripleToggleColor(isVisible)} />}
|
||||
icon={<IconItemVisibility value={true} className={tripleToggleColor(isVisible)} />}
|
||||
onClick={toggleVisible}
|
||||
/>
|
||||
|
||||
|
@ -156,7 +157,7 @@ export function ToolbarSearch({ total, filtered }: ToolbarSearchProps) {
|
|||
hideTitle={headMenu.isOpen}
|
||||
icon={
|
||||
head ? (
|
||||
<LocationIcon value={head} size='1.25rem' />
|
||||
<IconLocationHead value={head} size='1.25rem' />
|
||||
) : (
|
||||
<IconFolderSearch size='1.25rem' className='clr-text-controls' />
|
||||
)
|
||||
|
@ -187,7 +188,7 @@ export function ToolbarSearch({ total, filtered }: ToolbarSearchProps) {
|
|||
title={describeLocationHead(head)}
|
||||
>
|
||||
<div className='inline-flex items-center gap-3'>
|
||||
<LocationIcon value={head} size='1rem' />
|
||||
<IconLocationHead value={head} size='1rem' />
|
||||
{labelLocationHead(head)}
|
||||
</div>
|
||||
</DropdownButton>
|
||||
|
|
|
@ -2,10 +2,10 @@ import { toast } from 'react-toastify';
|
|||
import clsx from 'clsx';
|
||||
|
||||
import { useAuthSuspense } from '@/features/auth';
|
||||
import { BadgeHelp, HelpTopic } from '@/features/help';
|
||||
import { HelpTopic } from '@/features/help';
|
||||
import { BadgeHelp } from '@/features/help/components';
|
||||
|
||||
import { MiniButton } from '@/components/Control';
|
||||
import { SubfoldersIcon } from '@/components/DomainIcons';
|
||||
import { IconFolderEdit, IconFolderTree } from '@/components/Icons';
|
||||
import { useWindowSize } from '@/hooks/useWindowSize';
|
||||
import { useFitHeight } from '@/stores/appLayout';
|
||||
|
@ -13,6 +13,7 @@ import { PARAMETER, prefixes } from '@/utils/constants';
|
|||
import { infoMsg } from '@/utils/labels';
|
||||
|
||||
import { useLibrary } from '../../backend/useLibrary';
|
||||
import { IconShowSubfolders } from '../../components/IconShowSubfolders';
|
||||
import { SelectLocation } from '../../components/SelectLocation';
|
||||
import { type FolderNode } from '../../models/FolderTree';
|
||||
import { useLibrarySearchStore } from '../../stores/librarySearch';
|
||||
|
@ -90,7 +91,7 @@ export function ViewSideLocation({ isVisible, onRenameLocation }: ViewSideLocati
|
|||
{!!location ? (
|
||||
<MiniButton
|
||||
title={subfolders ? 'Вложенные папки: Вкл' : 'Вложенные папки: Выкл'} // prettier: split-lines
|
||||
icon={<SubfoldersIcon value={subfolders} />}
|
||||
icon={<IconShowSubfolders value={subfolders} />}
|
||||
onClick={toggleSubfolders}
|
||||
/>
|
||||
) : null}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Module: OSS data loading and processing.
|
||||
*/
|
||||
|
||||
import { type ILibraryItem } from '@/features/library/backend/types';
|
||||
import { type ILibraryItem } from '@/features/library';
|
||||
|
||||
import { Graph } from '@/models/Graph';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { useUpdateTimestamp } from '@/features/library';
|
||||
import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { type ILibraryItem } from '@/features/library/backend/types';
|
||||
import { type ILibraryItem } from '@/features/library';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { useUpdateTimestamp } from '@/features/library';
|
||||
import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
import { type DomIconProps, IconMoveDown, IconMoveUp } from '@/components/Icons';
|
||||
|
||||
/** Icon for relocation direction. */
|
||||
export function IconRelocationUp({ value, size = '1.25rem', className }: DomIconProps<boolean>) {
|
||||
if (value) {
|
||||
return <IconMoveUp size={size} className={className ?? 'text-sec-600'} />;
|
||||
} else {
|
||||
return <IconMoveDown size={size} className={className ?? 'text-sec-600'} />;
|
||||
}
|
||||
}
|
|
@ -4,7 +4,9 @@ import { Controller, useForm } from 'react-hook-form';
|
|||
import { zodResolver } from '@hookform/resolvers/zod';
|
||||
import clsx from 'clsx';
|
||||
|
||||
import { type ILibraryItem, LibraryItemType, PickSchema, useLibrary } from '@/features/library';
|
||||
import { type ILibraryItem, LibraryItemType } from '@/features/library';
|
||||
import { useLibrary } from '@/features/library/backend/useLibrary';
|
||||
import { PickSchema } from '@/features/library/components';
|
||||
|
||||
import { MiniButton } from '@/components/Control';
|
||||
import { IconReset } from '@/components/Icons';
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
|
||||
import { Controller, useFormContext, useWatch } from 'react-hook-form';
|
||||
|
||||
import { type ILibraryItem, LibraryItemType, PickSchema, useLibrary } from '@/features/library';
|
||||
import { type ILibraryItem, LibraryItemType } from '@/features/library';
|
||||
import { useLibrary } from '@/features/library/backend/useLibrary';
|
||||
import { PickSchema } from '@/features/library/components';
|
||||
|
||||
import { MiniButton } from '@/components/Control';
|
||||
import { IconReset } from '@/components/Icons';
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
|
||||
import { Controller, useFormContext, useWatch } from 'react-hook-form';
|
||||
|
||||
import { PickSubstitutions, useRSForms } from '@/features/rsform';
|
||||
import { useRSForms } from '@/features/rsform/backend/useRSForms';
|
||||
import { PickSubstitutions } from '@/features/rsform/components';
|
||||
|
||||
import { TextArea } from '@/components/Input';
|
||||
import { useDialogsStore } from '@/stores/dialogs';
|
||||
|
|
|
@ -6,11 +6,13 @@ import { zodResolver } from '@hookform/resolvers/zod';
|
|||
import clsx from 'clsx';
|
||||
|
||||
import { HelpTopic } from '@/features/help';
|
||||
import { type ILibraryItem, SelectLibraryItem, useLibrary } from '@/features/library';
|
||||
import { PickMultiConstituenta, useRSForm } from '@/features/rsform';
|
||||
import { type ILibraryItem } from '@/features/library';
|
||||
import { useLibrary } from '@/features/library/backend/useLibrary';
|
||||
import { SelectLibraryItem } from '@/features/library/components';
|
||||
import { useRSForm } from '@/features/rsform/backend/useRSForm';
|
||||
import { PickMultiConstituenta } from '@/features/rsform/components';
|
||||
|
||||
import { MiniButton } from '@/components/Control';
|
||||
import { RelocateUpIcon } from '@/components/DomainIcons';
|
||||
import { Loader } from '@/components/Loader';
|
||||
import { ModalForm } from '@/components/Modal';
|
||||
import { useDialogsStore } from '@/stores/dialogs';
|
||||
|
@ -18,6 +20,7 @@ import { useDialogsStore } from '@/stores/dialogs';
|
|||
import { type ICstRelocateDTO, type IOperationPosition, schemaCstRelocate } from '../backend/types';
|
||||
import { useRelocateConstituents } from '../backend/useRelocateConstituents';
|
||||
import { useUpdatePositions } from '../backend/useUpdatePositions';
|
||||
import { IconRelocationUp } from '../components/IconRelocationUp';
|
||||
import { type IOperation, type IOperationSchema } from '../models/oss';
|
||||
import { getRelocateCandidates } from '../models/ossAPI';
|
||||
|
||||
|
@ -132,7 +135,7 @@ export function DlgRelocateConstituents() {
|
|||
/>
|
||||
<MiniButton
|
||||
title='Направление перемещения'
|
||||
icon={<RelocateUpIcon value={directionUp} />}
|
||||
icon={<IconRelocationUp value={directionUp} />}
|
||||
onClick={toggleDirection}
|
||||
/>
|
||||
<SelectLibraryItem
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
export { useFindPredecessor } from './backend/useFindPredecessor';
|
||||
export { type IOperationSchemaDTO } from './backend/types';
|
||||
export { type IOperation } from './models/oss';
|
||||
|
|
|
@ -2,10 +2,16 @@
|
|||
* Module: API for OperationSystem.
|
||||
*/
|
||||
|
||||
import { type ILibraryItem } from '@/features/library/backend/types';
|
||||
import { CstType, type ICstSubstitute, ParsingStatus } from '@/features/rsform/backend/types';
|
||||
import { CstClass, type IConstituenta, type IRSForm } from '@/features/rsform/models/rsform';
|
||||
import { type AliasMapping } from '@/features/rsform/models/rslang';
|
||||
import { type ILibraryItem } from '@/features/library';
|
||||
import {
|
||||
type AliasMapping,
|
||||
CstClass,
|
||||
CstType,
|
||||
type IConstituenta,
|
||||
type ICstSubstitute,
|
||||
type IRSForm,
|
||||
ParsingStatus
|
||||
} from '@/features/rsform';
|
||||
import {
|
||||
applyAliasMapping,
|
||||
applyTypificationMapping,
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
import clsx from 'clsx';
|
||||
|
||||
import { EditorLibraryItem } from '@/features/library';
|
||||
import { ToolbarRSFormCard } from '@/features/rsform';
|
||||
import { EditorLibraryItem } from '@/features/library/components';
|
||||
import { ToolbarRSFormCard } from '@/features/rsform/components';
|
||||
|
||||
import { FlexColumn } from '@/components/Container';
|
||||
import { useModificationStore } from '@/stores/modification';
|
||||
|
|
|
@ -6,8 +6,9 @@ import { useForm, useWatch } from 'react-hook-form';
|
|||
import { zodResolver } from '@hookform/resolvers/zod';
|
||||
import clsx from 'clsx';
|
||||
|
||||
import { LibraryItemType, ToolbarItemAccess, useUpdateItem } from '@/features/library';
|
||||
import { type IUpdateLibraryItemDTO, schemaUpdateLibraryItem } from '@/features/library/backend/types';
|
||||
import { type IUpdateLibraryItemDTO, LibraryItemType, schemaUpdateLibraryItem } from '@/features/library';
|
||||
import { useUpdateItem } from '@/features/library/backend/useUpdateItem';
|
||||
import { ToolbarItemAccess } from '@/features/library/components';
|
||||
|
||||
import { SubmitButton } from '@/components/Control';
|
||||
import { IconSave } from '@/components/Icons';
|
||||
|
|
|
@ -13,7 +13,7 @@ import {
|
|||
} from 'reactflow';
|
||||
|
||||
import { urls, useConceptNavigation } from '@/app';
|
||||
import { useLibrary } from '@/features/library';
|
||||
import { useLibrary } from '@/features/library/backend/useLibrary';
|
||||
|
||||
import { Overlay } from '@/components/Container';
|
||||
import { useMainHeight } from '@/stores/appLayout';
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
|
||||
import clsx from 'clsx';
|
||||
|
||||
import { BadgeHelp, HelpTopic } from '@/features/help';
|
||||
import { HelpTopic } from '@/features/help';
|
||||
import { BadgeHelp } from '@/features/help/components';
|
||||
|
||||
import { MiniButton } from '@/components/Control';
|
||||
import {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
'use client';
|
||||
|
||||
import { useAuthSuspense } from '@/features/auth';
|
||||
import { MenuRole } from '@/features/library';
|
||||
import { MenuRole } from '@/features/library/components';
|
||||
|
||||
import { MenuEditOss } from './MenuEditOss';
|
||||
import { MenuMain } from './MenuMain';
|
||||
|
|
|
@ -4,7 +4,8 @@ import { createContext, useContext, useEffect, useState } from 'react';
|
|||
|
||||
import { urls, useConceptNavigation } from '@/app';
|
||||
import { useAuthSuspense } from '@/features/auth';
|
||||
import { useDeleteItem, useLibrarySearchStore } from '@/features/library';
|
||||
import { useLibrarySearchStore } from '@/features/library';
|
||||
import { useDeleteItem } from '@/features/library/backend/useDeleteItem';
|
||||
import { RSTabID } from '@/features/rsform/pages/RSFormPage/RSEditContext';
|
||||
import { useRoleStore, UserRole } from '@/features/users';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { useUpdateTimestamp } from '@/features/library';
|
||||
import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { useUpdateTimestamp } from '@/features/library';
|
||||
import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { useUpdateTimestamp } from '@/features/library';
|
||||
import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { useUpdateTimestamp } from '@/features/library';
|
||||
import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { useUpdateTimestamp } from '@/features/library';
|
||||
import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { useUpdateTimestamp } from '@/features/library';
|
||||
import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { useUpdateTimestamp } from '@/features/library';
|
||||
import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { useUpdateTimestamp } from '@/features/library';
|
||||
import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { useUpdateTimestamp } from '@/features/library';
|
||||
import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { useUpdateTimestamp } from '@/features/library';
|
||||
import { useUpdateTimestamp } from '@/features/library/backend/useUpdateTimestamp';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
|
||||
import { type ILibraryItem } from '@/features/library/backend/types';
|
||||
import { type ILibraryItem } from '@/features/library';
|
||||
|
||||
import { KEYS } from '@/backend/configuration';
|
||||
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
import { type DomIconProps, IconAlias, IconFilter, IconFormula, IconTerm, IconText } from '@/components/Icons';
|
||||
|
||||
import { CstMatchMode } from '../stores/cstSearch';
|
||||
|
||||
/** Icon for constituenta match mode. */
|
||||
export function IconCstMatchMode({ value, size = '1.25rem', className }: DomIconProps<CstMatchMode>) {
|
||||
switch (value) {
|
||||
case CstMatchMode.ALL:
|
||||
return <IconFilter size={size} className={className} />;
|
||||
case CstMatchMode.TEXT:
|
||||
return <IconText size={size} className={className ?? 'text-sec-600'} />;
|
||||
case CstMatchMode.EXPR:
|
||||
return <IconFormula size={size} className={className ?? 'text-sec-600'} />;
|
||||
case CstMatchMode.TERM:
|
||||
return <IconTerm size={size} className={className ?? 'text-sec-600'} />;
|
||||
case CstMatchMode.NAME:
|
||||
return <IconAlias size={size} className={className ?? 'text-sec-600'} />;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
import { type DomIconProps } from '@/components/Icons';
|
||||
import {
|
||||
IconCstAxiom,
|
||||
IconCstBaseSet,
|
||||
IconCstConstSet,
|
||||
IconCstFunction,
|
||||
IconCstPredicate,
|
||||
IconCstStructured,
|
||||
IconCstTerm,
|
||||
IconCstTheorem
|
||||
} from '@/components/Icons';
|
||||
|
||||
import { CstType } from '../backend/types';
|
||||
|
||||
/** Icon for constituenta type. */
|
||||
export function IconCstType({ value, size = '1.25rem', className }: DomIconProps<CstType>) {
|
||||
switch (value) {
|
||||
case CstType.BASE:
|
||||
return <IconCstBaseSet size={size} className={className ?? 'text-ok-600'} />;
|
||||
case CstType.CONSTANT:
|
||||
return <IconCstConstSet size={size} className={className ?? 'text-ok-600'} />;
|
||||
case CstType.STRUCTURED:
|
||||
return <IconCstStructured size={size} className={className ?? 'text-ok-600'} />;
|
||||
case CstType.TERM:
|
||||
return <IconCstTerm size={size} className={className ?? 'text-sec-600'} />;
|
||||
case CstType.AXIOM:
|
||||
return <IconCstAxiom size={size} className={className ?? 'text-warn-600'} />;
|
||||
case CstType.FUNCTION:
|
||||
return <IconCstFunction size={size} className={className ?? 'text-sec-600'} />;
|
||||
case CstType.PREDICATE:
|
||||
return <IconCstPredicate size={size} className={className ?? 'text-warn-600'} />;
|
||||
case CstType.THEOREM:
|
||||
return <IconCstTheorem size={size} className={className ?? 'text-warn-600'} />;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
import {
|
||||
type DomIconProps,
|
||||
IconGraphCollapse,
|
||||
IconGraphExpand,
|
||||
IconGraphInputs,
|
||||
IconGraphOutputs,
|
||||
IconSettings
|
||||
} from '@/components/Icons';
|
||||
|
||||
import { DependencyMode } from '../stores/cstSearch';
|
||||
|
||||
/** Icon for term graph dependency mode. */
|
||||
export function IconDependencyMode({ value, size = '1.25rem', className }: DomIconProps<DependencyMode>) {
|
||||
switch (value) {
|
||||
case DependencyMode.ALL:
|
||||
return <IconSettings size={size} className={className} />;
|
||||
case DependencyMode.OUTPUTS:
|
||||
return <IconGraphOutputs size={size} className={className ?? 'text-sec-600'} />;
|
||||
case DependencyMode.INPUTS:
|
||||
return <IconGraphInputs size={size} className={className ?? 'text-sec-600'} />;
|
||||
case DependencyMode.EXPAND_OUTPUTS:
|
||||
return <IconGraphExpand size={size} className={className ?? 'text-sec-600'} />;
|
||||
case DependencyMode.EXPAND_INPUTS:
|
||||
return <IconGraphCollapse size={size} className={className ?? 'text-sec-600'} />;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
import {
|
||||
type DomIconProps,
|
||||
IconStatusError,
|
||||
IconStatusIncalculable,
|
||||
IconStatusOK,
|
||||
IconStatusUnknown
|
||||
} from '@/components/Icons';
|
||||
|
||||
import { ExpressionStatus } from '../models/rsform';
|
||||
|
||||
export function IconExpressionStatus({ value, size = '1.25rem', className }: DomIconProps<ExpressionStatus>) {
|
||||
switch (value) {
|
||||
case ExpressionStatus.VERIFIED:
|
||||
case ExpressionStatus.PROPERTY:
|
||||
return <IconStatusOK size={size} className={className} />;
|
||||
|
||||
case ExpressionStatus.UNKNOWN:
|
||||
return <IconStatusUnknown size={size} className={className} />;
|
||||
case ExpressionStatus.INCALCULABLE:
|
||||
return <IconStatusIncalculable size={size} className={className} />;
|
||||
|
||||
case ExpressionStatus.INCORRECT:
|
||||
case ExpressionStatus.UNDEFINED:
|
||||
return <IconStatusError size={size} className={className} />;
|
||||
}
|
||||
}
|
|
@ -4,7 +4,8 @@ import { useState } from 'react';
|
|||
import { toast } from 'react-toastify';
|
||||
import clsx from 'clsx';
|
||||
|
||||
import { type ILibraryItem, SelectLibraryItem } from '@/features/library';
|
||||
import { type ILibraryItem } from '@/features/library';
|
||||
import { SelectLibraryItem } from '@/features/library/components';
|
||||
|
||||
import { MiniButton } from '@/components/Control';
|
||||
import { createColumnHelper, DataTable, type IConditionalStyle } from '@/components/DataTable';
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
'use client';
|
||||
|
||||
import { urls, useConceptNavigation } from '@/app';
|
||||
import { BadgeHelp, HelpTopic } from '@/features/help';
|
||||
import { AccessPolicy, LibraryItemType, MiniSelectorOSS, useMutatingLibrary } from '@/features/library';
|
||||
import { type ILibraryItem } from '@/features/library/backend/types';
|
||||
import { HelpTopic } from '@/features/help';
|
||||
import { BadgeHelp } from '@/features/help/components';
|
||||
import { AccessPolicy, type ILibraryItem, LibraryItemType } from '@/features/library';
|
||||
import { useMutatingLibrary } from '@/features/library/backend/useMutatingLibrary';
|
||||
import { MiniSelectorOSS } from '@/features/library/components';
|
||||
import { useRoleStore, UserRole } from '@/features/users';
|
||||
|
||||
import { Overlay } from '@/components/Container';
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
export { PickMultiConstituenta } from './PickMultiConstituenta';
|
||||
export { PickSubstitutions } from './PickSubstitutions';
|
||||
export { ToolbarRSFormCard } from './ToolbarRSFormCard';
|
|
@ -4,7 +4,8 @@ import { useState } from 'react';
|
|||
import { Controller, useFormContext, useWatch } from 'react-hook-form';
|
||||
import clsx from 'clsx';
|
||||
|
||||
import { BadgeHelp, HelpTopic } from '@/features/help';
|
||||
import { HelpTopic } from '@/features/help';
|
||||
import { BadgeHelp } from '@/features/help/components';
|
||||
|
||||
import { TextArea, TextInput } from '@/components/Input';
|
||||
import { PARAMETER } from '@/utils/constants';
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
'use client';
|
||||
|
||||
import { useTemplatesSuspense } from '@/features/library';
|
||||
import { useTemplatesSuspense } from '@/features/library/backend/useTemplates';
|
||||
|
||||
import { SelectSingle, TextArea } from '@/components/Input';
|
||||
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
|
||||
import { useFormContext, useWatch } from 'react-hook-form';
|
||||
|
||||
import { LibraryItemType, PickSchema, useLibrary } from '@/features/library';
|
||||
import { LibraryItemType } from '@/features/library';
|
||||
import { useLibrary } from '@/features/library/backend/useLibrary';
|
||||
import { PickSchema } from '@/features/library/components';
|
||||
|
||||
import { TextInput } from '@/components/Input';
|
||||
import { useDialogsStore } from '@/stores/dialogs';
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
export { type ICstSubstitute } from './backend/types';
|
||||
export { CstType } from './backend/types';
|
||||
export { useRSForm, useRSFormSuspense } from './backend/useRSForm';
|
||||
export { useRSForms } from './backend/useRSForms';
|
||||
export { PickMultiConstituenta } from './components/PickMultiConstituenta';
|
||||
export { PickSubstitutions } from './components/PickSubstitutions';
|
||||
export { ToolbarRSFormCard } from './components/ToolbarRSFormCard';
|
||||
export { CstClass, type IConstituenta, type IRSForm } from './models/rsform';
|
||||
export {
|
||||
CstType,
|
||||
type ICstSubstitute,
|
||||
type IRSFormDTO,
|
||||
type IVersionCreatedResponse,
|
||||
ParsingStatus,
|
||||
schemaCstSubstitute,
|
||||
schemaRSForm,
|
||||
schemaVersionCreatedResponse
|
||||
} from './backend/types';
|
||||
export { CstClass, ExpressionStatus, type IConstituenta, type IRSForm } from './models/rsform';
|
||||
export { type AliasMapping } from './models/rslang';
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
import { PARAMETER } from '@/utils/constants';
|
||||
import { prepareTooltip } from '@/utils/utils';
|
||||
|
||||
import { type IVersionInfo } from '../library';
|
||||
import { type IVersionInfo } from '../library/backend/types';
|
||||
import { type CurrentVersion } from '../library/models/library';
|
||||
|
||||
import { CstType, type IRSErrorDescription, ParsingStatus, RSErrorType, TokenID } from './backend/types';
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
* Module: API for formal representation for systems of concepts.
|
||||
*/
|
||||
|
||||
import { type ILibraryItem } from '@/features/library/backend/types';
|
||||
import { BASIC_SCHEMAS } from '@/features/library/models/library';
|
||||
import { BASIC_SCHEMAS, type ILibraryItem } from '@/features/library';
|
||||
|
||||
import { TextMatcher } from '@/utils/utils';
|
||||
|
||||
|
|
|
@ -3,9 +3,10 @@
|
|||
import clsx from 'clsx';
|
||||
|
||||
import { urls, useConceptNavigation } from '@/app';
|
||||
import { BadgeHelp, HelpTopic } from '@/features/help';
|
||||
import { MiniSelectorOSS } from '@/features/library';
|
||||
import { useFindPredecessor } from '@/features/oss';
|
||||
import { HelpTopic } from '@/features/help';
|
||||
import { BadgeHelp } from '@/features/help/components';
|
||||
import { MiniSelectorOSS } from '@/features/library/components';
|
||||
import { useFindPredecessor } from '@/features/oss/backend/useFindPredecessor';
|
||||
|
||||
import { Overlay } from '@/components/Container';
|
||||
import { MiniButton } from '@/components/Control';
|
||||
|
|
|
@ -4,7 +4,8 @@ import { useEffect, useRef, useState } from 'react';
|
|||
import { toast } from 'react-toastify';
|
||||
import { type ReactCodeMirrorRef } from '@uiw/react-codemirror';
|
||||
|
||||
import { BadgeHelp, HelpTopic } from '@/features/help';
|
||||
import { HelpTopic } from '@/features/help';
|
||||
import { BadgeHelp } from '@/features/help/components';
|
||||
|
||||
import { Overlay } from '@/components/Container';
|
||||
import { useDialogsStore } from '@/stores/dialogs';
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
import clsx from 'clsx';
|
||||
|
||||
import { StatusIcon } from '@/components/DomainIcons';
|
||||
import { Loader } from '@/components/Loader';
|
||||
import { APP_COLORS } from '@/styling/colors';
|
||||
import { globalIDs } from '@/utils/constants';
|
||||
|
@ -10,6 +9,7 @@ import { prepareTooltip } from '@/utils/utils';
|
|||
|
||||
import { type IExpressionParseDTO, ParsingStatus } from '../../../backend/types';
|
||||
import { colorStatusBar } from '../../../colors';
|
||||
import { IconExpressionStatus } from '../../../components/IconExpressionStatus';
|
||||
import { labelExpressionStatus } from '../../../labels';
|
||||
import { ExpressionStatus, type IConstituenta } from '../../../models/rsform';
|
||||
import { inferStatus } from '../../../models/rsformAPI';
|
||||
|
@ -59,7 +59,7 @@ export function StatusBar({ isModified, processing, activeCst, parseData, onAnal
|
|||
) : null}
|
||||
{!processing ? (
|
||||
<div className='cc-fade-in flex items-center gap-2'>
|
||||
<StatusIcon size='1rem' value={status} />
|
||||
<IconExpressionStatus size='1rem' value={status} />
|
||||
<span className='pb-[0.125rem] font-controls pr-2'>{labelExpressionStatus(status)}</span>
|
||||
</div>
|
||||
) : null}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import clsx from 'clsx';
|
||||
|
||||
import { EditorLibraryItem } from '@/features/library';
|
||||
import { EditorLibraryItem } from '@/features/library/components';
|
||||
|
||||
import { FlexColumn } from '@/components/Container';
|
||||
import { useModificationStore } from '@/stores/modification';
|
||||
|
|
|
@ -7,9 +7,14 @@ import { zodResolver } from '@hookform/resolvers/zod';
|
|||
import clsx from 'clsx';
|
||||
|
||||
import { urls, useConceptNavigation } from '@/app';
|
||||
import { LibraryItemType, SelectVersion, ToolbarItemAccess, useUpdateItem } from '@/features/library';
|
||||
import { type IUpdateLibraryItemDTO, schemaUpdateLibraryItem } from '@/features/library/backend/types';
|
||||
import { type CurrentVersion } from '@/features/library/models/library';
|
||||
import {
|
||||
type CurrentVersion,
|
||||
type IUpdateLibraryItemDTO,
|
||||
LibraryItemType,
|
||||
schemaUpdateLibraryItem
|
||||
} from '@/features/library';
|
||||
import { useUpdateItem } from '@/features/library/backend/useUpdateItem';
|
||||
import { SelectVersion, ToolbarItemAccess } from '@/features/library/components';
|
||||
|
||||
import { SubmitButton } from '@/components/Control';
|
||||
import { IconSave } from '@/components/Icons';
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
'use client';
|
||||
|
||||
import { BadgeHelp, HelpTopic } from '@/features/help';
|
||||
import { useVersionRestore } from '@/features/library';
|
||||
import { HelpTopic } from '@/features/help';
|
||||
import { BadgeHelp } from '@/features/help/components';
|
||||
import { useVersionRestore } from '@/features/library/backend/useVersionRestore';
|
||||
|
||||
import { Overlay } from '@/components/Container';
|
||||
import { MiniButton } from '@/components/Control';
|
||||
|
|
|
@ -1,21 +1,13 @@
|
|||
import { BadgeHelp, HelpTopic } from '@/features/help';
|
||||
import { MiniSelectorOSS } from '@/features/library';
|
||||
import { HelpTopic } from '@/features/help';
|
||||
import { BadgeHelp } from '@/features/help/components';
|
||||
import { MiniSelectorOSS } from '@/features/library/components';
|
||||
import { CstType } from '@/features/rsform';
|
||||
|
||||
import { Overlay } from '@/components/Container';
|
||||
import { MiniButton } from '@/components/Control';
|
||||
import { type DomIconProps } from '@/components/DomainIcons';
|
||||
import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown';
|
||||
import {
|
||||
IconClone,
|
||||
IconCstAxiom,
|
||||
IconCstBaseSet,
|
||||
IconCstConstSet,
|
||||
IconCstFunction,
|
||||
IconCstPredicate,
|
||||
IconCstStructured,
|
||||
IconCstTerm,
|
||||
IconCstTheorem,
|
||||
IconDestroy,
|
||||
IconMoveDown,
|
||||
IconMoveUp,
|
||||
|
@ -27,6 +19,7 @@ import { prefixes } from '@/utils/constants';
|
|||
import { prepareTooltip } from '@/utils/utils';
|
||||
|
||||
import { useMutatingRSForm } from '../../../backend/useMutatingRSForm';
|
||||
import { IconCstType } from '../../../components/IconCstType';
|
||||
import { getCstTypeShortcut, labelCstType } from '../../../labels';
|
||||
import { useRSEdit } from '../RSEditContext';
|
||||
|
||||
|
@ -89,7 +82,7 @@ export function ToolbarRSList() {
|
|||
<DropdownButton
|
||||
key={`${prefixes.csttype_list}${typeStr}`}
|
||||
text={labelCstType(typeStr as CstType)}
|
||||
icon={<CstTypeIcon value={typeStr as CstType} size='1.25rem' />}
|
||||
icon={<IconCstType value={typeStr as CstType} size='1.25rem' />}
|
||||
onClick={() => createCst(typeStr as CstType, true)}
|
||||
titleHtml={getCstTypeShortcut(typeStr as CstType)}
|
||||
/>
|
||||
|
@ -118,25 +111,3 @@ export function ToolbarRSList() {
|
|||
</Overlay>
|
||||
);
|
||||
}
|
||||
|
||||
/** Icon for constituenta type. */
|
||||
function CstTypeIcon({ value, size = '1.25rem', className }: DomIconProps<CstType>) {
|
||||
switch (value) {
|
||||
case CstType.BASE:
|
||||
return <IconCstBaseSet size={size} className={className ?? 'text-ok-600'} />;
|
||||
case CstType.CONSTANT:
|
||||
return <IconCstConstSet size={size} className={className ?? 'text-ok-600'} />;
|
||||
case CstType.STRUCTURED:
|
||||
return <IconCstStructured size={size} className={className ?? 'text-ok-600'} />;
|
||||
case CstType.TERM:
|
||||
return <IconCstTerm size={size} className={className ?? 'text-sec-600'} />;
|
||||
case CstType.AXIOM:
|
||||
return <IconCstAxiom size={size} className={className ?? 'text-warn-600'} />;
|
||||
case CstType.FUNCTION:
|
||||
return <IconCstFunction size={size} className={className ?? 'text-sec-600'} />;
|
||||
case CstType.PREDICATE:
|
||||
return <IconCstPredicate size={size} className={className ?? 'text-warn-600'} />;
|
||||
case CstType.THEOREM:
|
||||
return <IconCstTheorem size={size} className={className ?? 'text-warn-600'} />;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { BadgeHelp, HelpTopic } from '@/features/help';
|
||||
import { HelpTopic } from '@/features/help';
|
||||
import { BadgeHelp } from '@/features/help/components';
|
||||
|
||||
import { Overlay } from '@/components/Container';
|
||||
import { SelectSingle } from '@/components/Input';
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { useLibrary } from '@/features/library';
|
||||
import { useLibrary } from '@/features/library/backend/useLibrary';
|
||||
|
||||
import { Tooltip } from '@/components/Container';
|
||||
import { IconHelp } from '@/components/Icons';
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
'use client';
|
||||
|
||||
import { useTermGraphStore } from '@/features/rsform/stores/termGraph';
|
||||
|
||||
import { MiniButton } from '@/components/Control';
|
||||
import { IconGraphInputs, IconGraphOutputs, IconReset } from '@/components/Icons';
|
||||
import { APP_COLORS } from '@/styling/colors';
|
||||
|
||||
import { useTermGraphStore } from '../../../stores/termGraph';
|
||||
import { useRSEdit } from '../RSEditContext';
|
||||
|
||||
export function ToolbarFocusedCst() {
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
import { useReactFlow } from 'reactflow';
|
||||
import clsx from 'clsx';
|
||||
|
||||
import { BadgeHelp, HelpTopic } from '@/features/help';
|
||||
import { MiniSelectorOSS } from '@/features/library';
|
||||
import { CstType } from '@/features/rsform/backend/types';
|
||||
import { useTermGraphStore } from '@/features/rsform/stores/termGraph';
|
||||
import { HelpTopic } from '@/features/help';
|
||||
import { BadgeHelp } from '@/features/help/components';
|
||||
import { MiniSelectorOSS } from '@/features/library/components';
|
||||
|
||||
import { MiniButton } from '@/components/Control';
|
||||
import {
|
||||
|
@ -21,7 +20,9 @@ import {
|
|||
import { useDialogsStore } from '@/stores/dialogs';
|
||||
import { PARAMETER } from '@/utils/constants';
|
||||
|
||||
import { CstType } from '../../../backend/types';
|
||||
import { useMutatingRSForm } from '../../../backend/useMutatingRSForm';
|
||||
import { useTermGraphStore } from '../../../stores/termGraph';
|
||||
import { useRSEdit } from '../RSEditContext';
|
||||
|
||||
import { VIEW_PADDING } from './TGFlow';
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import { type Edge, type Node } from 'reactflow';
|
||||
import dagre from '@dagrejs/dagre';
|
||||
|
||||
import { type IConstituenta } from '@/features/rsform/models/rsform';
|
||||
|
||||
import { PARAMETER } from '@/utils/constants';
|
||||
|
||||
import { type IConstituenta } from '../../../../models/rsform';
|
||||
|
||||
export function applyLayout(nodes: Node<IConstituenta>[], edges: Edge[], subLabels: boolean) {
|
||||
const dagreGraph = new dagre.graphlib.Graph().setDefaultEdgeLabel(() => ({}));
|
||||
dagreGraph.setGraph({
|
||||
|
|
|
@ -2,8 +2,7 @@ import fileDownload from 'js-file-download';
|
|||
|
||||
import { urls, useConceptNavigation } from '@/app';
|
||||
import { useAuthSuspense } from '@/features/auth';
|
||||
import { AccessPolicy } from '@/features/library';
|
||||
import { LocationHead } from '@/features/library/models/library';
|
||||
import { AccessPolicy, LocationHead } from '@/features/library';
|
||||
import { useRoleStore, UserRole } from '@/features/users';
|
||||
|
||||
import { Divider } from '@/components/Container';
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
'use client';
|
||||
|
||||
import { useAuthSuspense } from '@/features/auth';
|
||||
import { MenuRole } from '@/features/library';
|
||||
import { MenuRole } from '@/features/library/components';
|
||||
|
||||
import { MenuEditSchema } from './MenuEditSchema';
|
||||
import { MenuMain } from './MenuMain';
|
||||
|
|
|
@ -4,7 +4,8 @@ import { createContext, useContext, useEffect, useState } from 'react';
|
|||
|
||||
import { urls, useConceptNavigation } from '@/app';
|
||||
import { useAuthSuspense } from '@/features/auth';
|
||||
import { useDeleteItem, useLibrarySearchStore } from '@/features/library';
|
||||
import { useLibrarySearchStore } from '@/features/library';
|
||||
import { useDeleteItem } from '@/features/library/backend/useDeleteItem';
|
||||
import { useRoleStore, UserRole } from '@/features/users';
|
||||
|
||||
import { useDialogsStore } from '@/stores/dialogs';
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
'use client';
|
||||
|
||||
import { SelectorButton } from '@/components/Control';
|
||||
import { DependencyIcon } from '@/components/DomainIcons';
|
||||
import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown';
|
||||
import { type Styling } from '@/components/props';
|
||||
import { useWindowSize } from '@/hooks/useWindowSize';
|
||||
import { prefixes } from '@/utils/constants';
|
||||
|
||||
import { IconDependencyMode } from '../../../components/IconDependencyMode';
|
||||
import { describeCstSource, labelCstSource } from '../../../labels';
|
||||
import { DependencyMode } from '../../../stores/cstSearch';
|
||||
|
||||
|
@ -33,7 +33,7 @@ export function SelectGraphFilter({ value, dense, onChange, ...restProps }: Sele
|
|||
titleHtml='Настройка фильтрации <br/>по графу термов'
|
||||
hideTitle={menu.isOpen}
|
||||
className='h-full pr-2'
|
||||
icon={<DependencyIcon value={value} size='1rem' />}
|
||||
icon={<IconDependencyMode value={value} size='1rem' />}
|
||||
text={!dense && !size.isSmall ? labelCstSource(value) : undefined}
|
||||
onClick={menu.toggle}
|
||||
/>
|
||||
|
@ -49,7 +49,7 @@ export function SelectGraphFilter({ value, dense, onChange, ...restProps }: Sele
|
|||
onClick={() => handleChange(source)}
|
||||
>
|
||||
<div className='inline-flex items-center gap-1'>
|
||||
{<DependencyIcon value={source} size='1rem' />}
|
||||
{<IconDependencyMode value={source} size='1rem' />}
|
||||
{!dense ? (
|
||||
<span>
|
||||
<b>{labelCstSource(source)}:</b> {describeCstSource(source)}
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
'use client';
|
||||
|
||||
import { SelectorButton } from '@/components/Control';
|
||||
import { MatchModeIcon } from '@/components/DomainIcons';
|
||||
import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown';
|
||||
import { type Styling } from '@/components/props';
|
||||
import { useWindowSize } from '@/hooks/useWindowSize';
|
||||
import { prefixes } from '@/utils/constants';
|
||||
|
||||
import { IconCstMatchMode } from '../../../components/IconCstMatchMode';
|
||||
import { describeCstMatchMode, labelCstMatchMode } from '../../../labels';
|
||||
import { CstMatchMode } from '../../../stores/cstSearch';
|
||||
|
||||
|
@ -32,7 +32,7 @@ export function SelectMatchMode({ value, dense, onChange, ...restProps }: Select
|
|||
titleHtml='Настройка фильтрации <br/>по проверяемым атрибутам'
|
||||
hideTitle={menu.isOpen}
|
||||
className='h-full pr-2'
|
||||
icon={<MatchModeIcon value={value} size='1rem' />}
|
||||
icon={<IconCstMatchMode value={value} size='1rem' />}
|
||||
text={dense || size.isSmall ? undefined : labelCstMatchMode(value)}
|
||||
onClick={menu.toggle}
|
||||
/>
|
||||
|
@ -48,7 +48,7 @@ export function SelectMatchMode({ value, dense, onChange, ...restProps }: Select
|
|||
onClick={() => handleChange(matchMode)}
|
||||
>
|
||||
<div className='inline-flex items-center gap-1'>
|
||||
{<MatchModeIcon value={matchMode} size='1rem' />}
|
||||
{<IconCstMatchMode value={matchMode} size='1rem' />}
|
||||
{!dense ? (
|
||||
<span>
|
||||
<b>{labelCstMatchMode(matchMode)}:</b> {describeCstMatchMode(matchMode)}
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
export { InfoUsers } from './InfoUsers';
|
||||
export { SelectUser } from './SelectUser';
|
||||
export { TableUsers } from './TableUsers';
|
|
@ -1,6 +1,3 @@
|
|||
export { useLabelUser } from './backend/useLabelUser';
|
||||
export { useUsers } from './backend/useUsers';
|
||||
export { InfoUsers } from './components/InfoUsers';
|
||||
export { SelectUser } from './components/SelectUser';
|
||||
export { TableUsers } from './components/TableUsers';
|
||||
export { useRoleStore, UserRole } from './stores/role';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { ExpectedAnonymous, useAuthSuspense } from '@/features/auth';
|
||||
import { useAuthSuspense } from '@/features/auth';
|
||||
import { ExpectedAnonymous } from '@/features/auth/components';
|
||||
|
||||
import { FormSignup } from './FormSignup';
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user