uikit 3.9.5-dev.4be822584 → 3.9.5-dev.59737a9b5

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 (52) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/build/less.js +30 -11
  3. package/build/util.js +1 -20
  4. package/dist/css/uikit-core-rtl.css +7 -7
  5. package/dist/css/uikit-core-rtl.min.css +1 -1
  6. package/dist/css/uikit-core.css +4 -4
  7. package/dist/css/uikit-core.min.css +1 -1
  8. package/dist/css/uikit-rtl.css +7 -7
  9. package/dist/css/uikit-rtl.min.css +1 -1
  10. package/dist/css/uikit.css +4 -4
  11. package/dist/css/uikit.min.css +1 -1
  12. package/dist/js/components/countdown.js +1 -1
  13. package/dist/js/components/countdown.min.js +1 -1
  14. package/dist/js/components/filter.js +1 -1
  15. package/dist/js/components/filter.min.js +1 -1
  16. package/dist/js/components/lightbox-panel.js +1 -1
  17. package/dist/js/components/lightbox-panel.min.js +1 -1
  18. package/dist/js/components/lightbox.js +1 -1
  19. package/dist/js/components/lightbox.min.js +1 -1
  20. package/dist/js/components/notification.js +1 -1
  21. package/dist/js/components/notification.min.js +1 -1
  22. package/dist/js/components/parallax.js +1 -1
  23. package/dist/js/components/parallax.min.js +1 -1
  24. package/dist/js/components/slider-parallax.js +1 -1
  25. package/dist/js/components/slider-parallax.min.js +1 -1
  26. package/dist/js/components/slider.js +1 -1
  27. package/dist/js/components/slider.min.js +1 -1
  28. package/dist/js/components/slideshow-parallax.js +1 -1
  29. package/dist/js/components/slideshow-parallax.min.js +1 -1
  30. package/dist/js/components/slideshow.js +1 -1
  31. package/dist/js/components/slideshow.min.js +1 -1
  32. package/dist/js/components/sortable.js +2 -2
  33. package/dist/js/components/sortable.min.js +1 -1
  34. package/dist/js/components/tooltip.js +1 -1
  35. package/dist/js/components/tooltip.min.js +1 -1
  36. package/dist/js/components/upload.js +1 -1
  37. package/dist/js/components/upload.min.js +1 -1
  38. package/dist/js/uikit-core.js +114 -53
  39. package/dist/js/uikit-core.min.js +1 -1
  40. package/dist/js/uikit-icons.js +1 -1
  41. package/dist/js/uikit-icons.min.js +1 -1
  42. package/dist/js/uikit.js +115 -54
  43. package/dist/js/uikit.min.js +1 -1
  44. package/package.json +5 -7
  45. package/src/js/components/sortable.js +1 -1
  46. package/src/js/core/img.js +93 -49
  47. package/src/js/util/dom.js +2 -5
  48. package/src/less/components/list.less +1 -1
  49. package/src/less/components/utility.less +1 -1
  50. package/src/scss/components/list.scss +1 -1
  51. package/src/scss/components/utility.scss +1 -1
  52. package/tests/image.html +40 -14
package/dist/js/uikit.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! UIkit 3.9.5-dev.4be822584 | https://www.getuikit.com | (c) 2014 - 2021 YOOtheme | MIT License */
1
+ /*! UIkit 3.9.5-dev.59737a9b5 | https://www.getuikit.com | (c) 2014 - 2021 YOOtheme | MIT License */
2
2
 
3
3
  (function (global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -1104,10 +1104,7 @@
1104
1104
  return;
1105
1105
  }
1106
1106
 
1107
- var unbind = on(document, 'DOMContentLoaded', function () {
1108
- unbind();
1109
- fn();
1110
- });
1107
+ once(document, 'DOMContentLoaded', fn);
1111
1108
  }
1112
1109
 
