@studiometa/js-toolkit 2.0.0-beta.1 → 2.0.0-beta.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.
Files changed (39) hide show
  1. package/Base/index.d.ts +27 -1
  2. package/Base/index.js +98 -42
  3. package/Base/managers/EventsManager.d.ts +3 -1
  4. package/Base/managers/EventsManager.js +6 -2
  5. package/Base/managers/OptionsManager.d.ts +2 -0
  6. package/Base/managers/RefsManager.d.ts +2 -0
  7. package/Base/managers/ServicesManager.d.ts +29 -4
  8. package/Base/managers/ServicesManager.js +6 -2
  9. package/decorators/withBreakpointObserver.js +2 -2
  10. package/decorators/withDrag.js +8 -2
  11. package/decorators/withIntersectionObserver.js +4 -3
  12. package/decorators/withMountWhenInView.js +7 -4
  13. package/decorators/withScrolledInView.d.ts +2 -0
  14. package/decorators/withScrolledInView.js +7 -2
  15. package/decorators/withVue2.js +2 -2
  16. package/index.modern.js +1 -1
  17. package/index.umd.js +1 -1
  18. package/package.json +1 -1
  19. package/services/Service.d.ts +22 -17
  20. package/services/Service.js +12 -7
  21. package/services/drag.d.ts +4 -18
  22. package/services/drag.js +81 -104
  23. package/services/index.d.ts +6 -2
  24. package/services/key.d.ts +4 -13
  25. package/services/key.js +55 -56
  26. package/services/load.d.ts +3 -13
  27. package/services/load.js +32 -26
  28. package/services/pointer.d.ts +4 -13
  29. package/services/pointer.js +61 -64
  30. package/services/raf.d.ts +3 -13
  31. package/services/raf.js +22 -25
  32. package/services/resize.d.ts +3 -13
  33. package/services/resize.js +48 -30
  34. package/services/scroll.d.ts +3 -13
  35. package/services/scroll.js +65 -61
  36. package/utils/css/transition.js +2 -2
  37. package/utils/history.js +2 -2
  38. package/utils/object/getAllProperties.js +1 -1
  39. package/utils/scrollTo.js +1 -1
package/Base/index.d.ts CHANGED
@@ -14,13 +14,14 @@
14
14
  * @property {Boolean} [debug]
15
15
  * @property {Boolean} [log]
16
16
  * @property {String[]} [refs]
17
+ * @property {String[]} emits
17
18
  * @property {BaseConfigComponents} [components]
18
19
  * @property {BaseConfigOptions} [options]
19
20
  */
20
21
  /**
21
22
  * Base class.
22
23
  */
