web-portals
Version:
web-portals
137 lines (127 loc) • 3.37 kB
text/typescript
import { Module } from './module'
import { Application } from './Application'
declare interface Animate {
el: Element
duration: Function
origin: Function
}
declare interface ModuleStatus {
init: boolean
preload: boolean
prefetch: boolean
prerender: boolean
}
declare interface ModuleElements {
container: HTMLElement
}
declare interface ModuleResources {
script?: Array<string>
image?: Array<string>
worker?: Array<string>
video?: Array<string>
audio?: Array<string>
font?: Array<string>
style?: Array<string>
}
declare interface ModuleManifest {
config: ModuleConfig
resources?: ModuleResources
events?: ModuleEvents
}
declare interface ModuleTouchBorder {
topHolder: HTMLElement
rightHolder: HTMLElement
bottomHolder: HTMLElement
leftHolder: HTMLElement
mainHolder: HTMLElement
}
declare interface ModuleConfig {
title: string
rel?: 'module' | 'frameworks' | 'system'
level: number
source: {
src?: string
html?: string
}
timeout?: number
render?: (target: HTMLElement) => void
prerender?: Array<string>
free: boolean
animation?: string | boolean | Array<string> | Array<Function> | Function
background?: boolean | 'auto'
singleFlow?: boolean
index?: string
limit?: number
notFind?: string
color?: string
portal?: boolean
events?: ModuleEvents
capture?: string | ((resolve: {
path: string;
origin: string;
host: string;
search: string;
}, url: string) => boolean)
transient?: boolean
allowHosts?: Array<string>
touchBorder?: (borders: ModuleTouchBorder, module: Module, application: Application) => void
apply?: Array<'smart-setTimeout' | 'smart-setInterval' | 'link-in-new-window' | 'tap-highlight' | ['tap-highlight', string]>
inject?: (w: Window, m: Module) => void
sandbox?: 'allow-same-origin' | 'allow-scripts' | 'allow-forms' | 'allow-modals' | 'allow-orientation-lock' | 'allow-popups' | 'allow-pointer-lock' | 'allow-popups-to-escape-sandbox' | 'allow-presentation' | 'allow-top-navigation' | 'allow-top-navigation-by-user-activation' | 'allow-downloads-without-user-activation' | 'allow-storage-access-by-user-activation' | 'allow-top-navigation-by-user-activation' | string
}
declare interface ModuleEvents {
transformStart: () => void | boolean
transformEnd: () => void
start: () => void
load: () => void
loadError: () => void
preload: () => void
destroy: () => void
}
declare interface InjectBridgeData {
config: ModuleConfig
application: Application
container: HTMLElement
}
declare interface TransformAnimateEvent {
x: number
y: number
in: Animate
out: Animate
view: Array<HTMLElement>
width: number
height: number
viewport: Array<HTMLElement>
modules: Array<Module>
reverse: boolean
direction: number
backset: number
origin: string | Array<number>
attach: string | Array<number>
touches: TouchEvent | undefined
callback: Function
}
declare interface TransformOptions {
index: string
defaultIndex: string
singleFlow?: boolean
singleLock?: boolean
notFound?: string
limit?: number
exists?: boolean
defaultAnimation?: ModuleConfig['animation']
}
export {
InjectBridgeData,
TransformOptions,
TransformAnimateEvent,
Animate,
ModuleStatus,
ModuleElements,
ModuleResources,
ModuleManifest,
ModuleEvents,
ModuleConfig,
Module,
Application
}