import { DocumentType } from '../../../documents/DocumentTypes'; export enum ScrapbookPresetType { None = 'None', Collage = 'Collage', Spotlight = 'Spotlight', Gallery = 'Gallery', Default = 'Default', Classic = 'Classic', } export interface ScrapbookItemConfig { x: number; y: number; message?: string; // optional text to display instead of [placeholder] + acceptTags[0] type?: DocumentType; /** what this slot actually accepts (defaults to `tag`) */ acceptTags?: string[]; /** the frame this placeholder occupies */ width?: number; height?: number; /** if this is a container with children, use these for the proto’s own size */ containerWidth?: number; containerHeight?: number; children?: ScrapbookItemConfig[]; } export class ScrapbookPreset { static createPreset(presetType: ScrapbookPresetType): ScrapbookItemConfig[] { switch (presetType) { case ScrapbookPresetType.None: return ScrapbookPreset.createNonePreset(); case ScrapbookPresetType.Classic: return ScrapbookPreset.createClassicPreset(); case ScrapbookPresetType.Collage: return ScrapbookPreset.createCollagePreset(); case ScrapbookPresetType.Spotlight: return ScrapbookPreset.createSpotlightPreset(); case ScrapbookPresetType.Default: return ScrapbookPreset.createDefaultPreset(); case ScrapbookPresetType.Gallery: return ScrapbookPreset.createGalleryPreset(); default: throw new Error(`Unknown preset type: ${presetType}`); } // prettier-ignore } private static createNonePreset(): ScrapbookItemConfig[] { return [{ message: 'To create a scrapbook from existing documents, marquee select. For existing scrapbook arrangements, select a preset from the dropdown.', type: DocumentType.RTF, acceptTags: [], x: 0, y: 0, width: 250, height: 200 }]; } private static createClassicPreset(): ScrapbookItemConfig[] { return [ { type: DocumentType.IMG, message: '[placeholder] landscape', acceptTags: ['LANDSCAPE'], x: 0, y: -100, width: 250, height: 200 }, { type: DocumentType.RTF, message: '[placeholder] lengthy caption', acceptTags: ['paragraphs'], x: 0, y: 138, width: 250, height: 172 }, { type: DocumentType.RTF, message: '[placeholder] brief description', acceptTags: ['sentence'], x: 280, y: -50, width: 50, height: 200 }, { type: DocumentType.IMG, message: '[placeholder] person', acceptTags: ['PERSON'], x: -200, y: -100, width: 167, height: 200 }, ]; } private static createGalleryPreset(): ScrapbookItemConfig[] { return [ { type: DocumentType.IMG, message: 'Gallery 1 ', acceptTags: ['PERSON'], x: -150, y: -150, width: 150, height: 150 }, { type: DocumentType.IMG, message: 'Gallery 2', acceptTags: ['PERSON'], x: 0, y: -150, width: 150, height: 150 }, { type: DocumentType.IMG, message: 'Gallery 3', acceptTags: ['PERSON'], x: 150, y: -150, width: 150, height: 150 }, { type: DocumentType.IMG, message: 'Gallery 4', acceptTags: ['PERSON'], x: -150, y: 0, width: 150, height: 150 }, { type: DocumentType.IMG, message: 'Gallery 5', acceptTags: ['PERSON'], x: 0, y: 0, width: 150, height: 150 }, { type: DocumentType.IMG, message: 'Gallery 6', acceptTags: ['PERSON'], x: 150, y: 0, width: 150, height: 150 }, ]; } private static createDefaultPreset(): ScrapbookItemConfig[] { return [ { type: DocumentType.IMG, message: 'drop a landscape image', acceptTags: ['LANDSCAPE'], x: 44, y: -50, width: 200, height: 120 }, { type: DocumentType.PDF, message: 'summary pdf', acceptTags: ['word', 'sentence', 'paragraphs'], x: 45, y: 93, width: 184, height: 273 }, { type: DocumentType.RTF, message: 'sidebar text', acceptTags: ['paragraphs'], x: 250, y: -50, width: 100, height: 200 }, { containerWidth: 200, containerHeight: 425, x: -171, y: -54, width: 200, height: 425, children: [{ type: DocumentType.IMG, message: 'drop a person image', acceptTags: ['PERSON'], x: -350, y: 200, width: 162, height: 137 }], }, ]; // prettier-ignore } private static createCollagePreset(): ScrapbookItemConfig[] { return [ { type: DocumentType.IMG, message: 'landscape image', acceptTags: ['LANDSCAPE'], x: -174, y: 100, width: 160, height: 150 }, { type: DocumentType.IMG, message: 'person image', acceptTags: ['PERSON'], x: 0, y: 100, width: 150, height: 150 }, { type: DocumentType.RTF, message: 'caption', acceptTags: ['sentence'], x: -174, y: 50, width: 150, height: 40 }, { type: DocumentType.RTF, message: 'caption', acceptTags: ['sentence'], x: 0, y: 50, width: 150, height: 40 }, { type: DocumentType.RTF, message: 'lengthy description', acceptTags: ['paragraphs'], x: -180, y: -60, width: 350, height: 100 }, ]; // prettier-ignore } private static createSpotlightPreset(): ScrapbookItemConfig[] { return [ { type: DocumentType.RTF, message: 'title text', acceptTags: ['word'], x: 0, y: -30, width: 300, height: 40 }, { type: DocumentType.IMG, message: 'drop a landscape image', acceptTags: ['LANDSCAPE'], x: 0, y: 20, width: 300, height: 200 }, { type: DocumentType.RTF, message: 'caption text', acceptTags: ['sentence'], x: 0, y: 230, width: 300, height: 50 }, ]; } }