@plone/types
Version:
Plone's Types Package
127 lines (120 loc) • 3.5 kB
TypeScript
import { Content } from '../content';
import { BlocksFormData } from '../blocks/index';
import { ConfigData } from '.';
import { Controlpanel, ControlPanelSchema } from '..';
type apiExpandersType =
| { match: string; GET_CONTENT: string[] }
| {
match: string;
GET_CONTENT: string[];
querystring:
| { [key: string]: string }
| ((
config,
querystring: { config: ConfigData; querystring: object },
) => { [key: string]: string });
};
type styleClassNameExtendersType = ({
block,
content,
data,
classNames,
}: {
block: string;
content: Content;
data: BlocksFormData;
classNames: string[];
}) => string[];
export type PlateConfig = {
editorConfig: {
plugins: any[];
[key: string]: unknown;
};
rendererConfig: {
plugins: any[];
[key: string]: unknown;
};
floatingToolbarButtons?: React.ComponentType<any>;
};
interface PlateSettings {
block: PlateConfig;
}
export interface SettingsConfig {
[key: string]: unknown;
host: string;
port: string;
publicURL: string;
apiPath: string;
apiExpanders: apiExpandersType[] | [];
devProxyToApiPath: string | undefined;
proxyRewriteTarget: string | undefined;
actions_raising_api_errors: string[];
internalApiPath: string | undefined;
websockets: string | false;
legacyTraverse: string | false;
cookieExpires: number;
nonContentRoutes: Array<string | RegExp>;
richtextEditorSettings: unknown;
richtextViewSettings: unknown;
imageObjects: string[];
reservedIds: string[];
downloadableObjects: string[];
viewableInBrowserObjects: string[];
listingPreviewImageField: string;
openExternalLinkInNewTab: boolean;
notSupportedBrowsers: string[];
defaultPageSize: number;
supportedLanguages: string[]; // TODO: Improve list of possible values
navDepth: number;
expressMiddleware: unknown;
defaultBlockType: string; // TODO: Improve list of possible values
verticalFormTabs: boolean;
useEmailAsLogin: boolean;
persistentReducers: string[];
initialReducersBlacklist: string[];
asyncPropsExtenders: unknown[];
contentIcons: Record<string, string>;
loadables: unknown;
lazyBundles: {
[key: string]: string[];
};
appExtras: {
match: string;
component: React.ComponentType;
props: {
[key: string]: unknown;
};
}[];
maxResponseSize: number;
maxFileUploadSize: number | null;
serverConfig: unknown;
storeExtenders: unknown[];
showTags: boolean;
showRelatedItems: boolean;
controlpanels: Controlpanel[];
controlPanelsIcons: Record<string, string>;
filterControlPanels: unknown;
filterControlPanelsSchema: (schema: Controlpanel) => ControlPanelSchema;
externalRoutes: {
match?: string | { path: string; exact: boolean; strict: boolean };
}[];
showSelfRegistration: boolean;
contentMetadataTagsImageField: string;
maxUndoLevels: number;
addonsInfo: unknown;
workflowMapping: unknown;
errorHandlers: unknown[];
styleClassNameConverters: unknown;
hashLinkSmoothScroll: boolean;
styleClassNameExtenders: styleClassNameExtendersType[];
querystringSearchGet: boolean;
blockSettingsTabFieldsetsInitialStateOpen: boolean;
excludeLinksAndReferencesMenuItem: boolean;
siteTitleFormat: {
includeSiteTitle: boolean;
titleAndSiteTitleSeparator: string;
};
cssLayers: string[];
hideBreadcrumbs: string[]; // Content types for which to hide breadcrumbs
plate: PlateSettings | Record<string, never>;
}