silex-website-builder-goodevent
Version:
Free and easy website builder for everyone.
194 lines (188 loc) • 5.47 kB
text/typescript
/**
* Silex, live web creation
* http://projects.silexlabs.org/?/silex/
*
* Copyright (c) 2012 Silex Labs
* http://www.silexlabs.org/
*
* Silex is available under the GPL license
* http://www.silexlabs.org/silex/silex-licensing/
*/
/**
* @fileoverview This file contains the definitions of the Model, View and
* Controller structures
*
*/
import { ContextMenuController } from './controller/context-menu-controller';
import { CssEditorController } from './controller/css-editor-controller';
import { EditMenuController } from './controller/edit-menu-controller';
import { FileMenuController } from './controller/file-menu-controller';
import { HtmlEditorController } from './controller/html-editor-controller';
import { InsertMenuController } from './controller/insert-menu-controller';
import { JsEditorController } from './controller/js-editor-controller';
import { PageToolController } from './controller/page-tool-controller';
import { PropertyToolController } from './controller/property-tool-controller';
import { SettingsDialogController } from './controller/settings-dialog-controller';
import { StageController } from './controller/stage-controller';
import { TextEditorController } from './controller/text-editor-controller';
import { ToolMenuController } from './controller/tool-menu-controller';
import { ViewMenuController } from './controller/view-menu-controller';
import { Body } from './model/body';
import { Component } from './model/Component';
import { ComponentData } from './model/Data';
import { SilexElement } from './model/element';
import { File } from './model/file';
import { Head } from './model/head';
import { Page } from './model/page';
import { Property } from './model/property';
import { BreadCrumbs } from './view/bread-crumbs';
import { ContextMenu } from './view/context-menu';
import { CssEditor } from './view/dialog/css-editor';
import { Dashboard } from './view/dialog/Dashboard';
import { FileExplorer } from './view/dialog/file-explorer';
import { HtmlEditor } from './view/dialog/html-editor';
import { JsEditor } from './view/dialog/js-editor';
import { SettingsDialog } from './view/dialog/settings-dialog';
import { Menu } from './view/menu';
import { PageTool } from './view/page-tool';
import { PropertyTool } from './view/property-tool';
import { Splitter } from './view/splitter';
import { StageWrapper } from './view/StageWrapper';
import { TextFormatBar } from './view/TextFormatBar';
import { Workspace } from './view/workspace';
/**
* warning: if you change that type, also change the default value in LinkDialog
*/
export interface LinkData {
href?: string;
target?: string;
title?: string;
rel?: string;
type?: string;
download?: string;
}
export enum StickyPoint {
LEFT = 'left',
RIGHT = 'right',
TOP = 'top',
BOTTOM = 'bottom',
}
// MID_V: 'midV',
// MID_H: 'midH',
export interface StickyLine {
id: string;
vertical: boolean;
position: number;
stickyPoint: StickyPoint;
metaData: any;
}
export interface Font {
family: string;
href: string;
}
export interface FileInfo {
url: string;
path: string;
folder: string;
service: string;
size: number;
modified: string;
name: string;
isDir: boolean;
mime: string;
absPath: string;
}
export interface Hosting {
providers: Provider[];
skipHostingSelection: boolean;
}
export interface Provider {
name: string;
displayName: string;
isLoggedIn: boolean;
authorizeUrl: string;
dashboardUrl: string;
pleaseCreateAVhost: string;
vhostsUrl: string;
buyDomainUrl: string;
skipVhostSelection: boolean;
skipFolderSelection: boolean;
afterPublishMessage: string;
}
export interface VHost {
name: string;
domainUrl: string;
skipDomainSelection: boolean;
publicationPath: FileInfo;
url: string;
}
export interface PublicationOptions {
file: FileInfo;
publicationPath: FileInfo;
provider: Provider;
}
export interface UndoItem {
page: string;
html: string;
scrollX: number;
scrollY: number;
}
export interface ClipboardItem {
parent: HTMLElement;
element: HTMLElement;
style: any;
mobileStyle: any;
componentData: ComponentData;
children: ClipboardItem[];
}
/**
* @struct
*/
export interface Model {
file: File;
head: Head;
body: Body;
page: Page;
element: SilexElement;
component: Component;
property: Property;
}
/**
* @struct
*/
export interface Controller {
fileMenuController: FileMenuController;
editMenuController: EditMenuController;
viewMenuController: ViewMenuController;
insertMenuController: InsertMenuController;
toolMenuController: ToolMenuController;
contextMenuController: ContextMenuController;
stageController: StageController;
pageToolController: PageToolController;
propertyToolController: PropertyToolController;
settingsDialogController: SettingsDialogController;
htmlEditorController: HtmlEditorController;
cssEditorController: CssEditorController;
jsEditorController: JsEditorController;
textEditorController: TextEditorController;
}
/**
* @struct
*/
export interface View {
menu: Menu;
contextMenu: ContextMenu;
breadCrumbs: BreadCrumbs;
pageTool: PageTool;
propertyTool: PropertyTool;
textFormatBar: TextFormatBar;
htmlEditor: HtmlEditor;
cssEditor: CssEditor;
jsEditor: JsEditor;
fileExplorer: FileExplorer;
settingsDialog: SettingsDialog;
dashboard: Dashboard;
propSplitter: Splitter;
workspace: Workspace;
stageWrapper: StageWrapper;
}