1+ module Unpacker {
2+ export function _ ( type :string , props :Object = { } , children :Array < HTMLElement > = [ ] , callback :Function = null ) :Element {
3+ var elem :Element = null ;
4+ if ( type !== "svg" ) {
5+ elem = document . createElement ( type ) ;
6+ } else {
7+ elem = document . createElementNS ( "http://www.w3.org/2000/svg" , "svg" ) ;
8+ }
9+ for ( var key in props ) {
10+ if ( props . hasOwnProperty ( key ) ) {
11+ if ( key === "style" ) {
12+ props [ key ] = Unpacker . modernize ( props [ key ] ) ;
13+ for ( var style in props [ key ] ) {
14+ elem [ "style" ] [ style ] = props [ key ] [ style ] ;
15+ }
16+ } else if ( key === "className" ) {
17+ elem [ "className" ] = props [ key ] ;
18+ } else {
19+ elem . setAttribute ( key , props [ key ] ) ;
20+ }
21+ }
22+ }
23+ for ( var c = 0 ; c < children . length ; c ++ ) {
24+ if ( children [ c ] !== null )
25+ elem . appendChild ( children [ c ] ) ;
26+ }
27+ if ( typeof callback === "function" && callback !== null ) {
28+ callback ( elem ) ;
29+ }
30+ return elem ;
31+ }
32+
33+ export function modernize ( styles :Object ) :Object {
34+ var modernizeLibrary :Object = {
35+ "transform" :[ "webkitTransform" ] ,
36+ "transformOrigin" :[ "webkitTransformOrigin" ] ,
37+ "transformStyle" :[ "webkitTransformStyle" ] ,
38+ "perspective" :[ "webkitPerspective" ] ,
39+ "perspectiveOrigin" :[ "webkitPerspectiveOrigin" ]
40+ } ;
41+ for ( var key in modernizeLibrary ) {
42+ if ( styles . hasOwnProperty ( key ) ) {
43+ for ( var i = 0 ; i < modernizeLibrary [ key ] . length ; i ++ ) {
44+ styles [ modernizeLibrary [ key ] [ i ] ] = styles [ key ] ;
45+ }
46+ }
47+ }
48+ return styles ;
49+ }
50+
51+ export function sensibleDefaults ( objectA :Object , defaults :Object ) :Object {
52+ for ( var prop in defaults ) {
53+ if ( ! objectA . hasOwnProperty ( prop ) ) {
54+ objectA [ prop ] = defaults [ prop ]
55+ }
56+ }
57+ return objectA ;
58+ }
59+
60+ export function color ( color :number ) :string {
61+ if ( typeof color === "string" ) {
62+ color = parseInt ( "" + color ) ;
63+ if ( color === NaN ) {
64+ color = 0 ;
65+ }
66+ }
67+ var code :string = color . toString ( 16 ) ;
68+ while ( code . length < 6 ) {
69+ code = "0" + code ;
70+ }
71+ return "#" + code ;
72+ }
73+ }
74+
75+ /// <reference path="TextField.ts" />
0 commit comments