uikit 3.11.2-dev.bbaa4362f → 3.11.2-dev.c7ed3c19b

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 (165) 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 +8 -0
  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 +409 -438
  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 +727 -850
  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 +588 -619
  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 +155 -167
  51. package/dist/js/components/upload.min.js +1 -1
  52. package/dist/js/uikit-core.js +5356 -6709
  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 +8116 -9913
  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 +79 -100
  66. package/src/js/components/countdown.js +24 -50
  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 +66 -45
  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 +18 -39
  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 +75 -64
  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 +125 -106
  81. package/src/js/components/tooltip.js +41 -31
  82. package/src/js/components/upload.js +52 -63
  83. package/src/js/core/accordion.js +53 -48
  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 +16 -29
  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 +59 -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 +21 -37
  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 -88
  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 +37 -54
  107. package/src/js/core/sticky.js +130 -91
  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 +64 -66
  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 +64 -65
  126. package/src/js/mixin/slider-nav.js +26 -35
  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 +17 -21
  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 +40 -73
  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 +54 -46
  149. package/src/js/util/selector.js +34 -49
  150. package/src/js/util/style.js +36 -46
  151. package/src/js/util/viewport.js +75 -64
  152. package/src/less/components/flex.less +0 -9
  153. package/src/less/components/navbar.less +0 -7
  154. package/src/less/components/utility.less +22 -0
  155. package/src/scss/components/flex.scss +0 -9
  156. package/src/scss/components/form.scss +3 -3
  157. package/src/scss/components/icon.scss +2 -2
  158. package/src/scss/components/navbar.scss +0 -7
  159. package/src/scss/components/search.scss +1 -1
  160. package/src/scss/components/utility.scss +22 -0
  161. package/src/scss/variables-theme.scss +6 -6
  162. package/src/scss/variables.scss +6 -6
  163. package/tests/js/index.js +114 -85
  164. package/src/js/mixin/flex-bug.js +0 -56
  165. package/src/js/util/promise.js +0 -191
@@ -1,14 +1,24 @@
1
- import {assign, hasOwn, includes, isArray, isFunction, isUndefined, sortBy, startsWith} from './lang';
1
+ import {
2
+ assign,
3
+ hasOwn,
4
+ includes,
5
+ isArray,
6
+ isFunction,
7
+ isUndefined,
8
+ sortBy,
9
+ startsWith,
10
+ } from './lang';
2
11
 
3
12
  const strats = {};
4
13
 
5
14
  strats.events =
6
- strats.created =
7
- strats.beforeConnect =
8
- strats.connected =
9
- strats.beforeDisconnect =
10
- strats.disconnected =
11
- strats.destroy = concatStrat;
15
+ strats.created =
16
+ strats.beforeConnect =
17
+ strats.connected =
18
+ strats.beforeDisconnect =
19
+ strats.disconnected =
20
+ strats.destroy =
21
+ concatStrat;
12
22
 
13
23
  // args strategy
