@kizmann/pico-js 0.4.4 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,11 +20,14 @@
20
20
  <body>
21
21
 
22
22
  <div id="app">
23
- <div js-test="foo: 'bar';">
24
- <span>Hallo!</span>
23
+ <div js-test="foo: 'bar'; inview: true">
24
+ <span>Hallo test!</span>
25
25
  </div>
26
- <div js-test2="foo: 'bar';">
27
- <span>Hallo!</span>
26
+ <div style="height: 2000px">
27
+ <span>Spacer!</span>
28
+ </div>
29
+ <div js-test2="foo: 'bar'; inview: true">
30
+ <span>Hallo test2!</span>
28
31
  </div>
29
32
  </div>
30
33
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kizmann/pico-js",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "private": false,
package/src/index.js CHANGED
@@ -85,4 +85,14 @@ if ( typeof global.pi === 'undefined' && global.navigator ) {
85
85
  global.pi = Pico;
86
86
  }
87
87
 
88
+ global.pi.Dom.ready(function () {
89
+
90
+ // Apply dom scroll event
91
+ document.addEventListener("scroll",
92
+ global.pi.Element.scroll);
93
+
94
+ // Apply initial scroll event
95
+ global.pi.Element.scroll();
96
+ });
97
+
88
98
  export default Pico;
@@ -22,6 +22,25 @@ export class Element
22
22
  */
23
23
  static runs = [];
24
24
 
25
+ /**
26
+ * Instance storage.
27
+ */
28
+ static invi = [];
29
+
30
+ static scroll()
31
+ {
32
+ Arr.each(this.invi, (item, index) => {
33
+
34
+ if ( ! Dom.find(item.el).inviewY() ) {
35
+ return;
36
+ }
37
+
38
+ Arr.removeIndex(this.invi, index);
39
+
40
+ item.cb();
41
+ });
42
+ }
43
+
25
44
  /**
26
45
  * Bind a class on selector.
27
46
  */
@@ -56,6 +75,7 @@ export class Element
56
75
  el: el.get(0), prefix: prefix, deamon: cb
57
76
  });
58
77
 
78
+
59
79
  el.data(prefix, cb);
60
80
 
61
81
  return cb.bind !== undefined ?
@@ -130,6 +150,12 @@ export class Element
130
150
  options = { _plain: Dom.find(el).attr(selector) };
131
151
  }
132
152
 
153
+ let inview = Obj.pluck(options, 'inview', false);
154
+
155
+ if ( inview ) {
156
+ Arr.remove(this.invi, { el });
157
+ }
158
+
133
159
  if ( document.body.contains(el) ) {
134
160
  return;
135
161
  }
@@ -147,7 +173,13 @@ export class Element
147
173
  options = { _plain: Dom.find(el).attr(selector) };
148
174
  }
149
175
 
150
- this.bind(key, el, options);
176
+ let inview = Obj.pluck(options, 'inview', false);
177
+
178
+ let bindCb = () => {
179
+ this.bind(key, el, options);
180
+ };
181
+
182
+ inview ? this.bindInview(el, bindCb) : bindCb();
151
183
  });
152
184
 
153
185
  };
@@ -160,6 +192,16 @@ export class Element
160
192
  return this;
161
193
  }
162
194
 
195
+ static bindInview(el, cb)
196
+ {
197
+ Arr.add(this.invi, { el, cb }, { el });
198
+ }
199
+
200
+ static unbindInview(el, cb)
201
+ {
202
+ Arr.remove(this.invi, { el, cb }, { el });
203
+ }
204
+
163
205
 
164
206
 
165
207
  /**
@@ -31,7 +31,7 @@ export class Dom
31
31
  }
32
32
 
33
33
  if ( delay !== 0 && (ready === false || count <= delay) ) {
34
- setTimeout(() => Dom.ready(callback, delay, count + 100), 100);
34
+ setTimeout(() => Dom.ready(callback, delay, count + 50), 50);
35
35
  return this;
36
36
  }
37
37
 
@@ -42,15 +42,16 @@ export class Dom
42
42
 
43
43
  static complete(callback, delay = 0, count = 0)
44
44
  {
45
- let ready = document.readyState === 'complete';
45
+ let ready = document.readyState === 'complete' ||
46
+ document.readyState === 'interactive';
46
47
 
47
48
  if ( delay === 0 && (ready === false || count < delay) ) {
48
- Dom.find(document).on('DOMContentLoaded', callback);
49
+ Dom.find(document).on('load', callback);
49
50
  return this;
50
51
  }
51
52
 
52
53
  if ( delay !== 0 && (ready === false || count < delay) ) {
53
- setTimeout(() => Dom.ready(callback, delay, count + 100), 100);
54
+ setTimeout(() => Dom.ready(callback, delay, count + 50), 50);
54
55
  return this;
55
56
  }
56
57
 
@@ -158,6 +158,15 @@ export class Obj
158
158
  return this.unset(obj[key], keys);
159
159
  }
160
160
 
161
+ static pluck(obj, keys, fallback = null)
162
+ {
163
+ let value = this.get(obj, keys, fallback);
164
+
165
+ this.unset(obj, keys);
166
+
167
+ return value;
168
+ }
169
+
161
170
  static only(obj, keys, assign = null)
162
171
  {
163
172
  let result = {};