uikit 3.11.2-dev.19d26d0f9 → 3.11.2-dev.21a5b7139

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 (167) hide show
  1. package/.eslintrc.json +4 -49
  2. package/.prettierignore +14 -0
  3. package/.prettierrc.json +13 -0
  4. package/.webstorm.js +3 -3
  5. package/CHANGELOG.md +16 -1
  6. package/build/.eslintrc.json +1 -3
  7. package/build/build.js +26 -28
  8. package/build/icons.js +7 -11
  9. package/build/less.js +48 -36
  10. package/build/package.json +2 -2
  11. package/build/prefix.js +21 -18
  12. package/build/publishDev.js +6 -8
  13. package/build/release.js +20 -17
  14. package/build/scope.js +21 -11
  15. package/build/scss.js +72 -39
  16. package/build/util.js +71 -62
  17. package/build/wrapper/icons.js +0 -2
  18. package/dist/css/uikit-core-rtl.css +42 -17
  19. package/dist/css/uikit-core-rtl.min.css +1 -1
  20. package/dist/css/uikit-core.css +42 -17
  21. package/dist/css/uikit-core.min.css +1 -1
  22. package/dist/css/uikit-rtl.css +42 -17
  23. package/dist/css/uikit-rtl.min.css +1 -1
  24. package/dist/css/uikit.css +42 -17
  25. package/dist/css/uikit.min.css +1 -1
  26. package/dist/js/components/countdown.js +88 -133
  27. package/dist/js/components/countdown.min.js +1 -1
  28. package/dist/js/components/filter.js +410 -437
  29. package/dist/js/components/filter.min.js +1 -1
  30. package/dist/js/components/lightbox-panel.js +1116 -1305
  31. package/dist/js/components/lightbox-panel.min.js +1 -1
  32. package/dist/js/components/lightbox.js +1164 -1383
  33. package/dist/js/components/lightbox.min.js +1 -1
  34. package/dist/js/components/notification.js +94 -114
  35. package/dist/js/components/notification.min.js +1 -1
  36. package/dist/js/components/parallax.js +294 -345
  37. package/dist/js/components/parallax.min.js +1 -1
  38. package/dist/js/components/slider-parallax.js +292 -344
  39. package/dist/js/components/slider-parallax.min.js +1 -1
  40. package/dist/js/components/slider.js +724 -846
  41. package/dist/js/components/slider.min.js +1 -1
  42. package/dist/js/components/slideshow-parallax.js +292 -344
  43. package/dist/js/components/slideshow-parallax.min.js +1 -1
  44. package/dist/js/components/slideshow.js +615 -799
  45. package/dist/js/components/slideshow.min.js +1 -1
  46. package/dist/js/components/sortable.js +587 -616
  47. package/dist/js/components/sortable.min.js +1 -1
  48. package/dist/js/components/tooltip.js +324 -356
  49. package/dist/js/components/tooltip.min.js +1 -1
  50. package/dist/js/components/upload.js +153 -161
  51. package/dist/js/components/upload.min.js +1 -1
  52. package/dist/js/uikit-core.js +5293 -6602
  53. package/dist/js/uikit-core.min.js +1 -1
  54. package/dist/js/uikit-icons.js +7 -9
  55. package/dist/js/uikit-icons.min.js +1 -1
  56. package/dist/js/uikit.js +8114 -9862
  57. package/dist/js/uikit.min.js +1 -1
  58. package/jsconfig.json +1 -1
  59. package/package.json +64 -60
  60. package/src/js/api/boot.js +25 -32
  61. package/src/js/api/component.js +23 -27
  62. package/src/js/api/global.js +6 -12
  63. package/src/js/api/hooks.js +13 -32
  64. package/src/js/api/instance.js +7 -15
  65. package/src/js/api/state.js +80 -101
  66. package/src/js/components/countdown.js +23 -49
  67. package/src/js/components/filter.js +71 -66
  68. package/src/js/components/index.js +13 -13
  69. package/src/js/components/internal/lightbox-animations.js +11 -23
  70. package/src/js/components/internal/slider-transitioner.js +65 -44
  71. package/src/js/components/internal/slideshow-animations.js +42 -61
  72. package/src/js/components/lightbox-panel.js +135 -109
  73. package/src/js/components/lightbox.js +17 -38
  74. package/src/js/components/notification.js +49 -43
  75. package/src/js/components/parallax.js +16 -30
  76. package/src/js/components/slider-parallax.js +13 -23
  77. package/src/js/components/slider.js +73 -61
  78. package/src/js/components/slideshow-parallax.js +1 -1
  79. package/src/js/components/slideshow.js +8 -13
  80. package/src/js/components/sortable.js +121 -102
  81. package/src/js/components/tooltip.js +41 -31
  82. package/src/js/components/upload.js +46 -53
  83. package/src/js/core/accordion.js +54 -49
  84. package/src/js/core/alert.js +10 -17
  85. package/src/js/core/core.js +74 -53
  86. package/src/js/core/cover.js +11 -15
  87. package/src/js/core/drop.js +107 -93
  88. package/src/js/core/form-custom.js +20 -25
  89. package/src/js/core/gif.js +3 -7
  90. package/src/js/core/grid.js +57 -58
  91. package/src/js/core/height-match.js +15 -28
  92. package/src/js/core/height-viewport.js +28 -35
  93. package/src/js/core/icon.js +38 -50
  94. package/src/js/core/img.js +57 -58
  95. package/src/js/core/index.js +39 -39
  96. package/src/js/core/leader.js +9 -18
  97. package/src/js/core/margin.js +10 -24
  98. package/src/js/core/modal.js +50 -36
  99. package/src/js/core/nav.js +2 -4
  100. package/src/js/core/navbar.js +112 -84
  101. package/src/js/core/offcanvas.js +49 -53
  102. package/src/js/core/overflow-auto.js +13 -17
  103. package/src/js/core/responsive.js +14 -12
  104. package/src/js/core/scroll.js +10 -20
  105. package/src/js/core/scrollspy-nav.js +34 -31
  106. package/src/js/core/scrollspy.js +34 -51
  107. package/src/js/core/sticky.js +151 -93
  108. package/src/js/core/svg.js +60 -79
  109. package/src/js/core/switcher.js +47 -46
  110. package/src/js/core/tab.js +7 -10
  111. package/src/js/core/toggle.js +63 -65
  112. package/src/js/core/video.js +11 -22
  113. package/src/js/mixin/animate.js +19 -20
  114. package/src/js/mixin/class.js +2 -4
  115. package/src/js/mixin/container.js +7 -11
  116. package/src/js/mixin/internal/animate-fade.js +73 -30
  117. package/src/js/mixin/internal/animate-slide.js +61 -41
  118. package/src/js/mixin/internal/slideshow-animations.js +7 -14
  119. package/src/js/mixin/internal/slideshow-transitioner.js +10 -17
  120. package/src/js/mixin/media.js +5 -10
  121. package/src/js/mixin/modal.js +89 -66
  122. package/src/js/mixin/parallax.js +53 -48
  123. package/src/js/mixin/position.js +26 -20
  124. package/src/js/mixin/slider-autoplay.js +12 -21
  125. package/src/js/mixin/slider-drag.js +62 -63
  126. package/src/js/mixin/slider-nav.js +25 -34
  127. package/src/js/mixin/slider-reactive.js +2 -8
  128. package/src/js/mixin/slider.js +51 -50
  129. package/src/js/mixin/slideshow.js +13 -19
  130. package/src/js/mixin/togglable.js +90 -63
  131. package/src/js/uikit-core.js +2 -4
  132. package/src/js/uikit.js +2 -4
  133. package/src/js/util/ajax.js +27 -43
  134. package/src/js/util/animation.js +82 -75
  135. package/src/js/util/attr.js +6 -12
  136. package/src/js/util/class.js +14 -52
  137. package/src/js/util/dimensions.js +56 -43
  138. package/src/js/util/dom.js +36 -54
  139. package/src/js/util/env.js +7 -12
  140. package/src/js/util/event.js +60 -59
  141. package/src/js/util/fastdom.js +1 -6
  142. package/src/js/util/filter.js +17 -34
  143. package/src/js/util/index.js +0 -1
  144. package/src/js/util/lang.js +79 -119
  145. package/src/js/util/mouse.js +19 -17
  146. package/src/js/util/options.js +44 -49
  147. package/src/js/util/player.js +40 -36
  148. package/src/js/util/position.js +53 -45
  149. package/src/js/util/promise.js +0 -191
  150. package/src/js/util/selector.js +39 -48
  151. package/src/js/util/style.js +36 -46
  152. package/src/js/util/viewport.js +75 -64
  153. package/src/less/components/flex.less +0 -9
  154. package/src/less/components/navbar.less +0 -7
  155. package/src/less/components/utility.less +22 -0
  156. package/src/scss/components/flex.scss +0 -9
  157. package/src/scss/components/form.scss +3 -3
  158. package/src/scss/components/icon.scss +2 -2
  159. package/src/scss/components/navbar.scss +0 -7
  160. package/src/scss/components/search.scss +1 -1
  161. package/src/scss/components/utility.scss +22 -0
  162. package/src/scss/variables-theme.scss +6 -6
  163. package/src/scss/variables.scss +6 -6
  164. package/tests/js/index.js +114 -85
  165. package/tests/sticky-parallax.html +44 -41
  166. package/tests/sticky.html +20 -3
  167. package/src/js/mixin/flex-bug.js +0 -56
