You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Vestride_Shuffle/dist/shuffle.min.js

2 lines
20 KiB
JavaScript

!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.shuffle=e():t.shuffle=e()}(this,function(){return function(t){function e(n){if(i[n])return i[n].exports;var s=i[n]={exports:{},id:n,loaded:!1};return t[n].call(s.exports,s,s.exports,e),s.loaded=!0,s.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){return Array.prototype.slice.call(t)}function r(t,e,i){for(var n=0,s=t.length;s>n;n++)if(e.call(i,t[n],n,t)==={})return}function l(t,e,i){return setTimeout(t.bind(e),i)}function a(t){return Math.max.apply(Math,t)}function u(t){return Math.min.apply(Math,t)}function h(t,e){return 2===arguments.length?h(t)(e):function(e){return t.indexOf(e)>-1}}function f(){}var c=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();i(1);var d=i(2),m=n(d),v=i(3),p=n(v),y=i(4),_=n(y),g=i(5),E=n(g),b=i(6),S=n(b),k=i(8),T=n(k),I=i(9),w=n(I),L=i(10),C=n(L),M=i(12),z=n(M),F=0,D=function(){function t(e){var i=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if(s(this,t),this.options=(0,_["default"])(t.options,i),this.useSizer=!1,this.revealAppendedDelay=300,this.lastSort={},this.lastFilter=t.ALL_ITEMS,this.isEnabled=!0,this.isDestroyed=!1,this.isInitialized=!1,this._transitions=[],this._isMovementCanceled=!1,this._queue=[],e=this._getElementOption(e),!e)throw new TypeError("Shuffle needs to be initialized with an element.");this.element=e,this.id="shuffle_"+F++,this._dispatch(t.EventType.LOADING),this._init(),l(function(){this.isInitialized=!0,this._dispatch(t.EventType.DONE)},this,16)}return c(t,[{key:"_init",value:function(){this.items=this._getItems(),this.options.sizer=this._getElementOption(this.options.sizer),this.options.sizer&&(this.useSizer=!0),this.element.classList.add(t.ClassName.BASE),this._initItems(),this._onResize=this._getResizeFunction(),window.addEventListener("resize",this._onResize);var e=window.getComputedStyle(this.element,null),i=t.getSize(this.element).width;this._validateStyles(e),this._setColumns(i),this.filter(this.options.group,this.options.initialSort),l(function(){this._setTransitions(),this.element.style.transition="height "+this.options.speed+"ms "+this.options.easing},this)}},{key:"_getResizeFunction",value:function(){var t=this._handleResize.bind(this);return this.options.throttle?this.options.throttle(t,this.options.throttleTime):t}},{key:"_getElementOption",value:function(t){return"string"==typeof t?this.element.querySelector(t):t&&t.nodeType&&1===t.nodeType?t:t&&t.jquery?t[0]:null}},{key:"_validateStyles",value:function(t){"static"===t.position&&(this.element.style.position="relative"),"hidden"!==t.overflow&&(this.element.style.overflow="hidden")}},{key:"_filter",value:function(){var t=arguments.length<=0||void 0===arguments[0]?this.lastFilter:arguments[0],e=arguments.length<=1||void 0===arguments[1]?this.items:arguments[1],i=this._getFilteredSets(t,e);return this._toggleFilterClasses(i),this.lastFilter=t,"string"==typeof t&&(this.options.group=t),i}},{key:"_getFilteredSets",value:function(e,i){var n=this,s=[],o=[];return e===t.ALL_ITEMS?s=i:i.forEach(function(t){n._doesPassFilter(e,t)?s.push(t):o.push(t)}),{filtered:s,concealed:o}}},{key:"_doesPassFilter",value:function(e,i){if("function"==typeof e)return e.call(i.element,i.element,this);var n=i.element.getAttribute("data-"+t.FILTER_ATTRIBUTE_KEY),s=JSON.parse(n),o=this.delimeter&&!Array.isArray(s)?s.split(this.delimeter):s;return Array.isArray(e)?e.some(h(o)):h(o,e)}},{key:"_toggleFilterClasses",value:function(t){var e=t.filtered,i=t.concealed;e.forEach(function(t){t.reveal()}),i.forEach(function(t){t.conceal()})}},{key:"_initItems",value:function(){var t=arguments.length<=0||void 0===arguments[0]?this.items:arguments[0];t.forEach(function(t){t.init()})}},{key:"_disposeItems",value:function(){var t=arguments.length<=0||void 0===arguments[0]?this.items:arguments[0];t.forEach(function(t){t.dispose()})}},{key:"_updateItemCount",value:function(){this.visibleItems=this._getFilteredItems().length}},{key:"_setTransitions",value:function(){var t,e=arguments.length<=0||void 0===arguments[0]?this.items:arguments[0],i=this.options.speed,n=this.options.easing;t=this.options.useTransforms?"transform "+i+"ms "+n+", opacity "+i+"ms "+n:"top "+i+"ms "+n+", left "+i+"ms "+n+", opacity "+i+"ms "+n,e.forEach(function(e){e.element.style.transition=t})}},{key:"_setSequentialDelay",value:function(t){r(t,function(t,e){t.style.transitionDelay="0ms,"+(e+1)*this.options.sequentialFadeDelay+"ms"},this)}},{key:"_getItems",value:function(){var t=this;return o(this.element.children).filter(function(e){return(0,m["default"])(e,t.options.itemSelector)}).map(function(t){return new T["default"](t)})}},{key:"_getFilteredItems",value:function(){return this.items.filter(function(t){return t.isVisible})}},{key:"_getConcealedItems",value:function(){return this.items.filter(function(t){return!t.isVisible})}},{key:"_getColumnSize",value:function(e,i){var n;return n="function"==typeof this.columnWidth?this.columnWidth(e):this.useSizer?t.getSize(this.options.sizer).width:this.columnWidth?this.columnWidth:this.items.length>0?t.getSize(this.items[0].element,!0).width:e,0===n&&(n=e),n+i}},{key:"_getGutterSize",value:function(t){var e;return e="function"==typeof this.options.gutterWidth?this.options.gutterWidth(t):this.useSizer?(0,C["default"])(this.options.sizer,"marginLeft"):this.options.gutterWidth}},{key:"_setColumns",value:function(){var e=arguments.length<=0||void 0===arguments[0]?t.getSize(this.element).width:arguments[0],i=this._getGutterSize(e),n=this._getColumnSize(e,i),s=(e+i)/n;Math.abs(Math.round(s)-s)<this.options.columnThreshold&&(s=Math.round(s)),this.cols=Math.max(Math.floor(s),1),this.containerWidth=e,this.colWidth=n}},{key:"_setContainerSize",value:function(){this.element.style.height=this._getContainerSize()+"px"}},{key:"_getContainerSize",value:function(){return a(this.positions)}},{key:"_dispatch",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return e.shuffle=this,!this.element.dispatchEvent(new CustomEvent(t,{bubbles:!1,cancelable:!0,detail:e}))}},{key:"_resetCols",value:function(){var t=this.cols;for(this.positions=[];t--;)this.positions.push(0)}},{key:"_layout",value:function(t){r(t,this._layoutItem,this)}},{key:"_layoutItem",value:function(e,i){var n=e.point,s=e.scale,o=t.getSize(e.element,!0),r=this._getItemPosition(o);S["default"].equals(n,r)&&s===T["default"].Scale.VISIBLE||(e.point=r,e.scale=T["default"].Scale.VISIBLE,this._queue.push({item:e,opacity:1,visibility:"visible",transitionDelay:Math.min(i*this.options.staggerAmount,this.options.staggerAmountMax)}))}},{key:"_getItemPosition",value:function(t){for(var e=this._getColumnSpan(t.width,this.colWidth,this.cols),i=this._getColumnSet(e,this.cols),n=this._getShortColumn(i,this.options.buffer),s=new S["default"](Math.round(this.colWidth*n),Math.round(i[n])),o=i[n]+t.height,r=this.cols+1-i.length,l=0;r>l;l++)this.positions[n+l]=o;return s}},{key:"_getColumnSpan",value:function(t,e,i){var n=t/e;return Math.abs(Math.round(n)-n)<this.options.columnThreshold&&(n=Math.round(n)),Math.min(Math.ceil(n),i)}},{key:"_getColumnSet",value:function(t,e){if(1===t)return this.positions;for(var i=e+1-t,n=[],s=0;i>s;s++)n[s]=a(this.positions.slice(s,s+t));return n}},{key:"_getShortColumn",value:function(t,e){for(var i=u(t),n=0,s=t.length;s>n;n++)if(t[n]>=i-e&&t[n]<=i+e)return n;return 0}},{key:"_shrink",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?this._getConcealedItems():arguments[0];r(e,function(e,i){e.scale!==T["default"].Scale.FILTERED&&(e.scale=T["default"].Scale.FILTERED,t._queue.push({item:e,opacity:0,transitionDelay:Math.min(i*t.options.staggerAmount,t.options.staggerAmountMax),callback:function(){e.element.style.visibility="hidden"}}))},this)}},{key:"_handleResize",value:function(){if(this.isEnabled&&!this.isDestroyed){var e=t.getSize(this.element).width;e!==this.containerWidth&&this.update()}}},{key:"_getStylesForTransition",value:function(t){var e=t.item,i={opacity:t.opacity,visibility:t.visibility,transitionDelay:(t.transitionDelay||0)+"ms"},n=e.point.x,s=e.point.y;return this.options.useTransforms?i.transform="translate("+n+"px, "+s+"px) scale("+e.scale+")":(i.left=n+"px",i.top=s+"px"),i}},{key:"_transition",value:function(t){var e=this,i=this,n=this._getStylesForTransition(t),s=t.callfront||f,o=t.callback||f,r=t.item;return new Promise(function(t){var l={item:r,handler:function(e){var n=e.target;n===e.currentTarget&&(n.removeEventListener("transitionend",l.handler),n.style.transitionDelay="",i._removeTransitionReference(l),o(),t())}};s(),r.applyCss(n),e.isInitialized?(r.element.addEventListener("transitionend",l.handler),e._transitions.push(l)):(o(),t())})}},{key:"_processQueue",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];this.isTransitioning&&this._cancelMovement();var i=[],n=[];this._queue.forEach(function(e){t.isInitialized&&0!==t.options.speed?n.push(e):i.push(e)}),this._styleImmediately(i);var s=n.map(function(e){return t._transition(e)});n.length>0&&this.options.speed>0?(this.isTransitioning=!0,Promise.all(s).then(this._movementFinished.bind(this))):e&&l(this._dispatchLayout,this),this._queue.length=0}},{key:"_cancelMovement",value:function(){r(this._transitions,function(t){t.item.element.removeEventListener("transitionend",t.handler)}),this._transitions.length=0,this.isTransitioning=!1}},{key:"_removeTransitionReference",value:function(t){var e=this._transitions.indexOf(t);e>-1&&this._transitions.splice(e,1)}},{key:"_styleImmediately",value:function(e){var i=this;if(e.length){var n=e.map(function(t){return t.item.element});t._skipTransitions(n,function(){e.forEach(function(t){t.item.applyCss(i._getStylesForTransition(t))})})}}},{key:"_movementFinished",value:function(){this.isTransitioning=!1,this._dispatchLayout()}},{key:"_dispatchLayout",value:function(){this._dispatch(t.EventType.LAYOUT)}},{key:"_addItems",value:function(t,e,i){var n=t.map(function(t){return new T["default"](t)});this._initItems(n),this._setTransitions(n),this.items=this.items.concat(n),e?(this._shrink(n),r(this._queue,function(t){t.skipTransition=!0}),this._processQueue(!1),this._addItemsToEnd(n,i)):this.filter(this.lastFilter)}},{key:"_addItemsToEnd",value:function(t,e){var i=this._filter(null,t).filtered,n=i.get();this._updateItemCount(),this._layout(n,!0),e&&this._setSequentialDelay(n),this._revealAppended(n)}},{key:"_revealAppended",value:function(t){l(function(){r(t,function(t){var e=window.jQuery(t);this._transition({$item:e,opacity:1,point:e.data("point"),scale:T["default"].Scale.VISIBLE})},this),this._whenCollectionDone(window.jQuery(t),"transitionend",function(){window.jQuery(t).css("transitionDelay","0ms"),this._movementFinished()})},this,this.revealAppendedDelay)}},{key:"filter",value:function(e,i){this.isEnabled&&((!e||e&&0===e.length)&&(e=t.ALL_ITEMS),this._filter(e),this._shrink(),this._updateItemCount(),this.sort(i))}},{key:"sort",value:function(){var t=arguments.length<=0||void 0===arguments[0]?this.lastSort:arguments[0];if(this.isEnabled){this._resetCols();var e=this._getFilteredItems();e=(0,z["default"])(e,t),this._layout(e),this._processQueue(),this._setContainerSize(),this.lastSort=t}}},{key:"update",value:function(t){this.isEnabled&&(t||this._setColumns(),this.sort())}},{key:"layout",value:function(){this.update(!0)}},{key:"add",value:function(t){var e=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],i=arguments.length<=2||void 0===arguments[2]?!0:arguments[2];this._addItems((0,p["default"])(t),e,i)}},{key:"disable",value:function(){this.isEnabled=!1}},{key:"enable",value:function(t){this.isEnabled=!0,t!==!1&&this.update()}},{key:"remove",value:function(e){var i=this;e=(0,p["default"])(e);var n=e.map(function(t){return i.getItemByElement(t)}).filter(function(t){return!!t});if(e.length){var s=function o(){i.element.removeEventListener(t.EventType.LAYOUT,o),i._disposeItems(n),e.forEach(function(t){t.parentNode.removeChild(t)}),i.items=i.items.filter(function(t){return!h(n,t)}),i._updateItemCount(),i._dispatch(t.EventType.REMOVED,{collection:e}),e=null,n=null};this._toggleFilterClasses({filtered:[],concealed:n}),this._shrink(n),this.sort(),this.element.addEventListener(t.EventType.LAYOUT,s)}}},{key:"getItemByElement",value:function(t){for(var e=this.items.length-1;e>=0;e--)if(this.items[e].element===t)return this.items[e];return null}},{key:"destroy",value:function(){window.removeEventListener("resize",this._onResize),this.element.classList.remove("shuffle"),this.element.removeAttribute("style"),this._disposeItems(),this.items=null,this.$el=null,this.options.sizer=null,this.element=null,this._transitions=null,this.destroyed=!0}}],[{key:"getSize",value:function(t,e){var i=window.getComputedStyle(t,null),n=(0,C["default"])(t,"width",i),s=(0,C["default"])(t,"height",i);if(e){var o=(0,C["default"])(t,"marginLeft",i),r=(0,C["default"])(t,"marginRight",i),l=(0,C["default"])(t,"marginTop",i),a=(0,C["default"])(t,"marginBottom",i);n+=o+r,s+=l+a}return{width:n,height:s}}},{key:"_skipTransitions",value:function(t,e){var i="0ms",n=t.map(function(t){var e=t.style,n=e.transitionDuration,s=e.transitionDelay;return e.transitionDuration=i,e.transitionDelay=i,{duration:n,delay:s}});e(),t[0].offsetWidth,t.forEach(function(t,e){t.style.transitionDuration=n[e].duration,t.style.transitionDelay=n[e].delay})}}]),t}();D.ALL_ITEMS="all",D.FILTER_ATTRIBUTE_KEY="groups",D.EventType={LOADING:"shuffle:loading",DONE:"shuffle:done",LAYOUT:"shuffle:layout",REMOVED:"shuffle:removed"},D.ClassName=w["default"],D.options={group:D.ALL_ITEMS,speed:250,easing:"ease",itemSelector:"*",sizer:null,gutterWidth:0,columnWidth:0,delimeter:null,buffer:0,columnThreshold:.01,initialSort:null,throttle:E["default"],throttleTime:300,sequentialFadeDelay:150,staggerAmount:15,staggerAmountMax:250,useTransforms:!0},D.Point=S["default"],D.ShuffleItem=T["default"],D.sorter=z["default"],t.exports=D},function(t,e){try{new window.CustomEvent("test")}catch(i){var n=function(t,e){var i;return e=e||{bubbles:!1,cancelable:!1,detail:void 0},i=document.createEvent("CustomEvent"),i.initCustomEvent(t,e.bubbles,e.cancelable,e.detail),i};n.prototype=window.Event.prototype,window.CustomEvent=n}},function(t,e){"use strict";function i(t,e){if(s)return s.call(t,e);for(var i=t.parentNode.querySelectorAll(e),n=0;n<i.length;n++)if(i[n]==t)return!0;return!1}var n=Element.prototype,s=n.matches||n.matchesSelector||n.webkitMatchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector;t.exports=i},function(t,e){(function(e){"use strict";function i(t){for(var e=[],i=0;i<t.length;i++)-1===e.indexOf(t[i])&&e.push(t[i]);return e}function n(t){var e=new Set;return t.filter(function(t){return e.has(t)?void 0:(e.add(t),!0)})}function s(t){var e=[];return new Set(t).forEach(function(t){e.push(t)}),e}function o(){var t=!1;return new Set([!0]).forEach(function(e){t=e}),t===!0}"Set"in e?"function"==typeof Set.prototype.forEach&&o()?t.exports=s:t.exports=n:t.exports=i}).call(e,function(){return this}())},function(t,e){function i(){for(var t={},e=0;e<arguments.length;e++){var i=arguments[e];for(var s in i)n.call(i,s)&&(t[s]=i[s])}return t}t.exports=i;var n=Object.prototype.hasOwnProperty},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=function(t,e,i){var n,s,o,r=null,l=0;i||(i={});var a=function(){l=i.leading===!1?0:Date.now(),r=null,o=t.apply(n,s),r||(n=s=null)};return function(){var u=Date.now();l||i.leading!==!1||(l=u);var h=e-(u-l);return n=this,s=arguments,0>=h||h>e?(r&&(clearTimeout(r),r=null),l=u,o=t.apply(n,s),r||(n=s=null)):r||i.trailing===!1||(r=setTimeout(a,h)),o}}},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var s=i(7),o=n(s),r=function(t,e){this.x=(0,o["default"])(t),this.y=(0,o["default"])(e)};r.equals=function(t,e){return t.x===e.x&&t.y===e.y},e["default"]=r},function(t,e){"use strict";function i(t){return parseFloat(t)||0}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=i},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),r=i(6),l=n(r),a=i(9),u=n(a),h=function(){function t(e){s(this,t),this.element=e,this.isVisible=!0}return o(t,[{key:"reveal",value:function(){this.isVisible=!0,this.element.classList.remove(u["default"].CONCEALED),this.element.classList.add(u["default"].FILTERED)}},{key:"conceal",value:function(){this.isVisible=!1,this.element.classList.remove(u["default"].FILTERED),this.element.classList.add(u["default"].CONCEALED)}},{key:"init",value:function(){this.addClasses([u["default"].SHUFFLE_ITEM,u["default"].FILTERED]),this.applyCss(t.css),this.scale=t.Scale.VISIBLE,this.point=new l["default"]}},{key:"addClasses",value:function(t){var e=this;t.forEach(function(t){e.element.classList.add(t)})}},{key:"removeClasses",value:function(t){var e=this;t.forEach(function(t){e.element.classList.remove(t)})}},{key:"applyCss",value:function(t){var e=this;Object.keys(t).forEach(function(i){e.element.style[i]=t[i]})}},{key:"dispose",value:function(){this.removeClasses([u["default"].CONCEALED,u["default"].FILTERED,u["default"].SHUFFLE_ITEM]),this.element.removeAttribute("style"),this.element=null}}]),t}();h.css={position:"absolute",top:0,left:0,visibility:"visible","will-change":"transform"},h.Scale={VISIBLE:1,FILTERED:.001},e["default"]=h},function(t,e){"use strict";t.exports={BASE:"shuffle",SHUFFLE_ITEM:"shuffle-item",FILTERED:"filtered",CONCEALED:"concealed"}},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function s(t,e){var i=arguments.length<=2||void 0===arguments[2]?window.getComputedStyle(t,null):arguments[2],n=(0,r["default"])(i[e]);return a["default"]||"width"!==e?a["default"]||"height"!==e||(n+=(0,r["default"])(i.paddingTop)+(0,r["default"])(i.paddingBottom)+(0,r["default"])(i.borderTopWidth)+(0,r["default"])(i.borderBottomWidth)):n+=(0,r["default"])(i.paddingLeft)+(0,r["default"])(i.paddingRight)+(0,r["default"])(i.borderLeftWidth)+(0,r["default"])(i.borderRightWidth),n}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=s;var o=i(7),r=n(o),l=i(11),a=n(l)},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=document.body||document.documentElement,n=document.createElement("div");n.style.cssText="width:10px;padding:2px;box-sizing:border-box;",i.appendChild(n);var s=window.getComputedStyle(n,null).width,o="10px"===s;i.removeChild(n),e["default"]=o},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function s(t){var e,i,n=t.length;if(!n)return t;for(;--n;)i=Math.floor(Math.random()*(n+1)),e=t[i],t[i]=t[n],t[n]=e;return t}function o(t,e){var i=(0,l["default"])(a,e),n=[].slice.call(t),o=!1;return t.length?i.randomize?s(t):("function"==typeof i.by&&t.sort(function(t,e){if(o)return 0;var n=i.by(t[i.key]),s=i.by(e[i.key]);return void 0===n&&void 0===s?(o=!0,0):s>n||"sortFirst"===n||"sortLast"===s?-1:n>s||"sortLast"===n||"sortFirst"===s?1:0}),o?n:(i.reverse&&t.reverse(),t)):[]}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=o;var r=i(4),l=n(r),a={reverse:!1,by:null,randomize:!1,key:"element"}}])});
//# sourceMappingURL=shuffle.min.js.map