Кастомизация поля UPath

Точка расширения UPathNamespaceUtils отвечает за добавление поддержки пространства имен внутри UPathField.

Резолвер принимает в себя сам UPathField:

(uPathField: UPathField<any>) => boolean

Тип точки расширения:

type Meta = {
    namespaceId: UniverseNamespace.NamespaceId;
}

UEUPathNamespaceUtils = UeModuleBase<Resolver, Meta> & {
    createInnerStore: CreateInnerStore;
    optionListRenderer?: OptionListRenderer;
    getCustomOptionFilters?: GetUeFiltersFn;
}

где createInnerStore - функция, генерирующая стор, реализующий интерфейс IUPathInnerStore:

type CreateInnerStore = (
    namespaceId: UniverseNamespace.NamespaceId,
    uPathField: UPathField<any>
) => IUPathInnerStore

optionListRenderer - рендерер списка опций данного пространства имен:

type UPathOptionListRendererProps = {
    inputRef: RefObject<HTMLTextAreaElement>;
    uPath: UPathField | UPathField<null>;
    onSelect: (option: UPathBaseOption | null) => void;
    onChange?: (value: string) => void;
    toggleFocusLock: (isLocked: boolean) => void;
    toggleFocus: (isFocused: boolean) => void;
}

type UPathOptionListComponent = ComponentType<UPathOptionListRendererProps>;

type OptionListRenderer = (uPath: UPathField<any>) => UPathOptionListComponent | undefined;

getCustomOptionFilters - функция, возвращающая фильтры для списка опций typeName и path данного пространства имен:

type GetUeFiltersFn = (uPath: UPathField<any>) => Omit<IUPathFilters, 'namespace'>;