1+ /**
2+ * Modules in this bundle
3+ * @license
4+ *
5+ * scroll-hint:
6+ * license: MIT (http://opensource.org/licenses/MIT)
7+ * author: steelydylan
8+ * version: 0.0.1
9+ *
10+ * es6-object-assign:
11+ * license: MIT (http://opensource.org/licenses/MIT)
12+ * author: Rubén Norte <rubennorte@gmail.com>
13+ * maintainers: rubennorte <rubennorte@gmail.com>
14+ * homepage: https://github.com/rubennorte/es6-object-assign
15+ * version: 1.1.0
16+ *
17+ * This header is generated by licensify (https://github.com/twada/licensify)
18+ */
19+ ( function ( f ) { if ( typeof exports === "object" && typeof module !== "undefined" ) { module . exports = f ( ) } else if ( typeof define === "function" && define . amd ) { define ( [ ] , f ) } else { var g ; if ( typeof window !== "undefined" ) { g = window } else if ( typeof global !== "undefined" ) { g = global } else if ( typeof self !== "undefined" ) { g = self } else { g = this } g . ScrollHint = f ( ) } } ) ( function ( ) { var define , module , exports ; return ( 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 ) {
20+ /**
21+ * Code refactored from Mozilla Developer Network:
22+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
23+ */
24+
25+ 'use strict' ;
26+
27+ function assign ( target , firstSource ) {
28+ if ( target === undefined || target === null ) {
29+ throw new TypeError ( 'Cannot convert first argument to object' ) ;
30+ }
31+
32+ var to = Object ( target ) ;
33+ for ( var i = 1 ; i < arguments . length ; i ++ ) {
34+ var nextSource = arguments [ i ] ;
35+ if ( nextSource === undefined || nextSource === null ) {
36+ continue ;
37+ }
38+
39+ var keysArray = Object . keys ( Object ( nextSource ) ) ;
40+ for ( var nextIndex = 0 , len = keysArray . length ; nextIndex < len ; nextIndex ++ ) {
41+ var nextKey = keysArray [ nextIndex ] ;
42+ var desc = Object . getOwnPropertyDescriptor ( nextSource , nextKey ) ;
43+ if ( desc !== undefined && desc . enumerable ) {
44+ to [ nextKey ] = nextSource [ nextKey ] ;
45+ }
46+ }
47+ }
48+ return to ;
49+ }
50+
51+ function polyfill ( ) {
52+ if ( ! Object . assign ) {
53+ Object . defineProperty ( Object , 'assign' , {
54+ enumerable : false ,
55+ configurable : true ,
56+ writable : true ,
57+ value : assign
58+ } ) ;
59+ }
60+ }
61+
62+ module . exports = {
63+ assign : assign ,
64+ polyfill : polyfill
65+ } ;
66+
67+ } , { } ] , 2 :[ function ( require , module , exports ) {
68+ 'use strict' ;
69+
70+ Object . defineProperty ( exports , "__esModule" , {
71+ value : true
72+ } ) ;
73+
74+ 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 ; } ; } ( ) ;
75+
76+ var _es6ObjectAssign = require ( 'es6-object-assign' ) ;
77+
78+ var _util = require ( './util' ) ;
79+
80+ function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
81+
82+ var defaults = {
83+ scrollableClass : 'is-scrollable'
84+ } ;
85+
86+ var ScrollHint = function ( ) {
87+ function ScrollHint ( ele , option ) {
88+ var _this = this ;
89+
90+ _classCallCheck ( this , ScrollHint ) ;
91+
92+ this . opt = ( 0 , _es6ObjectAssign . assign ) ( { } , defaults , option ) ;
93+ this . items = [ ] ;
94+ var elements = typeof ele === 'string' ? document . querySelectorAll ( ele ) : ele ;
95+ [ ] . forEach . call ( elements , function ( element ) {
96+ element . style . position = 'relative' ;
97+ element . style . overflow = 'auto' ;
98+ var item = {
99+ element : element ,
100+ scrolledIn : false ,
101+ interacted : false
102+ } ;
103+ element . addEventListener ( 'scroll' , function ( ) {
104+ item . interacted = true ;
105+ _this . updateItem ( item ) ;
106+ } ) ;
107+ ( 0 , _util . append ) ( element , '<div class="scroll-hint"><span></span></div>' ) ;
108+ _this . items . push ( item ) ;
109+ } ) ;
110+ window . addEventListener ( 'scroll' , function ( ) {
111+ _this . updateItems ( ) ;
112+ } ) ;
113+ window . addEventListener ( 'resize' , function ( ) {
114+ _this . updateItems ( ) ;
115+ } ) ;
116+ this . updateItems ( ) ;
117+ }
118+
119+ _createClass ( ScrollHint , [ {
120+ key : 'canScroll' ,
121+ value : function canScroll ( item ) {
122+ var element = item . element ,
123+ scrolledIn = item . scrolledIn ,
124+ interacted = item . interacted ;
125+
126+ return ! interacted && scrolledIn && element . offsetHeight === element . scrollHeight && element . clientWidth <= element . scrollWidth ;
127+ }
128+ } , {
129+ key : 'updateItems' ,
130+ value : function updateItems ( ) {
131+ var _this2 = this ;
132+
133+ [ ] . forEach . call ( this . items , function ( item ) {
134+ _this2 . updateItem ( item ) ;
135+ } ) ;
136+ }
137+ } , {
138+ key : 'checkPosition' ,
139+ value : function checkPosition ( item ) {
140+ var element = item . element ,
141+ scrolledIn = item . scrolledIn ,
142+ interacted = item . interacted ;
143+
144+ if ( scrolledIn ) {
145+ return ;
146+ }
147+ if ( ( 0 , _util . getOffset ) ( element ) . top < ( 0 , _util . getScrollTop ) ( ) + window . innerHeight ) {
148+ item . scrolledIn = true ;
149+ }
150+ }
151+ } , {
152+ key : 'updateItem' ,
153+ value : function updateItem ( item ) {
154+ var opt = this . opt ;
155+ var element = item . element ;
156+
157+ this . checkPosition ( item ) ;
158+ if ( this . canScroll ( item ) ) {
159+ ( 0 , _util . addClass ) ( element , opt . scrollableClass ) ;
160+ } else {
161+ ( 0 , _util . removeClass ) ( element , opt . scrollableClass ) ;
162+ }
163+ }
164+ } ] ) ;
165+
166+ return ScrollHint ;
167+ } ( ) ;
168+
169+ exports . default = ScrollHint ;
170+ module . exports = exports [ 'default' ] ;
171+
172+ } , { "./util" :3 , "es6-object-assign" :1 } ] , 3 :[ function ( require , module , exports ) {
173+ 'use strict' ;
174+
175+ Object . defineProperty ( exports , "__esModule" , {
176+ value : true
177+ } ) ;
178+ var append = exports . append = function append ( element , string ) {
179+ var div = document . createElement ( 'div' ) ;
180+ div . innerHTML = string ;
181+ while ( div . children . length > 0 ) {
182+ element . appendChild ( div . children [ 0 ] ) ;
183+ }
184+ } ;
185+
186+ var addClass = exports . addClass = function addClass ( element , className ) {
187+ if ( element . classList ) {
188+ element . classList . add ( className ) ;
189+ } else {
190+ element . className += ' ' + className ;
191+ }
192+ } ;
193+
194+ var removeClass = exports . removeClass = function removeClass ( element , className ) {
195+ if ( element . classList ) {
196+ element . classList . remove ( className ) ;
197+ } else {
198+ element . className = element . className . replace ( new RegExp ( '(^|\\b)' + className . split ( ' ' ) . join ( '|' ) + '(\\b|$)' , 'gi' ) , ' ' ) ;
199+ }
200+ } ;
201+
202+ var getScrollTop = exports . getScrollTop = function getScrollTop ( ) {
203+ return window . pageYOffset || document . documentElement . scrollTop || document . body . scrollTop || 0 ;
204+ } ;
205+
206+ var getScrollLeft = exports . getScrollLeft = function getScrollLeft ( ) {
207+ return window . pageXOffset || document . documentElement . scrollLeft || document . body . scrollLeft || 0 ;
208+ } ;
209+
210+ var getOffset = exports . getOffset = function getOffset ( el ) {
211+ var rect = el . getBoundingClientRect ( ) ;
212+ return {
213+ top : rect . top + getScrollTop ( ) ,
214+ left : rect . left + getScrollLeft ( )
215+ } ;
216+ } ;
217+
218+ } , { } ] } , { } , [ 2 ] ) ( 2 )
219+ } ) ;
0 commit comments