UNPKG

@kubric/redux-knob

Version:
2 lines (1 loc) 3.02 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@kubric/litedash")):"function"==typeof define&&define.amd?define(["exports","@kubric/litedash"],t):t((e=e||self)["redux-knob"]={},e.litedash)}(this,function(e,t){"use strict";function i(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function s(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),i.push.apply(i,s)}return i}function n(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(n,!0).forEach(function(t){i(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const r={controlByActions:!0,enableType:"ENABLE_ACTION_QUEUE",flushType:"FLUSH_ACTION_QUEUE",enabled:!1,filterTypes:[],filter:"exclude",batchType:"BATCHED_ACTION"};class c{constructor(e={}){const{enabled:t,size:i,batchType:s,filterTypes:c,filter:l,enableType:o,flushType:u,controlByActions:h,timeInterval:a}=n({},r,{},e);this.queue=[],this.enabled=t,this.size=i,this.batchType=s,this.filterTypes=c,this.filter=l,this.enableType=o,this.flushType=u,this.controlByActions=h,this.timeInterval=a}enable(){this.enabled=!0}flush(e){this.enabled=!1,this.dispatch(e)}dispatch(e){if(this.queue&&this.queue.length>0){const t=[...this.queue];this.queue=[],e.dispatch({type:this.batchType,payload:t})}}checkForSize(e){t.isUndefined(this.size)||this.queue.length!==this.size||this.dispatch(e)}getWare(){return e=>i=>s=>{t.isUndefined(this.timeInterval)||setInterval(()=>{this.dispatch(e)},this.timeInterval);const{type:n}=s;if(this.controlByActions&&(n===this.enableType||n===this.flushType)){return this[this.enableType===n?"enable":"flush"](e),i(s)}const r="include"===this.filter&&this.filterTypes.includes(n)||"exclude"===this.filter&&!this.filterTypes.includes(n);if(!(this.enabled&&r))return i(s);this.queue.push(s),this.checkForSize(e)}}}const l={types:[],delay:0};const o={batchType:"BATCHED_ACTION"};e.ActionQueue=c,e.BATCH_TYPE="BATCHED_ACTION",e.ENABLE_ACTION_QUEUE="ENABLE_ACTION_QUEUE",e.FLUSH_ACTION_QUEUE="FLUSH_ACTION_QUEUE",e.ThrottleQueue=class{constructor(e){const{types:t,delay:i}=n({},l,{},e);this.delay=i,this.types=t,this.actionQueue=new c({filterTypes:this.types,filter:"include",enabled:!0,controlByActions:!1,timeInterval:i})}enable(){this.actionQueue.enable()}disable(){this.actionQueue.flush()}getWare(){return this.actionQueue.getWare()}},e.compose=(e=[],t={})=>e.reduce((e,t)=>t(e),t),e.composeReducers=(e=[],t={})=>(i=t,s)=>e.reduce((e,t)=>t(e,s),i),e.enableBatching=(e,t={})=>(i,s)=>{const{batchType:r}=n({},o,{},t);if(s.type===r){let{payload:t=[]}=s;return Array.isArray(t)||(t=[t]),t.reduce(e,i)}return e(i,s)},Object.defineProperty(e,"__esModule",{value:!0})});