2016-04-04 21:31:15 -04:00
( function e ( t , n , r ) { function s ( o , u ) { if ( ! n [ o ] ) { if ( ! t [ o ] ) { var a = typeof require == "function" && require ; if ( ! u && a ) return a ( o , ! 0 ) ; if ( i ) return i ( o , ! 0 ) ; var f = new Error ( "Cannot find module '" + o + "'" ) ; throw f . code = "MODULE_NOT_FOUND" , f } var l = n [ o ] = { exports : { } } ; t [ o ] [ 0 ] . call ( l . exports , function ( e ) { var n = t [ o ] [ 1 ] [ e ] ; return s ( n ? n : e ) } , l , l . exports , e , t , n , r ) } return n [ o ] . exports } var i = typeof require == "function" && require ; for ( var o = 0 ; o < r . length ; o ++ ) s ( r [ o ] ) ; return s } ) ( { 1 : [ function ( require , module , exports ) {
'use strict' ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ; /* jshint esnext: true */
2016-05-18 23:12:36 -04:00
var _globals = require ( './utils/globals' ) ;
var _globals2 = _interopRequireDefault ( _globals ) ;
2016-04-04 21:31:15 -04:00
var _modules = require ( './modules' ) ;
var modules = _interopRequireWildcard ( _modules ) ;
function _interopRequireWildcard ( obj ) { if ( obj && obj . _ _esModule ) { return obj ; } else { var newObj = { } ; if ( obj != null ) { for ( var key in obj ) { if ( Object . prototype . hasOwnProperty . call ( obj , key ) ) newObj [ key ] = obj [ key ] ; } } newObj . default = obj ; return newObj ; } }
2016-05-18 23:12:36 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
2016-04-04 21:31:15 -04:00
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
var App = function ( ) {
2016-05-18 23:12:36 -04:00
function App ( ) {
2016-04-04 21:31:15 -04:00
_classCallCheck ( this , App ) ;
this . modules = modules ;
this . currentModules = [ ] ;
}
/ * *
* Execute global functions and settings
* @ return { Object }
* /
_createClass ( App , [ {
key : 'initGlobals' ,
value : function initGlobals ( ) {
2016-05-18 23:12:36 -04:00
( 0 , _globals2 . default ) ( ) ;
2016-04-04 21:31:15 -04:00
return this ;
}
/ * *
* Find modules and initialize them
* @ return { Object } this Allows chaining
* /
} , {
key : 'initModules' ,
value : function initModules ( ) {
// Elements with module
var moduleEls = document . querySelectorAll ( '[data-module]' ) ;
// Loop through elements
var i = 0 ;
var elsLen = moduleEls . length ;
for ( ; i < elsLen ; i ++ ) {
// Current element
var el = moduleEls [ i ] ;
// All data- attributes considered as options
var options = this . getElemData ( el ) ;
// Add current DOM element and jQuery element
options . el = el ;
options . $el = $ ( el ) ;
// Module does exist at this point
var attr = options . module ;
// Splitting modules found in the data-attribute
var moduleIdents = attr . replace ( /\s/g , '' ) . split ( ',' ) ;
// Loop modules
var j = 0 ;
var modulesLen = moduleIdents . length ;
for ( ; j < modulesLen ; j ++ ) {
var moduleAttr = moduleIdents [ j ] ;
if ( typeof this . modules [ moduleAttr ] === 'function' ) {
var module = new this . modules [ moduleAttr ] ( options ) ;
this . currentModules . push ( module ) ;
}
}
}
return this ;
}
/ * *
* Get element data attributes
2016-05-18 23:12:36 -04:00
* @ param { DOMElement } el
* @ return { Array } data
2016-04-04 21:31:15 -04:00
* /
} , {
key : 'getElemData' ,
value : function getElemData ( el ) {
// All attributes
var attributes = el . attributes ;
// Regex Pattern
var pattern = /^data\-(.+)$/ ;
// Output
var data = { } ;
for ( var i in attributes ) {
// Attributes name (ex: data-module)
var name = attributes [ i ] . name ;
// This happens.
if ( ! name ) {
continue ;
}
var match = name . match ( pattern ) ;
if ( ! match ) {
continue ;
}
// If this throws an error, you have some
// serious problems in your HTML.
data [ match [ 1 ] ] = el . getAttribute ( name ) ;
}
return data ;
}
/ * *
* Initialize app after document ready
* /
} , {
key : 'init' ,
value : function init ( ) {
this . initGlobals ( ) . initModules ( ) ;
}
} ] ) ;
return App ;
} ( ) ;
$ ( function ( ) {
window . app = new App ( ) ;
window . app . init ( ) ;
} ) ;
2016-05-18 23:12:36 -04:00
} , { "./modules" : 3 , "./utils/globals" : 8 } ] , 2 : [ function ( require , module , exports ) {
"use strict" ;
2016-04-04 21:31:15 -04:00
Object . defineProperty ( exports , "__esModule" , {
2016-05-18 23:12:36 -04:00
value : true
2016-04-04 21:31:15 -04:00
} ) ;
2016-05-18 23:12:36 -04:00
exports . default = function ( ) {
svg4everybody ( ) ;
} ;
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
} , { } ] , 3 : [ function ( require , module , exports ) {
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
2016-04-04 21:31:15 -04:00
} ) ;
var _Button = require ( './modules/Button' ) ;
Object . defineProperty ( exports , 'Button' , {
enumerable : true ,
get : function get ( ) {
return _interopRequireDefault ( _Button ) . default ;
}
} ) ;
var _Title = require ( './modules/Title' ) ;
Object . defineProperty ( exports , 'Title' , {
enumerable : true ,
get : function get ( ) {
return _interopRequireDefault ( _Title ) . default ;
}
} ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
2016-05-18 23:12:36 -04:00
} , { "./modules/Button" : 5 , "./modules/Title" : 6 } ] , 4 : [ function ( require , module , exports ) {
2016-04-04 21:31:15 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
2016-05-18 23:12:36 -04:00
var _environment = require ( '../utils/environment' ) ;
2016-04-04 21:31:15 -04:00
2016-05-18 23:58:08 -04:00
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } } /* jshint esnext: true */
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
/ * *
* Abstract module
* Gives access to generic jQuery nodes
* /
2016-04-04 21:31:15 -04:00
2016-05-18 23:58:08 -04:00
var _class = function _class ( options ) {
_classCallCheck ( this , _class ) ;
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
this . $document = _environment . $document ;
this . $window = _environment . $window ;
this . $html = _environment . $html ;
this . $body = _environment . $body ;
this . $el = options . $el ;
2016-04-04 21:31:15 -04:00
} ;
2016-05-18 23:58:08 -04:00
exports . default = _class ;
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
} , { "../utils/environment" : 7 } ] , 5 : [ function ( require , module , exports ) {
2016-04-04 21:31:15 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
2016-05-18 23:12:36 -04:00
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
var _AbstractModule2 = require ( './AbstractModule' ) ;
var _AbstractModule3 = _interopRequireDefault ( _AbstractModule2 ) ;
2016-04-04 21:31:15 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
2016-05-18 23:12:36 -04:00
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; } /* jshint esnext: true */
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
var _class = function ( _AbstractModule ) {
_inherits ( _class , _AbstractModule ) ;
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
function _class ( options ) {
_classCallCheck ( this , _class ) ;
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
var _this = _possibleConstructorReturn ( this , Object . getPrototypeOf ( _class ) . call ( this , options ) ) ;
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
_this . $el . on ( 'click' , function ( event ) {
_this . $document . trigger ( 'title.changeLabel' , [ $ ( event . currentTarget ) . val ( ) ] ) ;
} ) ;
2016-04-04 21:31:15 -04:00
return _this ;
}
2016-05-18 23:12:36 -04:00
_createClass ( _class , [ {
key : 'destroy' ,
value : function destroy ( ) {
this . $el . off ( '.Button' ) ;
}
} ] ) ;
return _class ;
} ( _AbstractModule3 . default ) ;
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
exports . default = _class ;
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
} , { "./AbstractModule" : 4 } ] , 6 : [ function ( require , module , exports ) {
2016-04-04 21:31:15 -04:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
2016-05-18 23:58:08 -04:00
var _visibility = require ( '../utils/visibility' ) ;
2016-05-18 23:12:36 -04:00
var _AbstractModule2 = require ( './AbstractModule' ) ;
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
var _AbstractModule3 = _interopRequireDefault ( _AbstractModule2 ) ;
2016-04-04 21:31:15 -04:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; } /* jshint esnext: true */
2016-05-18 23:12:36 -04:00
var _class = function ( _AbstractModule ) {
_inherits ( _class , _AbstractModule ) ;
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
function _class ( options ) {
_classCallCheck ( this , _class ) ;
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
var _this = _possibleConstructorReturn ( this , Object . getPrototypeOf ( _class ) . call ( this , options ) ) ;
2016-04-04 21:31:15 -04:00
_this . $label = _this . $el . find ( '.js-label' ) ;
_this . $document . on ( 'title.changeLabel' , function ( event , value ) {
_this . changeLabel ( value ) ;
} ) ;
2016-05-18 23:58:08 -04:00
( 0 , _visibility . registerDocumentHiddenCallback ) ( _this . logHidden ) ;
( 0 , _visibility . registerDocumentVisibleCallback ) ( _this . logVisible ) ;
2016-04-04 21:31:15 -04:00
return _this ;
}
2016-05-18 23:12:36 -04:00
_createClass ( _class , [ {
2016-05-18 23:58:08 -04:00
key : 'logHidden' ,
value : function logHidden ( ) {
console . log ( 'Title is hidden' ) ;
}
} , {
key : 'logVisible' ,
value : function logVisible ( ) {
console . log ( 'Title is visible' ) ;
}
} , {
2016-04-04 21:31:15 -04:00
key : 'changeLabel' ,
value : function changeLabel ( value ) {
this . $label . text ( value ) ;
}
} , {
key : 'destroy' ,
value : function destroy ( ) {
this . $document . off ( 'title.changeLabel' ) ;
2016-05-18 23:12:36 -04:00
this . $el . off ( '.Title' ) ;
2016-04-04 21:31:15 -04:00
}
} ] ) ;
2016-05-18 23:12:36 -04:00
return _class ;
} ( _AbstractModule3 . default ) ;
exports . default = _class ;
2016-05-18 23:58:08 -04:00
} , { "../utils/visibility" : 9 , "./AbstractModule" : 4 } ] , 7 : [ function ( require , module , exports ) {
2016-05-18 23:12:36 -04:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var $document = $ ( document ) ;
var $window = $ ( window ) ;
var $html = $ ( document . documentElement ) ;
var $body = $ ( document . body ) ;
2016-04-04 21:31:15 -04:00
2016-05-18 23:12:36 -04:00
exports . $document = $document ;
exports . $window = $window ;
exports . $html = $html ;
exports . $body = $body ;
} , { } ] , 8 : [ function ( require , module , exports ) {
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = function ( ) {
( 0 , _svg2 . default ) ( ) ;
} ;
var _svg = require ( '../global/svg' ) ;
var _svg2 = _interopRequireDefault ( _svg ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
2016-04-04 21:31:15 -04:00
2016-05-18 23:58:08 -04:00
} , { "../global/svg" : 2 } ] , 9 : [ function ( require , module , exports ) {
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . registerDocumentVisibleCallback = exports . registerDocumentHiddenCallback = undefined ;
var _environment = require ( '../utils/environment' ) ;
var CALLBACKS = {
hidden : [ ] ,
visible : [ ]
} ;
// Main event
/* jshint esnext: true */
_environment . $document . on ( 'visibilitychange' , function ( event ) {
if ( document . hidden ) {
onDocumentChange ( 'hidden' ) ;
} else {
onDocumentChange ( 'visible' ) ;
}
} ) ;
function registerDocumentHiddenCallback ( callback ) {
CALLBACKS [ 'hidden' ] . push ( callback ) ;
}
function registerDocumentVisibleCallback ( callback ) {
CALLBACKS [ 'visible' ] . push ( callback ) ;
}
function onDocumentChange ( state ) {
var callbacks = CALLBACKS [ state ] ;
var i = 0 ;
var len = callbacks . length ;
for ( ; i < len ; i ++ ) {
callbacks [ i ] ( ) ;
}
}
exports . registerDocumentHiddenCallback = registerDocumentHiddenCallback ;
exports . registerDocumentVisibleCallback = registerDocumentVisibleCallback ;
} , { "../utils/environment" : 7 } ] } , { } , [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] )
//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9ncnVudC1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJhc3NldHMvc2NyaXB0cy9BcHAuanMiLCJhc3NldHMvc2NyaXB0cy9nbG9iYWwvc3ZnLmpzIiwiYXNzZXRzL3NjcmlwdHMvbW9kdWxlcy5qcyIsImFzc2V0cy9zY3JpcHRzL21vZHVsZXMvQWJzdHJhY3RNb2R1bGUuanMiLCJhc3NldHMvc2NyaXB0cy9tb2R1bGVzL0J1dHRvbi5qcyIsImFzc2V0cy9zY3JpcHRzL21vZHVsZXMvVGl0bGUuanMiLCJhc3NldHMvc2NyaXB0cy91dGlscy9lbnZpcm9ubWVudC5qcyIsImFzc2V0cy9zY3JpcHRzL3V0aWxzL2dsb2JhbHMuanMiLCJhc3NldHMvc2NyaXB0cy91dGlscy92aXNpYmlsaXR5LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7QUNDQTs7OztBQUNBOztJQUFZOzs7Ozs7OztJQUVOO0FBQ0wsVUFESyxHQUNMLEdBQWM7d0JBRFQsS0FDUzs7QUFDYixPQUFLLE9BQUwsR0FBZSxPQUFmLENBRGE7QUFFYixPQUFLLGNBQUwsR0FBc0IsRUFBdEIsQ0FGYTtFQUFkOzs7Ozs7OztjQURLOztnQ0FVUztBQUNiLDRCQURhO0FBRWIsVUFBTyxJQUFQLENBRmE7Ozs7Ozs7Ozs7Z0NBU0E7O0FBRWIsT0FBSSxZQUFZLFNBQVMsZ0JBQVQsQ0FBMEIsZUFBMUIsQ0FBWjs7O0FBRlMsT0FLVCxJQUFJLENBQUosQ0FMUztBQU1iLE9BQUksU0FBUyxVQUFVLE1BQVYsQ0FOQTs7QUFRYixVQUFPLElBQUksTUFBSixFQUFZLEdBQW5CLEVBQXdCOzs7QUFHdkIsUUFBSSxLQUFLLFVBQVUsQ0FBVixDQUFMOzs7QUFIbUIsUUFNbkIsVUFBVSxLQUFLLFdBQUwsQ0FBaUIsRUFBakIsQ0FBVjs7O0FBTm1CLFdBU3ZCLENBQVEsRUFBUixHQUFhLEVB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