UNPKG

@botonic/plugin-contentful

Version:

## What Does This Plugin Do?

103 lines (102 loc) 3.62 kB
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 {};