{"version":3,"file":"main.js","sources":["typescript/lib/src/core/signal/Signal.ts","typescript/lib/src/core/node/signal/DOMEventSignal.ts","typescript/lib/src/core/node/signal/NodeSignal.ts","typescript/lib/src/core/node/Node.ts","typescript/lib/src/core/node/Window.ts","typescript/lib/src/core/animation/Renderer.ts","typescript/lib/src/core/animation/Easing.ts","typescript/lib/src/core/animation/PropertyTween.ts","typescript/src/Main.ts"],"sourcesContent":["\n\ninterface Slot {\n\tlistener:T;\n\tcontext:any;\n\tisOnce:boolean;\n}\n\n/**\n * A common interface for signal callback that return nothing\n */\nexport interface EmptyCallback {\n\t()\n}\n\n/**\n* A signal class that is inspired by https://github.com/robertpenner/as3-signals\n* This is an alternative to the classical Event System.\n* It wraps an event type into a property of a class and allows to register directly on the property\n*/\nexport class Signal {\n\t\n\tslots:Slot[] = [];\n\n\t/**\n\t\t* Registers a function to this signal.\n\t\t*/\n\tpublic add( listener:T, context:any = null ):void {\n\t\tthis.slots.push( { listener:listener, context:context, isOnce:false } );\n\t\t//this.slots.push( new Slot( listener, context, false, data ) );\n\t}\n\t\n\t/**\n\t\t* Registers a function to this signal only once\n\t\t*/\n\tpublic addOnce( listener:T, context:any = null ):void {\n\t\tthis.slots.push( { listener:listener, context:context, isOnce:true } );\n\t}\n\t\n\t/**\n\t\t* Removes a listener from the signal\n\t\t*/\n\tpublic remove( listener:T, context:any = null ) {\n\t\tthis.slots = this.slots.filter( function( slot ) {\n\t\t\treturn slot.listener != listener || slot.context != context;\n\t\t});\n\t}\n\n\t/**\n\t * Removes all listeners from signal\n\t */\n\tpublic removeAll() {\n\t\tthis.slots = [];\n\t}\n\t\n\t/**\n\t\t* Returns true is this signal has the given listener function added.\n\t\t*/\n\tpublic has( listener:T, context:any = null ) {\n\t\treturn this.slots.some( function( slot ) {\n\t\t\treturn slot.listener == listener && slot.context == context;\n\t\t});\n\t}\n\t\n\t\n\t/**\n\t\t* Dispatches an event with the given arguments\n\t\t*/\n\tpublic dispatch( ...args:any[] ):void {\n\t\t\n\t\tthis.slots.forEach( ( slot ) => {\n\t\t\tvar func:any = slot.listener;\n\t\t\tfunc.apply( slot.context, args );\n\t\t\tif( slot.isOnce ) this.remove( slot.listener, slot.context );\n\t\t});\n\t}\n}\n\n\n\nexport default Signal;","import Signal from '../../signal/Signal';\n\n/**\n\t* This class registers itself on native DOM events.\n\t*/\nclass DOMEventSignal extends Signal {\n\t\n\tprotected target:EventTarget;\n\tprotected event:string;\n\tprotected callback:( event ) => void = null;\n\t\n\tconstructor( target:EventTarget, event:string ) {\n\t\t\n\t\tsuper();\t\t\t\n\t\tthis.target = target;\n\t\tthis.event = event;\n\t}\n\t\n\t/**\n\t\t* Registers a function to this signal.\n\t\t*/\n\tpublic add( listener:T, context:any = null ):void {\n\t\t\n\t\tif( this.callback === null ) this.register();\n\t\tsuper.add( listener, context );\n\t}\n\t\n\t/**\n\t\t* Registers a function to this signal only once\n\t\t*/\n\tpublic addOnce( listener:T, context:any = null ):void {\n\t\tif( this.callback === null ) this.register();\n\t\tsuper.addOnce( listener, context );\n\t}\n\t\n\t/**\n\t\t* Removes a listener from the signal\n\t\t*/\n\tpublic remove( listener:T, context:any = null ) {\n\t\tsuper.remove( listener, context );\n\t\tif( this.slots.length == 0 ) this.unregister();\n\t}\n\t\n\t/**\n\t\t* Registers the event on the node and setups the callback function.\n\t\t*/\n\tpublic register() {\n\t\t\n\t\tthis.callback = ( event:Event ) => {\n\t\t\tthis.dispatchEvent( event );\n\t\t};\n\t\t\n\t\tthis.target.addEventListener( this.event, this.callback );\n\t}\n\t\n\t/**\n\t\t* Unregisters the event from the html element\n\t\t*/\n\tpublic unregister() {\n\t\tthis.target.removeEventListener( this.event, this.callback );\n\t\tthis.callback = null;\n\t}\n\t\n\t/**\n\t * \n\t */\n\tprotected dispatchEvent( event:Event ) {\n\t\tthis.dispatch( event );\n\t}\n}\n\nexport default DOMEventSignal;","import DOMEventSignal from './DOMEventSignal';\nimport Node from '../Node';\n\n/**\n * A common interface for all node signals\n */\nexport interface NodeEventCallback {\n\t( node: Node, event:Event )\n}\n\n/**\n * This class registers itself on native DOM events.\n */\nclass NodeSignal extends DOMEventSignal {\n\t\n\tconstructor( public node:Node, event:string ){\n\t\tsuper( node.native, event );\n\t}\n\t\n\tprotected dispatchEvent( event:Event ) {\n\t\tthis.dispatch( this.node, event );\n\t}\n}\n\nexport default NodeSignal;","import NodeSignal from './signal/NodeSignal';\n\n/**\n* #Node\n* \n* Wrapper class for the native HTMLElement node.\n* The class gives generalised access to HTMLElements\n* \n* The node class manages a container from type\n* [HTMLElement](https://developer.mozilla.org/de/docs/Web/API/HTMLElement)\n* and adaptes most common functionality.\n* \n*/\n\nexport class Node {\n\n\t// Properties\n\n\t/**\n\t * The native HTMLElement\n\t */\n\tnative: HTMLElement;\n\n\n\t/**\n\t * All signals\n\t */\n\tscroll: NodeSignal;\n\tmouseleave: NodeSignal;\n\tmouseenter: NodeSignal;\n\tmouseout: NodeSignal;\n\tmouseover: NodeSignal;\n\tmouseup: NodeSignal;\n\tmousedown: NodeSignal;\n\tmousemove: NodeSignal;\n\tclick: NodeSignal;\n\tkeypress: NodeSignal;\n\tkeydown: NodeSignal;\n\tkeyup: NodeSignal;\n\tfocus: NodeSignal;\n\tblur: NodeSignal;\n\tchange: NodeSignal;\n\n\t/**\n\t * Constructs a new node\n\t * \n\t * Dont use the constructor to get/create nodes. Use the Factory methods: Node.fromHTML, Node.fromTag\n\t * \n\t * @param HTMLElement native HTMLElement to wrapp\n\t */\n\tconstructor( native: HTMLElement ) {\n\n\t\tthis.native = native;\n\t\tthis.native[\"_lnNode\"] = this; // inject node instance for later retrieval.\n\n\t\tthis.setupSignals();\n\t}\n\n\t/**\n\t * Static create a node from a HTML string\n\t * or `null` if the string is not valid html\n\t * \n\t * Wrapps the given html string into a new node. If this\n\t * new node has more than on children, return the new node,\n\t * otherwise return the first child.\n\t * \n\t * __Example__\n\t * `var n = Node.fromHTML( '
Demo
' );`\n\t * \n\t * @param html The source for the node\n\t */\n\tstatic fromHTML( html: string ): Node {\n\n\t\t// Wrap the given html string into a new node\n\t\tvar tempDiv = Node.fromTag( 'div' );\n\t\ttempDiv.html = html;\n\n\t\tvar children = tempDiv.children();\n\n\t\t// If there is exactly one child the template has one root node - return this one.\n\t\t// otherwise if there are many or no children return the temp div as the root.\n\t\treturn ( children.length == 1 ) ? children[0] : tempDiv;\n\t}\n\n\t/**\n\t * Static create a new node from a HTML tag\n\t * or `null` if the given tag is invalid\n\t * \n\t * __Example__\n\t * `var n = ln.Node.fromTag( 'div' );`\n\t * \n\t * @param tag\n\t */\n\tstatic fromTag( tag: string ): Node {\n\t\treturn new Node( document.createElement( tag ) );\n\t}\n\n\t/**\n\t * Static function that returns the ln.Node from a native HTMLElement\n\t */\n\tstatic fromNative( native: HTMLElement ): Node {\n\t\treturn ( native[\"_lnNode\"] ) ? native[\"_lnNode\"] : new Node( native );\n\t}\n\n\t/**\n\t * Gets the value if an HTMLInputElement like an inputfields\n\t */\n\tget value() {\n\t\treturn ( this.native as HTMLInputElement ).value;\n\t}\n\n\t/**\n\t * Sets the value of an HTMLInputElement like an inputfield\n\t */\n\tset value( value: string ) {\n\t\t( this.native as HTMLInputElement ).value = value;\n\t}\n\n\t/**\n\t * Sets the innerHTML with the given html string.\n\t * @param html The HTML-String\n\t */\n\tset html( html: string ) {\n\t\tthis.native.innerHTML = html;\n\t}\n\n\t/**\n\t * Gets the inner html content of the node.\n\t */\n\tget html(): string {\n\t\treturn this.native.innerHTML;\n\t}\n\n\t/**\n\t * Returns the style to directly adjust it.\n\t */\n\tget style(): CSSStyleDeclaration {\n\t\treturn this.native.style;\n\t}\n\n\t/**\n\t * Returns true/false on a checkbox input if its checked or not\n\t */\n\tget checked(): boolean {\n\t\treturn (this.native as HTMLInputElement ).checked;\n\t}\n\tset checked( value:boolean ) {\n\t\t(this.native as HTMLInputElement ).checked = value;\n\t}\n\n\tget data(): any {\n\n\t\t// fallback for older browsers, create dataset object manually\n\t\tif ( this.native.dataset === undefined ) {\n\n\t\t\tvar attrs = this.native.attributes;\n\t\t\tfor ( var i = 0; i < attrs.length; i++ ) {\n\t\t\t\tvar attr = attrs[i]\n\t\t\t\tif ( attr.name.substr( 0, 5 ) == \"data-\" ) this.native.dataset[attr.name.substr( 5 )] = attr.value;\n\t\t\t}\n\t\t}\n\n\t\treturn this.native.dataset\n\t}\n\n\t/**\n\t * Returns the full html content of the node.\n\t */\n\ttoString(): string {\n\t\treturn this.native.outerHTML;\n\t}\n\n\n\t/**\n\t * Add new class(es) to the node\n\t * \n\t * Classes are always added distinct\n\t * \n\t * __Example__\n\t * `node.addClass( \"class1\", \"class2\", ... )`\n\t * \n\t * @param classname\n\t * @param classlist Typescript restparameter: A list of optional strings\n\t */\n\taddClass( classname: string, ...classlist: string[] ): void {\n\t\tthis.setClasses( this.getClasses().concat( classlist.concat( classname ) ) );\n\t}\n\n\t/**\n\t * Remove classes from the node\n\t * \n\t * __Example__\n\t * see addClass()\n\t * \n\t * @param classname\n\t * @param classlist typescript restparameter: A list of optional strings\n\t */\n\tremoveClass( classname: string, ...classlist: string[] ): void {\n\n\t\tclasslist.push( classname );\n\n\t\t// return only the ones that are not in the classlist.\n\t\tvar filtered = this.getClasses().filter( function ( value ) {\n\t\t\treturn classlist.indexOf( value ) == -1;\n\t\t});\n\n\t\tthis.setClasses( filtered );\n\t}\n\n\t/**\n\t * Toggle a class from this node\n\t * \n\t * __Example__\n\t * `n.toggleClass( 'class2', true );`\n\t * Would result in `class2` still be set.\n\t * \n\t * @param classname\n\t * @param force When force is set to true, the class is set in any case. \n\t * When force is set to false, the class is removed in any case.\n\t */\n\ttoggleClass( classname: string, force?: boolean ): void {\n\n\t\tif ( force == undefined ) {\n\t\t\t( this.hasClass( classname ) ) ? this.removeClass( classname ) : this.addClass( classname );\n\t\t} else {\n\t\t\t( force ) ? this.addClass( classname ) : this.removeClass( classname );\n\t\t}\n\t}\n\n\t/**\n\t * Get the (distinct) classnames from this node as an array\n\t * \n\t * @return The classes are always distinct\n\t */\n\tprivate getClasses(): string[] {\n\n\t\tif ( this.native.className === \"\" ) return [];\n\n\t\treturn this.native.className.split( ' ' );\n\t}\n\n\t/**\n\t * Set (distinct) classes to this node\n\t * \n\t * @param classnames\n\t */\n\tprivate setClasses( classnames: string[] ): void {\n\n\t\tvar distinct = classnames.filter( function ( value, index, self ) {\n\t\t\treturn self.indexOf( value ) === index;\n\t\t});\n\n\t\tthis.native.className = distinct.join( ' ' );\n\t}\n\n\t/**\n\t * Check if the classname exists in the classlist of this node\n\t * \n\t * @param classname Classname to be checked\n\t * @return `true` if the class exists, `false` else\n\t */\n\thasClass( classname: string ): boolean {\n\t\treturn this.getClasses().indexOf( classname ) > -1;\n\t}\n\n\t/**\n\t * Sets an attribute to this node\n\t * \n\t * @param name Name of the attribute\n\t * @param value Value of the attribute\n\t */\n\tsetAttribute( name: string, value: string ): void {\n\t\tthis.native.setAttribute( name, value );\n\t}\n\n\t/**\n\t * Gets the value of an attribute of this node\n\t * or `null` if the specified attribute does not exist\n\t * \n\t * @param name Name of the attribute\n\t */\n\tgetAttribute( name: string ): string {\n\t\treturn this.native.getAttribute( name );\n\t}\n\n\t/**\n\t * Append a child node to this node\n\t * \n\t * The node is inserted as last child of this node\n\t * \n\t * @param n Node to append\n\t */\n\tappend( n: Node | DocumentFragment | Node[] ): void {\n\n\t\t// handle array\n\t\tif ( Array.isArray( n ) ) {\n\n\t\t\tn.forEach( node => {\n\t\t\t\tthis.native.appendChild( node.native );\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\t// handle node/fragment\n\t\tthis.native.appendChild(( n instanceof Node ) ? n.native : n );\n\t}\n\n\t/**\n\t * Prepend a child node to this element\n\t * \n\t * The node is inserted as first child of this node\n\t * \n\t * @param n Node to prepend \n\t */\n\tprepend( n: Node | DocumentFragment | Node[] ): void {\n\n\t\tvar firstChild = this.native.firstChild;\n\n\t\t// handle array\n\t\tif ( Array.isArray( n ) ) {\n\n\t\t\tn.forEach( node => {\n\t\t\t\tthis.native.insertBefore( node.native, firstChild );\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\t// handle node/fragment\n\t\tthis.native.insertBefore(( n instanceof Node ) ? n.native : n, firstChild );\n\t}\n\n\t/** \n\t * Inserts a child node before a given node\n\t * \n\t * @param newNode Node to be inserted\n\t * @param index Position at which the node will be inserted.\n\t */\n\tinsert( n: Node | DocumentFragment, index: number = undefined ): void {\n\t\tthis.native.insertBefore(( n instanceof Node ) ? n.native : n, this.native.childNodes[index] || null );\n\t}\n\n\t/**\n\t * Replaces this node in its parent with the given new node\n\t */\n\treplace( n: Node ): void {\n\t\tthis.parent().native.replaceChild( n.native, this.native );\n\t}\n\n\t/**\n\t * Get all the child nodes from this element\n\t * which are HTMLElements ( no comments, no text, no HTMLDocuments )\n\t * and return them as a array of nodes.\n\t * \n\t * @return Array of child nodes\n\t * or an empty array if the node has no child nodes\n\t */\n\tchildren(): Node[] {\n\t\treturn this.toNodes( this.native.children );\n\t}\n\n\t/**\n\t * Checks if this node has child nodes ( child elements )\n\t * \n\t * @return `true` if this node has child nodes, `false` else\n\t */\n\thasChildren(): boolean {\n\t\treturn this.native.children.length !== 0;\n\t}\n\n\t/**\n\t * Checks if the node has the given node as child node\n\t * \n\t * @return `true` if this node has the given node as child, `false` else\n\t */\n\thasChild( n: Node ): boolean {\n\t\treturn this.children().some( function ( node ) {\n\t\t\treturn node === n;\n\t\t});\n\t}\n\n\t/**\n\t * Removes specified child node and returns the node\n\t * \n\t * @param child Child node to remove from this node\n\t * \n\t * Throws an exception if child is actually is not a child\n\t * of this node\n\t */\n\tremoveChild( child: Node ) {\n\t\tthis.native.removeChild( child.native );\n\t}\n\n\t/**\n\t * removes this node from the parent\n\t */\n\tremove() {\n\t\tif ( this.native.parentElement ) {\n\t\t\tthis.native.parentElement.removeChild( this.native );\n\t\t}\n\t}\n\n\t/**\n\t * Removes all children\n\t */\n\tempty() {\n\t\tfor ( var i = this.native.children.length; i--; ) {\n\t\t\tthis.native.removeChild( this.native.children[i] );\n\t\t}\n\t}\n\n\t/**\n\t * Returns the parent HTMLElement from this node\n\t * \n\t * @return The parent node of this node\n\t * or null if this node has no parent\n\t */\n\tparent(): Node {\n\n\t\tvar p = this.native.parentElement;\n\t\tif ( p === null ) return null;\n\n\t\treturn Node.fromNative( p );\n\t}\n\n\t/**\n\t * Returns the bounding box of this node including values for top, bottom, left, right\n\t * @param relative A flag that specifies if the bounding box coordinates should be relative to the viewport.\n\t */\n\tbounds( relative: boolean = false ): { top: number; left: number; right: number; bottom: number; height: number; width: number  } {\n\n\t\tvar c = this.native.getBoundingClientRect();\n\t\tvar r = {  top: c.top, left: c.left, right: c.right, bottom: c.bottom, height: c.height, width: c.width };\n\n\t\tif ( !relative ) {\n\t\t\tr.top += document.body.scrollTop || document.documentElement.scrollTop;\n\t\t\tr.bottom += document.body.scrollTop || document.documentElement.scrollTop;\n\t\t\tr.left += document.body.scrollLeft || document.documentElement.scrollLeft;\n\t\t\tr.right += document.body.scrollLeft || document.documentElement.scrollLeft;\n\t\t}\n\n\t\tif ( r.height == undefined ) r.height = r.bottom - r.top;\n\t\tif ( r.width == undefined ) r.width = r.right - r.left;\n\n\t\treturn r;\n\t}\n\n\t/**\n\t * Queries this node for the first child node by the specified selector\n\t * and returns it without removing it\n\t * \n\t * @param selector A CSS selector\n\t * @return The first node with the specified selector or `null` if a matching node was not found\n\t * \n\t * Throws a SYNTAX_ERR exception if the specified selector is invalid.\n\t */\n\tone( selector: string ): Node {\n\n\t\tvar htmlElement = this.native.querySelector( selector );\n\n\t\tif ( htmlElement !== null ) {\n\t\t\treturn Node.fromNative( htmlElement );\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Queries this node for all the child nodes by the specified selector\n\t * and returns them as an array\n\t * \n\t * @param selector A CSS selector\n\t * @return Array of nodes (An empty array if there are no elements with\n\t * the specified selector )\n\t * \n\t * Throws a SYNTAX_ERR exception if the specified selector is invalid.\n\t */\n\tall( selector: string ): Node[] {\n\t\treturn this.toNodes( this.native.querySelectorAll( selector ) );\n\t}\n\n\t/**\n\t * Helper function for getting nodes with a js attribute from within the node.\n\t * Gets only the first node\n\t * \n\t * @param key A key used to build the CSS selector [js=key] \n\t * @return The first node or `null` if no matching node was found\n\t */\n\tjs( key: string ): Node {\n\t\treturn this.one( '[js=' + key + ']' );\n\t}\n\n\t/**\n\t * Queries the document for the first node by the specified selector\n\t * and returns it\n\t * \n\t * @param selector A CSS selector\n\t * @return The first node with the specified selector or `null` if a matching node was not found\n\t * \n\t * Throws a SYNTAX_ERR exception if the specified selector is invalid.\n\t */\n\tstatic one( selector: string ): Node {\n\t\tvar tempNode = new Node( document.body );\n\t\treturn tempNode.one( selector );\n\t}\n\n\t/**\n\t * Queries the document for all the nodes by the specified selector\n\t * and returns them as an array\n\t * \n\t * @param selector A CSS selector\n\t * @return Array of nodes or an emtpy array if there are no elements\n\t * with the specified selector\n\t * \n\t * Throws a SYNTAX_ERR exception if the specified selector is invalid.\n\t */\n\tstatic all( selector: string ): Node[] {\n\t\tvar tempNode = new Node( document.body );\n\t\treturn tempNode.all( selector );\n\t}\n\n\t/**\n\t * Helper function for getting nodes with a js attribute from the document.\n\t * Gets only the first occurence.\n\t * \n\t * @param key A key used to build the CSS selector [js-node=key] \n\t * @return The first node or `null` if no matching node was found\n\t */\n\tstatic js( key: string ): Node {\n\t\tvar tempNode = new Node( document.body );\n\t\treturn tempNode.js( key );\n\t}\n\n\t/**\n\t * Helper function that setups all signals properly\n\t */\n\tprivate setupSignals() {\n\t\tvar events = ['scroll',\n\t\t\t'mouseleave',\n\t\t\t'mouseenter',\n\t\t\t'mouseout',\n\t\t\t'mouseover',\n\t\t\t'mouseup',\n\t\t\t'mousedown',\n\t\t\t'mousemove',\n\t\t\t'click',\n\t\t\t'keypress',\n\t\t\t'keydown',\n\t\t\t'keyup',\n\t\t\t'focus',\n\t\t\t'blur',\n\t\t\t'change'];\n\n\t\tfor ( var i = 0; i < events.length; i++ ) {\n\t\t\tthis[events[i]] = new NodeSignal( this, events[i] );\n\t\t}\n\t}\n\n\t/**\n\t * Turns a string into a document fragment\n\t */\n\tpublic static fragment( html: string ): DocumentFragment {\n\n\t\t// browser check if its available\n\t\ttry {\n\t\t\treturn document.createRange().createContextualFragment( html );\n\t\t} catch ( e ) {\n\n\t\t\t// for older browsers make temp document and loop over nodes\n\t\t\tvar frag = document.createDocumentFragment(),\n\t\t\t\tbody = document.createElement( 'body' ), c;\n\t\t\tbody.innerHTML = html;\n\n\t\t\twhile ( c = body.firstElementChild ) frag.appendChild( c );\n\n\t\t\treturn frag;\n\t\t}\n\t}\n\n\t/**\n\t * Helper to turn a HTML Collection or any list into an array of nodes\n\t */\n\tprivate toNodes( collection: any ): Node[] {\n\n\t\tvar temp = [];\n\n\t\tfor ( var i = 0; i < collection.length; i++ ) {\n\t\t\tif ( collection[i] instanceof Element ) {\n\t\t\t\ttemp.push( Node.fromNative( collection[i] ) );\n\t\t\t}\n\t\t}\n\n\t\treturn temp;\n\t}\n}\n\nexport default Node;\n\n\n\n","import DOMEventSignal from './signal/DOMEventSignal';\n\n\nexport interface EventCallback {\n\t( event:Event ):void;\n}\n\n/**\n\t* Defines scroll infomations like top, left and width, height \n\t* The width/height is the max value for the scrollTop/scrollLeft value.\n\t*/\nexport interface ScrollInfo {\n\ttop:number;\n\theight:number;\n\tleft:number;\n\twidth:number;\n}\n\n/**\n\t* Defines a dimension with width & height \n\t*/\nexport interface Dimension {\n\theight:number;\n\twidth:number;\n}\n\n/**\n\t* #Window\n\t* \n\t* A class that provides signals for window events\n\t*/\n\nexport class Window {\n\t\n\tpublic scroll = new DOMEventSignal( window, 'scroll' );\n\tpublic resize = new DOMEventSignal( window, 'resize' );\n\tpublic hashchange = new DOMEventSignal( window, 'hashchange' );\n\tpublic popstate = new DOMEventSignal( window, 'popstate' );\n\t\n\t/**\n\t\t* Returns the scroll top position of the window/body.\n\t\t*/\n\tpublic scrollInfo():ScrollInfo {\n\t\t\n\t\tvar e = document.documentElement;\n\t\tvar b = document.body;\n\t\tvar doc = this.document();\n\t\tvar view = this.viewport();\n\t\t\n\t\treturn {\n\t\t\ttop: ( e && e.scrollTop ) || b.scrollTop,\n\t\t\tleft: ( e && e.scrollLeft ) || b.scrollLeft,\n\t\t\twidth: doc.width - view.width,\n\t\t\theight: doc.height - view.height\n\t\t}\n\t}\n\n\t\n\t/**\n\t\t* Returns the dimensions of the document without the scrollbars\n\t\t*/\n\tpublic document():Dimension {\n\t\treturn {\n\t\t\twidth: document.documentElement.offsetWidth || document.body.offsetWidth,\n\t\t\theight: Math.max(\t\t// Hack for IE 10 document height\n\t\t\t\tdocument.body.scrollHeight, document.documentElement.scrollHeight,\n\t\t\t\tdocument.body.offsetHeight, document.documentElement.offsetHeight,\n\t\t\t\tdocument.body.clientHeight, document.documentElement.clientHeight\n\t\t\t)\n\t\t}\n\t}\n\t\n\t/**\n\t\t* Returns the dimensions of the viewport including the scrollbars\n\t\t*/\n\tpublic viewport():Dimension {\n\t\treturn {\n\t\t\twidth: window.innerWidth || document.body.clientWidth,\n\t\t\theight: window.innerHeight || document.body.clientHeight\n\t\t}\n\t}\n}\n\nexport default new Window();","\ninterface RenderCallback {\n\t()\n}\n\n/**\n * This class invokes a tick single for continous animations\n */\nclass Renderer {\n\n\tprivate callbacks:RenderCallback[] = [];\n\tprivate renderHandle;\n\tprivate requestFrame:( callback:FrameRequestCallback ) => number;\n\tprivate cancelFrame:( handle:number ) => void;\n\n\tconstructor() {\n\n\t\tvar w = window;\n\t\tvar fallback = this.createFallback();\n\n\t\tthis.requestFrame = w.requestAnimationFrame || w.webkitRequestAnimationFrame || fallback;\n\t\tthis.cancelFrame = w.cancelAnimationFrame || w.webkitCancelAnimationFrame || clearTimeout;\n\t}\n\n\tpublic add( callback:RenderCallback ) {\n\t\tif( this.callbacks.length == 0 ) this.render( 0 );\n\t\tthis.callbacks.push( callback );\n\t}\n\n\tpublic remove( callback:RenderCallback ) {\n\t\tthis.callbacks = this.callbacks.filter( function( cb ) {\n\t\t\treturn cb != callback;\n\t\t});\n\n\t\tif( this.callbacks.length == 0 ) this.cancelFrame.call( null, this.renderHandle );\n\t}\n\n\n\t/**\n\t * Main render loop\n\t */\n\tprivate render( time:number ) {\n\t\t// invoke all callbacks\n\t\tthis.callbacks.forEach( callback => {\n\t\t\tcallback();\n\t\t});\n\n\t\t// request new frame\n\t\tthis.renderHandle = this.requestFrame.call( null, this.render.bind( this ) );\n\t}\n\n\n\t/**\n\t * Create setTimeout function for fallback when no requestAnimationFrame is available\n\t */\n\tprivate createFallback():( FrameRequestCallback ) => number {\n\n\t\tvar delay = 1000 / 30; // 30fps\n\n\t\treturn function( callback:FrameRequestCallback ) {\n\t\t\treturn window.setTimeout( () => {\n\t\t\t\tcallback( delay );\n\t\t\t}, delay );\n\t\t}\n\t}\n}\n\nvar instance = new Renderer();\n\nexport default instance;","\n// no easing, no acceleration\nexport function linear( t:number ) {\n\treturn t;\n}\n\n// accelerating from zero velocity\nexport function inQuad( t:number ) {\n\treturn t*t;\n}\n\n// decelerating to zero velocity\nexport function outQuad( t:number ) {\n\treturn t*(2-t);\n}\n\n// acceleration until halfway, then deceleration\nexport function inOutQuad( t:number ) {\n\treturn t<.5 ? 2*t*t : -1+(4-2*t)*t;\n}\n\n// accelerating from zero velocity \nexport function inCubic( t:number ) {\n\treturn t*t*t;\n}\n\n// decelerating to zero velocity \nexport function outCubic( t:number ) {\n\treturn (--t)*t*t+1;\n}\n\n// acceleration until halfway, then deceleration \nexport function inOutCubic( t:number ) {\n\treturn t<.5 ? 4*t*t*t : (t-1)*(2*t-2)*(2*t-2)+1;\n}\n\n// accelerating from zero velocity \nexport function inQuart( t:number ) {\n\treturn t*t*t*t;\n}\n\n// decelerating to zero velocity \nexport function outQuart( t:number ) {\n\treturn 1-(--t)*t*t*t;\n}\n\n// acceleration until halfway, then deceleration \nexport function inOutQuart( t:number ) {\n\treturn t<.5 ? 8*t*t*t*t : 1-8*(--t)*t*t*t;\n}\n\n// accelerating from zero velocity \nexport function inQuint( t:number ) {\n\treturn t*t*t*t*t;\n}\n\n// decelerating to zero velocity \nexport function outQuint( t:number ) {\n\treturn 1+(--t)*t*t*t*t;\n}\n\n// acceleration until halfway, then deceleration \nexport function inOutQuint( t:number ) {\n\treturn t<.5 ? 16*t*t*t*t*t : 1+16*(--t)*t*t*t*t;\n}\n\n// default jquery swing\nexport function swing( t:number ) {\n\treturn 0.5 - Math.cos( t * Math.PI ) / 2;\n}","import Renderer from './Renderer';\nimport { linear } from './Easing';\n\ninterface EaseFunction {\n\t( t:number ):number;\n}\n\ninterface PropertyData {\n\tstart:number;\n\tend:number;\n\tname:string;\n\tease:EaseFunction;\n}\n\nclass PropertyTween {\n\n\tpublic target:any;\n\tpublic properties:PropertyData[] = [];\n\n\tprivate startTime:number;\n\tprivate duration:number;\n\n\tprivate renderHandle;\n\n\tconstructor( target:any ) {\n\t\tthis.renderHandle = this.render.bind( this );\n\t\tthis.target = target;\n\t}\n\n\n\tpublic to( properties:{ [index: string]: number; } , duration:number, easing:EaseFunction = linear ) {\n\t\t\n\t\tvar names = Object.keys( properties );\n\t\t\n\t\t// create property datas\n\t\tnames.forEach( name => {\n\t\t\tvar data = { start:this.target[ name ], end:properties[ name ], name:name, ease:easing };\n\t\t\tthis.properties.push( data )\n\t\t});\n\n\t\tthis.duration = duration * 1000;\n\t\tthis.start();\n\t}\n\n\n\tpublic start() {\n\t\tthis.startTime = Date.now();\n\t\tRenderer.add( this.renderHandle );\n\t}\n\n\n\tpublic stop() {\n\t\tRenderer.remove( this.renderHandle );\n\t}\n\n\n\tprivate render() {\n\t\tvar current = Date.now() - this.startTime;\n\n\t\t// check if over\n\t\tif( current > this.duration ) {\n\t\t\tRenderer.remove( this.renderHandle );\n\t\t\tcurrent = this.duration;\n\t\t\tthis.stop();\n\t\t}\n\n\t\tvar ratio = current / this.duration;\n\n\t\t// update properties\n\t\tthis.properties.forEach( p => {\n\t\t\tthis.target[ p.name ] = ( p.end - p.start ) * p.ease( ratio ) + p.start;\n\t\t});\n\t}\n}\n\nexport default PropertyTween;","import Node from \"ln/node/Node\";\nimport Window from \"ln/node/Window\";\nimport Tween from \"ln/animation/PropertyTween\";\nimport { inOutCubic } from \"ln/animation/Easing\";\nimport ScrollChecker from \"./ScrollChecker\";\n\n\n\nNode.one( '.page-header .menu' ).click.add( function() {\n\tNode.one( '.page-main' ).toggleClass( '-open' );\n});\nif (Node.one( '.spaceship' )){\n\tNode.one( '.spaceship' ).click.add( function() {\n\tNode.one( '.value-animation' ).toggleClass( '-open' );\n});\n}\n\nNode.one( '.button-close' ).click.add( function() {\n\tNode.one( '.page-main' ).toggleClass( '-open' );\n});\n\nNode.one( '.darkener' ).click.add( function() {\n\tNode.one( '.page-main' ).toggleClass( '-open' );\n});\n\nvar teasers = Node.all( '.page-teaser' );\nvar top = teasers[0];\nvar header = Node.one( '.page-header' );\n\n\nfunction checkScroll() {\n\tvar scrollInfo = Window.scrollInfo();\n\theader.toggleClass( '-colored', scrollInfo.top < top.bounds().height );\n}\n\n// only on pages with a top teaser.\nif( top ) {\n\tWindow.resize.add( checkScroll );\n\tWindow.scroll.add( checkScroll );\n\tcheckScroll();\n}\n\n\nvar memberPictures = Node.all('.member-picture');\nmemberPictures.forEach(pictureNode => {\n\t\n\tpictureNode.mouseenter.add( function( pic: Node) {\n\n\t\tvar videoNode = pic.parent().one('.member-video');\n\t\tvar src = videoNode.getAttribute('data-mp4-src');\n\t\tvideoNode.one( 'source' ).setAttribute('src', src);\n\t\t\n\t\tvar video = videoNode.native as HTMLVideoElement;\n\n\t\tvideoNode.mouseleave.add( function() {\n\t\t\tvideo.pause();\n\t\t});\n\t\tvideoNode.mouseenter.add( function() {\n\t\t\tvideo.play();\n\t\t});\n\t\t\n\t\tvideo.ontimeupdate = function() {\n\t\t\tif( video.currentTime > 0 ) {\n\t\t\t\tvideo.ontimeupdate = null;\n\t\t\t\tpic.remove();\n\t\t\t}\n\t\t}\n\n\t\tvideo.load();\n\t\tvideo.play();\n\t});\n});\n\n\n/* Scroll button and scroll timer \nvar checker = new ScrollChecker();\nchecker.done.add( function() {\n\tbodyAnimate();\n});\nif( document.body.scrollTop == 0 ) checker.start();\n}*/\n\n\nvar bodyAnimate = function() {\n\tvar content = Node.one( '#content' );\n\tvar scroll = new Tween( document.body );\n\tscroll.to( { scrollTop:content.bounds().top }, 1, inOutCubic );\n}\n\nvar scrollBut = Node.one( '.scroll.arrow' );\n\nif( scrollBut ) {\n\tscrollBut.click.add( function() {\n\t\tbodyAnimate();\n\t});\n}\n\n\nNode.all('.e-mail').forEach(email =>{\n\t\n\tvar decryptedContent = rot13(email.html);\n\temail.html = decryptedContent;\n\t\n\tvar decryptedSrc = rot13(email.getAttribute('href'));\n\temail.setAttribute('href', decryptedSrc);\n});\n\nfunction rot13(string: any){\n\treturn string.replace(/[a-zA-Z]/g,function(c){\n\t \treturn String.fromCharCode((c<=\"Z\"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);\n\t});\n}"],"names":["tslib_1.__extends","Renderer","Window","Tween"],"mappings":"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"}