1113
1110
  function empty(element) {
@@ -3465,7 +3462,7 @@
3465
3462
  UIkit.data = '__uikit__';
3466
3463
  UIkit.prefix = 'uk-';
3467
3464
  UIkit.options = {};
3468
- UIkit.version = '3.9.5-dev.4be822584';
3465
+ UIkit.version = '3.9.5-dev.59737a9b5';
3469
3466
 
3470
3467
  globalAPI(UIkit);
3471
3468
  hooksAPI(UIkit);
@@ -5790,6 +5787,10 @@
5790
5787
 
5791
5788
  props: {
5792
5789
  dataSrc: String,
5790
+ dataSrcset: Boolean,
5791
+ sizes: String,
5792
+ width: Number,
5793
+ height: Number,
5793
5794
  offsetTop: String,
5794
5795
  offsetLeft: String,
5795
5796
  target: String
@@ -5797,6 +5798,10 @@
5797
5798
 
5798
5799
  data: {
5799
5800
  dataSrc: '',
5801
+ dataSrcset: false,
5802
+ sizes: false,
5803
+ width: false,
5804
+ height: false,
5800
5805
  offsetTop: '50vh',
5801
5806
  offsetLeft: '50vw',
5802
5807
  target: false
@@ -5804,6 +5809,37 @@
5804
5809
 
5805
5810
  computed: {
5806
5811
 
5812
+ cacheKey: function(ref) {
5813
+ var dataSrc = ref.dataSrc;
5814
+
5815
+ return ((this.$name) + "." + dataSrc);
5816
+ },
5817
+
5818
+ width: function(ref) {
5819
+ var width = ref.width;
5820
+ var dataWidth = ref.dataWidth;
5821
+
5822
+ return width || dataWidth;
5823
+ },
5824
+
5825
+ height: function(ref) {
5826
+ var height = ref.height;
5827
+ var dataHeight = ref.dataHeight;
5828
+
5829
+ return height || dataHeight;
5830
+ },
5831
+
5832
+ sizes: function(ref) {
5833
+ var sizes = ref.sizes;
5834
+ var dataSizes = ref.dataSizes;
5835
+
5836
+ return sizes || dataSizes;
5837
+ },
5838
+
5839
+ isImg: function(_, $el) {
5840
+ return isImg($el);
5841
+ },
5842
+
5807
5843
  target: {
5808
5844
 
5809
5845
  get: function(ref) {
@@ -5816,6 +5852,18 @@
5816
5852
  this.observe();
5817
5853
  }
5818
5854
 
5855
+ },
5856
+
5857
+ offsetTop: function(ref) {
5858
+ var offsetTop = ref.offsetTop;
5859
+
5860
+ return toPx(offsetTop, 'height');
5861
+ },
5862
+
5863
+ offsetLeft: function(ref) {
5864
+ var offsetLeft = ref.offsetLeft;
5865
+
5866
+ return toPx(offsetLeft, 'width');
5819
5867
  }
5820
5868
 
5821
5869
  },
@@ -5823,13 +5871,21 @@
5823
5871
  connected: function() {
5824
5872
 
5825
5873
  if (!window.IntersectionObserver) {
5826
- setSrcAttrs(this.$el, this.dataSrc);
5874
+ setSrcAttrs(this.$el, this.dataSrc, this.dataSrcset, this.sizes);
5827
5875
  return;
5828
5876
  }
5829
5877
 
5830
- var rootMargin = (toPx(this.offsetTop, 'height')) + "px " + (toPx(this.offsetLeft, 'width')) + "px";
5831
- this.observer = new IntersectionObserver(this.load, {rootMargin: rootMargin});
5832
- this.observe();
5878
+ if (storage[this.cacheKey]) {
5879
+ setSrcAttrs(this.$el, storage[this.cacheKey], this.dataSrcset, this.sizes);
5880
+ } else if (this.isImg && this.width && this.height) {
5881
+ setSrcAttrs(this.$el, getPlaceholderImage(this.width, this.height, this.sizes));
5882
+ }
5883
+
5884
+ this.observer = new IntersectionObserver(this.load, {
5885
+ rootMargin: ((this.offsetTop) + "px " + (this.offsetLeft) + "px")
5886
+ });
5887
+
5888
+ requestAnimationFrame(this.observe);
5833
5889
 
5834
5890
  },
5835
5891
 
@@ -5840,26 +5896,34 @@
5840
5896
  update: {
5841
5897
 
5842
5898
  read: function(ref) {
5899
+ var this$1$1 = this;
5843
5900
  var image = ref.image;
5844
5901
 
5845
5902
 
5846
- if (!this.observer || isImg(this.$el)) {
5903
+ if (!this.observer) {
5847
5904
  return false;
5848
5905
  }
5849
5906
 
5850
- setSrcAttrs(this.$el, image && image.currentSrc);
5907
+ if (!image && document.readyState === 'complete') {
5908
+ this.load(this.observer.takeRecords());
5909
+ }
5910
+
5911
+ if (this.isImg) {
5912
+ return false;
5913
+ }
5914
+
5915
+ image && image.then(function (img) { return img && img.currentSrc !== '' && setSrcAttrs(this$1$1.$el, currentSrc(img)); });
5851
5916
 
5852
5917
  },
5853
5918
 
5854
- write: function(store) {
5919
+ write: function(data) {
5855
5920
 
5856
- var srcset = data(this.$el, 'data-srcset');
5857
- if (srcset && window.devicePixelRatio !== 1) {
5921
+ if (this.dataSrcset && window.devicePixelRatio !== 1) {
5858
5922
 
5859
5923
  var bgSize = css(this.$el, 'backgroundSize');
5860
- if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === store.bgSize) {
5861
- store.bgSize = getSourceSize(srcset, data(this.$el, 'sizes'));
5862
- css(this.$el, 'backgroundSize', ((store.bgSize) + "px"));
5924
+ if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === data.bgSize) {
5925
+ data.bgSize = getSourceSize(this.dataSrcset, this.sizes);
5926
+ css(this.$el, 'backgroundSize', ((data.bgSize) + "px"));
5863
5927
  }
5864
5928
 
5865
5929
  }
@@ -5873,19 +5937,21 @@
5873
5937
  methods: {
5874
5938
 
5875
5939
  load: function(entries) {
5940
+ var this$1$1 = this;
5941
+
5876
5942
 
5877
5943
  // Old chromium based browsers (UC Browser) did not implement `isIntersecting`
5878
5944
  if (!entries.some(function (entry) { return isUndefined(entry.isIntersecting) || entry.isIntersecting; })) {
5879
5945
  return;
5880
5946
  }
5881
5947
 
5882
- if (this._data.image) {
5883
- return this._data.image;
5884
- }
5948
+ this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(function (img) {
5949
+
5950
+ setSrcAttrs(this$1$1.$el, currentSrc(img), img.srcset, img.sizes);
5951
+ storage[this$1$1.cacheKey] = currentSrc(img);
5952
+ return img;
5885
5953
 
5886
- var image = isImg(this.$el) ? this.$el : getImageFromElement(this.$el, this.dataSrc);
5887
- this._data.image = image;
5888
- setSrcAttrs(this.$el, image.currentSrc || this.dataSrc);
5954
+ }, function (e) { return trigger(this$1$1.$el, new e.constructor(e.type, e)); });
5889
5955
 
5890
5956
  this.observer.disconnect();
5891
5957
  },
@@ -5902,15 +5968,13 @@
5902
5968
 
5903
5969
  };
5904
5970
 
5905
- function setSrcAttrs(el, src) {
5971
+ function setSrcAttrs(el, src, srcset, sizes) {
5906
5972
 
5907
5973
  if (isImg(el)) {
5908
-
5909
- var parentNode = parent(el);
5910
- var elements = isPicture(parentNode) ? children(parentNode) : [el];
5911
- elements.forEach(function (el) { return setSourceProps(el, el); });
5912
- src && attr(el, 'src', src);
5913
-
5974
+ var set = function (prop, val) { return val && val !== el[prop] && (el[prop] = val); };
5975
+ set('sizes', sizes);
5976
+ set('srcset', srcset);
5977
+ set('src', src);
5914
5978
  } else if (src) {
5915
5979
 
5916
5980
  var change = !includes(el.style.backgroundImage, src);
@@ -5923,26 +5987,15 @@
5923
5987
 
5924
5988
  }
5925
5989
 
5926
- var srcProps = ['data-src', 'data-srcset', 'sizes'];
5927
- function setSourceProps(sourceEl, targetEl) {
5928
- srcProps.forEach(function (prop) {
5929
- var value = data(sourceEl, prop);
5930
- if (value) {
5931
- attr(targetEl, prop.replace(/^(data-)+/, ''), value);
5932
- }
5933
- });
5934
- }
5990
+ function getPlaceholderImage(width, height, sizes) {
5991
+ var assign;
5935
5992
 
5936
- function getImageFromElement(el, src) {
5937
5993
 
5938
- if (!src) {
5939
- return false;
5994
+ if (sizes) {
5995
+ ((assign = Dimensions.ratio({width: width, height: height}, 'width', toPx(sizesToPixel(sizes))), width = assign.width, height = assign.height));
5940
5996
  }
5941
5997
 
5942
- var img = new Image();
5943
- setSourceProps(el, img);
5944
- attr(img, 'src', src);
5945
- return img;
5998
+ return ("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"" + width + "\" height=\"" + height + "\"></svg>");
5946
5999
  }
5947
6000
 
5948
6001
  var sizesRe = /\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;
@@ -5982,16 +6035,24 @@
5982
6035
  return descriptors.filter(function (size) { return size >= srcSize; })[0] || descriptors.pop() || '';
5983
6036
  }
5984
6037
 
5985
- function isPicture(el) {
5986
- return isA(el, 'PICTURE');
6038
+ function isImg(el) {
6039
+ return el.tagName === 'IMG';
5987
6040
  }
5988
6041
 
5989
- function isImg(el) {
5990
- return isA(el, 'IMG');
6042
+ function currentSrc(el) {
6043
+ return el.currentSrc || el.src;
5991
6044
  }
5992
6045
 
5993
- function isA(el, tagName) {
5994
- return el && el.tagName === tagName;
6046
+ var key = '__test__';
6047
+ var storage;
6048
+
6049
+ // workaround for Safari's private browsing mode and accessing sessionStorage in Blink
6050
+ try {
6051
+ storage = window.sessionStorage || {};
6052
+ storage[key] = 1;
6053
+ delete storage[key];
6054
+ } catch (e) {
6055
+ storage = {};
5995
6056
  }
5996
6057
 
5997
6058
  var Media = {
@@ -12123,7 +12184,7 @@
12123
12184
  var dist = (Date.now() - last) * .3;
12124
12185
  last = Date.now();
12125
12186
 
12126
- scrollParents(document.elementFromPoint(x, pos.y)).reverse().some(function (scrollEl) {
12187
+ scrollParents(document.elementFromPoint(x, pos.y), /auto|scroll/).reverse().some(function (scrollEl) {
12127
12188
 
12128
12189
  var scroll = scrollEl.scrollTop;
12129
12190
  var scrollHeight = scrollEl.scrollHeight;