23
- export default class Base {
24
+ export default class Base extends EventTarget {
24
25
  /**
25
26
  * This is a Base instance.
26
27
  * @type {Boolean}
@@ -174,6 +175,30 @@ export default class Base {
174
175
  * @return {void}
175
176
  */
176
177
  $terminate(): void;
178
+ /**
179
+ * Test if the given event is configured and warn otherwise.
180
+ *
181
+ * @private
182
+ * @param {string} event The event name.
183
+ * @returns {void}
184
+ */
185
+ private __testEventIsDefined;
186
+ /**
187
+ * Add an emitted event.
188
+ *
189
+ * @private
190
+ * @param {string} event The event name.
191
+ * @returns {void}
192
+ */
193
+ private __addEmits;
194
+ /**
195
+ * Remove an emitted event.
196
+ *
197
+ * @private
198
+ * @param {string} event The event name.
199
+ * @returns {void}
200
+ */
201
+ private __removeEmits;
177
202
  /**
178
203
  * Bind a listener function to an event.
179
204
  *
@@ -233,6 +258,7 @@ export type BaseConfig = {
233
258
  debug?: boolean;
234
259
  log?: boolean;
235
260
  refs?: string[];
261
+ emits: string[];
236
262
  components?: BaseConfigComponents;
237
263
  options?: BaseConfigOptions;
238
264
  };
package/Base/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
 
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
4
 
5
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
6
 
7
7
  import { getComponentElements } from './utils.js';
8
8
  import ChildrenManager from './managers/ChildrenManager.js';
@@ -11,10 +11,11 @@ import ServicesManager from './managers/ServicesManager.js';
11
11
  import EventsManager from './managers/EventsManager.js';
12
12
  import OptionsManager from './managers/OptionsManager.js';
13
13
  var id = 0;
14
+ var isDev = typeof __DEV__ !== 'undefined' && __DEV__;
14
15
 
15
16
  function noop() {}
16
17
 
17
- export default class Base {
18
+ export default class Base extends EventTarget {
18
19
  get $root() {
19
20
  if (!this.$parent) {
20
21
  return this;
@@ -47,6 +48,10 @@ export default class Base {
47
48
  config.options = _objectSpread(_objectSpread({}, proto.constructor.config.options), config.options);
48
49
  }
49
50
 
51
+ if (proto.constructor.config.emits && config.emits) {
52
+ config.emits = [...proto.constructor.config.emits, ...config.emits];
53
+ }
54
+
50
55
  proto = Object.getPrototypeOf(proto);
51
56
  }
52
57
 
@@ -54,27 +59,19 @@ export default class Base {
54
59
  }
55
60
 
56
61
  get $services() {
57
- var services = this.__services;
58
- this.$emit('get:services', services);
59
- return services;
62
+ return this.__services;
60
63
  }
61
64
 
62
65
  get $refs() {
63
- var refs = this.__refs;
64
- this.$emit('get:refs', refs);
65
- return refs;
66
+ return this.__refs;
66
67
  }
67
68
 
68
69
  get $options() {
69
- var options = this.__options;
70
- this.$emit('get:options', options);
71
- return options;
70
+ return this.__options;
72
71
  }
73
72
 
74
73
  get $children() {
75
- var children = this.__children;
76
- this.$emit('get:children', children);
77
- return children;
74
+ return this.__children;
78
75
  }
79
76
 
80
77
  get $log() {
@@ -82,7 +79,7 @@ export default class Base {
82
79
  }
83
80
 
84
81
  get __debug() {
85
- return this.__options.debug && typeof window.__DEV__ !== 'undefined' && window.__DEV__ ? window.console.log.bind(window, "[debug] [".concat(this.$id, "]")) : noop;
82
+ return isDev && this.__options.debug ? window.console.log.bind(window, "[debug] [".concat(this.$id, "]")) : noop;
86
83
  }
87
84
 
88
85
  __callMethod(method) {
@@ -90,12 +87,8 @@ export default class Base {
90
87
  args[_key - 1] = arguments[_key];
91
88
  }
92
89
 
93
- this.__debug('callMethod', method, ...args);
94
-
95
- if (method === 'destroyed' && !this.$isMounted || method === 'mounted' && this.$isMounted) {
96
- this.__debug('not', method, 'because the method has already been triggered once.');
97
-
98
- return;
90
+ if (isDev) {
91
+ this.__debug('callMethod', method, ...args);
99
92
  }
100
93
 
101
94
  this.$emit(method, ...args);
@@ -106,7 +99,9 @@ export default class Base {
106
99
 
107
100
  this[method].call(this, ...args);
108
101
 
109
- this.__debug(method, this, ...args);
102
+ if (isDev) {
103
+ this.__debug(method, this, ...args);
104
+ }
110
105
  }
111
106
 
112
107
  __hasEvent(event) {
@@ -116,6 +111,8 @@ export default class Base {
116
111
  }
117
112
 
118
113
  constructor(element) {
114
+ super();
115
+
119
116
  _defineProperty(this, "$parent", null);
120
117
 
121
118
  _defineProperty(this, "$id", void 0);
@@ -144,11 +141,7 @@ export default class Base {
144
141
  __config
145
142
  } = this;
146
143
 
147
- if (!__config) {
148
- throw new Error('The `config` static property must be defined.');
149
- }
150
-
151
- if (!__config.name) {
144
+ if (__config.name === 'Base') {
152
145
  throw new Error('The `config.name` property is required.');
153
146
  }
154
147
 
@@ -169,13 +162,23 @@ export default class Base {
169
162
  this.__children = new ChildrenManager(this, element, __config.components || {}, this.__events);
170
163
  this.__refs = new RefsManager(this, element, __config.refs || [], this.__events);
171
164
 
172
- this.__debug('constructor', this);
165
+ if (isDev) {
166
+ this.__debug('constructor', this);
167
+ }
173
168
 
174
169
  return this;
175
170
  }
176
171
 
177
172
  $mount() {
178
- this.__debug('$mount');
173
+ if (this.$isMounted) {
174
+ return this;
175
+ }
176
+
177
+ this.$isMounted = true;
178
+
179
+ if (isDev) {
180
+ this.__debug('$mount');
181
+ }
179
182
 
180
183
  this.$children.registerAll();
181
184
  this.$refs.registerAll();
@@ -187,12 +190,13 @@ export default class Base {
187
190
 
188
191
  this.__callMethod('mounted');
189
192
 
190
- this.$isMounted = true;
191
193
  return this;
192
194
  }
193
195
 
194
196
  $update() {
195
- this.__debug('$update');
197
+ if (isDev) {
198
+ this.__debug('$update');
199
+ }
196
200
 
197
201
  this.$refs.unregisterAll();
198
202
  this.$services.disableAll();
@@ -207,7 +211,15 @@ export default class Base {
207
211
  }
208
212
 
209
213
  $destroy() {
210
- this.__debug('$destroy');
214
+ if (!this.$isMounted) {
215
+ return this;
216
+ }
217
+
218
+ this.$isMounted = false;
219
+
220
+ if (isDev) {
221
+ this.__debug('$destroy');
222
+ }
211
223
 
212
224
  this.__events.unbindRootElement();
213
225
 
@@ -217,12 +229,13 @@ export default class Base {
217
229
 
218
230
  this.__callMethod('destroyed');
219
231
 
220
- this.$isMounted = false;
221
232
  return this;
222
233
  }
223
234
 
224
235
  $terminate() {
225
- this.__debug('$terminate');
236
+ if (isDev) {
237
+ this.__debug('$terminate');
238
+ }
226
239
 
227
240
  this.$destroy();
228
241
 
@@ -235,8 +248,36 @@ export default class Base {
235
248
  });
236
249
  }
237
250
 
251
+ __testEventIsDefined(event) {
252
+ if (!(Array.isArray(this.__config.emits) && this.__config.emits.includes(event))) {
253
+ console.warn("[".concat(this.__config.name, "]"), "The \"".concat(event, "\" event is missing from the configuration."));
254
+ }
255
+ }
256
+
257
+ __addEmits(event) {
258
+ var ctor = this.constructor;
259
+
260
+ if (Array.isArray(ctor.config.emits)) {
261
+ ctor.config.emits.push(event);
262
+ } else {
263
+ ctor.config.emits = [event];
264
+ }
265
+ }
266
+
267
+ __removeEmits(event) {
268
+ var ctor = this.constructor;
269
+ var index = ctor.config.emits.findIndex(value => value === event);
270
+ ctor.config.emits.splice(index, 1);
271
+ }
272
+
238
273
  $on(event, listener, options) {
239
- this.__debug('$on', event, listener, options);
274
+ if (isDev) {
275
+ this.__debug('$on', event, listener, options);
276
+ }
277
+
278
+ if (isDev) {
279
+ this.__testEventIsDefined(event);
280
+ }
240
281
 
241
282
  var set = this.__eventHandlers.get(event);
242
283
 
@@ -247,18 +288,24 @@ export default class Base {
247
288
  }
248
289
 
249
290
  set.add(listener);
250
- this.$el.addEventListener(event, listener, options);
291
+ this.addEventListener(event, listener, options);
251
292
  return () => {
252
293
  this.$off(event, listener, options);
253
294
  };
254
295
  }
255
296
 
256
297
  $off(event, listener, options) {
257
- this.__debug('$off', event, listener);
298
+ if (isDev) {
299
+ this.__debug('$off', event, listener);
300
+ }
301
+
302
+ if (isDev) {
303
+ this.__testEventIsDefined(event);
304
+ }
258
305
 
259
306
  this.__eventHandlers.get(event).delete(listener);
260
307
 
261
- this.$el.removeEventListener(event, listener, options);
308
+ this.removeEventListener(event, listener, options);
262
309
  }
263
310
 
264
311
  $emit(event) {
@@ -266,9 +313,15 @@ export default class Base {
266
313
  args[_key2 - 1] = arguments[_key2];
267
314
  }
268
315
 
269
- this.__debug('$emit', event, args);
316
+ if (isDev) {
317
+ this.__debug('$emit', event, args);
318
+ }
319
+
320
+ if (isDev) {
321
+ this.__testEventIsDefined(event);
322
+ }
270
323
 
271
- this.$el.dispatchEvent(new CustomEvent(event, {
324
+ this.dispatchEvent(new CustomEvent(event, {
272
325
  detail: args
273
326
  }));
274
327
  }
@@ -285,4 +338,7 @@ export default class Base {
285
338
 
286
339
  _defineProperty(Base, "$isBase", true);
287
340
 
288
- _defineProperty(Base, "config", void 0);
341
+ _defineProperty(Base, "config", {
342
+ name: 'Base',
343
+ emits: ['mounted', 'updated', 'destroyed', 'terminated', 'ticked', 'scrolled', 'resized', 'moved', 'loaded']
344
+ });
@@ -4,6 +4,8 @@
4
4
  */
5
5
  /**
6
6
  * Event management class.
7
+ * @todo Prevent binding of `onChildOrRefEvent` to the root element
8
+ * @todo Use event delegation?
7
9
  */
8
10
  export default class EventsManager {
9
11
  /**
@@ -150,7 +152,7 @@ export default class EventsManager {
150
152
  * Manage event methods on the root element.
151
153
  *
152
154
  * @param {'add'|'remove'} [mode]
153
- * The action to perform: add or remove the event listeners.
155
+ * The action to perform: add or remove the event listeners, defaults to 'add'.
154
156
  *
155
157
  * @return {void}
156
158
  * @private
@@ -37,7 +37,7 @@ export default class EventsManager {
37
37
 
38
38
  _defineProperty(this, "__childrenHandler", {
39
39
  handleEvent: event => {
40
- var child = event.currentTarget.__base__;
40
+ var child = event.currentTarget;
41
41
  var childName;
42
42
  var index = 0;
43
43
  var childrenManager = this.__base.$children;
@@ -141,10 +141,14 @@ export default class EventsManager {
141
141
 
142
142
  var methods = this.__getEventMethodsByName();
143
143
 
144
+ var {
145
+ emits = []
146
+ } = this.__base.__config;
144
147
  methods.forEach(method => {
145
148
  var event = this.__getEventNameByMethod(method);
146
149
 
147
- this.__rootElement[modeMethod](event, this.__rootElementHandler);
150
+ var target = emits.includes(event) ? this.__base : this.__rootElement;
151
+ target[modeMethod](event, this.__rootElementHandler);
148
152
  });
149
153
  }
150
154
 
@@ -8,6 +8,8 @@
8
8
  */
9
9
  /**
10
10
  * Class options to manage options as data attributes on an HTML element.
11
+ *
12
+ * @todo Use `MutationObserver` to update values? Might be more performant.
11
13
  * @augments {OptionsInterface}
12
14
  */
13
15
  export default class OptionsManager {
@@ -4,6 +4,8 @@
4
4
  */
5
5
  /**
6
6
  * Refs Manager
7
+ *
8
+ * @todo Use `MutationObserver` to automatically update refs?
7
9
  */
8
10
  export default class RefsManager {
9
11
  /**
@@ -1,8 +1,11 @@
1
1
  /**
2
- * @typedef {keyof SERVICES_MAP} ServiceName
2
+ * @typedef {typeof SERVICES_MAP & Record<string, () => ServiceInterface>} Services
3
+ * @typedef {keyof SERVICES_MAP|string} ServiceName
3
4
  */
4
5
  /**
5
6
  * Services management for the Base class.
7
+ *
8
+ * @todo Add support for disabled services on mount when the method is defined.
6
9
  */
7
10
  export default class ServicesManager {
8
11
  /**
@@ -81,7 +84,29 @@ export default class ServicesManager {
81
84
  unregister(name: string): void;
82
85
  }
83
86
  export type Base = import('../index').default;
84
- export type ServiceInterface = import('../../services').ServiceInterface;
87
+ export type BaseConstructor = import('../index').BaseConstructor;
88
+ export type ServiceInterface = import('../../services').ServiceInterface<any>;
89
+ export type Services = typeof SERVICES_MAP & Record<string, () => ServiceInterface>;
85
90
  export type ServiceName = keyof {
86
- [x: string]: () => import("../../services").ServiceInterface;
87
- };
91
+ scrolled: typeof useScroll;
92
+ resized: typeof useResize;
93
+ ticked: typeof useRaf;
94
+ moved: typeof usePointer;
95
+ keyed: typeof useKey;
96
+ loaded: typeof useLoad;
97
+ } | string;
98
+ declare namespace SERVICES_MAP {
99
+ export { useScroll as scrolled };
100
+ export { useResize as resized };
101
+ export { useRaf as ticked };
102
+ export { usePointer as moved };
103
+ export { useKey as keyed };
104
+ export { useLoad as loaded };
105
+ }
106
+ import useScroll from "../../services/scroll.js";
107
+ import useResize from "../../services/resize.js";
108
+ import useRaf from "../../services/raf.js";
109
+ import usePointer from "../../services/pointer.js";
110
+ import useKey from "../../services/key.js";
111
+ import useLoad from "../../services/load.js";
112
+ export {};
@@ -1,8 +1,8 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
 
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
4
 
5
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
6
 
7
7
  import usePointer from '../../services/pointer.js';
8
8
  import useRaf from '../../services/raf.js';
@@ -118,6 +118,8 @@ export default class ServicesManager {
118
118
 
119
119
  register(name, useFunction) {
120
120
  this.__customServices[name] = useFunction;
121
+
122
+ this.__base.__addEmits(name);
121
123
  }
122
124
 
123
125
  unregister(name) {
@@ -125,6 +127,8 @@ export default class ServicesManager {
125
127
  throw new Error("[ServicesManager] The `".concat(name, "` core service can not be unregistered."));
126
128
  }
127
129
 
130
+ this.__base.__removeEmits(name);
131
+
128
132
  delete this.__customServices[name];
129
133
  }
130
134
 
@@ -1,8 +1,8 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
 
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
4
 
5
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
6
 
7
7
  import useResize from '../services/resize.js';
8
8
 
@@ -1,14 +1,17 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
1
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
3
  var _excluded = ["target"];
3
4
  import useDrag from '../services/drag.js';
4
5
  export default function withDrag(BaseClass) {
6
+ var _class, _temp;
7
+
5
8
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
6
9
  {
7
10
  target = instance => instance.$el
8
11
  } = _ref,
9
12
  options = _objectWithoutProperties(_ref, _excluded);
10
13
 
11
- return class extends BaseClass {
14
+ return _temp = _class = class extends BaseClass {
12
15
  constructor(el) {
13
16
  super(el);
14
17
  this.$on('mounted', () => {
@@ -21,5 +24,8 @@ export default function withDrag(BaseClass) {
21
24
  });
22
25
  }
23
26
 
24
- };
27
+ }, _defineProperty(_class, "config", {
28
+ name: "".concat(BaseClass.config.name, "WithDrag"),
29
+ emits: ['dragged']
30
+ }), _temp;
25
31
  }
@@ -1,8 +1,8 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
 
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
4
 
5
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
6
 
7
7
  function createArrayOfNumber(length) {
8
8
  return [...new Array(length + 1)].map((val, index) => index / length);
@@ -38,6 +38,7 @@ export default function withIntersectionObserver(BaseClass) {
38
38
  name: "".concat((_BaseClass$config$nam = BaseClass === null || BaseClass === void 0 ? void 0 : (_BaseClass$config = BaseClass.config) === null || _BaseClass$config === void 0 ? void 0 : _BaseClass$config.name) !== null && _BaseClass$config$nam !== void 0 ? _BaseClass$config$nam : '', "WithIntersectionObserver"),
39
39
  options: _objectSpread(_objectSpread({}, (BaseClass === null || BaseClass === void 0 ? void 0 : (_BaseClass$config2 = BaseClass.config) === null || _BaseClass$config2 === void 0 ? void 0 : _BaseClass$config2.options) || {}), {}, {
40
40
  intersectionObserver: Object
41
- })
41
+ }),
42
+ emits: ['intersected']
42
43
  })), _temp;
43
44
  }
@@ -2,9 +2,9 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _classPrivateFieldGet from "@babel/runtime/helpers/classPrivateFieldGet";
3
3
  import _classPrivateFieldSet from "@babel/runtime/helpers/classPrivateFieldSet";
4
4
 
5
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
5
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
6
 
7
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
7
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8
8
 
9
9
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
10
10
 
@@ -36,8 +36,11 @@ export default function withMountWhenInView(BaseClass) {
36
36
  if (_classPrivateFieldGet(this, _isVisible) !== isVisible) {
37
37
  _classPrivateFieldSet(this, _isVisible, isVisible);
38
38
 
39
- var method = isVisible ? '$mount' : '$destroy';
40
- this[method]();
39
+ if (isVisible) {
40
+ this.$mount();
41
+ } else {
42
+ setTimeout(() => this.$destroy());
43
+ }
41
44
  }
42
45
  }, _objectSpread(_objectSpread({}, defaultOptions), this.$options.intersectionObserver)));
43
46
 
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @typedef {import('../Base').default} Base
3
3
  * @typedef {import('../Base').BaseConstructor} BaseConstructor
4
+ * @typedef {import('../Base').BaseConfig} BaseConfig
4
5
  */
5
6
  /**
6
7
  * Add scrolled in view capabilities to a component.
@@ -12,3 +13,4 @@
12
13
  export default function withScrolledInView<T extends typeof import("../Base").default>(BaseClass: T): T;
13
14
  export type Base = import('../Base').default;
14
15
  export type BaseConstructor = import('../Base').BaseConstructor;
16
+ export type BaseConfig = import('../Base').BaseConfig;
@@ -2,7 +2,9 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import withMountWhenInView from './withMountWhenInView.js';
3
3
  import { clamp, clamp01 } from '../utils/index.js';
4
4
  export default function withScrolledInView(BaseClass) {
5
- return class extends withMountWhenInView(BaseClass) {
5
+ var _class, _temp;
6
+
7
+ return _temp = _class = class extends withMountWhenInView(BaseClass) {
6
8
  constructor(element) {
7
9
  super(element);
8
10
 
@@ -73,5 +75,8 @@ export default function withScrolledInView(BaseClass) {
73
75
  };
74
76
  }
75
77
 
76
- };
78
+ }, _defineProperty(_class, "config", {
79
+ name: "".concat(BaseClass.config.name, "WithMountWhenInView"),
80
+ emits: ['scrolledInView']
81
+ }), _temp;
77
82
  }
@@ -1,8 +1,8 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
 
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
4
 
5
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
6
 
7
7
  export default ((BaseClass, Vue) => {
8
8
  var _class, _temp, _BaseClass$config$nam, _BaseClass$config, _BaseClass$config$ref, _BaseClass$config2;