14
24
  strats.args = function (parentVal, childVal) {
@@ -17,37 +27,33 @@ strats.args = function (parentVal, childVal) {
17
27
 
18
28
  // update strategy
19
29
  strats.update = function (parentVal, childVal) {
20
- return sortBy(concatStrat(parentVal, isFunction(childVal) ? {read: childVal} : childVal), 'order');
30
+ return sortBy(
31
+ concatStrat(parentVal, isFunction(childVal) ? { read: childVal } : childVal),
32
+ 'order'
33
+ );
21
34
  };
22
35
 
23
36
  // property strategy
24
37
  strats.props = function (parentVal, childVal) {
25
-
26
38
  if (isArray(childVal)) {
27
- childVal = childVal.reduce((value, key) => {
39
+ const value = {};
40
+ for (const key of childVal) {
28
41
  value[key] = String;
29
- return value;
30
- }, {});
42
+ }
43
+ childVal = value;
31
44
  }
32
45
 
33
46
  return strats.methods(parentVal, childVal);
34
47
  };
35
48
 
36
49
  // extend strategy
37
- strats.computed =
38
- strats.methods = function (parentVal, childVal) {
39
- return childVal
40
- ? parentVal
41
- ? assign({}, parentVal, childVal)
42
- : childVal
43
- : parentVal;
50
+ strats.computed = strats.methods = function (parentVal, childVal) {
51
+ return childVal ? (parentVal ? assign({}, parentVal, childVal) : childVal) : parentVal;
44
52
  };
45
53
 
46
54
  // data strategy
47
55
  strats.data = function (parentVal, childVal, vm) {
48
-
49
56
  if (!vm) {
50
-
51
57
  if (!childVal) {
52
58
  return parentVal;
53
59
  }
@@ -59,7 +65,6 @@ strats.data = function (parentVal, childVal, vm) {
59
65
  return function (vm) {
60
66
  return mergeFnData(parentVal, childVal, vm);
61
67
  };
62
-
63
68
  }
64
69
 
65
70
  return mergeFnData(parentVal, childVal, vm);
@@ -67,26 +72,21 @@ strats.data = function (parentVal, childVal, vm) {
67
72
 
68
73
  function mergeFnData(parentVal, childVal, vm) {
69
74
  return strats.computed(
70
- isFunction(parentVal)
71
- ? parentVal.call(vm, vm)
72
- : parentVal,
73
- isFunction(childVal)
74
- ? childVal.call(vm, vm)
75
- : childVal
75
+ isFunction(parentVal) ? parentVal.call(vm, vm) : parentVal,
76
+ isFunction(childVal) ? childVal.call(vm, vm) : childVal
76
77
  );
77
78
  }
78
79
 
79
80
  // concat strategy
80
81
  function concatStrat(parentVal, childVal) {
81
-
82
82
  parentVal = parentVal && !isArray(parentVal) ? [parentVal] : parentVal;
83
83
 
84
84
  return childVal
85
85
  ? parentVal
86
86
  ? parentVal.concat(childVal)
87
87
  : isArray(childVal)
88
- ? childVal
89
- : [childVal]
88
+ ? childVal
89
+ : [childVal]
90
90
  : parentVal;
91
91
  }
92
92
 
@@ -96,7 +96,6 @@ function defaultStrat(parentVal, childVal) {
96
96
  }
97
97
 
98
98
  export function mergeOptions(parent, child, vm) {
99
-
100
99
  const options = {};
101
100
 
102
101
  if (isFunction(child)) {
@@ -108,8 +107,8 @@ export function mergeOptions(parent, child, vm) {
108
107
  }
109
108
 
110
109
  if (child.mixins) {
111
- for (let i = 0, l = child.mixins.length; i < l; i++) {
112
- parent = mergeOptions(parent, child.mixins[i], vm);
110
+ for (const mixin of child.mixins) {
111
+ parent = mergeOptions(parent, mixin, vm);
113
112
  }
114
113
  }
115
114
 
@@ -131,25 +130,21 @@ export function mergeOptions(parent, child, vm) {
131
130
  }
132
131
 
133
132
  export function parseOptions(options, args = []) {
134
-
135
133
  try {
136
-
137
- return !options
138
- ? {}
139
- : startsWith(options, '{')
134
+ return options
135
+ ? startsWith(options, '{')
140
136
  ? JSON.parse(options)
141
137
  : args.length && !includes(options, ':')
142
- ? ({[args[0]]: options})
143
- : options.split(';').reduce((options, option) => {
144
- const [key, value] = option.split(/:(.*)/);
145
- if (key && !isUndefined(value)) {
146
- options[key.trim()] = value.trim();
147
- }
148
- return options;
149
- }, {});
150
-
138
+ ? { [args[0]]: options }
139
+ : options.split(';').reduce((options, option) => {
140
+ const [key, value] = option.split(/:(.*)/);
141
+ if (key && !isUndefined(value)) {
142
+ options[key.trim()] = value.trim();
143
+ }
144
+ return options;
145
+ }, {})
146
+ : {};
151
147
  } catch (e) {
152
148
  return {};
153
149
  }
154
-
155
150
  }
@@ -1,43 +1,38 @@
1
- import {once} from './event';
2
- import {Promise} from './promise';
3
- import {assign, includes, noop} from './lang';
1
+ import { once } from './event';
2
+ import { assign, includes, noop } from './lang';
4
3
 
5
4
  export function play(el) {
6
-
7
5
  if (isIFrame(el)) {
8
- call(el, {func: 'playVideo', method: 'play'});
6
+ call(el, { func: 'playVideo', method: 'play' });
9
7
  }
10
8
 
11
9
  if (isHTML5(el)) {
12
10
  try {
13
11
  el.play().catch(noop);
14
- } catch (e) {}
12
+ } catch (e) {
13
+ // noop
14
+ }
15
15
  }
16
-
17
16
  }
18
17
 
19
18
  export function pause(el) {
20
-
21
19
  if (isIFrame(el)) {
22
- call(el, {func: 'pauseVideo', method: 'pause'});
20
+ call(el, { func: 'pauseVideo', method: 'pause' });
23
21
  }
24
22
 
25
23
  if (isHTML5(el)) {
26
24
  el.pause();
27
25
  }
28
-
29
26
  }
30
27
 
31
28
  export function mute(el) {
32
-
33
29
  if (isIFrame(el)) {
34
- call(el, {func: 'mute', method: 'setVolume', value: 0});
30
+ call(el, { func: 'mute', method: 'setVolume', value: 0 });
35
31
  }
36
32
 
37
33
  if (isHTML5(el)) {
38
34
  el.muted = true;
39
35
  }
40
-
41
36
  }
42
37
 
43
38
  export function isVideo(el) {
@@ -45,35 +40,39 @@ export function isVideo(el) {
45
40
  }
46
41
 
47
42
  function isHTML5(el) {
48
- return el && el.tagName === 'VIDEO';
43
+ return el?.tagName === 'VIDEO';
49
44
  }
50
45
 
51
46
  function isIFrame(el) {
52
- return el && el.tagName === 'IFRAME' && (isYoutube(el) || isVimeo(el));
47
+ return el?.tagName === 'IFRAME' && (isYoutube(el) || isVimeo(el));
53
48
  }
54
49
 
55
50
  function isYoutube(el) {
56
- return !!el.src.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/);
51
+ return !!el.src.match(
52
+ /\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/
53
+ );
57
54
  }
58
55
 
59
56
  function isVimeo(el) {
60
57
  return !!el.src.match(/vimeo\.com\/video\/.*/);
61
58
  }
62
59
 
63
- function call(el, cmd) {
64
- enableApi(el).then(() => post(el, cmd));
60
+ async function call(el, cmd) {
61
+ await enableApi(el);
62
+ post(el, cmd);
65
63
  }
66
64
 
67
65
  function post(el, cmd) {
68
66
  try {
69
- el.contentWindow.postMessage(JSON.stringify(assign({event: 'command'}, cmd)), '*');
70
- } catch (e) {}
67
+ el.contentWindow.postMessage(JSON.stringify(assign({ event: 'command' }, cmd)), '*');
68
+ } catch (e) {
69
+ // noop
70
+ }
71
71
  }
72
72
 
73
73
  const stateKey = '_ukPlayer';
74
74
  let counter = 0;
75
75
  function enableApi(el) {
76
-
77
76
  if (el[stateKey]) {
78
77
  return el[stateKey];
79
78
  }
@@ -84,24 +83,29 @@ function enableApi(el) {
84
83
  const id = ++counter;
85
84
  let poller;
86
85
 
87
- return el[stateKey] = new Promise(resolve => {
88
-
89
- youtube && once(el, 'load', () => {
90
- const listener = () => post(el, {event: 'listening', id});
91
- poller = setInterval(listener, 100);
92
- listener();
93
- });
94
-
95
- once(window, 'message', resolve, false, ({data}) => {
86
+ return (el[stateKey] = new Promise((resolve) => {
87
+ youtube &&
88
+ once(el, 'load', () => {
89
+ const listener = () => post(el, { event: 'listening', id });
90
+ poller = setInterval(listener, 100);
91
+ listener();
92
+ });
96
93
 
94
+ once(window, 'message', resolve, false, ({ data }) => {
97
95
  try {
98
96
  data = JSON.parse(data);
99
- return data && (youtube && data.id === id && data.event === 'onReady' || vimeo && Number(data.player_id) === id);
100
- } catch (e) {}
101
-
97
+ return (
98
+ data &&
99
+ ((youtube && data.id === id && data.event === 'onReady') ||
100
+ (vimeo && Number(data.player_id) === id))
101
+ );
102
+ } catch (e) {
103
+ // noop
104
+ }
102
105
  });
103
106
 
104
- el.src = `${el.src}${includes(el.src, '?') ? '&' : '?'}${youtube ? 'enablejsapi=1' : `api=1&player_id=${id}`}`;
105
-
106
- }).then(() => clearInterval(poller));
107
+ el.src = `${el.src}${includes(el.src, '?') ? '&' : '?'}${
108
+ youtube ? 'enablejsapi=1' : `api=1&player_id=${id}`
109
+ }`;
110
+ }).then(() => clearInterval(poller)));
107
111
  }
@@ -1,18 +1,26 @@
1
- import {offset} from './dimensions';
2
- import {each, endsWith, includes, toFloat} from './lang';
3
- import {getViewport, scrollParents} from './viewport';
1
+ import { offset } from './dimensions';
2
+ import { each, endsWith, includes, toFloat } from './lang';
3
+ import { getViewport, scrollParents } from './viewport';
4
4
 
5
5
  const dirs = {
6
6
  width: ['x', 'left', 'right'],
7
- height: ['y', 'top', 'bottom']
7
+ height: ['y', 'top', 'bottom'],
8
8
  };
9
9
 
10
- export function positionAt(element, target, elAttach, targetAttach, elOffset, targetOffset, flip, boundary) {
11
-
10
+ export function positionAt(
11
+ element,
12
+ target,
13
+ elAttach,
14
+ targetAttach,
15
+ elOffset,
16
+ targetOffset,
17
+ flip,
18
+ boundary
19
+ ) {
12
20
  elAttach = getPos(elAttach);
13
21
  targetAttach = getPos(targetAttach);
14
22
 
15
- const flipped = {element: elAttach, target: targetAttach};
23
+ const flipped = { element: elAttach, target: targetAttach };
16
24
 
17
25
  if (!element || !target) {
18
26
  return flipped;
@@ -35,69 +43,71 @@ export function positionAt(element, target, elAttach, targetAttach, elOffset, ta
35
43
  position.top += elOffset['y'];
36
44
 
37
45
  if (flip) {
38
-
39
46
  let boundaries = scrollParents(element).map(getViewport);
40
47
 
41
48
  if (boundary && !includes(boundaries, boundary)) {
42
49
  boundaries.unshift(boundary);
43
50
  }
44
51
 
45
- boundaries = boundaries.map(el => offset(el));
52
+ boundaries = boundaries.map((el) => offset(el));
46
53
 
47
54
  each(dirs, ([dir, align, alignFlip], prop) => {
48
-
49
55
  if (!(flip === true || includes(flip, dir))) {
50
56
  return;
51
57
  }
52
58
 
53
- boundaries.some(boundary => {
54
-
55
- const elemOffset = elAttach[dir] === align
56
- ? -dim[prop]
57
- : elAttach[dir] === alignFlip
59
+ boundaries.some((boundary) => {
60
+ const elemOffset =
61
+ elAttach[dir] === align
62
+ ? -dim[prop]
63
+ : elAttach[dir] === alignFlip
58
64
  ? dim[prop]
59
65
  : 0;
60
66
 
61
- const targetOffset = targetAttach[dir] === align
62
- ? targetDim[prop]
63
- : targetAttach[dir] === alignFlip
67
+ const targetOffset =
68
+ targetAttach[dir] === align
69
+ ? targetDim[prop]
70
+ : targetAttach[dir] === alignFlip
64
71
  ? -targetDim[prop]
65
72
  : 0;
66
73
 
67
- if (position[align] < boundary[align] || position[align] + dim[prop] > boundary[alignFlip]) {
68
-
74
+ if (
75
+ position[align] < boundary[align] ||
76
+ position[align] + dim[prop] > boundary[alignFlip]
77
+ ) {
69
78
  const centerOffset = dim[prop] / 2;
70
- const centerTargetOffset = targetAttach[dir] === 'center' ? -targetDim[prop] / 2 : 0;
71
-
72
- return elAttach[dir] === 'center' && (
73
- apply(centerOffset, centerTargetOffset)
74
- || apply(-centerOffset, -centerTargetOffset)
75
- ) || apply(elemOffset, targetOffset);
76
-
79
+ const centerTargetOffset =
80
+ targetAttach[dir] === 'center' ? -targetDim[prop] / 2 : 0;
81
+
82
+ return (
83
+ (elAttach[dir] === 'center' &&
84
+ (apply(centerOffset, centerTargetOffset) ||
85
+ apply(-centerOffset, -centerTargetOffset))) ||
86
+ apply(elemOffset, targetOffset)
87
+ );
77
88
  }
78
89
 
79
90
  function apply(elemOffset, targetOffset) {
80
-
81
- const newVal = toFloat((position[align] + elemOffset + targetOffset - elOffset[dir] * 2).toFixed(4));
91
+ const newVal = toFloat(
92
+ (position[align] + elemOffset + targetOffset - elOffset[dir] * 2).toFixed(4)
93
+ );
82
94
 
83
95
  if (newVal >= boundary[align] && newVal + dim[prop] <= boundary[alignFlip]) {
84
96
  position[align] = newVal;
85
97
 
86
- ['element', 'target'].forEach(el => {
87
- flipped[el][dir] = !elemOffset
88
- ? flipped[el][dir]
89
- : flipped[el][dir] === dirs[prop][1]
90
- ? dirs[prop][2]
91
- : dirs[prop][1];
92
- });
98
+ for (const el of ['element', 'target']) {
99
+ if (elemOffset) {
100
+ flipped[el][dir] =
101
+ flipped[el][dir] === dirs[prop][1]
102
+ ? dirs[prop][2]
103
+ : dirs[prop][1];
104
+ }
105
+ }
93
106
 
94
107
  return true;
95
108
  }
96
-
97
109
  }
98
-
99
110
  });
100
-
101
111
  });
102
112
  }
103
113
 
@@ -111,13 +121,12 @@ function moveTo(position, attach, dim, factor) {
111
121
  if (attach[dir] === alignFlip) {
112
122
  position[align] += dim[prop] * factor;
113
123
  } else if (attach[dir] === 'center') {
114
- position[align] += dim[prop] * factor / 2;
124
+ position[align] += (dim[prop] * factor) / 2;
115
125
  }
116
126
  });
117
127
  }
118
128
 
119
129
  function getPos(pos) {
120
-
121
130
  const x = /left|center|right/;
122
131
  const y = /top|center|bottom/;
123
132
 
@@ -127,22 +136,21 @@ function getPos(pos) {
127
136
  pos = x.test(pos[0])
128
137
  ? pos.concat('center')
129
138
  : y.test(pos[0])
130
- ? ['center'].concat(pos)
131
- : ['center', 'center'];
139
+ ? ['center'].concat(pos)
140
+ : ['center', 'center'];
132
141
  }
133
142
 
134
143
  return {
135
144
  x: x.test(pos[0]) ? pos[0] : 'center',
136
- y: y.test(pos[1]) ? pos[1] : 'center'
145
+ y: y.test(pos[1]) ? pos[1] : 'center',
137
146
  };
138
147
  }
139
148
 
140
149
  function getOffsets(offsets, width, height) {
141
-
142
150
  const [x, y] = (offsets || '').split(' ');
143
151
 
144
152
  return {
145
153
  x: x ? toFloat(x) * (endsWith(x, '%') ? width / 100 : 1) : 0,
146
- y: y ? toFloat(y) * (endsWith(y, '%') ? height / 100 : 1) : 0
154
+ y: y ? toFloat(y) * (endsWith(y, '%') ? height / 100 : 1) : 0,
147
155
  };
148
156
  }
@@ -1,7 +1,6 @@
1
- import {attr} from './attr';
2
- import {inBrowser} from './env';
3
- import {closest, index, matches, parent} from './filter';
4
- import {isDocument, isString, memoize, toNode, toNodes} from './lang';
1
+ import { attr } from './attr';
2
+ import { closest, index, matches, parent } from './filter';
3
+ import { isDocument, isString, memoize, toNode, toNodes } from './lang';
5
4
 
6
5
  export function query(selector, context) {
7
6
  return find(selector, getContext(selector, context));
@@ -12,7 +11,7 @@ export function queryAll(selector, context) {
12
11
  }
13
12
 
14
13
  function getContext(selector, context = document) {
15
- return isString(selector) && isContextSelector(selector) || isDocument(context)
14
+ return (isString(selector) && isContextSelector(selector)) || isDocument(context)
16
15
  ? context
17
16
  : context.ownerDocument;
18
17
  }
@@ -26,7 +25,6 @@ export function findAll(selector, context) {
26
25
  }
27
26
 
28
27
  function _query(selector, context = document, queryFn) {
29
-
30
28
  if (!selector || !isString(selector)) {
31
29
  return selector;
32
30
  }
@@ -34,63 +32,51 @@ function _query(selector, context = document, queryFn) {
34
32
  selector = selector.replace(contextSanitizeRe, '$1 *');
35
33
 
36
34
  if (isContextSelector(selector)) {
37
-
38
- selector = splitSelector(selector).map(selector => {
39
-
40
- let ctx = context;
41
-
42
- if (selector[0] === '!') {
43
-
44
- const selectors = selector.substr(1).trim().split(' ');
45
- ctx = closest(parent(context), selectors[0]);
46
- selector = selectors.slice(1).join(' ').trim();
47
-
48
- }
49
-
50
- if (selector[0] === '-') {
51
-
52
- const selectors = selector.substr(1).trim().split(' ');
53
- const prev = (ctx || context).previousElementSibling;
54
- ctx = matches(prev, selector.substr(1)) ? prev : null;
55
- selector = selectors.slice(1).join(' ');
56
-
57
- }
58
-
59
- if (!ctx) {
60
- return null;
61
- }
62
-
63
- return `${domPath(ctx)} ${selector}`;
64
-
65
- }).filter(Boolean).join(',');
35
+ selector = splitSelector(selector)
36
+ .map((selector) => {
37
+ let ctx = context;
38
+
39
+ if (selector[0] === '!') {
40
+ const selectors = selector.substr(1).trim().split(' ');
41
+ ctx = closest(parent(context), selectors[0]);
42
+ selector = selectors.slice(1).join(' ').trim();
43
+ }
44
+
45
+ if (selector[0] === '-') {
46
+ const selectors = selector.substr(1).trim().split(' ');
47
+ const prev = (ctx || context).previousElementSibling;
48
+ ctx = matches(prev, selector.substr(1)) ? prev : null;
49
+ selector = selectors.slice(1).join(' ');
50
+ }
51
+
52
+ if (!ctx) {
53
+ return null;
54
+ }
55
+
56
+ return `${domPath(ctx)} ${selector}`;
57
+ })
58
+ .filter(Boolean)
59
+ .join(',');
66
60
 
67
61
  context = document;
68
-
69
62
  }
70
63
 
71
64
  try {
72
-
73
65
  return context[queryFn](selector);
74
-
75
66
  } catch (e) {
76
-
77
67
  return null;
78
-
79
68
  }
80
-
81
69
  }
82
70
 
83
71
  const contextSelectorRe = /(^|[^\\],)\s*[!>+~-]/;
84
72
  const contextSanitizeRe = /([!>+~-])(?=\s+[!>+~-]|\s*$)/g;
85
73
 
86
- const isContextSelector = memoize(selector => selector.match(contextSelectorRe));
74
+ const isContextSelector = memoize((selector) => selector.match(contextSelectorRe));
87
75
 
88
76
  const selectorRe = /.*?[^\\](?:,|$)/g;
89
77
 
90
- const splitSelector = memoize(selector =>
91
- selector.match(selectorRe).map(selector =>
92
- selector.replace(/,$/, '').trim()
93
- )
78
+ const splitSelector = memoize((selector) =>
79
+ selector.match(selectorRe).map((selector) => selector.replace(/,$/, '').trim())
94
80
  );
95
81
 
96
82
  function domPath(element) {
@@ -101,7 +87,7 @@ function domPath(element) {
101
87
  names.unshift(`#${escape(id)}`);
102
88
  break;
103
89
  } else {
104
- let {tagName} = element;
90
+ let { tagName } = element;
105
91
  if (tagName !== 'HTML') {
106
92
  tagName += `:nth-child(${index(element) + 1})`;
107
93
  }
@@ -112,7 +98,6 @@ function domPath(element) {
112
98
  return names.join(' > ');
113
99
  }
114
100
 
115
- const escapeFn = inBrowser && window.CSS && CSS.escape || function (css) { return css.replace(/([^\x7f-\uFFFF\w-])/g, match => `\\${match}`); };
116
101
  export function escape(css) {
117
- return isString(css) ? escapeFn.call(null, css) : '';
102
+ return isString(css) ? CSS.escape(css) : '';
118
103
  }