@botonic/plugin-contentful
Version:
## What Does This Plugin Do?
103 lines (102 loc) • 3.62 kB
TypeScript
import { ContentType } from '../cms';
import { Button, ButtonStyle, Carousel, CommonFields, Content, Document, Element, FollowUp, Handoff, HandoffAgent, Image, Input, OnFinish, Queue, StartUp, Text, Video } from '../contents';
import { Callback } from './../callback';
/**
* Builder for Contents (which are immutable) which allow:
* - Setting the optional fields individually and in any order
* - Easing the implementation of the RndXXXBuilder classes at src/cms/test-helpers/builders.ts
*/
declare abstract class ContentBuilder {
id: string;
name: string;
protected constructor(id: string, name: string);
withId(id: string): this;
withName(name: string): this;
abstract build(contentType?: ContentType): Content;
}
export declare abstract class TopContentBuilder extends ContentBuilder {
shortText?: string;
keywords: string[];
followUp?: FollowUp;
withShortText(shortText: string): this;
withKeywords(kw: string[]): this;
buildCommonFields(): CommonFields;
}
declare abstract class MessageContentBuilder extends TopContentBuilder {
withFollowUp(followUp?: FollowUp): this;
}
export declare class TextBuilder extends MessageContentBuilder {
text: string;
buttons: Button[];
buttonsStyle: ButtonStyle;
constructor(id: string, name: string, text: string);
withText(text: string): this;
withButtons(buttons: Button[]): this;
withButtonStyle(style: ButtonStyle): this;
build(): Text;
}
export declare class ElementBuilder {
id: string;
title?: string;
subtitle?: string;
imgUrl?: string;
buttons: Button[];
constructor(id: string);
withTitle(title: string): this;
withSubtitle(subtitle: string): this;
withImgUrl(imgUrl: string): this;
withButtons(buttons: Button[]): this;
build(): Element;
}
export declare class CarouselBuilder extends MessageContentBuilder {
private elements;
elementBuilder: ElementBuilder | undefined;
constructor(id: string, name: string);
withElementBuilder(elementId: string): ElementBuilder;
addElement(): this;
build(): Carousel;
}
export declare class StartUpBuilder extends MessageContentBuilder {
text: string;
imgUrl?: string;
buttons: Button[];
constructor(id: string, name: string, text: string);
withText(text: string): this;
withButtons(buttons: Button[]): this;
build(): StartUp;
}
export declare class MediaBuilder extends MessageContentBuilder {
mediaUrl: string;
constructor(id: string, name: string, mediaUrl: string);
withUrl(url: string): this;
build(contentType: ContentType): Image | Video;
}
export declare class DocumentBuilder extends MessageContentBuilder {
docUrl: string;
constructor(id: string, name: string, docUrl: string);
withUrl(url: string): this;
build(): Document;
}
export declare class HandoffBuilder extends MessageContentBuilder {
onFinish: OnFinish;
message?: Text;
failMessage?: Text;
queue?: Queue;
agent?: HandoffAgent;
shadowing?: boolean;
constructor(id: string, name: string, onFinish: OnFinish);
withHandoffMessage(message?: Text): this;
withHandoffFailMessage(failMessage?: Text): this;
withQueue(queue?: Queue): this;
withAgent(agent?: HandoffAgent): this;
withShadowing(shadowing?: boolean): this;
build(): Handoff;
}
export declare class InputBuilder extends MessageContentBuilder {
title: string;
keywords: string[];
target: Callback;
constructor(id: string, name: string, title: string, keywords: string[], target: Callback);
build(): Input;
}
export {};