@@ -1,10 +1,9 @@
1
- import {once} from './event';
2
- import {parent} from './filter';
3
- import {find, findAll} from './selector';
4
- import {isElement, isString, isUndefined, toNode, toNodes} from './lang';
1
+ import { once } from './event';
2
+ import { parent } from './filter';
3
+ import { find, findAll } from './selector';
4
+ import { isElement, isString, isUndefined, startsWith, toNode, toNodes } from './lang';
5
5
 
6
6
  export function ready(fn) {
7
-
8
7
  if (document.readyState !== 'loading') {
9
8
  fn();
10
9
  return;
@@ -14,62 +13,48 @@ export function ready(fn) {
14
13
  }
15
14
 
16
15
  export function empty(element) {
17
- element = $(element);
18
- element.innerHTML = '';
19
- return element;
16
+ return replaceChildren(element, '');
20
17
  }
21
18
 
22
19
  export function html(parent, html) {
23
- parent = $(parent);
24
- return isUndefined(html)
25
- ? parent.innerHTML
26
- : append(parent.hasChildNodes() ? empty(parent) : parent, html);
20
+ return isUndefined(html) ? $(parent).innerHTML : replaceChildren(parent, html);
27
21
  }
28
22
 
29
- export function prepend(parent, element) {
30
-
31
- parent = $(parent);
23
+ export function replaceChildren(parent, element) {
24
+ const nodes = $$(element);
25
+ $(parent).replaceChildren(...nodes);
26
+ return nodes;
27
+ }
32
28
 
33
- if (parent.hasChildNodes()) {
34
- return insertNodes(element, element => parent.insertBefore(element, parent.firstChild));
35
- } else {
36
- return append(parent, element);
37
- }
29
+ export function prepend(parent, element) {
30
+ const nodes = $$(element);
31
+ $(parent).prepend(...nodes);
32
+ return nodes;
38
33
  }
39
34
 
40
35
  export function append(parent, element) {
41
- parent = $(parent);
42
- return insertNodes(element, element => parent.appendChild(element));
36
+ const nodes = $$(element);
37
+ $(parent).append(...nodes);
38
+ return nodes;
43
39
  }
44
40
 
45
41
  export function before(ref, element) {
46
- ref = $(ref);
47
- return insertNodes(element, element => ref.parentNode.insertBefore(element, ref));
42
+ const nodes = $$(element);
43
+ $(ref).before(...nodes);
44
+ return nodes;
48
45
  }
49
46
 
50
47
  export function after(ref, element) {
51
- ref = $(ref);
52
- return insertNodes(element, element => ref.nextSibling
53
- ? before(ref.nextSibling, element)
54
- : append(ref.parentNode, element)
55
- );
56
- }
57
-
58
- function insertNodes(element, fn) {
59
- element = isString(element) ? fragment(element) : element;
60
- return element
61
- ? 'length' in element
62
- ? toNodes(element).map(fn)
63
- : fn(element)
64
- : null;
48
+ const nodes = $$(element);
49
+ $(ref).after(...nodes);
50
+ return nodes;
65
51
  }
66
52
 
67
53
  export function remove(element) {
68
- toNodes(element).forEach(element => element.parentNode && element.parentNode.removeChild(element));
54
+ toNodes(element).forEach((element) => element.remove());
69
55
  }
70
56
 
71
57
  export function wrapAll(element, structure) {
72
-
73
58
  structure = toNode(before(element, structure));
74
59
 
75
60
  while (structure.firstChild) {
@@ -82,16 +67,20 @@ export function wrapAll(element, structure) {
82
67
  }
83
68
 
84
69
  export function wrapInner(element, structure) {
85
- return toNodes(toNodes(element).map(element =>
86
- element.hasChildNodes ? wrapAll(toNodes(element.childNodes), structure) : append(element, structure)
87
- ));
70
+ return toNodes(
71
+ toNodes(element).map((element) =>
72
+ element.hasChildNodes
73
+ ? wrapAll(toNodes(element.childNodes), structure)
74
+ : append(element, structure)
75
+ )
76
+ );
88
77
  }
89
78
 
90
79
  export function unwrap(element) {
91
80
  toNodes(element)
92
81
  .map(parent)
93
82
  .filter((value, index, self) => self.indexOf(value) === index)
94
- .forEach(parent => {
83
+ .forEach((parent) => {
95
84
  before(parent, parent.childNodes);
96
85
  remove(parent);
97
86
  });
@@ -101,7 +90,6 @@ const fragmentRe = /^\s*<(\w+|!)[^>]*>/;
101
90
  const singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
102
91
 
103
92
  export function fragment(html) {
104
-
105
93
  const matches = singleTagRe.exec(html);
106
94
  if (matches) {
107
95
  return document.createElement(matches[1]);
@@ -115,11 +103,9 @@ export function fragment(html) {
115
103
  }
116
104
 
117
105
  return container.childNodes.length > 1 ? toNodes(container.childNodes) : container.firstChild;
118
-
119
106
  }
120
107
 
121
108
  export function apply(node, fn) {
122
-
123
109
  if (!isElement(node)) {
124
110
  return;
125
111
  }
@@ -134,17 +120,13 @@ export function apply(node, fn) {
134
120
  }
135
121
 
136
122
  export function $(selector, context) {
137
- return isHtml(selector)
138
- ? toNode(fragment(selector))
139
- : find(selector, context);
123
+ return isHtml(selector) ? toNode(fragment(selector)) : find(selector, context);
140
124
  }
141
125
 
142
126
  export function $$(selector, context) {
143
- return isHtml(selector)
144
- ? toNodes(fragment(selector))
145
- : findAll(selector, context);
127
+ return isHtml(selector) ? toNodes(fragment(selector)) : findAll(selector, context);
146
128
  }
147
129
 
148
130
  function isHtml(str) {
149
- return isString(str) && (str[0] === '<' || str.match(/^\s*</));
131
+ return isString(str) && startsWith(str.trim(), '<');
150
132
  }
@@ -1,19 +1,14 @@
1
- /* global DocumentTouch */
2
- import {attr} from './attr';
1
+ import { attr } from './attr';
3
2
 
4
3
  export const inBrowser = typeof window !== 'undefined';
5
- export const isIE = inBrowser && /msie|trident/i.test(window.navigator.userAgent);
6
4
  export const isRtl = inBrowser && attr(document.documentElement, 'dir') === 'rtl';
7
5
 
8
- const hasTouchEvents = inBrowser && 'ontouchstart' in window;
6
+ export const hasTouch = inBrowser && 'ontouchstart' in window;
9
7
  const hasPointerEvents = inBrowser && window.PointerEvent;
10
- export const hasTouch = inBrowser && (hasTouchEvents
11
- || window.DocumentTouch && document instanceof DocumentTouch
12
- || navigator.maxTouchPoints); // IE >=11
13
8
 
14
- export const pointerDown = hasPointerEvents ? 'pointerdown' : hasTouchEvents ? 'touchstart' : 'mousedown';
15
- export const pointerMove = hasPointerEvents ? 'pointermove' : hasTouchEvents ? 'touchmove' : 'mousemove';
16
- export const pointerUp = hasPointerEvents ? 'pointerup' : hasTouchEvents ? 'touchend' : 'mouseup';
17
- export const pointerEnter = hasPointerEvents ? 'pointerenter' : hasTouchEvents ? '' : 'mouseenter';
18
- export const pointerLeave = hasPointerEvents ? 'pointerleave' : hasTouchEvents ? '' : 'mouseleave';
9
+ export const pointerDown = hasPointerEvents ? 'pointerdown' : hasTouch ? 'touchstart' : 'mousedown';
10
+ export const pointerMove = hasPointerEvents ? 'pointermove' : hasTouch ? 'touchmove' : 'mousemove';
11
+ export const pointerUp = hasPointerEvents ? 'pointerup' : hasTouch ? 'touchend' : 'mouseup';
12
+ export const pointerEnter = hasPointerEvents ? 'pointerenter' : hasTouch ? '' : 'mouseenter';
13
+ export const pointerLeave = hasPointerEvents ? 'pointerleave' : hasTouch ? '' : 'mouseleave';
19
14
  export const pointerCancel = hasPointerEvents ? 'pointercancel' : 'touchcancel';
@@ -1,19 +1,15 @@
1
- import {isIE} from './env';
2
- import {findAll} from './selector';
3
- import {closest, within} from './filter';
4
- import {isArray, isBoolean, isFunction, isString, toNode, toNodes} from './lang';
1
+ import { findAll } from './selector';
2
+ import { closest, within } from './filter';
3
+ import { isArray, isFunction, isString, toNode, toNodes } from './lang';
5
4
 
6
5
  export function on(...args) {
7
-
8
- let [targets, type, selector, listener, useCapture] = getArgs(args);
9
-
10
- targets = toEventTargets(targets);
6
+ let [targets, types, selector, listener, useCapture = false] = getArgs(args);
11
7
 
12
8
  if (listener.length > 1) {
13
9
  listener = detail(listener);
14
10
  }
15
11
 
16
- if (useCapture && useCapture.self) {
12
+ if (useCapture?.self) {
17
13
  listener = selfFilter(listener);
18
14
  }
19
15
 
@@ -21,80 +17,92 @@ export function on(...args) {
21
17
  listener = delegate(selector, listener);
22
18
  }
23
19
 
24
- useCapture = useCaptureFilter(useCapture);
20
+ for (const type of types) {
21
+ for (const target of targets) {
22
+ target.addEventListener(type, listener, useCapture);
23
+ }
24
+ }
25
25
 
26
- type.split(' ').forEach(type =>
27
- targets.forEach(target =>
28
- target.addEventListener(type, listener, useCapture)
29
- )
30
- );
31
- return () => off(targets, type, listener, useCapture);
26
+ return () => off(targets, types, listener, useCapture);
32
27
  }
33
28
 
34
- export function off(targets, type, listener, useCapture = false) {
35
- useCapture = useCaptureFilter(useCapture);
36
- targets = toEventTargets(targets);
37
- type.split(' ').forEach(type =>
38
- targets.forEach(target =>
39
- target.removeEventListener(type, listener, useCapture)
40
- )
41
- );
29
+ export function off(...args) {
30
+ let [targets, types, , listener, useCapture = false] = getArgs(args);
31
+ for (const type of types) {
32
+ for (const target of targets) {
33
+ target.removeEventListener(type, listener, useCapture);
34
+ }
35
+ }
42
36
  }
43
37
 
44
38
  export function once(...args) {
45
-
46
- const [element, type, selector, listener, useCapture, condition] = getArgs(args);
47
- const off = on(element, type, selector, e => {
48
- const result = !condition || condition(e);
49
- if (result) {
50
- off();
51
- listener(e, result);
52
- }
53
- }, useCapture);
39
+ const [element, types, selector, listener, useCapture = false, condition] = getArgs(args);
40
+ const off = on(
41
+ element,
42
+ types,
43
+ selector,
44
+ (e) => {
45
+ const result = !condition || condition(e);
46
+ if (result) {
47
+ off();
48
+ listener(e, result);
49
+ }
50
+ },
51
+ useCapture
52
+ );
54
53
 
55
54
  return off;
56
55
  }
57
56
 
58
57
  export function trigger(targets, event, detail) {
59
- return toEventTargets(targets).reduce((notCanceled, target) =>
60
- notCanceled && target.dispatchEvent(createEvent(event, true, true, detail))
61
- , true);
58
+ return toEventTargets(targets).every((target) =>
59
+ target.dispatchEvent(createEvent(event, true, true, detail))
60
+ );
62
61
  }
63
62
 
64
63
  export function createEvent(e, bubbles = true, cancelable = false, detail) {
65
64
  if (isString(e)) {
66
- const event = document.createEvent('CustomEvent'); // IE 11
67
- event.initCustomEvent(e, bubbles, cancelable, detail);
68
- e = event;
65
+ e = new CustomEvent(e, { bubbles, cancelable, detail });
69
66
  }
70
67
 
71
68
  return e;
72
69
  }
73
70
 
74
71
  function getArgs(args) {
72
+ // Event targets
73
+ args[0] = toEventTargets(args[0]);
74
+
75
+ // Event types
76
+ if (isString(args[1])) {
77
+ args[1] = args[1].split(' ');
78
+ }
79
+
80
+ // Delegate?
75
81
  if (isFunction(args[2])) {
76
82
  args.splice(2, 0, false);
77
83
  }
84
+
78
85
  return args;
79
86
  }
80
87
 
81
88
  function delegate(selector, listener) {
82
- return e => {
83
-
84
- const current = selector[0] === '>'
85
- ? findAll(selector, e.currentTarget).reverse().filter(element => within(e.target, element))[0]
86
- : closest(e.target, selector);
89
+ return (e) => {
90
+ const current =
91
+ selector[0] === '>'
92
+ ? findAll(selector, e.currentTarget)
93
+ .reverse()
94
+ .filter((element) => within(e.target, element))[0]
95
+ : closest(e.target, selector);
87
96
 
88
97
  if (current) {
89
98
  e.current = current;
90
99
  listener.call(this, e);
91
100
  }
92
-
93
101
  };
94
102
  }
95
103
 
96
104
  function detail(listener) {
97
- return e => isArray(e.detail) ? listener(e, ...e.detail) : listener(e);
105
+ return (e) => (isArray(e.detail) ? listener(e, ...e.detail) : listener(e));
98
106
  }
99
107
 
100
108
  function selfFilter(listener) {
@@ -105,12 +113,6 @@ function selfFilter(listener) {
105
113
  };
106
114
  }
107
115
 
108
- function useCaptureFilter(options) {
109
- return options && isIE && !isBoolean(options)
110
- ? !!options.capture
111
- : options;
112
- }
113
-
114
116
  function isEventTarget(target) {
115
117
  return target && 'addEventListener' in target;
116
118
  }
@@ -123,10 +125,10 @@ export function toEventTargets(target) {
123
125
  return isArray(target)
124
126
  ? target.map(toEventTarget).filter(Boolean)
125
127
  : isString(target)
126
- ? findAll(target)
127
- : isEventTarget(target)
128
- ? [target]
129
- : toNodes(target);
128
+ ? findAll(target)
129
+ : isEventTarget(target)
130
+ ? [target]
131
+ : toNodes(target);
130
132
  }
131
133
 
132
134
  export function isTouch(e) {
@@ -134,8 +136,7 @@ export function isTouch(e) {
134
136
  }
135
137
 
136
138
  export function getEventPos(e) {
137
- const {touches, changedTouches} = e;
138
- const {clientX: x, clientY: y} = touches && touches[0] || changedTouches && changedTouches[0] || e;
139
+ const { clientX: x, clientY: y } = e.touches?.[0] || e.changedTouches?.[0] || e;
139
140
 
140
- return {x, y};
141
+ return { x, y };
141
142
  }
@@ -1,4 +1,3 @@
1
- import {Promise} from './promise';
2
1
  /*
3
2
  Based on:
4
3
  Copyright (c) 2016 Wilson Page wilsonpage@me.com
@@ -6,7 +5,6 @@ import {Promise} from './promise';
6
5
  */
7
6
 
8
7
  export const fastdom = {
9
-
10
8
  reads: [],
11
9
  writes: [],
12
10
 
@@ -27,8 +25,7 @@ export const fastdom = {
27
25
  remove(this.writes, task);
28
26
  },
29
27
 
30
- flush
31
-
28
+ flush,
32
29
  };
33
30
 
34
31
  function flush(recursion) {
@@ -44,7 +41,6 @@ function flush(recursion) {
44
41
 
45
42
  const RECURSION_LIMIT = 4;
46
43
  function scheduleFlush(recursion) {
47
-
48
44
  if (fastdom.scheduled) {
49
45
  return;
50
46
  }
@@ -55,7 +51,6 @@ function scheduleFlush(recursion) {
55
51
  } else {
56
52
  requestAnimationFrame(() => flush(1));
57
53
  }
58
-
59
54
  }
60
55
 
61
56
  function runTasks(tasks) {
@@ -1,5 +1,4 @@
1
- import {inBrowser} from './env';
2
- import {isDocument, isElement, isString, noop, startsWith, toNode, toNodes} from './lang';
1
+ import { isElement, isString, startsWith, toNode, toNodes } from './lang';
3
2
 
4
3
  const voidElements = {
5
4
  area: true,
@@ -17,19 +16,21 @@ const voidElements = {
17
16
  param: true,
18
17
  source: true,
19
18
  track: true,
20
- wbr: true
19
+ wbr: true,
21
20
  };
22
21
  export function isVoidElement(element) {
23
- return toNodes(element).some(element => voidElements[element.tagName.toLowerCase()]);
22
+ return toNodes(element).some((element) => voidElements[element.tagName.toLowerCase()]);
24
23
  }
25
24
 
26
25
  export function isVisible(element) {
27
- return toNodes(element).some(element => element.offsetWidth || element.offsetHeight || element.getClientRects().length);
26
+ return toNodes(element).some(
27
+ (element) => element.offsetWidth || element.offsetHeight || element.getClientRects().length
28
+ );
28
29
  }
29
30
 
30
31
  export const selInput = 'input,select,textarea,button';
31
32
  export function isInput(element) {
32
- return toNodes(element).some(element => matches(element, selInput));
33
+ return toNodes(element).some((element) => matches(element, selInput));
33
34
  }
34
35
 
35
36
  export const selFocusable = `${selInput},a[href],[tabindex]`;
@@ -43,45 +44,29 @@ export function parent(element) {
43
44
  }
44
45
 
45
46
  export function filter(element, selector) {
46
- return toNodes(element).filter(element => matches(element, selector));
47
+ return toNodes(element).filter((element) => matches(element, selector));
47
48
  }
48
49
 
49
- const elProto = inBrowser ? Element.prototype : {};
50
- const matchesFn = elProto.matches || elProto.webkitMatchesSelector || elProto.msMatchesSelector || noop;
51
-
52
50
  export function matches(element, selector) {
53
- return toNodes(element).some(element => matchesFn.call(element, selector));
51
+ return toNodes(element).some((element) => element.matches(selector));
54
52
  }
55
53
 
56
- const closestFn = elProto.closest || function (selector) {
57
- let ancestor = this;
58
-
59
- do {
60
-
61
- if (matches(ancestor, selector)) {
62
- return ancestor;
63
- }
64
-
65
- } while ((ancestor = parent(ancestor)));
66
- };
67
-
68
54
  export function closest(element, selector) {
69
-
70
55
  if (startsWith(selector, '>')) {
71
56
  selector = selector.slice(1);
72
57
  }
73
58
 
74
59
  return isElement(element)
75
- ? closestFn.call(element, selector)
76
- : toNodes(element).map(element => closest(element, selector)).filter(Boolean);
60
+ ? element.closest(selector)
61
+ : toNodes(element)
62
+ .map((element) => closest(element, selector))
63
+ .filter(Boolean);
77
64
  }
78
65
 
79
66
  export function within(element, selector) {
80
- return !isString(selector)
81
- ? element === selector || (isDocument(selector)
82
- ? selector.documentElement
83
- : toNode(selector)).contains(toNode(element)) // IE 11 document does not implement contains
84
- : matches(element, selector) || !!closest(element, selector);
67
+ return isString(selector)
68
+ ? matches(element, selector) || !!closest(element, selector)
69
+ : element === selector || toNode(selector).contains(toNode(element));
85
70
  }
86
71
 
87
72
  export function parents(element, selector) {
@@ -103,7 +88,5 @@ export function children(element, selector) {
103
88
  }
104
89
 
105
90
  export function index(element, ref) {
106
- return ref
107
- ? toNodes(element).indexOf(toNode(ref))
108
- : children(parent(element)).indexOf(element);
91
+ return ref ? toNodes(element).indexOf(toNode(ref)) : children(parent(element)).indexOf(element);
109
92
  }
@@ -13,7 +13,6 @@ export * from './mouse';
13
13
  export * from './options';
14
14
  export * from './player';
15
15
  export * from './position';
16
- export * from './promise';
17
16
  export * from './selector';
18
17
  export * from './style';
19
18
  export * from './viewport';