waterflow.js
Version:
[Demo](http://alex-xueyao.gitee.io/v3pro/#/laolai)
2 lines (1 loc) • 4.27 kB
JavaScript
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r(require("@babel/runtime/helpers/toConsumableArray"),require("core-js/modules/es.array.from.js"),require("core-js/modules/es.string.iterator.js"),require("core-js/modules/es.array.includes.js"),require("core-js/modules/web.timers.js"),require("core-js/modules/es.array.concat.js"),require("core-js/modules/es.array.slice.js"),require("core-js/modules/es.object.to-string.js"),require("core-js/modules/es.function.name.js"),require("core-js/modules/es.symbol.js"),require("core-js/modules/es.symbol.description.js"),require("core-js/modules/es.symbol.iterator.js"),require("core-js/modules/es.array.iterator.js"),require("core-js/modules/web.dom-collections.iterator.js"),require("core-js/modules/es.array.is-array.js")):"function"==typeof define&&define.amd?define(["@babel/runtime/helpers/toConsumableArray","core-js/modules/es.array.from.js","core-js/modules/es.string.iterator.js","core-js/modules/es.array.includes.js","core-js/modules/web.timers.js","core-js/modules/es.array.concat.js","core-js/modules/es.array.slice.js","core-js/modules/es.object.to-string.js","core-js/modules/es.function.name.js","core-js/modules/es.symbol.js","core-js/modules/es.symbol.description.js","core-js/modules/es.symbol.iterator.js","core-js/modules/es.array.iterator.js","core-js/modules/web.dom-collections.iterator.js","core-js/modules/es.array.is-array.js"],r):(e="undefined"!=typeof globalThis?globalThis:e||self).waterfall=r(e._toConsumableArray)}(this,(function(e){"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=r(e);function t(e,r){var o="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!o){if(Array.isArray(e)||(o=function(e,r){if(!e)return;if("string"==typeof e)return s(e,r);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return s(e,r)}(e))||r&&e&&"number"==typeof e.length){o&&(e=o);var t=0,n=function(){};return{s:n,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,l=!1;return{s:function(){o=o.call(e)},n:function(){var e=o.next();return a=e.done,e},e:function(e){l=!0,i=e},f:function(){try{a||null==o.return||o.return()}finally{if(l)throw i}}}}function s(e,r){(null==r||r>e.length)&&(r=e.length);for(var o=0,t=new Array(r);o<r;o++)t[o]=e[o];return t}var n="relative",i="absolute",a=["fixed",n,i];function l(e,r,o,t,s,n){for(var i=[],a=0;a<r.length;a++){var l=r[a],d=l.clientHeight;if(a<s){var m={left:0===a?0:o*a+t*a,top:0,height:d};i.push(m),u(l,m),i[a].top+=d+t;var f=i[c(i).maxIndex].top;e.style.setProperty("min-height","".concat(f,"px"))}else{var y=c(i).minIndex;n&&(y=a%s),u(l,i[y]),i[y].top+=d+t;var j=i[c(i).maxIndex].top;e.style.setProperty("min-height","".concat(j,"px"))}}}function u(e,r){var o=r.top,t=r.left;e.style.setProperty("position",i),e.style.setProperty("left","".concat(t,"px")),e.style.setProperty("top","".concat(o,"px"))}function c(e){for(var r=0,o=0,t=0;t<e.length;t++)e[r].top>e[t].top&&(r=t),e[o].top<e[t].top&&(o=t);return{minIndex:r,maxIndex:o}}return function(e,r){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:300;if(e&&r){var c=Array.from(e.children),d=e.clientWidth,m=getComputedStyle(e);a.includes(m.position)||e.style.setProperty("position",n);for(var f=Math.floor((d+s)/(r+s)),y=0,j=c;y<j.length;y++){var p=j[y],b=[].concat(o.default(Array.from(p.querySelectorAll("img"))),o.default(Array.from(p.querySelectorAll("video"))));if(b.length){var h,v=t(b);try{for(v.s();!(h=v.n()).done;){var g=h.value;if("img"===g.nodeName.toLowerCase()){var q=new Image;q.onload=function(){x()},q.src=g.src}"video"===g.nodeName.toLowerCase()&&(g.onloadedmetadata=function(){x()})}}catch(e){v.e(e)}finally{v.f()}}else x()}}function x(){setTimeout((function(){l(e,c,r,s,f,i)}),u)}}}));